(57)【要約】【課題】本発明は、それぞれ異なる処理速度の複数の処理を効率よく実行する。【解決手段】ＰＣ２は、プリンタ１を介してメモリカード３にデータを入出力することができる。ＰＣ２がメモリカード３内のデータを読み出す場合、コントローラ１０は、メモリカード３からデータを読み込む処理１２の速度と、読み込んだデータをＰＣ２に転送する処理１３の速度との比に応じて、バッファ２４を第１バッファ２１と第２バッファ２２に分割する。コントローラ１０は、第１バッファ２１，第２バッファ２２の順番で交互に使用しながら、読込み処理１２と転送処理１３を並列実行する。【選択図】図１
2009070012.tif 000002
【特許請求の範囲】
【請求項１】
処理速度の異なる複数の処理を共通のメモリ領域を用いて並列実行させる情報処理装置であって、
第１処理と、前記共通のメモリ領域を介して引き継いだ前記第１処理の処理結果をさらに処理する第２処理とを並列実行する制御部であって、前記第１処理を第１処理速度で実行し、前記第２処理を前記第１処理速度と異なる第２処理速度で実行する制御部と、
前記共通のメモリ領域を管理するメモリ領域管理部であって、前記第１処理速度と前記第２処理速度の比に応じて前記共通のメモリ領域を複数のサブメモリ領域に分割するメモリ領域管理部と、を備え、
前記制御部は、前記複数のサブメモリ領域を交互に使用しながら、前記第１処理と第２処理とを並列に実行する情報処理装置。
【請求項２】
前記第１処理速度が前記第２処理速度よりも遅い場合、前記制御部は、前記複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用する請求項１に記載の情報処理装置。
【請求項３】
前記第１処理速度が前記第２処理速度よりも速い場合、前記制御部は、前記複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用する請求項１に記載の情報処理装置。
【請求項４】
前記第１処理速度または前記第２処理速度の少なくともいずれか一方は、予め設定される所定値が使用される請求項１に記載の情報処理装置。
【請求項５】
前記メモリ領域管理部は、前記第１処理速度または前記第２処理速度を監視し、前記第１処理速度または前記第２処理速度のいずれか一方が予め設定される閾値を超えて変化した場合に、前記第１処理速度と前記第２処理速度の比に応じて前記共通のメモリ領域を複数のサブメモリ領域に新たに分割する請求項１に記載の情報処理装置。
【請求項６】
前記第１処理は、入力されたデータを前記サブメモリ領域に記憶させる処理であり、
前記第２処理は、前記サブメモリ領域に記憶された前記データを読み出して外部に出力させる処理である請求項１に記載の情報処理装置。
【請求項７】
処理速度の異なる複数の処理を並列実行させる情報処理方法であって、
第１処理の第１処理速度を取得する第１ステップと、
第２処理の第２処理速度を取得する第２ステップと、
前記第１処理速度と前記第２処理速度の比に応じて、共通のメモリ領域を複数のサブメモリ領域に分割する第３ステップと、
前記複数のサブメモリ領域のうち所定の順序で選択される所定のサブメモリ領域に、前記第１処理の処理結果を格納させる第４ステップと、
前記第１処理の処理結果を前記所定のサブメモリ領域を介して引継ぎ、前記第１処理の処理結果について前記第２処理を実行させる第５ステップと、
前記第２処理が実行される間に、前記所定のサブメモリ領域の次に選択される他の所定のサブメモリ領域に、前記第１処理の新たな処理結果を格納させる第６ステップと、
前記第５ステップの完了後に、前記第１処理の新たな処理結果を前記他の所定のサブメモリ領域を介して引継ぎ、前記第１処理の新たな処理結果について前記第２処理を実行させる第７ステップと、をそれぞれ実行する、処理速度の異なる複数の処理を並列実行させる情報処理方法。
【請求項８】
外部装置と記憶媒体との間のデータ転送を制御するためのデータ転送装置であって、
通信速度の異なる複数のインターフェース部と、
メモリ領域を管理するメモリ領域管理部と、
前記外部装置と前記記憶媒体との間のデータ転送を第１転送モードまたは第２転送モードのいずれかに基づいて制御する制御部とを備え、
（１）前記第１転送モードは、（1-1）前記記憶媒体に記憶されているデータを前記複数のインターフェース部のうち一方のインターフェース部を介して読み出し、前記メモリ領域に記憶させる読込み処理と、（1-2）前記メモリ領域に記憶された前記データを読み出して、前記複数のインターフェース部のうち他方のインターフェース部を介して、前記外部装置に送信する転送処理とを含み、
（２）第２転送モードは、（2-1）前記外部装置から前記他方のインターフェース部を介して送信されたデータを前記メモリ領域に書き込む受信処理と、（2-2）前記メモリ領域に書き込まれた前記データを読み出し、前記一方のインターフェース部を介して、前記記憶媒体に書き込む書込み処理とを含み、
（３）前記メモリ領域管理部は、（3-1）前記第１転送モードが実行される場合、前記読込み処理の処理速度と前記転送処理の処理速度との比に応じて、前記メモリ領域を複数のサブメモリ領域に分割し、（3-2）前記第２転送モードが実行される場合、前記受信処理の処理速度と前記書込み処理の処理速度の比に応じて、前記メモリ領域を複数のサブメモリ領域に分割し、
（４）前記制御部は、（4-1）前記第１転送モードを実行する場合、前記複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用することにより、前記読込み処理及び前記転送処理を並列実行し、（4-2）前記第２転送モードを実行する場合、前記複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用することにより、前記受信処理及び前記書込み処理を並列実行する、
データ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びデータ転送装置に関する。
【背景技術】
【０００２】
同一サイズの２つのバッファを用いてデータを転送する技術は、ダブルバッファとして知られている（特許文献１）。従来技術では、一方のバッファにデータを蓄積しながら、他方のバッファからデータを送信する。これにより、単一のバッファを用いる場合よりも高速にデータを転送することができる。
【特許文献１】特開２００７−０６５９４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一方のバッファへデータを書込む速度と他方のバッファからデータを読み出す速度とが等しい場合、同一サイズのバッファを２個用いることにより、高速なデータ転送を行うことができる。しかし、実際には、例えば、ＵＳＢ（Universal Serial Bus）、ＩＥＥＥ１３９４（the Institute of Electrical and Electronics Engineers 1394）、ＰＣＩ（Peripheral Component Interconnect）のような種々の通信規格毎にそれぞれ速度が異なり、かつ、データを供給する装置（例えば、メモリカード等）とデータを利用する装置（例えば、パーソナルコンピュータ等）も、機種毎にそれぞれデータ送受信の速度が異なる。例えば、ＵＳＢポートの転送速度と、フラッシュメモリデバイス等を備えるメモリカードへのデータ入出力速度はそれぞれ異なる。一般的に、ＵＳＢ転送速度の方がメモリカードのデータ入出力速度よりも速い。
【０００４】
このように、データを供給する側及びデータを利用する側の速度が異なる場合、速度差に起因する待ち時間が生じる。従って、同一サイズの２個のバッファを用いるダブルバッファ技術では、データ転送速度の向上に限界がある。
【０００５】
本発明は、このような課題に鑑みてなされたもので、その目的は、より効率的に情報処理を行うことができるようにした情報処理装置、情報処理方法及びデータ転送装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決すべく、本発明の一つの観点に従う、処理速度の異なる複数の処理を共通のメモリ領域を用いて並列実行させる情報処理装置は、第１処理と、共通のメモリ領域を介して引き継いだ第１処理の処理結果をさらに処理する第２処理とを並列実行する制御部であって、第１処理を第１処理速度で実行し、第２処理を第１処理速度と異なる第２処理速度で実行する制御部と、共通のメモリ領域を管理するメモリ領域管理部であって、第１処理速度と第２処理速度の比に応じて共通のメモリ領域を複数のサブメモリ領域に分割するメモリ領域管理部と、を備え、制御部は、複数のサブメモリ領域を交互に使用しながら、第１処理と第２処理とを並列に実行する。
【０００７】
例えば、第１処理は、入力されたデータをサブメモリ領域に記憶させる処理、第２処理は、サブメモリ領域に記憶されたデータを読み出して外部に出力させる処理である。
【０００８】
第１処理速度が第２処理速度よりも遅い場合、制御部は、複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用する。
【０００９】
第１処理速度が第２処理速度よりも速い場合、制御部は、複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用する。
【００１０】
第１処理速度または第２処理速度の少なくともいずれか一方は、予め設定される所定値を使用してもよい。
【００１１】
メモリ領域管理部は、第１処理速度または第２処理速度を監視し、第１処理速度または第２処理速度のいずれか一方が予め設定される閾値を超えて変化した場合に、第１処理速度と第２処理速度の比に応じて共通のメモリ領域を複数のサブメモリ領域に新たに分割する構成でもよい。
【００１２】
本発明の他の観点に従う、処理速度の異なる複数の処理を並列実行させる情報処理方法は、第１処理の第１処理速度を取得する第１ステップと、第２処理の第２処理速度を取得する第２ステップと、第１処理速度と第２処理速度の比に応じて、共通のメモリ領域を複数のサブメモリ領域に分割する第３ステップと、複数のサブメモリ領域のうち所定の順序で選択される所定のサブメモリ領域に、第１処理の処理結果を格納させる第４ステップと、第１処理の処理結果を所定のサブメモリ領域を介して引継ぎ、第１処理の処理結果について第２処理を実行させる第５ステップと、第２処理が実行される間に、所定のサブメモリ領域の次に選択される他の所定のサブメモリ領域に、第１処理の新たな処理結果を格納させる第６ステップと、第５ステップの完了後に、第１処理の新たな処理結果を他の所定のサブメモリ領域を介して引継ぎ、第１処理の新たな処理結果について第２処理を実行させる第７ステップと、をそれぞれ実行する。
【００１３】
本発明の更に別の観点に従う、外部装置と記憶媒体との間のデータ転送を制御するためのデータ転送装置は、通信速度の異なる複数のインターフェース部と、メモリ領域を管理するメモリ領域管理部と、外部装置と記憶媒体との間のデータ転送を第１転送モードまたは第２転送モードのいずれかに基づいて制御する制御部とを備え、（１）第１転送モードは、（1-1）記憶媒体に記憶されているデータを複数のインターフェース部のうち一方のインターフェース部を介して読み出し、メモリ領域に記憶させる読込み処理と、（1-2）メモリ領域に記憶されたデータを読み出して、複数のインターフェース部のうち他方のインターフェース部を介して、外部装置に送信する転送処理とを含み、（２）第２転送モードは、（2-1）外部装置から他方のインターフェース部を介して送信されたデータをメモリ領域に書き込む受信処理と、（2-2）メモリ領域に書き込まれたデータを読み出し、一方のインターフェース部を介して、記憶媒体に書き込む書込み処理とを含み、（３）メモリ領域管理部は、（3-1）第１転送モードが実行される場合、読込み処理の処理速度と転送処理の処理速度との比に応じて、メモリ領域を複数のサブメモリ領域に分割し、（3-2）第２転送モードが実行される場合、受信処理の処理速度と書込み処理の処理速度の比に応じて、メモリ領域を複数のサブメモリ領域に分割し、（４）制御部は、（4-1）第１転送モードを実行する場合、複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用することにより、読込み処理及び転送処理を並列実行し、（4-2）第２転送モードを実行する場合、複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用することにより、受信処理及び書込み処理を並列実行する。
【００１４】
なお、本発明の構成の少なくとも一部は、コンピュータプログラムとして実現可能な場合があり、そのコンピュータプログラムは通信ネットワークや記憶媒体を介して流通させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を添付図面を参照しつつ詳細に説明する。本実施形態では、以下に詳述するように、複数の処理の処理速度の比に応じてメモリ領域をサブメモリ領域に分割し、複数のサブメモリ領域を交互に用いて、複数の処理を並列実行する。「情報処理装置」または「データ転送装置」としてプリンタ１を例に挙げて説明するが、本発明はこれに限らず、例えば、カードリーダ、カードリーダ／ライタ等のような他の製品として実現することもできる。
【実施例１】
【００１６】
図１は、本実施例による情報処理装置を含む情報処理システムの全体構成を示す説明図である。この情報処理システムは、例えば、複合機能型プリンタ（以下、プリンタ）１と、パーソナルコンピュータ（以下、ＰＣ）２と、メモリカード３とを備える。ＰＣ２は「外部装置」の一例であり、メモリカード３は「記憶媒体」の一例である。
【００１７】
「情報処理装置」または「データ転送装置」の一例であるプリンタ１は、例えば、コントローラ１０と、転送制御部１１と、メモリ部２０と、インターフェース部３０，３１と、スキャナ４０と、ユーザインターフェース（以下、ＵＩ）４１と、印刷エンジン４２とを備える。プリンタ１は、印刷機能、スキャナ機能、コピー機能、データ転送機能をそれぞれ実現する。
【００１８】
印刷機能とは、ＰＣ２やメモリカード３から受信した印刷データを印刷エンジン４２によって印刷する機能である。スキャナ機能とは、スキャナ４０で読み取った画像データをＰＣ２やメモリカード３に転送する機能である。コピー機能とは、スキャナ４０で読み取った画像データを印刷エンジン４２によって印刷させる機能である。データ転送機能とは、メモリカード３とＰＣ２との間でデータを転送させる機能である。つまり、データ転送機能とは、ＰＣ２がメモリカード３にデータを書き込んだり、ＰＣ２がメモリカード３からデータを読み出すための機能である。
【００１９】
コントローラ１０は、プリンタ１の作動を制御する。コントローラ１０は、転送制御部１１を備える。「制御部」としての転送制御部１１は、例えば、メモリカード３からインターフェース部３１を介してデータ（例えば、画像データ）を読み込む処理１２と、読み込んだデータをインターフェース部３０を介してＰＣ２に転送する処理１３と、ＰＣ２からインターフェース部３０を介してデータを受信する処理１４と、受信データをインターフェース部３１を介してメモリカード３に書き込む処理１５とを実行する。これら各処理のうち、読込み処理１２及び転送処理１３は「第１転送モード」に属し、受信処理１４及び書込み処理１５は「第２転送モード」に属する。
【００２０】
「メモリ領域管理部」としてのメモリ部２０は、「共通のメモリ領域」としてのバッファ２４を備えている。後述のように、このバッファ２４は、読込み処理１２の速度と転送処理１３の速度の比、または、受信処理１４の速度と書込み処理１５の速度の比のいずれかに応じて、第１バッファ２１及び第２バッファ２２に分割される。従って、処理速度の比に応じて生成されるため、第１バッファ２１のサイズと第２バッファ２２のサイズは異なる。第１ばっふぁ２１を大バッファ、第２バッファ２２を小バッファと呼ぶこともできる。
【００２１】
インターフェース部３０は、ＰＣ２とプリンタ１との間で通信を行うためのインターフェースであり、上位装置用インターフェースと呼ぶこともできる。インターフェース部３１は、プリンタ１とメモリカード３との間で通信を行うためのインターフェースであり、下位装置用インターフェースと呼ぶこともできる。
【００２２】
なお、便宜上、２つのインターフェース部３０，３１のみを図示しているが、より多くのインターフェース部を備えることもできる。即ち、プリンタ１は、複数の上位装置用インターフェース部のうちのいずれか一つを用いてＰＣ２と通信を行うことができ、かつ、複数の下位装置用インターフェース部のうちのいずれか一つを用いてメモリカード３と通信を行うことができる。
【００２３】
「外部装置」としてのＰＣ２は、プリンタ１に印刷データを送信して印刷させたり、スキャナ４０で読み取った画像データをプリンタ１から取得する。ＰＣ２は、プリンタ１を介して、メモリカード３から画像データを読み出したり、メモリカード３の画像データを書き換えることができる。ＰＣ２に代えて、例えば、携帯電話やディジタルカメラ、ディジタルテレビジョン等でもよい。
【００２４】
「記憶媒体」としてのメモリカード３は、例えば、ディジタルカメラ等で撮影された画像データを記憶する。便宜上「カード」と呼ぶが、カード形状に限らず、棒状やキューブ状等の他の形状でもよい。メモリカード３は、例えば、フラッシュメモリのような半導体メモリを備えて構成される。しかし、これに限らず、小型ハードディスク等の他の記憶デバイスを有する構成でもよい。
【００２５】
図２は、複数のバッファ２１，２２を用いて、処理速度の異なる複数の処理を実行させる場合を考察する説明図である。図２（１）は、２つの異なる処理ａ，ｂを２つのバッファで処理する様子を示す。図２（１）の横軸は時間軸である。
【００２６】
例えば、処理ａはメモリカード３からデータを読み出す処理、処理ｂは読み出したデータをＰＣ２に転送する処理である。あるいは、処理ａはＰＣ２からデータを受信する処理、処理ｂは受信データをメモリカード３に書き込む処理である。
【００２７】
処理ａは、処理ａ１及び処理ａ２の２回に分けて実行され、処理ｂも処理ｂ１及び処理ｂ２の２回に分けて実行される。処理ａ１の完了によって処理ｂ１が実行され、処理ｂ１を実行中に別のバッファ（サブメモリ領域）を用いて、処理ａ２が実行される。
【００２８】
具体的には、例えば、一回目の読込み処理ａ１によって第１バッファ２１にデータが読み込まれると、一回目の転送処理ｂ１が開始され、第１バッファ２１に記憶されたデータがＰＣ２に転送される。一回目の読込み処理ａ１の完了後、直ちに第２バッファ２２に次のデータが読み込まれる（ａ２）。第２バッファ２２に記憶されたデータは、２回目の転送処理ｂ２によってＰＣ２に転送される。
【００２９】
図２（１）の（１−１）に示すように、処理ｂ１の処理量が少ない場合（処理時間が短い場合）、処理ａ２が終了するよりも前に処理ｂ１が完了するため、処理ｂ１と処理ｂ２との間に待ち時間Δｔ１が発生する。待ち時間Δｔ１が生じるため、この場合の転送効率は低い。
【００３０】
図２（１）の（１−２）に示すように、処理ｂ１の処理量が多い場合（処理時間が長い場合）、処理ａ２が完了した場合でも、処理ｂ１が実行中であるため、処理ｂ２を開始することができない。従って、処理ａ１と処理ａ２との間に待ち時間Δｔ２が生じ、転送効率が低下する。
【００３１】
図２（１）の（１−３）に示すように、処理ｂ１の処理時間と処理ａ２の処理時間とが一致する場合、待ち時間が少なくなり、最も効率よく転送を行うことができる。図２（１−３）では、処理ｂ１の終了時刻と処理ａ２の終了時刻とが時刻Ｐで一致する様子が示されている。
【００３２】
そこで、本実施例では、図２（２）〜図２（５）に示すように、第１バッファ２１，第２バッファ２２のサイズを処理ａ，ｂの処理速度の比に応じて決定する。まず、図２（２）に示すように、処理ａの処理速度をＶａ、処理ｂの処理速度をＶｂ、バッファ２４のサイズをＮ、処理ａ１で処理するデータサイズをＮ１とする。
【００３３】
図２（３）に示すように、処理ｂ１に要する処理時間Ｔｂ１は、Ｎ１をＶｂで除算することにより求められる（Ｔｂ１＝Ｎ１／Ｖｂ）。同様に、図２（４）に示すように、処理ａ２に要する処理時間Ｔａ２は、（Ｎ−Ｎ１）をＶａで除算することにより求められる（Ｔａ２＝（Ｎ−Ｎ１）／Ｖａ）。
【００３４】
図２（１−３）で示すように、処理ａ２の処理時間と処理ｂ１の処理時間とが一致する場合、転送効率が向上する。従って、図２（３）に示す式と図２（４）に示す式とが等しくなる場合（Ｔｂ１＝Ｔａ１）、最短時間で処理を完了することができる。従って、図２（５）に示すように、Ｎ１／Ｖｂ＝（Ｎ−Ｎ１）／Ｖａを解くことにより、Ｎ１：（Ｎ−Ｎ１）＝Ｖｂ：Ｖａを得る。つまり、２つの処理ａ，ｂの処理速度Ｖａ，Ｖｂの比に応じて、バッファ２４を第１バッファ２１と第２バッファ２２とに分割することにより、処理間の待ち時間を少なくして転送効率を高めることができる。例えば、後述のように、先行して実行される処理ａの処理速度Ｖａが、処理ｂの処理速度Ｖｂの１／３である場合、第１バッファ２１のサイズを第２バッファ２２のサイズの３倍に設定すればよい。この場合、サイズの大きい第１バッファ２１から使用する。
【００３５】
図３は、転送処理を示すフローチャートである。以下に示すフローチャートは、本発明の理解及び実施に必要な程度で転送処理の概略を示しており、実際のコンピュータプログラムと異なる場合がある。いわゆる当業者であれば、図示されたステップを他のステップに変更したり、一部のステップを削除等することができるであろう。なお、以下の説明では、便宜上、コントローラ１０を主語として説明するが、転送制御部１１を主語としてもよい。
【００３６】
プリンタ１のコントローラ１０は、プリンタ１にメモリカード３が接続されたか否かを監視している（Ｓ１０）。メモリカード３がインターフェース部３１に接続されると（S10:YES）、コントローラ１０はメモリカード３にアクセスして、画像リストを作成する（Ｓ１１）。画像リストとは、メモリカード３に記憶されている画像の一覧情報であり、コントローラ１０がメモリカード３からサムネイル画像やメタ情報を読み出すことにより、作成される。コントローラ１０は、画像リストの作成時に、メモリカード３からデータを読み出す場合の速度Ｖｒを検出することができる（Ｓ１３）。
【００３７】
メモリカード３がプリンタ１に装着され、メモリカード３とインターフェース部３１とが接続されると、メモリカード３がＰＣ２にマウントされる（Ｓ１１）。即ち、ＰＣ２は、メモリカード３を記憶装置として利用することができるようになる。ＰＣ２は、ユーザからの指示により、または、画像処理ソフトウェアからの指示により、プリンタ１に対して画像データの転送を指示する（Ｓ１４）。
【００３８】
コントローラ１０は、ＰＣ２からの転送指示を受信すると、ＰＣ２とプリンタ１との間で画像データを転送するために使用されるポート（本実施例では、インターフェース部３０）を判別する（Ｓ１５）。コントローラ１０は、例えば、転送速度管理テーブルＴ１を用いることにより、判別されたポートの転送速度Ｖｔを取得する（Ｓ１６）。転送速度管理テーブルＴ１は、コントローラ１０内のメモリに予め記憶されており、各ポートの種別毎に予め転送速度Ｖｔが設定されている。
【００３９】
コントローラ１０は、Ｓ１３で取得した読込み速度ＶｒとＳ１６で取得した転送速度Ｖｔとの比（Ｖｒ：Ｖｔ）に応じて、第１バッファ２１のサイズと第２バッファ２２のサイズを決定する（Ｓ１７）。コントローラ１０は、第１バッファ２１と第２バッファ２２とを所定の順番で交互に使用しながら、メモリカード３から画像データを読み込む処理１２と、読み込んだ画像データをＰＣ２に転送する処理１３とを実行する（Ｓ１８）。ＰＣ２は、プリンタ１から送信された画像データを受信して、ＰＣ２内のメモリに記憶させる（Ｓ１９）。コントローラ１０は、メモリカード３内の全画像データをＰＣ２に転送するまで、Ｓ１８を繰り返し実行する（Ｓ２０）。
【００４０】
ここで、「第１処理の第１処理速度を取得する第１ステップ」はＳ１３に、「第２処理の第２処理速度を取得する第２ステップ」はＳ１６に、「第１処理速度と第２処理速度の比に応じて、共通のメモリ領域を複数のサブメモリ領域に分割する第３ステップ」はＳ１７に、それぞれ対応する。
【００４１】
「複数のサブメモリ領域のうち所定の順序で選択される所定のサブメモリ領域に、第１処理の処理結果を格納させる第４ステップ」は、例えば、図２（１）や図５等に示す処理ａ１に対応する。「第１処理の処理結果を所定のサブメモリ領域を介して引継ぎ、第１処理の処理結果について第２処理を実行させる第５ステップ」は、図２（１）や図５等に示す処理ｂ１に対応する。「第２処理が実行される間に、所定のサブメモリ領域の次に選択される他の所定のサブメモリ領域に、第１処理の新たな処理結果を格納させる第６ステップ」は、例えば、図２（１）や図５等に示す処理ａ２に対応する。「第５ステップの完了後に、第１処理の新たな処理結果を他の所定のサブメモリ領域を介して引継ぎ、第１処理の新たな処理結果について第２処理を実行させる第７ステップ」は、例えば、図２（１）や図５等に示す処理ｂ２に対応する。
【００４２】
図４〜図７を参照して、転送効率の改善効果について説明する。以下の例では、バッファの合計サイズをＮバイト、転送すべきデータのサイズを２Ｎバイトとする。また、図４，図５において、処理ａ（読込み処理１２）の速度Ｖａは、処理ｂ（転送処理１３）の速度Ｖｂの１／３であるとする。即ち、ＰＣ２へのデータ転送速度Ｖｂの方が、メモリカード３からのデータ読込み速度Ｖａよりも３倍速い場合を説明する。
【００４３】
図４（ａ）は、バッファを１本だけ使用するシングルバッファの場合を示す。シングルバッファの場合、１回目の読込み処理ａ１が完了した後で、１回目の転送処理ｂ１が行われる。１回目の転送処理ｂ１が完了すると、バッファを再利用できる。そして、２回目の読込処理ａ２及び２回目の転送処理ｂ２を実行することにより、合計で２Ｎバイトのデータがメモリカード３からＰＣ２に送信される。シングルバッファの場合の転送が完了するまでの時間をｔ１とする。
【００４４】
図４（ｂ）は、従来のダブルバッファの場合を示す。図４（ｂ）では、Ｎバイトのバッファを２個のバッファに等分し、これら２個のバッファを交互に使用して、データを転送する。メモリカード３から読み出されたデータは、Ｎ／２のサイズの第１バッファに記憶され（ａ１）、ＰＣ２に転送される（ｂ１）。１回目の読込み処理ａ１の完了と同時に、Ｎ／２サイズの第２バッファを用いて２回目の読込み処理ａ２が開始される。２回目の読込み処理ａ２が完了すると、２回目の転送処理ｂ２が開始される。処理ａ１，ｂ１と処理ａ２，ｂ２のセットを２回繰り返すことにより、Ｎバイトのデータがメモリカード３からＰＣ２に転送される。
【００４５】
バッファを等分したダブルバッファの場合の所要時間をｔ２とする。図４（ａ）中の所要時間ｔ１と図４（ｂ）中の所要時間ｔ２とを比較すると、一見して明らかなように、ｔ２の方がｔ１よりも短縮されている。
【００４６】
図５は、一方の処理速度Ｖａと他方の処理速度Ｖｂの比に応じて、Ｎバイトのバッファ２４を第１バッファ２１と第２バッファ２２とに分割する例を示す。即ち、図５は、本実施例による改善されたダブルバッファ方式を示している。
【００４７】
図５（ａ）に示すように、処理速度Ｖａと処理速度Ｖｂの比に応じて、大サイズの第１バッファ２１と小サイズのバッファ２２とが設定される。この例では、第１バッファ２１は、第２バッファ２２よりも３倍大きくなる。
【００４８】
図５（ｂ）に示すように、この例では、先行して開始される処理ａ（例えば、読込み処理１２）の処理速度Ｖａの方が、その後に開始される処理ｂ（例えば、転送処理１３）の処理速度Ｖｂよりも遅い。従って、最初に、よりサイズの大きい第１バッファ２１から使用され、次に、よりサイズの小さい第２バッファ２２が使用される。第１バッファ２１を用いて処理ａ１が完了すると、処理ｂ１が実行される。これと同時に、第２バッファ２２を用いて処理ａ２が実行され、処理ａ２の完了と同時に処理ｂ２が実行される。１回目の転送処理ｂ１の完了時期と２回目の読込み処理ａ２の完了時期とは一致する。
【００４９】
本実施例による所要時間をｔ３とする。図５（ｂ）では、通常のダブルバッファの場合の所要時間ｔ２と比較している。本実施例の方が図４（ｂ）に示す通常のダブルバッファよりも転送時間を短くすることができる。
【００５０】
図６，図７は、先行して開始される処理ａの速度Ｖａの方が、後続する処理ｂの速度Ｖｂよりも２倍速い場合を示す。例えば、ＰＣ２から受信したデータをメモリカード３に書き込むような場合である。実際には、ＰＣ２からデータを受信する速度は、メモリカード３にデータを書き込む速度よりも２倍以上速い。ここでは、説明の便宜上、２倍の速度差があるものとして説明する。また、都合上、バッファ２４のサイズをＮｘとする。
【００５１】
図６（ａ）は、シングルバッファの場合を示す。動作の基本は図４（ａ）で説明したので省略する。この場合の所要時間をｔ４とする。図６（ｂ）は、従来のダブルバッファの場合を示す。この場合の所要時間をｔ５とする。ｔ４とｔ５を比べると、明らかにｔ５の方が短い。
【００５２】
図７は、本実施例による、２つの処理速度の比に応じてバッファ２４を分割する場合の例を示す。図７（ａ）に示すように、速度Ｖａと速度Ｖｂの比が１：２であるから、第１バッファ２１のサイズと第２バッファ２２のサイズの比も１：２に設定される。図７（ｂ）に示すように、先行して開始される処理ａの速度Ｖａの方が、後続する処理の速度Ｖｂよりも速いため、小サイズの第２バッファ２２から先に使用され、次に大サイズの第１バッファ２１が使用される。本実施例による所要時間をｔ６とする。通常のダブルバッファの場合の所要時間ｔ５と比較すると、本実施例の方が（ｔ６−ｔ５）だけ早く全処理を完了させることができる。
【００５３】
上述の通り、本実施例では、異なる２つの処理速度の比に応じて、バッファ２４を第１バッファ２１と第２バッファ２２とに分割し、これら各バッファ２１，２２を所定の順番で交互に使用する。これにより、同一サイズのバッファを２個使用する従来のダブルバッファに比べて、所要時間を短縮することができる。
【００５４】
本実施例では、メモリカード３からＰＣ２へのデータ転送（アップストリーム）と、ＰＣ２からメモリカード３へのデータ転送（ダウンストリーム）の両方に対応可能な、情報処理装置またはデータ転送装置としてのプリンタを採用する。従って、アップストリーム及びダウンストリームの双方において、先行して開始される処理と後続する処理との間に速度差がある場合にも対応することができ、使い勝手が向上する。
【００５５】
本実施例では、メモリカード３内に記憶されている画像の一覧を取得する際に、メモリカード３からデータを読み出す速度を検出する。従って、種々のメモリカード３に対応することができ、適切なサイズのバッファ２１，２２を設定して転送効率を高めることができる。インターフェース規格が同一であっても、メモリカード３からのデータ読出し速度は、各ベンダ及び各製品バージョンによって種々相違する。本実施例では、メモリカード３からデータを読み出す際の速度を実測するため、種々のメモリカード３に対応することができる。
【００５６】
なお、図５では、先行処理ａの方が後続処理ｂの半分の速度の場合を説明し、図７では、先行処理ａの方が後続処理ｂよりも３倍速い場合を説明した。図示した例以外の場合、例えば、処理ａの速度が処理ｂの速度の１／１０の場合や、処理ａの速度が処理ｂの速度の５倍である場合等でも、転送効率が改善されることは当業者であれば、理解できるであろう。
【実施例２】
【００５７】
図８に基づいて第２実施例を説明する。本実施例を含む以下の各実施例は、第１実施例の変形例に相当する。本実施例では、メモリカード３からデータを読み出す速度を、予めコントローラ１０内に記憶させている。
【００５８】
図８は、本実施例による転送処理を示すフローチャートである。本実施例では、コントローラ１０内に予め記憶されているメモリカード管理テーブルＴ２を用いることにより、メモリカード３からデータを読み出す際の速度Ｖｒを取得する（Ｓ１３Ａ）。
【００５９】
メモリカード管理テーブルＴ２は、例えば、ベンダ名と、製品名及び読込み速度Ｖｒとを対応付けて管理する。コントローラ１０は、プリンタ１に装着されたメモリカード３のベンダ名や製品名に基づいてテーブルＴ２を検索することにより、そのメモリカード３からデータを読み込む速度Ｖｒを取得することができる。このように構成される本実施例も第１実施例と同様の効果を奏する。
【００６０】
なお、プリンタ１がインターネット等の通信ネットワークに接続可能な場合、コントローラ１０は、通信ネットワーク上の管理サーバと交信することにより、テーブルＴ２を自動的に更新してもよい。
【実施例３】
【００６１】
図９に基づいて第３実施例を説明する。本実施例では、処理速度の比の変動に応じて、動的にバッファ２４を分割する。図９は、本実施例による転送処理を示すフローチャートである。本実施例では、サイズの異なる２個のバッファ２１，２２を用いたデータ転送が開始された後、ＰＣ２への実際の転送速度Ｖｔａを計測する（Ｓ２１）。コントローラ１０は、初期設定された転送速度Ｖｔと実際の転送速度Ｖｔａとの差が所定の閾値Ｔｈを超えたか否かを判定する（Ｓ２２）。プリンタ１からＰＣ２への転送速度が閾値Ｔｈを超えて変動した場合（S22:YES）、コントローラ１０は、実測された転送速度に基づいて、第１バッファ２１，第２バッファ２２のサイズを再設定する（Ｓ１７）。
【００６２】
このように構成される本実施例も第１実施例と同様の効果を奏する。これに加えて、本実施例では、プリンタ１とＰＣ２との間の転送速度Ｖｔを実測し、実測値と既定値との差が閾値Ｔｈを超えた場合に、実際の転送速度とメモリカード３からの読込み速度の比に基づいて、バッファ２１，２２を再設定する。従って、プリンタ１とＰＣ２とを接続する通信ネットワークの混雑度に応じて、適切なサイズのバッファ２１，２２を生成し、転送効率を高めることができる。
【実施例４】
【００６３】
図１０に基づいて第４実施例を説明する。本実施例では、２つの処理速度の比に応じて、３個のバッファ２１，２２，２３を生成し、これら３個のバッファを所定の順番で使用することにより、データを転送する。
【００６４】
図１０（ａ）に示すように、本実施例では、処理ａの処理速度Ｖａと処理ｂの処理速度Ｖｂとの比に応じて、バッファ２４を、第１バッファ２１と、第２バッファ２２と第３バッファ２３とに分割する。図１０には、速度Ｖｂの方が速度Ｖａよりも３倍速い場合が示されている。
【００６５】
第１バッファ２１のサイズ（ＳＺ２１）と第２バッファ２２のサイズ（ＳＺ２２）の比は、Ｖａ：Ｖｂに一致する（ＳＺ２２／ＳＺ２１＝Ｖａ／Ｖｂ）。同様に、第２バッファ２２のサイズと第３バッファ２３のサイズ（ＳＺ２３）の比（ＳＺ２３／ＳＺ２２）も、Ｖａ：Ｖｂに一致している（ＳＺ２２／ＳＺ２１＝Ｖａ／Ｖｂ）。同一サイズのバッファ２４を第１実施例では２個に分割し、本実施例では３個に分割するため、第１実施例の第１バッファ２１，第２バッファ２２のサイズの方が、本実施例の第１バッファ２１，第２バッファ２２のサイズよりも大きい。
【００６６】
図１０（ｂ）には、図５（ｂ）で示した第１実施例によるダブルバッファ方式と、本実施例によるトリプルバッファ方式とが対比されている。図１０（ｂ）の上側はダブルバッファ方式を、図１０（ｂ）の下側はトリプルバッファ方式をそれぞれ示す。先行処理ａの速度Ｖａの方が後続処理ｂの速度Ｖｂよりも遅いため、最大サイズの第１バッファ２１を使用した後、中サイズの第２バッファ２２を使用し、最後に最小サイズの第３バッファ２３を使用する。
【００６７】
図１０（ｂ）中に点線で示す時刻Ｐ１に着目する。時刻Ｐ１において、ダブルバッファ方式の場合は、処理ａ２及び処理ｂ１がそれぞれ完了する。トリプルバッファ方式の場合は、処理ａ３及び処理ｂ２がそれぞれ完了する。つまり、時刻Ｐ１に至るまでの時間内で、処理ｂは、第２バッファ２２及び第３バッファ２３の合計サイズのデータを転送することができ、第１実施例よりも処理ｂの効率を上げることができる。
【００６８】
なお、上述した実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなく、他の様々な態様で本発明を実施できる。
【００６９】
例えば、第３実施例では、処理速度の比に応じて３個のバッファを生成する場合を述べたが、これに限らず、４個以上のバッファを生成してもよい。但し、バッファの分割数が増加するほど、バッファを切り替えるためのオーバーヘッドも増加するため、オーバーヘッドを考慮してバッファの分割数を設定するのが好ましい。
【００７０】
本実施例では、プリンタを例に挙げて説明したが、本発明はこれに限らず、例えば、カードリーダ、セットトップボックス、中継装置等のような、データ供給装置とデータ利用装置との間に介在してデータ転送を中継する装置に適用可能である。
【図面の簡単な説明】
【００７１】
【図１】本実施例による情報処理装置を含む情報処理システムの全体構成図である。
【図２】２つの処理速度の比に応じてバッファを分割する場合を考察する説明図である。
【図３】転送処理のフローチャートである。
【図４】シングルバッファ及び従来のダブルバッファの転送状況を示す説明図である。
【図５】本実施例による転送状況を示す説明図である。
【図６】シングルバッファ及びダブルバッファの転送状況を示す説明図である。
【図７】本実施例による転送状況を示す説明図である。
【図８】第２実施例による転送処理のフローチャートである。
【図９】第３実施例による転送処理のフローチャートである。
【図１０】第４実施例による転送の様子を示す説明図である。
【符号の説明】
【００７２】
１…プリンタ、２…パーソナルコンピュータ、３…メモリカード、１０…コントローラ、１１…転送制御部、１２…読込み処理、１３…転送処理、１４…受信処理、１５…書込み処理、２０…メモリ部、２１〜２４…バッファ、３０，３１…インターフェース部、４０…スキャナ、４１…ユーザインターフェース部、４２…印刷エンジン、Ｔ１…転送速度管理テーブル、Ｔ２…メモリカード管理テーブル
【図１】
2009070012.tif 000003
【図２】
2009070012.tif 000004
【図３】
2009070012.tif 000005
【図４】
2009070012.tif 000006
【図５】
2009070012.tif 000007
【図６】
2009070012.tif 000008
【図７】
2009070012.tif 000009
【図８】
2009070012.tif 000010
【図９】
2009070012.tif 000011
【図１０】
2009070012.tif 000012