JP2009070012A - 情報処理装置、情報処理方法及びデータ転送装置。 - Google Patents
情報処理装置、情報処理方法及びデータ転送装置。 Download PDFInfo
- Publication number
- JP2009070012A JP2009070012A JP2007236079A JP2007236079A JP2009070012A JP 2009070012 A JP2009070012 A JP 2009070012A JP 2007236079 A JP2007236079 A JP 2007236079A JP 2007236079 A JP2007236079 A JP 2007236079A JP 2009070012 A JP2009070012 A JP 2009070012A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- memory area
- sub
- processing speed
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】本発明は、それぞれ異なる処理速度の複数の処理を効率よく実行する。
【解決手段】PC2は、プリンタ1を介してメモリカード3にデータを入出力することができる。PC2がメモリカード3内のデータを読み出す場合、コントローラ10は、メモリカード3からデータを読み込む処理12の速度と、読み込んだデータをPC2に転送する処理13の速度との比に応じて、バッファ24を第1バッファ21と第2バッファ22に分割する。コントローラ10は、第1バッファ21,第2バッファ22の順番で交互に使用しながら、読込み処理12と転送処理13を並列実行する。
【選択図】図1
【解決手段】PC2は、プリンタ1を介してメモリカード3にデータを入出力することができる。PC2がメモリカード3内のデータを読み出す場合、コントローラ10は、メモリカード3からデータを読み込む処理12の速度と、読み込んだデータをPC2に転送する処理13の速度との比に応じて、バッファ24を第1バッファ21と第2バッファ22に分割する。コントローラ10は、第1バッファ21,第2バッファ22の順番で交互に使用しながら、読込み処理12と転送処理13を並列実行する。
【選択図】図1
Description
本発明は、情報処理装置、情報処理方法及びデータ転送装置に関する。
同一サイズの2つのバッファを用いてデータを転送する技術は、ダブルバッファとして知られている(特許文献1)。従来技術では、一方のバッファにデータを蓄積しながら、他方のバッファからデータを送信する。これにより、単一のバッファを用いる場合よりも高速にデータを転送することができる。
特開2007−065948号公報
一方のバッファへデータを書込む速度と他方のバッファからデータを読み出す速度とが等しい場合、同一サイズのバッファを2個用いることにより、高速なデータ転送を行うことができる。しかし、実際には、例えば、USB(Universal Serial Bus)、IEEE1394(the Institute of Electrical and Electronics Engineers 1394)、PCI(Peripheral Component Interconnect)のような種々の通信規格毎にそれぞれ速度が異なり、かつ、データを供給する装置(例えば、メモリカード等)とデータを利用する装置(例えば、パーソナルコンピュータ等)も、機種毎にそれぞれデータ送受信の速度が異なる。例えば、USBポートの転送速度と、フラッシュメモリデバイス等を備えるメモリカードへのデータ入出力速度はそれぞれ異なる。一般的に、USB転送速度の方がメモリカードのデータ入出力速度よりも速い。
このように、データを供給する側及びデータを利用する側の速度が異なる場合、速度差に起因する待ち時間が生じる。従って、同一サイズの2個のバッファを用いるダブルバッファ技術では、データ転送速度の向上に限界がある。
本発明は、このような課題に鑑みてなされたもので、その目的は、より効率的に情報処理を行うことができるようにした情報処理装置、情報処理方法及びデータ転送装置を提供することにある。
上記課題を解決すべく、本発明の一つの観点に従う、処理速度の異なる複数の処理を共通のメモリ領域を用いて並列実行させる情報処理装置は、第1処理と、共通のメモリ領域を介して引き継いだ第1処理の処理結果をさらに処理する第2処理とを並列実行する制御部であって、第1処理を第1処理速度で実行し、第2処理を第1処理速度と異なる第2処理速度で実行する制御部と、共通のメモリ領域を管理するメモリ領域管理部であって、第1処理速度と第2処理速度の比に応じて共通のメモリ領域を複数のサブメモリ領域に分割するメモリ領域管理部と、を備え、制御部は、複数のサブメモリ領域を交互に使用しながら、第1処理と第2処理とを並列に実行する。
例えば、第1処理は、入力されたデータをサブメモリ領域に記憶させる処理、第2処理は、サブメモリ領域に記憶されたデータを読み出して外部に出力させる処理である。
第1処理速度が第2処理速度よりも遅い場合、制御部は、複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用する。
第1処理速度が第2処理速度よりも速い場合、制御部は、複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用する。
第1処理速度または第2処理速度の少なくともいずれか一方は、予め設定される所定値を使用してもよい。
メモリ領域管理部は、第1処理速度または第2処理速度を監視し、第1処理速度または第2処理速度のいずれか一方が予め設定される閾値を超えて変化した場合に、第1処理速度と第2処理速度の比に応じて共通のメモリ領域を複数のサブメモリ領域に新たに分割する構成でもよい。
本発明の他の観点に従う、処理速度の異なる複数の処理を並列実行させる情報処理方法は、第1処理の第1処理速度を取得する第1ステップと、第2処理の第2処理速度を取得する第2ステップと、第1処理速度と第2処理速度の比に応じて、共通のメモリ領域を複数のサブメモリ領域に分割する第3ステップと、複数のサブメモリ領域のうち所定の順序で選択される所定のサブメモリ領域に、第1処理の処理結果を格納させる第4ステップと、第1処理の処理結果を所定のサブメモリ領域を介して引継ぎ、第1処理の処理結果について第2処理を実行させる第5ステップと、第2処理が実行される間に、所定のサブメモリ領域の次に選択される他の所定のサブメモリ領域に、第1処理の新たな処理結果を格納させる第6ステップと、第5ステップの完了後に、第1処理の新たな処理結果を他の所定のサブメモリ領域を介して引継ぎ、第1処理の新たな処理結果について第2処理を実行させる第7ステップと、をそれぞれ実行する。
本発明の更に別の観点に従う、外部装置と記憶媒体との間のデータ転送を制御するためのデータ転送装置は、通信速度の異なる複数のインターフェース部と、メモリ領域を管理するメモリ領域管理部と、外部装置と記憶媒体との間のデータ転送を第1転送モードまたは第2転送モードのいずれかに基づいて制御する制御部とを備え、(1)第1転送モードは、(1-1)記憶媒体に記憶されているデータを複数のインターフェース部のうち一方のインターフェース部を介して読み出し、メモリ領域に記憶させる読込み処理と、(1-2)メモリ領域に記憶されたデータを読み出して、複数のインターフェース部のうち他方のインターフェース部を介して、外部装置に送信する転送処理とを含み、(2)第2転送モードは、(2-1)外部装置から他方のインターフェース部を介して送信されたデータをメモリ領域に書き込む受信処理と、(2-2)メモリ領域に書き込まれたデータを読み出し、一方のインターフェース部を介して、記憶媒体に書き込む書込み処理とを含み、(3)メモリ領域管理部は、(3-1)第1転送モードが実行される場合、読込み処理の処理速度と転送処理の処理速度との比に応じて、メモリ領域を複数のサブメモリ領域に分割し、(3-2)第2転送モードが実行される場合、受信処理の処理速度と書込み処理の処理速度の比に応じて、メモリ領域を複数のサブメモリ領域に分割し、(4)制御部は、(4-1)第1転送モードを実行する場合、複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用することにより、読込み処理及び転送処理を並列実行し、(4-2)第2転送モードを実行する場合、複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用することにより、受信処理及び書込み処理を並列実行する。
なお、本発明の構成の少なくとも一部は、コンピュータプログラムとして実現可能な場合があり、そのコンピュータプログラムは通信ネットワークや記憶媒体を介して流通させることができる。
以下、本発明の実施形態を添付図面を参照しつつ詳細に説明する。本実施形態では、以下に詳述するように、複数の処理の処理速度の比に応じてメモリ領域をサブメモリ領域に分割し、複数のサブメモリ領域を交互に用いて、複数の処理を並列実行する。「情報処理装置」または「データ転送装置」としてプリンタ1を例に挙げて説明するが、本発明はこれに限らず、例えば、カードリーダ、カードリーダ/ライタ等のような他の製品として実現することもできる。
図1は、本実施例による情報処理装置を含む情報処理システムの全体構成を示す説明図である。この情報処理システムは、例えば、複合機能型プリンタ(以下、プリンタ)1と、パーソナルコンピュータ(以下、PC)2と、メモリカード3とを備える。PC2は「外部装置」の一例であり、メモリカード3は「記憶媒体」の一例である。
「情報処理装置」または「データ転送装置」の一例であるプリンタ1は、例えば、コントローラ10と、転送制御部11と、メモリ部20と、インターフェース部30,31と、スキャナ40と、ユーザインターフェース(以下、UI)41と、印刷エンジン42とを備える。プリンタ1は、印刷機能、スキャナ機能、コピー機能、データ転送機能をそれぞれ実現する。
印刷機能とは、PC2やメモリカード3から受信した印刷データを印刷エンジン42によって印刷する機能である。スキャナ機能とは、スキャナ40で読み取った画像データをPC2やメモリカード3に転送する機能である。コピー機能とは、スキャナ40で読み取った画像データを印刷エンジン42によって印刷させる機能である。データ転送機能とは、メモリカード3とPC2との間でデータを転送させる機能である。つまり、データ転送機能とは、PC2がメモリカード3にデータを書き込んだり、PC2がメモリカード3からデータを読み出すための機能である。
コントローラ10は、プリンタ1の作動を制御する。コントローラ10は、転送制御部11を備える。「制御部」としての転送制御部11は、例えば、メモリカード3からインターフェース部31を介してデータ(例えば、画像データ)を読み込む処理12と、読み込んだデータをインターフェース部30を介してPC2に転送する処理13と、PC2からインターフェース部30を介してデータを受信する処理14と、受信データをインターフェース部31を介してメモリカード3に書き込む処理15とを実行する。これら各処理のうち、読込み処理12及び転送処理13は「第1転送モード」に属し、受信処理14及び書込み処理15は「第2転送モード」に属する。
「メモリ領域管理部」としてのメモリ部20は、「共通のメモリ領域」としてのバッファ24を備えている。後述のように、このバッファ24は、読込み処理12の速度と転送処理13の速度の比、または、受信処理14の速度と書込み処理15の速度の比のいずれかに応じて、第1バッファ21及び第2バッファ22に分割される。従って、処理速度の比に応じて生成されるため、第1バッファ21のサイズと第2バッファ22のサイズは異なる。第1ばっふぁ21を大バッファ、第2バッファ22を小バッファと呼ぶこともできる。
インターフェース部30は、PC2とプリンタ1との間で通信を行うためのインターフェースであり、上位装置用インターフェースと呼ぶこともできる。インターフェース部31は、プリンタ1とメモリカード3との間で通信を行うためのインターフェースであり、下位装置用インターフェースと呼ぶこともできる。
なお、便宜上、2つのインターフェース部30,31のみを図示しているが、より多くのインターフェース部を備えることもできる。即ち、プリンタ1は、複数の上位装置用インターフェース部のうちのいずれか一つを用いてPC2と通信を行うことができ、かつ、複数の下位装置用インターフェース部のうちのいずれか一つを用いてメモリカード3と通信を行うことができる。
「外部装置」としてのPC2は、プリンタ1に印刷データを送信して印刷させたり、スキャナ40で読み取った画像データをプリンタ1から取得する。PC2は、プリンタ1を介して、メモリカード3から画像データを読み出したり、メモリカード3の画像データを書き換えることができる。PC2に代えて、例えば、携帯電話やディジタルカメラ、ディジタルテレビジョン等でもよい。
「記憶媒体」としてのメモリカード3は、例えば、ディジタルカメラ等で撮影された画像データを記憶する。便宜上「カード」と呼ぶが、カード形状に限らず、棒状やキューブ状等の他の形状でもよい。メモリカード3は、例えば、フラッシュメモリのような半導体メモリを備えて構成される。しかし、これに限らず、小型ハードディスク等の他の記憶デバイスを有する構成でもよい。
図2は、複数のバッファ21,22を用いて、処理速度の異なる複数の処理を実行させる場合を考察する説明図である。図2(1)は、2つの異なる処理a,bを2つのバッファで処理する様子を示す。図2(1)の横軸は時間軸である。
例えば、処理aはメモリカード3からデータを読み出す処理、処理bは読み出したデータをPC2に転送する処理である。あるいは、処理aはPC2からデータを受信する処理、処理bは受信データをメモリカード3に書き込む処理である。
処理aは、処理a1及び処理a2の2回に分けて実行され、処理bも処理b1及び処理b2の2回に分けて実行される。処理a1の完了によって処理b1が実行され、処理b1を実行中に別のバッファ(サブメモリ領域)を用いて、処理a2が実行される。
具体的には、例えば、一回目の読込み処理a1によって第1バッファ21にデータが読み込まれると、一回目の転送処理b1が開始され、第1バッファ21に記憶されたデータがPC2に転送される。一回目の読込み処理a1の完了後、直ちに第2バッファ22に次のデータが読み込まれる(a2)。第2バッファ22に記憶されたデータは、2回目の転送処理b2によってPC2に転送される。
図2(1)の(1−1)に示すように、処理b1の処理量が少ない場合(処理時間が短い場合)、処理a2が終了するよりも前に処理b1が完了するため、処理b1と処理b2との間に待ち時間Δt1が発生する。待ち時間Δt1が生じるため、この場合の転送効率は低い。
図2(1)の(1−2)に示すように、処理b1の処理量が多い場合(処理時間が長い場合)、処理a2が完了した場合でも、処理b1が実行中であるため、処理b2を開始することができない。従って、処理a1と処理a2との間に待ち時間Δt2が生じ、転送効率が低下する。
図2(1)の(1−3)に示すように、処理b1の処理時間と処理a2の処理時間とが一致する場合、待ち時間が少なくなり、最も効率よく転送を行うことができる。図2(1−3)では、処理b1の終了時刻と処理a2の終了時刻とが時刻Pで一致する様子が示されている。
そこで、本実施例では、図2(2)〜図2(5)に示すように、第1バッファ21,第2バッファ22のサイズを処理a,bの処理速度の比に応じて決定する。まず、図2(2)に示すように、処理aの処理速度をVa、処理bの処理速度をVb、バッファ24のサイズをN、処理a1で処理するデータサイズをN1とする。
図2(3)に示すように、処理b1に要する処理時間Tb1は、N1をVbで除算することにより求められる(Tb1=N1/Vb)。同様に、図2(4)に示すように、処理a2に要する処理時間Ta2は、(N−N1)をVaで除算することにより求められる(Ta2=(N−N1)/Va)。
図2(1−3)で示すように、処理a2の処理時間と処理b1の処理時間とが一致する場合、転送効率が向上する。従って、図2(3)に示す式と図2(4)に示す式とが等しくなる場合(Tb1=Ta1)、最短時間で処理を完了することができる。従って、図2(5)に示すように、N1/Vb=(N−N1)/Vaを解くことにより、N1:(N−N1)=Vb:Vaを得る。つまり、2つの処理a,bの処理速度Va,Vbの比に応じて、バッファ24を第1バッファ21と第2バッファ22とに分割することにより、処理間の待ち時間を少なくして転送効率を高めることができる。例えば、後述のように、先行して実行される処理aの処理速度Vaが、処理bの処理速度Vbの1/3である場合、第1バッファ21のサイズを第2バッファ22のサイズの3倍に設定すればよい。この場合、サイズの大きい第1バッファ21から使用する。
図3は、転送処理を示すフローチャートである。以下に示すフローチャートは、本発明の理解及び実施に必要な程度で転送処理の概略を示しており、実際のコンピュータプログラムと異なる場合がある。いわゆる当業者であれば、図示されたステップを他のステップに変更したり、一部のステップを削除等することができるであろう。なお、以下の説明では、便宜上、コントローラ10を主語として説明するが、転送制御部11を主語としてもよい。
プリンタ1のコントローラ10は、プリンタ1にメモリカード3が接続されたか否かを監視している(S10)。メモリカード3がインターフェース部31に接続されると(S10:YES)、コントローラ10はメモリカード3にアクセスして、画像リストを作成する(S11)。画像リストとは、メモリカード3に記憶されている画像の一覧情報であり、コントローラ10がメモリカード3からサムネイル画像やメタ情報を読み出すことにより、作成される。コントローラ10は、画像リストの作成時に、メモリカード3からデータを読み出す場合の速度Vrを検出することができる(S13)。
メモリカード3がプリンタ1に装着され、メモリカード3とインターフェース部31とが接続されると、メモリカード3がPC2にマウントされる(S11)。即ち、PC2は、メモリカード3を記憶装置として利用することができるようになる。PC2は、ユーザからの指示により、または、画像処理ソフトウェアからの指示により、プリンタ1に対して画像データの転送を指示する(S14)。
コントローラ10は、PC2からの転送指示を受信すると、PC2とプリンタ1との間で画像データを転送するために使用されるポート(本実施例では、インターフェース部30)を判別する(S15)。コントローラ10は、例えば、転送速度管理テーブルT1を用いることにより、判別されたポートの転送速度Vtを取得する(S16)。転送速度管理テーブルT1は、コントローラ10内のメモリに予め記憶されており、各ポートの種別毎に予め転送速度Vtが設定されている。
コントローラ10は、S13で取得した読込み速度VrとS16で取得した転送速度Vtとの比(Vr:Vt)に応じて、第1バッファ21のサイズと第2バッファ22のサイズを決定する(S17)。コントローラ10は、第1バッファ21と第2バッファ22とを所定の順番で交互に使用しながら、メモリカード3から画像データを読み込む処理12と、読み込んだ画像データをPC2に転送する処理13とを実行する(S18)。PC2は、プリンタ1から送信された画像データを受信して、PC2内のメモリに記憶させる(S19)。コントローラ10は、メモリカード3内の全画像データをPC2に転送するまで、S18を繰り返し実行する(S20)。
ここで、「第1処理の第1処理速度を取得する第1ステップ」はS13に、「第2処理の第2処理速度を取得する第2ステップ」はS16に、「第1処理速度と第2処理速度の比に応じて、共通のメモリ領域を複数のサブメモリ領域に分割する第3ステップ」はS17に、それぞれ対応する。
「複数のサブメモリ領域のうち所定の順序で選択される所定のサブメモリ領域に、第1処理の処理結果を格納させる第4ステップ」は、例えば、図2(1)や図5等に示す処理a1に対応する。「第1処理の処理結果を所定のサブメモリ領域を介して引継ぎ、第1処理の処理結果について第2処理を実行させる第5ステップ」は、図2(1)や図5等に示す処理b1に対応する。「第2処理が実行される間に、所定のサブメモリ領域の次に選択される他の所定のサブメモリ領域に、第1処理の新たな処理結果を格納させる第6ステップ」は、例えば、図2(1)や図5等に示す処理a2に対応する。「第5ステップの完了後に、第1処理の新たな処理結果を他の所定のサブメモリ領域を介して引継ぎ、第1処理の新たな処理結果について第2処理を実行させる第7ステップ」は、例えば、図2(1)や図5等に示す処理b2に対応する。
図4〜図7を参照して、転送効率の改善効果について説明する。以下の例では、バッファの合計サイズをNバイト、転送すべきデータのサイズを2Nバイトとする。また、図4,図5において、処理a(読込み処理12)の速度Vaは、処理b(転送処理13)の速度Vbの1/3であるとする。即ち、PC2へのデータ転送速度Vbの方が、メモリカード3からのデータ読込み速度Vaよりも3倍速い場合を説明する。
図4(a)は、バッファを1本だけ使用するシングルバッファの場合を示す。シングルバッファの場合、1回目の読込み処理a1が完了した後で、1回目の転送処理b1が行われる。1回目の転送処理b1が完了すると、バッファを再利用できる。そして、2回目の読込処理a2及び2回目の転送処理b2を実行することにより、合計で2Nバイトのデータがメモリカード3からPC2に送信される。シングルバッファの場合の転送が完了するまでの時間をt1とする。
図4(b)は、従来のダブルバッファの場合を示す。図4(b)では、Nバイトのバッファを2個のバッファに等分し、これら2個のバッファを交互に使用して、データを転送する。メモリカード3から読み出されたデータは、N/2のサイズの第1バッファに記憶され(a1)、PC2に転送される(b1)。1回目の読込み処理a1の完了と同時に、N/2サイズの第2バッファを用いて2回目の読込み処理a2が開始される。2回目の読込み処理a2が完了すると、2回目の転送処理b2が開始される。処理a1,b1と処理a2,b2のセットを2回繰り返すことにより、Nバイトのデータがメモリカード3からPC2に転送される。
バッファを等分したダブルバッファの場合の所要時間をt2とする。図4(a)中の所要時間t1と図4(b)中の所要時間t2とを比較すると、一見して明らかなように、t2の方がt1よりも短縮されている。
図5は、一方の処理速度Vaと他方の処理速度Vbの比に応じて、Nバイトのバッファ24を第1バッファ21と第2バッファ22とに分割する例を示す。即ち、図5は、本実施例による改善されたダブルバッファ方式を示している。
図5(a)に示すように、処理速度Vaと処理速度Vbの比に応じて、大サイズの第1バッファ21と小サイズのバッファ22とが設定される。この例では、第1バッファ21は、第2バッファ22よりも3倍大きくなる。
図5(b)に示すように、この例では、先行して開始される処理a(例えば、読込み処理12)の処理速度Vaの方が、その後に開始される処理b(例えば、転送処理13)の処理速度Vbよりも遅い。従って、最初に、よりサイズの大きい第1バッファ21から使用され、次に、よりサイズの小さい第2バッファ22が使用される。第1バッファ21を用いて処理a1が完了すると、処理b1が実行される。これと同時に、第2バッファ22を用いて処理a2が実行され、処理a2の完了と同時に処理b2が実行される。1回目の転送処理b1の完了時期と2回目の読込み処理a2の完了時期とは一致する。
本実施例による所要時間をt3とする。図5(b)では、通常のダブルバッファの場合の所要時間t2と比較している。本実施例の方が図4(b)に示す通常のダブルバッファよりも転送時間を短くすることができる。
図6,図7は、先行して開始される処理aの速度Vaの方が、後続する処理bの速度Vbよりも2倍速い場合を示す。例えば、PC2から受信したデータをメモリカード3に書き込むような場合である。実際には、PC2からデータを受信する速度は、メモリカード3にデータを書き込む速度よりも2倍以上速い。ここでは、説明の便宜上、2倍の速度差があるものとして説明する。また、都合上、バッファ24のサイズをNxとする。
図6(a)は、シングルバッファの場合を示す。動作の基本は図4(a)で説明したので省略する。この場合の所要時間をt4とする。図6(b)は、従来のダブルバッファの場合を示す。この場合の所要時間をt5とする。t4とt5を比べると、明らかにt5の方が短い。
図7は、本実施例による、2つの処理速度の比に応じてバッファ24を分割する場合の例を示す。図7(a)に示すように、速度Vaと速度Vbの比が1:2であるから、第1バッファ21のサイズと第2バッファ22のサイズの比も1:2に設定される。図7(b)に示すように、先行して開始される処理aの速度Vaの方が、後続する処理の速度Vbよりも速いため、小サイズの第2バッファ22から先に使用され、次に大サイズの第1バッファ21が使用される。本実施例による所要時間をt6とする。通常のダブルバッファの場合の所要時間t5と比較すると、本実施例の方が(t6−t5)だけ早く全処理を完了させることができる。
上述の通り、本実施例では、異なる2つの処理速度の比に応じて、バッファ24を第1バッファ21と第2バッファ22とに分割し、これら各バッファ21,22を所定の順番で交互に使用する。これにより、同一サイズのバッファを2個使用する従来のダブルバッファに比べて、所要時間を短縮することができる。
本実施例では、メモリカード3からPC2へのデータ転送(アップストリーム)と、PC2からメモリカード3へのデータ転送(ダウンストリーム)の両方に対応可能な、情報処理装置またはデータ転送装置としてのプリンタを採用する。従って、アップストリーム及びダウンストリームの双方において、先行して開始される処理と後続する処理との間に速度差がある場合にも対応することができ、使い勝手が向上する。
本実施例では、メモリカード3内に記憶されている画像の一覧を取得する際に、メモリカード3からデータを読み出す速度を検出する。従って、種々のメモリカード3に対応することができ、適切なサイズのバッファ21,22を設定して転送効率を高めることができる。インターフェース規格が同一であっても、メモリカード3からのデータ読出し速度は、各ベンダ及び各製品バージョンによって種々相違する。本実施例では、メモリカード3からデータを読み出す際の速度を実測するため、種々のメモリカード3に対応することができる。
なお、図5では、先行処理aの方が後続処理bの半分の速度の場合を説明し、図7では、先行処理aの方が後続処理bよりも3倍速い場合を説明した。図示した例以外の場合、例えば、処理aの速度が処理bの速度の1/10の場合や、処理aの速度が処理bの速度の5倍である場合等でも、転送効率が改善されることは当業者であれば、理解できるであろう。
図8に基づいて第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に相当する。本実施例では、メモリカード3からデータを読み出す速度を、予めコントローラ10内に記憶させている。
図8は、本実施例による転送処理を示すフローチャートである。本実施例では、コントローラ10内に予め記憶されているメモリカード管理テーブルT2を用いることにより、メモリカード3からデータを読み出す際の速度Vrを取得する(S13A)。
メモリカード管理テーブルT2は、例えば、ベンダ名と、製品名及び読込み速度Vrとを対応付けて管理する。コントローラ10は、プリンタ1に装着されたメモリカード3のベンダ名や製品名に基づいてテーブルT2を検索することにより、そのメモリカード3からデータを読み込む速度Vrを取得することができる。このように構成される本実施例も第1実施例と同様の効果を奏する。
なお、プリンタ1がインターネット等の通信ネットワークに接続可能な場合、コントローラ10は、通信ネットワーク上の管理サーバと交信することにより、テーブルT2を自動的に更新してもよい。
図9に基づいて第3実施例を説明する。本実施例では、処理速度の比の変動に応じて、動的にバッファ24を分割する。図9は、本実施例による転送処理を示すフローチャートである。本実施例では、サイズの異なる2個のバッファ21,22を用いたデータ転送が開始された後、PC2への実際の転送速度Vtaを計測する(S21)。コントローラ10は、初期設定された転送速度Vtと実際の転送速度Vtaとの差が所定の閾値Thを超えたか否かを判定する(S22)。プリンタ1からPC2への転送速度が閾値Thを超えて変動した場合(S22:YES)、コントローラ10は、実測された転送速度に基づいて、第1バッファ21,第2バッファ22のサイズを再設定する(S17)。
このように構成される本実施例も第1実施例と同様の効果を奏する。これに加えて、本実施例では、プリンタ1とPC2との間の転送速度Vtを実測し、実測値と既定値との差が閾値Thを超えた場合に、実際の転送速度とメモリカード3からの読込み速度の比に基づいて、バッファ21,22を再設定する。従って、プリンタ1とPC2とを接続する通信ネットワークの混雑度に応じて、適切なサイズのバッファ21,22を生成し、転送効率を高めることができる。
図10に基づいて第4実施例を説明する。本実施例では、2つの処理速度の比に応じて、3個のバッファ21,22,23を生成し、これら3個のバッファを所定の順番で使用することにより、データを転送する。
図10(a)に示すように、本実施例では、処理aの処理速度Vaと処理bの処理速度Vbとの比に応じて、バッファ24を、第1バッファ21と、第2バッファ22と第3バッファ23とに分割する。図10には、速度Vbの方が速度Vaよりも3倍速い場合が示されている。
第1バッファ21のサイズ(SZ21)と第2バッファ22のサイズ(SZ22)の比は、Va:Vbに一致する(SZ22/SZ21=Va/Vb)。同様に、第2バッファ22のサイズと第3バッファ23のサイズ(SZ23)の比(SZ23/SZ22)も、Va:Vbに一致している(SZ22/SZ21=Va/Vb)。同一サイズのバッファ24を第1実施例では2個に分割し、本実施例では3個に分割するため、第1実施例の第1バッファ21,第2バッファ22のサイズの方が、本実施例の第1バッファ21,第2バッファ22のサイズよりも大きい。
図10(b)には、図5(b)で示した第1実施例によるダブルバッファ方式と、本実施例によるトリプルバッファ方式とが対比されている。図10(b)の上側はダブルバッファ方式を、図10(b)の下側はトリプルバッファ方式をそれぞれ示す。先行処理aの速度Vaの方が後続処理bの速度Vbよりも遅いため、最大サイズの第1バッファ21を使用した後、中サイズの第2バッファ22を使用し、最後に最小サイズの第3バッファ23を使用する。
図10(b)中に点線で示す時刻P1に着目する。時刻P1において、ダブルバッファ方式の場合は、処理a2及び処理b1がそれぞれ完了する。トリプルバッファ方式の場合は、処理a3及び処理b2がそれぞれ完了する。つまり、時刻P1に至るまでの時間内で、処理bは、第2バッファ22及び第3バッファ23の合計サイズのデータを転送することができ、第1実施例よりも処理bの効率を上げることができる。
なお、上述した実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなく、他の様々な態様で本発明を実施できる。
例えば、第3実施例では、処理速度の比に応じて3個のバッファを生成する場合を述べたが、これに限らず、4個以上のバッファを生成してもよい。但し、バッファの分割数が増加するほど、バッファを切り替えるためのオーバーヘッドも増加するため、オーバーヘッドを考慮してバッファの分割数を設定するのが好ましい。
本実施例では、プリンタを例に挙げて説明したが、本発明はこれに限らず、例えば、カードリーダ、セットトップボックス、中継装置等のような、データ供給装置とデータ利用装置との間に介在してデータ転送を中継する装置に適用可能である。
1…プリンタ、2…パーソナルコンピュータ、3…メモリカード、10…コントローラ、11…転送制御部、12…読込み処理、13…転送処理、14…受信処理、15…書込み処理、20…メモリ部、21〜24…バッファ、30,31…インターフェース部、40…スキャナ、41…ユーザインターフェース部、42…印刷エンジン、T1…転送速度管理テーブル、T2…メモリカード管理テーブル
Claims (8)
- 処理速度の異なる複数の処理を共通のメモリ領域を用いて並列実行させる情報処理装置であって、
第1処理と、前記共通のメモリ領域を介して引き継いだ前記第1処理の処理結果をさらに処理する第2処理とを並列実行する制御部であって、前記第1処理を第1処理速度で実行し、前記第2処理を前記第1処理速度と異なる第2処理速度で実行する制御部と、
前記共通のメモリ領域を管理するメモリ領域管理部であって、前記第1処理速度と前記第2処理速度の比に応じて前記共通のメモリ領域を複数のサブメモリ領域に分割するメモリ領域管理部と、を備え、
前記制御部は、前記複数のサブメモリ領域を交互に使用しながら、前記第1処理と第2処理とを並列に実行する情報処理装置。 - 前記第1処理速度が前記第2処理速度よりも遅い場合、前記制御部は、前記複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用する請求項1に記載の情報処理装置。
- 前記第1処理速度が前記第2処理速度よりも速い場合、前記制御部は、前記複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用する請求項1に記載の情報処理装置。
- 前記第1処理速度または前記第2処理速度の少なくともいずれか一方は、予め設定される所定値が使用される請求項1に記載の情報処理装置。
- 前記メモリ領域管理部は、前記第1処理速度または前記第2処理速度を監視し、前記第1処理速度または前記第2処理速度のいずれか一方が予め設定される閾値を超えて変化した場合に、前記第1処理速度と前記第2処理速度の比に応じて前記共通のメモリ領域を複数のサブメモリ領域に新たに分割する請求項1に記載の情報処理装置。
- 前記第1処理は、入力されたデータを前記サブメモリ領域に記憶させる処理であり、
前記第2処理は、前記サブメモリ領域に記憶された前記データを読み出して外部に出力させる処理である請求項1に記載の情報処理装置。 - 処理速度の異なる複数の処理を並列実行させる情報処理方法であって、
第1処理の第1処理速度を取得する第1ステップと、
第2処理の第2処理速度を取得する第2ステップと、
前記第1処理速度と前記第2処理速度の比に応じて、共通のメモリ領域を複数のサブメモリ領域に分割する第3ステップと、
前記複数のサブメモリ領域のうち所定の順序で選択される所定のサブメモリ領域に、前記第1処理の処理結果を格納させる第4ステップと、
前記第1処理の処理結果を前記所定のサブメモリ領域を介して引継ぎ、前記第1処理の処理結果について前記第2処理を実行させる第5ステップと、
前記第2処理が実行される間に、前記所定のサブメモリ領域の次に選択される他の所定のサブメモリ領域に、前記第1処理の新たな処理結果を格納させる第6ステップと、
前記第5ステップの完了後に、前記第1処理の新たな処理結果を前記他の所定のサブメモリ領域を介して引継ぎ、前記第1処理の新たな処理結果について前記第2処理を実行させる第7ステップと、をそれぞれ実行する、処理速度の異なる複数の処理を並列実行させる情報処理方法。 - 外部装置と記憶媒体との間のデータ転送を制御するためのデータ転送装置であって、
通信速度の異なる複数のインターフェース部と、
メモリ領域を管理するメモリ領域管理部と、
前記外部装置と前記記憶媒体との間のデータ転送を第1転送モードまたは第2転送モードのいずれかに基づいて制御する制御部とを備え、
(1)前記第1転送モードは、(1-1)前記記憶媒体に記憶されているデータを前記複数のインターフェース部のうち一方のインターフェース部を介して読み出し、前記メモリ領域に記憶させる読込み処理と、(1-2)前記メモリ領域に記憶された前記データを読み出して、前記複数のインターフェース部のうち他方のインターフェース部を介して、前記外部装置に送信する転送処理とを含み、
(2)第2転送モードは、(2-1)前記外部装置から前記他方のインターフェース部を介して送信されたデータを前記メモリ領域に書き込む受信処理と、(2-2)前記メモリ領域に書き込まれた前記データを読み出し、前記一方のインターフェース部を介して、前記記憶媒体に書き込む書込み処理とを含み、
(3)前記メモリ領域管理部は、(3-1)前記第1転送モードが実行される場合、前記読込み処理の処理速度と前記転送処理の処理速度との比に応じて、前記メモリ領域を複数のサブメモリ領域に分割し、(3-2)前記第2転送モードが実行される場合、前記受信処理の処理速度と前記書込み処理の処理速度の比に応じて、前記メモリ領域を複数のサブメモリ領域に分割し、
(4)前記制御部は、(4-1)前記第1転送モードを実行する場合、前記複数のサブメモリ領域のうちサイズの大きいサブメモリ領域から順番に使用することにより、前記読込み処理及び前記転送処理を並列実行し、(4-2)前記第2転送モードを実行する場合、前記複数のサブメモリ領域のうちサイズの小さいサブメモリ領域から順番に使用することにより、前記受信処理及び前記書込み処理を並列実行する、
データ転送装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007236079A JP2009070012A (ja) | 2007-09-12 | 2007-09-12 | 情報処理装置、情報処理方法及びデータ転送装置。 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007236079A JP2009070012A (ja) | 2007-09-12 | 2007-09-12 | 情報処理装置、情報処理方法及びデータ転送装置。 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009070012A true JP2009070012A (ja) | 2009-04-02 |
Family
ID=40606219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007236079A Pending JP2009070012A (ja) | 2007-09-12 | 2007-09-12 | 情報処理装置、情報処理方法及びデータ転送装置。 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009070012A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011030009A (ja) * | 2009-07-27 | 2011-02-10 | Canon Inc | 画像処理装置、画像処理装置の制御方法、及びプログラム |
CN102467479A (zh) * | 2010-11-17 | 2012-05-23 | 英业达股份有限公司 | 主机间数据的传输方法 |
CN105446651A (zh) * | 2014-05-26 | 2016-03-30 | 腾讯科技(北京)有限公司 | 内存镜像方法和系统与数据发送装置和数据接收装置 |
WO2022224321A1 (ja) * | 2021-04-19 | 2022-10-27 | 日本電信電話株式会社 | 情報通信装置、情報通信方法、及びプログラム |
-
2007
- 2007-09-12 JP JP2007236079A patent/JP2009070012A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011030009A (ja) * | 2009-07-27 | 2011-02-10 | Canon Inc | 画像処理装置、画像処理装置の制御方法、及びプログラム |
CN102467479A (zh) * | 2010-11-17 | 2012-05-23 | 英业达股份有限公司 | 主机间数据的传输方法 |
CN105446651A (zh) * | 2014-05-26 | 2016-03-30 | 腾讯科技(北京)有限公司 | 内存镜像方法和系统与数据发送装置和数据接收装置 |
WO2022224321A1 (ja) * | 2021-04-19 | 2022-10-27 | 日本電信電話株式会社 | 情報通信装置、情報通信方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6475256B2 (ja) | コンピュータ、制御デバイス及びデータ処理方法 | |
CN103366338B (zh) | 图像处理装置和图像处理方法 | |
JP2004005541A (ja) | データ転送装置、データ転送方法、プログラム及び記録媒体 | |
JP2008009697A (ja) | 画像処理装置及びプログラム | |
JP2009070012A (ja) | 情報処理装置、情報処理方法及びデータ転送装置。 | |
US20120191989A1 (en) | Information processing apparatus with power saving mode, and control method and communication apparatus therefor | |
US8976373B2 (en) | Image processing apparatus, computer-readable storage medium storing program and image processing method | |
JP6904697B2 (ja) | 情報処理装置及び通信制御方法 | |
JP2007287084A (ja) | 画像処理装置及びプログラム | |
JP6500668B2 (ja) | ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム | |
JP5456434B2 (ja) | パイプ調停回路、パイプ調停方法 | |
JP6326888B2 (ja) | 画像処理装置及び画像形成装置、画像処理プログラム | |
US20170206628A1 (en) | Image processing apparatus, image processing method, and storage medium | |
JP5232728B2 (ja) | 画像形成装置 | |
WO2021082877A1 (zh) | 访问固态硬盘的方法及装置 | |
US20160154603A1 (en) | Data transfer control device, apparatus including the same, and data transfer control method | |
JP2009199281A (ja) | データ送信装置 | |
WO2018076647A1 (zh) | 数据处理的方法、装置和片上系统、设备、存储介质 | |
JP6033383B2 (ja) | 情報処理装置、その制御方法、および制御プログラム | |
JP5780768B2 (ja) | 情報処理装置、その制御方法、およびプログラム | |
JP2003241983A (ja) | 情報処理装置及び情報処理方法 | |
JP2011101249A (ja) | 画像処理システム、画像処理装置、データ転送制御方法、プログラム及び記録媒体 | |
JP2016154001A (ja) | 画像処理装置、画像処理用データ転送制御方法、及び画像処理用データ転送制御プログラム | |
CN107450970B (zh) | 能够根据处理器的利用优先级来利用硬件的电子设备 | |
US9854117B2 (en) | Information processing system including device provided with circuit capable of configuring logic circuit according to circuit information and plurality of control units |