データ処理装置およびデータ処理プログラム
【課題】 ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができるデータ処理装置を提供する。
【解決手段】 画像形成装置は、HDDからその一連の複数のバンドデータを読み出すHDDコントローラー24と、HDDコントローラー24を制御するメインコントローラーとを備えており、メインコントローラーは、バンドデータをHDDコントローラー24に読み出させるファイル読出スレッド42と、一連の複数のバンドデータの読み出しをファイル読出スレッド42に順番に要求する読出側スレッド41とを生成し、ファイル読出スレッド42は、読出側スレッド41によってバンドデータの読み出しが要求された場合、読出側スレッド41によって読み出しが要求されたバンドデータだけでなく、後続のバンドデータもHDDコントローラー24に読み出させることを特徴とする。
【解決手段】 画像形成装置は、HDDからその一連の複数のバンドデータを読み出すHDDコントローラー24と、HDDコントローラー24を制御するメインコントローラーとを備えており、メインコントローラーは、バンドデータをHDDコントローラー24に読み出させるファイル読出スレッド42と、一連の複数のバンドデータの読み出しをファイル読出スレッド42に順番に要求する読出側スレッド41とを生成し、ファイル読出スレッド42は、読出側スレッド41によってバンドデータの読み出しが要求された場合、読出側スレッド41によって読み出しが要求されたバンドデータだけでなく、後続のバンドデータもHDDコントローラー24に読み出させることを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージにデータをバッファリングするデータ処理装置およびデータ処理プログラムに関するものである。
【背景技術】
【0002】
一般的に、コピー機、複合機などの画像形成装置は、各種の画像処理を行うデータ処理装置を内蔵している。そのようなデータ処理装置は、画像データをバッファリングする際に、書込側プログラム(例えばある画像処理プログラム)により、1ページ分の画像データを、HDD(Hard Disk Drive)などのストレージ内のファイルに記憶した後、そのファイルのファイル識別子を読出側プログラム(例えば後段の画像処理プログラム)へ通知する。そして、読出側プログラムは、書込側プログラムから通知されたファイル識別子に対応したストレージ上のファイルから、画像データを読み出す。
【0003】
その他、HDDにデータを書き込む際に、バッファーとしてFIFO(First-In First-Out)を設け、1つのスレッドで、そのFIFOにデータを書き込み、別のスレッドで、そのFIFOからHDDへデータを書き込む技術がある(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−179496号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述のように、通常、所定単位(上述の場合、ページ)のデータがストレージへ記憶された後に、そのデータを読み出すため、データの書き込みと読み出しとが逐次的に行われることになる。このため、所定単位のデータの書き込みが完了する前は、そのデータの読み出しを行うことができず、バッファリング後の処理に遅延が生じてしまう。
【0006】
本発明は、上記の問題に鑑みてなされたものであり、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができるデータ処理装置およびデータ処理プログラムを得ることを目的とする。
【課題を解決するための手段】
【0007】
本発明のデータ処理装置は、所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えており、前記プロセッサーは、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成し、前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とする。
【0008】
この構成により、本発明のデータ処理装置は、ストレージへのデータの書き込み前に、バッファー用の記憶領域の識別子が読出側プロセスへ渡され、書込側プロセスとは独立して読出側プロセスでデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。また、本発明のデータ処理装置は、読出要求スレッドによって読み出しが要求されたデータブロックの後続のデータブロックを予め読出実行スレッドがストレージコントローラーに読み出させるので、読出要求スレッドによってデータブロックの読み出しが要求される度に要求されたデータブロックのみを読出実行スレッドがストレージコントローラーに読み出させる構成と比較して、データブロックをストレージコントローラーに読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本発明のデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【0009】
また、本発明のデータ処理装置の前記一連の複数のデータブロックは、前記ストレージにおけるファイルに書き込まれ、前記記憶領域の識別子は、前記ファイルの識別子であっても良い。
【0010】
この構成により、本発明のデータ処理装置は、バッファー用の記憶領域をファイルシステムで管理することができ、各プロセスからのストレージ内のデータへのアクセスを簡単に行うことができる。
【0011】
また、本発明のデータ処理装置の前記一連の複数のデータブロックは、1ページの画像データを構成する複数のバンドデータであり、前記ストレージは、前記画像データに対する画像処理の前または後に前記画像データを一時的に記憶するバッファーであっても良い。
【0012】
本発明のデータ処理プログラムは、所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えているデータ処理装置の前記プロセッサーに、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成させるデータ処理プログラムであって、前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とする。
【0013】
この構成により、本発明のデータ処理プログラムを実行するデータ処理装置は、ストレージへのデータの書き込み前に、バッファー用の記憶領域の識別子が読出側プロセスへ渡され、書込側プロセスとは独立して読出側プロセスでデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。また、本発明のデータ処理プログラムを実行するデータ処理装置は、読出要求スレッドによって読み出しが要求されたデータブロックの後続のデータブロックを予め読出実行スレッドがストレージコントローラーに読み出させるので、読出要求スレッドによってデータブロックの読み出しが要求される度に要求されたデータブロックのみを読出実行スレッドがストレージコントローラーに読み出させる構成と比較して、データブロックをストレージコントローラーに読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本発明のデータ処理プログラムを実行するデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【発明の効果】
【0014】
本発明のデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の第1の実施の形態に係る画像形成装置の構成を示すブロック図である。
【図2】図1に示すデータ処理回路で取り扱うデータの構造を示す図である。
【図3】図1に示すメインコントローラーのプログラム構成を示すブロック図である。
【図4】図3に示す書込側プロセスの動作のフローチャートである。
【図5】図3に示す読出側プロセスの動作のフローチャートである。
【図6】図3に示すファイル読出スレッドの動作の流れを示す図である。
【図7】図3に示す読出側プロセスの動作の流れを示す図である。
【図8】本発明が適用されない場合の図3に示す読出側プロセスの動作の流れを示す図である。
【図9】本発明の第2の実施の形態に係る画像形成装置のメインコントローラーのプログラム構成を示すブロック図である。
【図10】図9に示す書込側スレッドの動作のフローチャートである。
【図11】図9に示すキューシステム内の共有メモリー領域を示す図である。
【図12】図9に示すファイル書込スレッドの動作のフローチャートである。
【図13】図9に示す読出側スレッドの動作のフローチャートである。
【図14】図9に示すファイル読出スレッドの動作のフローチャートである。
【図15】図9に示すファイル読出スレッドの動作の流れを示す図である。
【図16】図9に示す読出側プロセスの動作の流れを示す図である。
【図17】本発明が適用されない場合の図9に示す読出側プロセスの動作の流れを示す図である。
【図18】本発明の第3の実施の形態に係る画像形成装置の書込側スレッドの動作のフローチャートである。
【図19】本発明の第3の実施の形態に係る画像形成装置のファイル読出スレッドの動作のフローチャートである。
【図20】本発明の第3の実施の形態に係る画像形成装置のRAMからのバンドデータの読み出し方法を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について、図面を用いて説明する。
【0017】
(第1の実施の形態)
まず、本実施の形態に係るデータ処理装置を内蔵しているコピー機、複合機などの画像形成装置の構成について説明する。
【0018】
図1は、本実施の形態に係る画像形成装置10の構成を示すブロック図である。
【0019】
図1に示すように、画像形成装置10は、データ処理回路11、メインコントローラー12、RAM(Random Access Memory)13、HDD(Hard Disk Drive)14、スキャナー15、印刷エンジン制御回路16、記憶装置17、用紙に印刷を行う印刷エンジン(図示せず)などを有する。データ処理回路11、メインコントローラー12、RAM13、HDD14および記憶装置17は、データ処理装置10aを構成している。
【0020】
データ処理回路11は、スキャナー15などから画像データを、バンド単位またはページ単位で処理し、HDD14または印刷エンジン制御回路16へ出力する装置である。
【0021】
メインコントローラー12は、データ処理回路11内の各部へ指令を供給する装置である。メインコントローラー12は、バスインターフェイス回路21およびバス22を介してデータ処理回路11内の各部へ指令を供給する。メインコントローラー12は、CPU(Central Processing Unit)などのプロセッサーであり、記憶装置17に記憶されているデータ処理プログラム18に従って指令を出力する。
【0022】
RAM13は、データ処理回路11による処理においてバンドデータなどを一時的に記憶するためのメモリーである。RAM13としては、例えば、1または複数のDRAM(Dynamic RAM)が使用される。
【0023】
HDD14は、1ページの画像データを構成する一連の複数のバンドデータを一時的に記憶するためのストレージである。
【0024】
スキャナー15は、原稿の画像を光学的に読み取り、その読み取りにより得られる画像データを出力する装置である。
【0025】
印刷エンジン制御回路16は、印刷エンジンへ印刷画像データを供給するとともに、印刷エンジンを制御して印刷を実行させる回路である。
【0026】
記憶装置17は、フラッシュメモリーなどの不揮発性の記憶装置であり、メインコントローラー12の使用する各種プログラムやデータを記憶する。ここでは、データ処理プログラム18が記憶装置17に記憶されている。
【0027】
ここで、データ処理回路11の構成について説明する。
【0028】
データ処理回路11は、バスインターフェイス回路21、バス22、メモリーインターフェイス23、HDDコントローラー24、データ取得回路25、画像処理回路26、ラスター処理回路27、ハーフトーン処理回路28およびデータ出力回路29を有する。なお、データ処理回路11は、ASIC(Application Specific Integrated Circuit)として実現される。
【0029】
バスインターフェイス回路21は、メインコントローラー12をバス22に接続する回路である。
【0030】
メモリーインターフェイス23は、RAM13とバス22との間のデータおよび指令の送受を行う回路である。
【0031】
HDDコントローラー24は、メインコントローラー12からの指令に応じて、HDD14に対してデータの読み書きを行う回路であって、本発明のストレージコントローラーを構成している。
【0032】
データ取得回路25は、メインコントローラー12からの指令に応じて、スキャナー15から画像データをバンドデータとして順番に取得し、RAM13またはHDD14に記憶する回路である。データ取得回路25は、DMA(Direct Memory Access)コントローラーを有する。例えば、バンドデータは、128ライン分のデータであって、1ページにつき58バンド分のバンドデータがある。
【0033】
図2は、データ処理回路11で取り扱うデータの構造を示す図である。
【0034】
図2に示すように、1つのドキュメントデータが、1または複数のページデータで構成される。ページデータは、所定数のバンドデータで構成される。ドキュメントの構造は、ノードのリストで表現され、ドキュメントのノードデータは、ページのノードデータへのリンクを含み、ページのノードデータは、バンドのノードデータへのリンクを含む。バンドのノードデータは、ページ内でのバンドの識別情報、バンドデータの状態などを含む。したがって、これらのリンクにより、ドキュメント内のあるページのあるバンドのデータを特定可能である。
【0035】
図1に示すように、画像処理回路26は、メインコントローラー12からの指令に応じて、画像データのバンドデータをRAM13またはHDD14から読み出し、それらのバンドデータに対して所定の画像処理(画像拡大、画像縮小、色変換など)を実行し、処理後のバンドデータをRAM13またはHDD14に記憶する回路である。画像処理回路26は、DMAコントローラーを有する。
【0036】
ラスター処理回路27は、画像データのバンドデータをRAM13またはHDD14から読み出し、それらのバンドデータに対してラスタライズを実行し、ラスターデータを生成する回路である。ラスターデータは、バンド毎に、HDD14に記憶され、ハーフトーン処理実行時にRAM13に読み出される。
【0037】
ハーフトーン処理回路28は、バンド毎にラスターデータをRAM13から読み出し、ハーフトーン処理を実行し、ハーフトーン処理後のデータをRAM13に記憶する回路である。
【0038】
データ出力回路29は、ハーフトーン処理後のデータをRAM13から読み出し、印刷エンジン制御回路16へ供給する回路である。
【0039】
データ処理回路11では、スキャナー15から取得された画像データに対して、回転、拡大/縮小などの画像処理が必要に応じて施される。その後、ハーフトーニングで印刷画像データが生成され、印刷エンジン制御回路16へ出力される。これらのデータ処理の途中で、バンド単位でのデータのバッファリングにはRAM13が使用され、ページ単位でのデータのバッファリングにはHDD14が使用される。
【0040】
図3は、メインコントローラー12のプログラム構成を示すブロック図である。
【0041】
図3に示すメインコントローラー12では、マルチプロセスおよびマルチスレッド対応のオペレーティングシステムが稼働している。メインコントローラー12は、データ処理プログラム18(図1参照。)を実行し、まず、書込側プロセス30および読出側プロセス40を生成する。メインコントローラー12は、書込側プロセス30および読出側プロセス40を使用して、HDD14にデータをバッファリングするアプリケーション50を実行する。アプリケーション50のうち、書込側プログラム31aは、書込側プロセス30内の書込側スレッド31で実行される。メインコントローラー12は、書込側プログラム31aを実行することにより、HDDコントローラー24にHDD14へバンドデータを書き込ませることが可能になる。一方、アプリケーション50のうち、読出側プログラム41aは、読出側プロセス40内の本発明の読出要求スレッドとしての読出側スレッド41で実行される。メインコントローラー12は、読出側プログラム41aの実行により、HDDコントローラー24にHDD14からバンドデータを読み出させることが可能になる。
【0042】
メインコントローラー12は、読出側プロセス40内で本発明の読出実行スレッドとしてのファイル読出スレッド42を生成して、そのファイル読出スレッド42で、ファイルからのバンドデータの読み出しを行う共有ライブラリーのファイル読出プログラム42aを実行する。
【0043】
次に、画像形成装置10による、HDD14へのデータの書き込みおよび読み出しの動作について説明する。
【0044】
図4は、書込側プロセス30の動作のフローチャートである。
【0045】
図4に示すように、メインコントローラー12は、書込側スレッド31で書込側プログラム31aを実行することにより、バンドデータの書き込み先となるファイルの識別子であるファイル識別子を、読出側プロセス40の読出側プログラム41aに通知する(ステップS1)。ファイル識別子は、例えばファイル名とされる。メインコントローラー12は、書込側プログラム31aに従って、API(Application Program Interface)31bでファイルシステム60の共有ライブラリーを呼び出し、そのファイル識別子のファイルをオープンし、ファイルハンドルを生成する(ステップS2)。
【0046】
メインコントローラー12は、ファイルオープン後、書込側スレッド31で書込側プログラム31aにより、ファイルシステム60のAPI31bを呼び出し、バンドデータをHDD14内のファイルに書き込むようHDDコントローラー24を制御する(ステップS3)。ここで、メインコントローラー12は、バンドデータを、DMA転送でRAM13から読み出す。HDDコントローラー24は、RAM13から読み出されたバンドデータをHDD14へ書き込む。1つのバンドデータの書き込みが完了すると、メインコントローラー12は、API31bにより、イベントを発行する(ステップS4)。メインコントローラー12は、書込側スレッド31で書込側プログラム31aに従って、書き込みが完了したバンドデータをRAM13から消去する(ステップS5)。
【0047】
このようにして、1ページ分の複数のバンドデータが順番に書き込まれる。そして、1ページ分の全てのバンドデータの書き込みが完了すると(ステップS6)、メインコントローラー12は、書込側プログラム31aに従って、API31bを用いて、ファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする(ステップS7)。
【0048】
図5は、読出側プロセス40の動作のフローチャートである。
【0049】
図5に示すように、メインコントローラー12は、読出側スレッド41で読出側プログラム41aを実行する。ここで、読出側プログラム41aは、書込側プログラム31aとは非同期で動作している。メインコントローラー12は、読出側スレッド41で読出側プログラム41aに従って、書込側スレッド31からファイル識別子を受領すると(ステップS11)、ファイル識別子に対応するファイルをオープンし、ファイルハンドルを生成する(ステップS12)。
【0050】
メインコントローラー12は、ファイルオープン後、読出側スレッド41で読出側プログラム41aに従って、イベントを受領するまで待機する(ステップS13)。メインコントローラー12は、書込側プロセス30からのイベントを受領すると、読出側スレッド41で読出側プログラム41aに従って、ファイルシステム60のAPI41bを呼び出し、1つのバンドデータをHDD14内のファイルから読み出すようHDDコントローラー24を制御する(ステップS14)。ここで、HDDコントローラー24は、バンドデータを、HDD14から読み出す。メインコントローラー12は、HDD14から読み出されたバンドデータを、DMA転送でRAM13へ書き込む。
【0051】
このようにして、書込側プロセス30からのイベントにつき1つずつ、バンドデータが順番に読み出される。そして、1ページ分の全てのバンドデータの読み出しが完了すると(ステップS15)、メインコントローラー12は、読出側スレッド41で読出側プログラム41aに従って、API41bを用いてファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする(ステップS16)。ここで、HDDコントローラー24は、クローズされたファイルをHDD14から消去する。
【0052】
図6は、ファイル読出スレッド42の動作の流れを示す図である。図7は、読出側プロセス40の動作の流れを示す図である。
【0053】
ファイル読出スレッド42は、読出側スレッド41によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロックを予めHDDコントローラー24に読み出させて、RAM13に記憶させる。つまり、ファイル読出スレッド42は、読出側スレッド41によって1バンド目のバンドデータの読み出しが要求された場合、読出側スレッド41によって2バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、図6に示すように、読出側スレッド41によって読み出しが要求されたデータブロックである1バンド目のバンドデータの読み出しだけでなく、読出側スレッド41によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、2バンド目、3バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。次いで、ファイル読出スレッド42は、読出側スレッド41によって2バンド目のバンドデータの読み出しが要求された場合、読出側スレッド41によって3バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、読出側スレッド41によって読み出しが要求されたデータブロックである2バンド目のバンドデータの読み出しだけでなく、読出側スレッド41によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、3バンド目、4バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。ここで、ファイル読出スレッド42は、2バンド目および3バンド目のバンドデータについては、読出側スレッド41によって1バンド目のバンドデータの読み出しが要求されたときに、ファイルシステム60への読み出しの要求を既に予定しているので、実際には、4バンド目のバンドデータについてファイルシステム60への読み出しの要求を追加する。ファイル読出スレッド42が読出側スレッド41によって3バンド目以降のバンドデータの読み出しが要求された場合の動作については、ファイル読出スレッド42が読出側スレッド41によって2バンド目のバンドデータの読み出しが要求された場合の動作と同様である。なお、読出側スレッド41は、ファイル読出スレッド42に読み出しを要求したバンドデータについて、ファイル読出スレッド42によって読み出されてRAM13に記憶されたバンドデータを順番に取得する。読出側スレッド41およびファイル読出スレッド42が以上のように動作するので、読出側プロセス40の動作のタイミングは、図7に示すようになる。
【0054】
以上に説明したように、本実施の形態に係るメインコントローラー12は、(i)書込側プロセス30および読出側プロセス40を生成し、(ii)書込側プロセス30から読出側プロセス40へ、HDD14におけるファイルのファイル識別子を通知した後に、(iii)書込側プロセス30を用いて、HDDコントローラー24に一連の複数のバンドデータを順番にHDD14へ書き込ませ、(iv)読出側プロセス40でファイル識別子を受領すると、読出側プロセス40を用いて、HDDコントローラー24に、そのファイル識別子に対応するファイルから一連の複数のバンドデータを読み出させる。これにより、画像形成装置10は、HDD14へのデータの書き込み前に、バッファー用の記憶領域(つまり、ファイル)の識別子(つまりファイル識別子)が読出側プロセス40へ渡され、書込側プロセス30とは独立して読出側プロセス40でデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。したがって、画像形成装置10は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【0055】
また、画像形成装置10は、図7に示すように読出側スレッド41によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予めファイル読出スレッド42がHDDコントローラー24に読み出させるので、図8に示すように読出側スレッド41によってバンドデータの読み出しが要求される度に要求されたバンドデータのみをファイル読出スレッド42がHDDコントローラー24に読み出させる構成と比較して、バンドデータをHDDコントローラー24に読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、画像形成装置10は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。つまり、画像形成装置10は、CPUなどのプロセッサーであるメインコントローラー12と、ASICとして実現されているHDDコントローラー24とが同時に動作する時間を増やすことができるので、1ページを読み込む時間を短縮することができる。
【0056】
なお、ファイル読出スレッド42は、本実施の形態において、読出側スレッド41によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予めHDDコントローラー24に読み出させているが、何バンド分を予め読み出させるようになっていても良い。
【0057】
(第2の実施の形態)
本発明の第2の実施の形態では、メインコントローラー12は、アプリケーション50の動作する書込側スレッドおよび読出側スレッドとは別に、ファイルへバンドデータを書き込む共有ライブラリーのプログラが動作するスレッドと、ファイルからバンドデータを読み出す共有ライブラリーのプログラムが動作するスレッドとを生成する。これにより、本実施の形態に係る画像形成装置は、アプリケーション50の処理とは非同期に、バンドデータの書き込みの処理およびバンドデータの読み出しの処理を実行する。
【0058】
なお、本実施の形態に係る画像形成装置の基本的な構成は、第1の実施の形態に係る画像形成装置10(図1参照。)と同様であるので、その説明を省略する。
【0059】
図9は、本実施の形態に係るメインコントローラー12のプログラム構成を示すブロック図である。
【0060】
図9に示すメインコントローラー12では、マルチプロセスおよびマルチスレッド対応のオペレーティングシステムが稼働している。メインコントローラー12は、データ処理プログラムを実行し、まず、書込側プロセス130および読出側プロセス140を生成する。メインコントローラー12は、書込側プロセス130および読出側プロセス140を使用して、HDD14にデータをバッファリングするアプリケーション150を実行する。アプリケーション150のうち、書込側プログラム131aは、書込側プロセス130内の書込側スレッド131で実行される。メインコントローラー12は、書込側プログラム131aを実行することにより、HDDコントローラー24にHDD14へバンドデータを書き込ませることが可能になる。一方、アプリケーション150のうち、読出側プログラム141aは、読出側プロセス140内の読出側スレッド141で実行される。メインコントローラー12は、読出側プログラム141aの実行により、HDDコントローラー24にHDD14からバンドデータを読み出させることが可能になる。
【0061】
そして、第2の実施の形態では、メインコントローラー12は、書込側プロセス130内でファイル書込スレッド132を生成して、そのファイル書込スレッド132で、ファイルへのデータの書き込みを行う共有ライブラリーのファイル書込プログラム132aを実行する。メインコントローラー12は、読出側プロセス140内で本発明の読出要求スレッドとしてのファイル読出スレッド142を生成して、そのファイル読出スレッド142で、ファイルからのバンドデータの読み出しを行う共有ライブラリーのファイル読出プログラム142aを実行する。また、メインコントローラー12は、読出側プロセス140内で読出実行スレッド143を生成して、その読出実行スレッド143で、ファイルからのバンドデータの読み出しを行う共有ライブラリーの読出実行プログラム143aを実行する。さらに、メインコントローラー12は、アプリケーション150で発生するデータの書き込み要求およびデータの読み出し要求をアクセス要求としてキューシステム170にキューイングし、ファイル書込プログラム132aおよびファイル読出プログラム142aを実行し、キューシステム170にキューイングされているアクセス要求に基づいて、バンドデータの書き込みおよび読み出しを実行していく。これにより、画像形成装置10は、アプリケーション150の処理とは非同期にバンドデータの書き込みおよび読み出しを実行する。
【0062】
以下、本実施の形態に係るメインコントローラー12の動作について説明する。
【0063】
図10は、書込側スレッド131の動作のフローチャートである。
【0064】
図10に示すように、メインコントローラー12は、書込側スレッド131で書込側プログラム131aを実行することにより、バンドデータの書き込み先となるファイルのファイル識別子を、読出側プロセス140の読出側プログラム141aに通知する(ステップS21)。ファイル識別子は、例えばファイル名とされる。メインコントローラー12は、書込側プログラム131aに従って、API131bでファイルシステム60の共有ライブラリーを呼び出し、そのファイル識別子のファイルをオープンし、ファイルハンドルを生成する(ステップS22)。
【0065】
メインコントローラー12は、ファイルオープン後、書込側スレッド131で書込側プログラム131aに従って、ファイルシステム60のAPI131bを呼び出し、ファイル識別子に対応するファイルへのバンドデータの書き込み要求を順に、キューシステム170にキューイングする。メインコントローラー12は、データの書き込み要求に応じて、書込側プログラム131aに従って、ファイル書込スレッド132に対して各バンドデータの書き込み指令を供給する(ステップS23)。書き込み指令では、書き込みの対象となるバンドデータの識別情報(つまり、そのバンドデータを含むドキュメントの識別情報、そのバンドデータを含むページの識別情報、およびそのページ内でのバンドデータの識別情報)が指定される。メインコントローラー12は、全てのバンドデータの書き込み要求をキューイングするまで、ステップS23の処理を繰り返す(ステップS24)。
【0066】
図11は、キューシステム170内の共有メモリー領域を示す図である。
【0067】
図11に示すように、この共有メモリー領域は、RAM13上に割り当てられ、その物理アドレスが、書込側プロセス130および読出側プロセス140の論理アドレスにマッピングされ、各プロセスから共有メモリー領域へのアクセスが可能となる。キューシステム170において、この共有メモリー領域は、ドキュメントリスト領域、ページリスト領域、FDリスト領域およびキュー領域を有する。
【0068】
ドキュメントリスト領域には、API131bまたはAPI141bにより、書き込み対象または読み出し対象のバンドデータを含むドキュメントのノードデータが記憶される。ドキュメントのノードデータは、このドキュメントを構成するページのノードデータへのリンク情報を有する。
【0069】
ページリスト領域には、API131bまたはAPI141bにより、書き込みの対象または読み出しの対象のバンドデータを含むページのノードデータが記憶される。ページのノードデータは、このページを構成するバンドのノードデータへのリンク情報、およびファイルディスクリプターへのリンク情報を有する。
【0070】
バンドリスト領域には、API131bまたはAPI141bにより、書き込みの対象または読み出しの対象のバンドのノードデータが記憶される。バンドのノードデータは、このバンドの属するドキュメントおよびページのIDやシリアル番号を有し、さらに、ファイル内でのバンドデータの識別情報(シリアル番号など)を有する。
【0071】
FDリスト領域には、API131bまたはAPI141bにより、ページ毎に、そのページに対応するファイルのファイルディスクリプターが書き込まれる。
【0072】
キュー領域には、API131bまたはAPI141bにより、バンドデータ毎にアクセス要求が書き込まれる。アクセス要求は、アクセス種別(書き込みまたは読み出し)、および対象のバンドデータの識別情報を含む。したがって、1つのキューに、データの書き込み要求とデータの読み出し要求が混在する。
【0073】
このキューシステム170へのアクセスは、セマフォにより排他制御され、書込側スレッド131、ファイル書込スレッド132、読出側スレッド141、ファイル読出スレッド142のうちの2つ以上から同時にアクセスできないようになっている。
【0074】
図12は、ファイル書込スレッド132の動作のフローチャートである。
【0075】
図12に示すように、メインコントローラー12は、ファイル書込スレッド132で、ファイル書込プログラム132aに従って、キュー内のアクセス要求を検索する(ステップS31)。メインコントローラー12は、キュー内に、書き込み指令のあったバンドデータの書き込み要求を発見すると(ステップS32)、その書き込み要求により指定されたバンドデータおよび書き込み先が、キューシステム170に書き込まれている構造データおよびファイルディスクリプターから特定する。メインコントローラー12は、ファイル書込スレッド132でRAM13からDMA転送でそのバンドデータを読み出す。HDDコントローラー24は、読み出されたバンドデータを特定された書き込み先に書き込む(ステップS33)。
【0076】
1つのバンドデータの書き込みが完了すると、メインコントローラー12は、ファイル書込スレッド132で、ファイル書込プログラム132aに従って、そのバンドデータの書き込み要求をキューから削除し(ステップS34)、API131bへバンドデータの書き込みの完了通知を供給する(ステップS35)。
【0077】
このように、キューイングされている書き込みのアクセス要求は、アプリケーション150とは別のファイル書込スレッド132のファイル書込プログラム132aを実行することにより、非同期で処理されていく。
【0078】
そして、図10に示すように、API131bへデータの書き込みの完了通知が供給されると、メインコントローラー12はAPI131bにより、イベントを発行する(ステップS26)。メインコントローラー12は、書込側スレッド131で書込側プログラム131aに従って、その書き込みが完了したバンドデータをRAM13から消去する(ステップS27)。
【0079】
そして、1ページ分の全てのバンドデータの書き込みが完了すると(ステップS28)、メインコントローラー12は、書込側プログラム131aに従って、API131bを用いてファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする(ステップS29)。
【0080】
図13は、読出側スレッド141の動作のフローチャートである。
【0081】
図13に示すように、メインコントローラー12は、読出側スレッド141で読出側プログラム141aを実行する。ここで、読出側プログラム141aは、書込側プログラム131aとは非同期で動作している。メインコントローラー12は、読出側スレッド141で読出側プログラム141aに従って、書込側スレッド131からファイル識別子を受領すると(ステップS41)、そのファイル識別子に対応するファイルをオープンし、ファイルハンドルを生成する(ステップS42)。
【0082】
そして、メインコントローラー12は、ファイルオープン後、読出側スレッド141で読出側プログラム141aに従って、ファイルシステム60のAPI141bを呼び出し、ファイル識別子に対応するファイルからの各バンドデータの読み出し要求を順に、キューシステム170にキューイングする。メインコントローラー12は、データの読み出し要求に応じて、読出側プログラム141aに従って、ファイル読出スレッド142に対して各バンドデータの読み出し指令を供給する(ステップS43)。読み出し指令では、読み出しの対象となるバンドデータの識別情報(つまり、そのバンドデータを含むドキュメントの識別情報、そのバンドデータを含むページの識別情報、およびそのページ内でのバンドデータの識別情報)が指定される。メインコントローラー12は、全てのバンドデータの読み出し要求をキューイングするまで、ステップS43の処理を繰り返す(ステップS44)。
【0083】
図14は、ファイル読出スレッド142の動作のフローチャートである。
【0084】
図14に示すように、メインコントローラー12は、ファイル読出スレッド142で、そのバンドデータの書き込み完了時のイベントを受領すると(ステップS51)、ファイル読出プログラム142aに従って、キュー内の読み出し要求を検索する(ステップS52)。メインコントローラー12は、キュー内に、読み出し指令のあったバンドデータのアクセス要求を発見すると(ステップS53)、ファイルシステム60のAPI141bを呼び出して、バンドデータをHDD14内のファイルから読み出すようHDDコントローラー24を制御する(ステップS54)。このとき、その読み出し要求により指定されたバンドデータおよび読み出し元が、キューシステム170に書き込まれている構造データおよびファイルディスクリプターから特定される。HDDコントローラー24は、特定された読み出し元からそのバンドデータを読み出す。メインコントローラー12は、ファイル読出プログラム142aに従って、読み出されたバンドデータをDMA転送でRAM13に書き込む。
【0085】
1つのバンドデータの読み出しが完了すると、メインコントローラー12は、ファイル読出スレッド142で、ファイル読出プログラム142aに従って、そのバンドデータの読み出し要求をキューから削除し(ステップS55)、API141bへバンドデータの読み出しの完了通知を供給する(ステップS56)。
【0086】
このようにして、書込側プロセス130からのイベントにつき1つずつ、バンドデータが順番に読み出される。
【0087】
そして、図13に示すように、メインコントローラー12は、読出側スレッド141で読出側プログラム141aに従って、読み出しの完了通知の度に、1ページ分の全てのバンドデータの読み出しが完了したか否かを判定する(ステップS46)。1ページ分の全てのバンドデータの読み出しが完了すると、メインコントローラー12は、API141bを用いてファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする。(ステップS47)ここで、HDDコントローラー24は、クローズされたファイルをHDD14から消去する。
【0088】
図15は、読出実行スレッド143の動作の流れを示す図である。図16は、読出側プロセス140の動作の流れを示す図である。
【0089】
読出実行スレッド143は、ファイル読出スレッド142によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロックを予めHDDコントローラー24に読み出させて、RAM13に記憶させる。つまり、読出実行スレッド143は、ファイル読出スレッド142によって1バンド目のバンドデータの読み出しが要求された場合、ファイル読出スレッド142によって2バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、図15に示すように、ファイル読出スレッド142によって読み出しが要求されたデータブロックである1バンド目のバンドデータの読み出しだけでなく、ファイル読出スレッド142によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、2バンド目、3バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。次いで、読出実行スレッド143は、ファイル読出スレッド142によって2バンド目のバンドデータの読み出しが要求された場合、ファイル読出スレッド142によって3バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、ファイル読出スレッド142によって読み出しが要求されたデータブロックである2バンド目のバンドデータの読み出しだけでなく、ファイル読出スレッド142によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、3バンド目、4バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。ここで、読出実行スレッド143は、2バンド目および3バンド目のバンドデータについては、ファイル読出スレッド142によって1バンド目のバンドデータの読み出しが要求されたときに、ファイルシステム60への読み出しの要求を既に予定しているので、実際には、4バンド目のバンドデータについてファイルシステム60への読み出しの要求を追加する。読出実行スレッド143がファイル読出スレッド142によって3バンド目以降のバンドデータの読み出しが要求された場合の動作については、読出実行スレッド143がファイル読出スレッド142によって2バンド目のバンドデータの読み出しが要求された場合の動作と同様である。なお、ファイル読出スレッド142は、読出実行スレッド143に読み出しを要求したバンドデータについて、読出実行スレッド143によって読み出されてRAM13に記憶されたバンドデータを順番に取得する。ファイル読出スレッド142および読出実行スレッド143が以上のように動作するので、読出側プロセス40の動作のタイミングは、図16に示すようになる。
【0090】
以上に説明したように、本実施の形態に係るメインコントローラー12は、(i)書込側プロセス130で書込側スレッド131およびファイル書込スレッド132を生成し、(ii)読出側プロセス140で読出側スレッド141およびファイル読出スレッド142を生成し、(iii)書込側スレッド131から読出側スレッド141へ、HDD14におけるファイルの識別子を通知した後に、書込側スレッド131で一連の複数のバンドデータのそれぞれについての書き込み要求を順番にキューイングし、(iv)ファイル書込スレッド132を用いて、キューイングされた書き込み要求の順番で、HDDコントローラー24に一連の複数のバンドデータを書き込ませ、(v)読出側スレッド141で、ファイルのファイル識別子を受領すると、一連の複数のバンドデータのそれぞれについての読み出し要求を順番にキューイングし、(vi)ファイル読出スレッド142を用いて、キューイングされた読み出し要求の順番で、HDDコントローラー24に一連の複数のバンドデータを読み出させる。これにより、本実施の形態に係る画像形成装置は、HDD14への書き込みを行うファイル書込プログラム132aが書込側スレッド131とは別のスレッドであるファイル書込スレッド132で動作するため、非同期でのデータの書き込みとなり、書込側プログラム131aがデータの書き込みの完了を待たずに別の処理を実行することができる。また、HDD14からの読み出しを行うファイル読出プログラム142aが読出側スレッド141とは別のスレッドであるファイル読出スレッド142で動作するため、非同期でのデータの読み出しとなり、読出側プログラム141aがデータの読み出しの完了を待たずに別の処理を実行することができる。したがって、本実施の形態に係る画像形成装置は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【0091】
また、本実施の形態に係る画像形成装置は、図16に示すようにファイル読出スレッド142によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予め読出実行スレッド143がHDDコントローラー24に読み出させるので、図17に示すようにファイル読出スレッド142によってバンドデータの読み出しが要求される度に要求されたバンドデータのみを読出実行スレッド143がHDDコントローラー24に読み出させる構成と比較して、バンドデータをHDDコントローラー24に読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本実施の形態に係る画像形成装置は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。つまり、本実施の形態に係る画像形成装置は、CPUなどのプロセッサーであるメインコントローラー12と、ASICとして実現されているHDDコントローラー24とが同時に動作する時間を増やすことができるので、1ページを読み込む時間を短縮することができる。
【0092】
なお、読出実行スレッド143は、本実施の形態において、ファイル読出スレッド142によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予めHDDコントローラー24に読み出させているが、何バンド分を予め読み出させるようになっていても良い。
【0093】
(第3の実施の形態)
本発明の第3の実施の形態では、書込側スレッド131は、バンドデータの書き込みのキューイングが完了した時点でイベントを発行する。ファイル読出スレッド142は、RAM13上にバンドデータがあればRAM13からそのバンドデータを読み出し、RAM13上にバンドデータがなければHDD14のファイルからそのバンドデータを読み出す。
【0094】
なお、本実施の形態に係る画像形成装置の基本的な構成は、第1の実施の形態に係る画像形成装置10(図1参照。)と同様であるので、その説明を省略する。
【0095】
また、本実施の形態に係る画像形成装置の基本的なプログラム構成は、第2の実施の形態に係る画像形成装置(図9参照。)と同様であるので、その説明を省略する。
【0096】
以下、本実施の形態に係るメインコントローラー12の動作について説明する。
【0097】
なお、ファイル書込スレッド132および読出側スレッド141の動作については、第2の実施の形態に係る動作と同様であるので、説明を省略する。
【0098】
図18は、本実施の形態に係る書込側スレッド131の動作のフローチャートである。
【0099】
図18に示すように、本実施の形態に係る書込側スレッド131は、第2の実施の形態(図10参照。)とは異なり、バンドデータの書き込みの完了時(ステップS25でYES)ではなく、バンドデータのキューイング(ステップS23)が終了する度に、イベントを発行する(ステップS61)。
【0100】
図19は、本実施の形態に係るファイル読出スレッド142の動作のフローチャートである。
【0101】
図19に示すように、本実施の形態に係るファイル読出スレッド142は、第2の実施の形態(図14参照。)とは異なり、キューにおいてアクセス要求を発見したとき(ステップS53でYES)に、読み出し対象のバンドデータがRAM13上に残っているか否かを調べる(ステップS71)。その結果、読み出し対象のバンドデータがRAM13上に残っていれば、ファイル読出スレッド142は、ファイル読出プログラム142aに従って、バンドデータをRAM13から読み出す(ステップS72)。読み出し対象のバンドデータがRAM13上に残っていなければ、ファイル読出スレッド142は、ファイル読出プログラム142aに従って、バンドデータをHDD14のファイルから読み出すようHDDコントローラー24を制御する。このとき、HDDコントローラー24は、バンドデータをHDD14から読み出す(ステップS54)。
【0102】
図20は、本実施の形態に係るRAM13からのバンドデータの読み出し方法を示す図である。
【0103】
図20に示すように、バンドデータは、RAM13内の所定の共有メモリー領域に記憶され、この共有メモリー領域の物理アドレスは、各プロセス、すなわち、書込側プロセス130、読出側プロセス140の論理アドレスにマッピングされ、書込側プロセス130、読出側プロセス140の各スレッド、すなわち、書込側スレッド131、ファイル書込スレッド132、読出側スレッド141、ファイル読出スレッド142、読出実行スレッド143から共有メモリー領域へのアクセスが可能となっている。
【0104】
以上に説明したように、本実施の形態に係るメインコントローラー12は、(i)書込側プロセス130で、1つのバンドデータをRAM13に記憶し、(ii)書込側スレッド131で1つのバンドデータの書き込み要求をキューイングするたびにイベントを発行し、(iii)HDD14へのバンドデータの書き込みが完了したときに、読出側スレッド141でそのバンドデータをRAM13から消去し、(iv)キューイングされたデータの読み出し要求を順番に実行するとき、読み出し対象のバンドデータがRAM13にあれば、ファイル読出スレッド142で、HDD14からバンドデータを読み出さずにRAM13からそのバンドデータを読み出し、(v)RAM13にそのバンドデータがなければ、HDDコントローラー24にHDD14からそのバンドデータを読み出させる。
【0105】
これにより、RAM13にバンドデータが残っていれば、ただちにRAM13上のバンドデータを使用できる。このため、HDD14からの読み出しより短時間でデータを読み出すことができ、データの読み出し時の遅延を低減することができる。
【0106】
なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【0107】
例えば、第3の実施の形態において、読出側スレッド141でRAM13からバンドデータを読み出している最中に、書込側プロセス130においてそのバンドデータの、HDD14への書き込みが完了した場合、メインコントローラー12は、書込側スレッド131で、読出側スレッド141でのバンドデータの読み出しが完了した後に、そのバンドデータをRAM13から削除してもよい。例えば、バンドデータの記憶領域へのアクセスを排他制御すれば、このような処理が実現可能である。
【0108】
また、上述の各実施の形態において、HDD14へデータを書き込む前に、データを圧縮し、HDD14からデータを読み出した後に、データを伸張するようにしても良い。圧縮・伸張の方式としては、JPEG(Joint Photographic Experts Group)方式、RLE(Run Length Encoding)方式などが使用可能である。
【0109】
また、上述の各実施の形態において、書込側プロセスから読出側プロセスへ通知するファイル識別子には、ファイルハンドルを使用しても良い。
【0110】
また、上述の各実施の形態においては、ファイルシステム60を使用してHDD14に対するデータの読み書きを行っているが、ファイルシステム60はなくても良い。その場合には、ファイル識別子の代わりに、1ページ分のバンドデータを記憶するHDD14上の記憶領域の識別情報(例えばアドレスとサイズなど)が使用される。
【0111】
また、上述の各実施の形態において、書込側プロセスのアプリケーションと読出側プロセスのアプリケーションとは、別々の独立したプログラムとしても良い。
【0112】
また、上述の各実施の形態においては、ストレージとしてHDD14が使用されているが、SSD(Solid State Drive)などの半導体メモリーを使用した記憶装置を使用しても良い。
【0113】
また、上述の各実施の形態においては、書込側プロセスおよび読出側プロセスは、それぞれ1つであるが、書き込み側および読み出し側のいずれも複数の同様のプロセスが生成されても良い。その場合でも、第2の実施の形態、第3の実施の形態におけるキューシステム170は1つで足りる。
【0114】
また、上述の各実施の形態においては、単一のメインコントローラー12で書込側プロセスおよび読出側プロセスの両方のプロセスを処理しているが、複数のプロセシングエレメントを有するプロセッサーで、書込側プロセスおよび読出側プロセスを別々に処理するようにしても良い。
【0115】
また、上述の各実施の形態においては、バンドデータに分割された画像データを処理しているが、本発明は、他の種別のデータを所定のサイズのブロックへ分割し、そのブロック毎に処理をする装置にも適用可能である。
【0116】
また、本発明のデータ処理装置は、上述の各実施の形態において、画像形成装置に備えられているが、画像形成装置以外の装置に備えられていても良い。
【符号の説明】
【0117】
10a データ処理装置
12 メインコントローラー(プロセッサー)
14 HDD(ストレージ)
18 データ処理プログラム
24 HDDコントローラー(ストレージコントローラー)
30 書込側プロセス
40 読出側プロセス
41 読出側スレッド(読出要求スレッド)
42 ファイル読出スレッド(読出実行スレッド)
130 書込側プロセス
140 読出側プロセス
142 ファイル読出スレッド(読出要求スレッド)
143 読出実行スレッド
【技術分野】
【0001】
本発明は、ストレージにデータをバッファリングするデータ処理装置およびデータ処理プログラムに関するものである。
【背景技術】
【0002】
一般的に、コピー機、複合機などの画像形成装置は、各種の画像処理を行うデータ処理装置を内蔵している。そのようなデータ処理装置は、画像データをバッファリングする際に、書込側プログラム(例えばある画像処理プログラム)により、1ページ分の画像データを、HDD(Hard Disk Drive)などのストレージ内のファイルに記憶した後、そのファイルのファイル識別子を読出側プログラム(例えば後段の画像処理プログラム)へ通知する。そして、読出側プログラムは、書込側プログラムから通知されたファイル識別子に対応したストレージ上のファイルから、画像データを読み出す。
【0003】
その他、HDDにデータを書き込む際に、バッファーとしてFIFO(First-In First-Out)を設け、1つのスレッドで、そのFIFOにデータを書き込み、別のスレッドで、そのFIFOからHDDへデータを書き込む技術がある(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−179496号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述のように、通常、所定単位(上述の場合、ページ)のデータがストレージへ記憶された後に、そのデータを読み出すため、データの書き込みと読み出しとが逐次的に行われることになる。このため、所定単位のデータの書き込みが完了する前は、そのデータの読み出しを行うことができず、バッファリング後の処理に遅延が生じてしまう。
【0006】
本発明は、上記の問題に鑑みてなされたものであり、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができるデータ処理装置およびデータ処理プログラムを得ることを目的とする。
【課題を解決するための手段】
【0007】
本発明のデータ処理装置は、所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えており、前記プロセッサーは、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成し、前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とする。
【0008】
この構成により、本発明のデータ処理装置は、ストレージへのデータの書き込み前に、バッファー用の記憶領域の識別子が読出側プロセスへ渡され、書込側プロセスとは独立して読出側プロセスでデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。また、本発明のデータ処理装置は、読出要求スレッドによって読み出しが要求されたデータブロックの後続のデータブロックを予め読出実行スレッドがストレージコントローラーに読み出させるので、読出要求スレッドによってデータブロックの読み出しが要求される度に要求されたデータブロックのみを読出実行スレッドがストレージコントローラーに読み出させる構成と比較して、データブロックをストレージコントローラーに読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本発明のデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【0009】
また、本発明のデータ処理装置の前記一連の複数のデータブロックは、前記ストレージにおけるファイルに書き込まれ、前記記憶領域の識別子は、前記ファイルの識別子であっても良い。
【0010】
この構成により、本発明のデータ処理装置は、バッファー用の記憶領域をファイルシステムで管理することができ、各プロセスからのストレージ内のデータへのアクセスを簡単に行うことができる。
【0011】
また、本発明のデータ処理装置の前記一連の複数のデータブロックは、1ページの画像データを構成する複数のバンドデータであり、前記ストレージは、前記画像データに対する画像処理の前または後に前記画像データを一時的に記憶するバッファーであっても良い。
【0012】
本発明のデータ処理プログラムは、所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えているデータ処理装置の前記プロセッサーに、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成させるデータ処理プログラムであって、前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とする。
【0013】
この構成により、本発明のデータ処理プログラムを実行するデータ処理装置は、ストレージへのデータの書き込み前に、バッファー用の記憶領域の識別子が読出側プロセスへ渡され、書込側プロセスとは独立して読出側プロセスでデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。また、本発明のデータ処理プログラムを実行するデータ処理装置は、読出要求スレッドによって読み出しが要求されたデータブロックの後続のデータブロックを予め読出実行スレッドがストレージコントローラーに読み出させるので、読出要求スレッドによってデータブロックの読み出しが要求される度に要求されたデータブロックのみを読出実行スレッドがストレージコントローラーに読み出させる構成と比較して、データブロックをストレージコントローラーに読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本発明のデータ処理プログラムを実行するデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【発明の効果】
【0014】
本発明のデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の第1の実施の形態に係る画像形成装置の構成を示すブロック図である。
【図2】図1に示すデータ処理回路で取り扱うデータの構造を示す図である。
【図3】図1に示すメインコントローラーのプログラム構成を示すブロック図である。
【図4】図3に示す書込側プロセスの動作のフローチャートである。
【図5】図3に示す読出側プロセスの動作のフローチャートである。
【図6】図3に示すファイル読出スレッドの動作の流れを示す図である。
【図7】図3に示す読出側プロセスの動作の流れを示す図である。
【図8】本発明が適用されない場合の図3に示す読出側プロセスの動作の流れを示す図である。
【図9】本発明の第2の実施の形態に係る画像形成装置のメインコントローラーのプログラム構成を示すブロック図である。
【図10】図9に示す書込側スレッドの動作のフローチャートである。
【図11】図9に示すキューシステム内の共有メモリー領域を示す図である。
【図12】図9に示すファイル書込スレッドの動作のフローチャートである。
【図13】図9に示す読出側スレッドの動作のフローチャートである。
【図14】図9に示すファイル読出スレッドの動作のフローチャートである。
【図15】図9に示すファイル読出スレッドの動作の流れを示す図である。
【図16】図9に示す読出側プロセスの動作の流れを示す図である。
【図17】本発明が適用されない場合の図9に示す読出側プロセスの動作の流れを示す図である。
【図18】本発明の第3の実施の形態に係る画像形成装置の書込側スレッドの動作のフローチャートである。
【図19】本発明の第3の実施の形態に係る画像形成装置のファイル読出スレッドの動作のフローチャートである。
【図20】本発明の第3の実施の形態に係る画像形成装置のRAMからのバンドデータの読み出し方法を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施の形態について、図面を用いて説明する。
【0017】
(第1の実施の形態)
まず、本実施の形態に係るデータ処理装置を内蔵しているコピー機、複合機などの画像形成装置の構成について説明する。
【0018】
図1は、本実施の形態に係る画像形成装置10の構成を示すブロック図である。
【0019】
図1に示すように、画像形成装置10は、データ処理回路11、メインコントローラー12、RAM(Random Access Memory)13、HDD(Hard Disk Drive)14、スキャナー15、印刷エンジン制御回路16、記憶装置17、用紙に印刷を行う印刷エンジン(図示せず)などを有する。データ処理回路11、メインコントローラー12、RAM13、HDD14および記憶装置17は、データ処理装置10aを構成している。
【0020】
データ処理回路11は、スキャナー15などから画像データを、バンド単位またはページ単位で処理し、HDD14または印刷エンジン制御回路16へ出力する装置である。
【0021】
メインコントローラー12は、データ処理回路11内の各部へ指令を供給する装置である。メインコントローラー12は、バスインターフェイス回路21およびバス22を介してデータ処理回路11内の各部へ指令を供給する。メインコントローラー12は、CPU(Central Processing Unit)などのプロセッサーであり、記憶装置17に記憶されているデータ処理プログラム18に従って指令を出力する。
【0022】
RAM13は、データ処理回路11による処理においてバンドデータなどを一時的に記憶するためのメモリーである。RAM13としては、例えば、1または複数のDRAM(Dynamic RAM)が使用される。
【0023】
HDD14は、1ページの画像データを構成する一連の複数のバンドデータを一時的に記憶するためのストレージである。
【0024】
スキャナー15は、原稿の画像を光学的に読み取り、その読み取りにより得られる画像データを出力する装置である。
【0025】
印刷エンジン制御回路16は、印刷エンジンへ印刷画像データを供給するとともに、印刷エンジンを制御して印刷を実行させる回路である。
【0026】
記憶装置17は、フラッシュメモリーなどの不揮発性の記憶装置であり、メインコントローラー12の使用する各種プログラムやデータを記憶する。ここでは、データ処理プログラム18が記憶装置17に記憶されている。
【0027】
ここで、データ処理回路11の構成について説明する。
【0028】
データ処理回路11は、バスインターフェイス回路21、バス22、メモリーインターフェイス23、HDDコントローラー24、データ取得回路25、画像処理回路26、ラスター処理回路27、ハーフトーン処理回路28およびデータ出力回路29を有する。なお、データ処理回路11は、ASIC(Application Specific Integrated Circuit)として実現される。
【0029】
バスインターフェイス回路21は、メインコントローラー12をバス22に接続する回路である。
【0030】
メモリーインターフェイス23は、RAM13とバス22との間のデータおよび指令の送受を行う回路である。
【0031】
HDDコントローラー24は、メインコントローラー12からの指令に応じて、HDD14に対してデータの読み書きを行う回路であって、本発明のストレージコントローラーを構成している。
【0032】
データ取得回路25は、メインコントローラー12からの指令に応じて、スキャナー15から画像データをバンドデータとして順番に取得し、RAM13またはHDD14に記憶する回路である。データ取得回路25は、DMA(Direct Memory Access)コントローラーを有する。例えば、バンドデータは、128ライン分のデータであって、1ページにつき58バンド分のバンドデータがある。
【0033】
図2は、データ処理回路11で取り扱うデータの構造を示す図である。
【0034】
図2に示すように、1つのドキュメントデータが、1または複数のページデータで構成される。ページデータは、所定数のバンドデータで構成される。ドキュメントの構造は、ノードのリストで表現され、ドキュメントのノードデータは、ページのノードデータへのリンクを含み、ページのノードデータは、バンドのノードデータへのリンクを含む。バンドのノードデータは、ページ内でのバンドの識別情報、バンドデータの状態などを含む。したがって、これらのリンクにより、ドキュメント内のあるページのあるバンドのデータを特定可能である。
【0035】
図1に示すように、画像処理回路26は、メインコントローラー12からの指令に応じて、画像データのバンドデータをRAM13またはHDD14から読み出し、それらのバンドデータに対して所定の画像処理(画像拡大、画像縮小、色変換など)を実行し、処理後のバンドデータをRAM13またはHDD14に記憶する回路である。画像処理回路26は、DMAコントローラーを有する。
【0036】
ラスター処理回路27は、画像データのバンドデータをRAM13またはHDD14から読み出し、それらのバンドデータに対してラスタライズを実行し、ラスターデータを生成する回路である。ラスターデータは、バンド毎に、HDD14に記憶され、ハーフトーン処理実行時にRAM13に読み出される。
【0037】
ハーフトーン処理回路28は、バンド毎にラスターデータをRAM13から読み出し、ハーフトーン処理を実行し、ハーフトーン処理後のデータをRAM13に記憶する回路である。
【0038】
データ出力回路29は、ハーフトーン処理後のデータをRAM13から読み出し、印刷エンジン制御回路16へ供給する回路である。
【0039】
データ処理回路11では、スキャナー15から取得された画像データに対して、回転、拡大/縮小などの画像処理が必要に応じて施される。その後、ハーフトーニングで印刷画像データが生成され、印刷エンジン制御回路16へ出力される。これらのデータ処理の途中で、バンド単位でのデータのバッファリングにはRAM13が使用され、ページ単位でのデータのバッファリングにはHDD14が使用される。
【0040】
図3は、メインコントローラー12のプログラム構成を示すブロック図である。
【0041】
図3に示すメインコントローラー12では、マルチプロセスおよびマルチスレッド対応のオペレーティングシステムが稼働している。メインコントローラー12は、データ処理プログラム18(図1参照。)を実行し、まず、書込側プロセス30および読出側プロセス40を生成する。メインコントローラー12は、書込側プロセス30および読出側プロセス40を使用して、HDD14にデータをバッファリングするアプリケーション50を実行する。アプリケーション50のうち、書込側プログラム31aは、書込側プロセス30内の書込側スレッド31で実行される。メインコントローラー12は、書込側プログラム31aを実行することにより、HDDコントローラー24にHDD14へバンドデータを書き込ませることが可能になる。一方、アプリケーション50のうち、読出側プログラム41aは、読出側プロセス40内の本発明の読出要求スレッドとしての読出側スレッド41で実行される。メインコントローラー12は、読出側プログラム41aの実行により、HDDコントローラー24にHDD14からバンドデータを読み出させることが可能になる。
【0042】
メインコントローラー12は、読出側プロセス40内で本発明の読出実行スレッドとしてのファイル読出スレッド42を生成して、そのファイル読出スレッド42で、ファイルからのバンドデータの読み出しを行う共有ライブラリーのファイル読出プログラム42aを実行する。
【0043】
次に、画像形成装置10による、HDD14へのデータの書き込みおよび読み出しの動作について説明する。
【0044】
図4は、書込側プロセス30の動作のフローチャートである。
【0045】
図4に示すように、メインコントローラー12は、書込側スレッド31で書込側プログラム31aを実行することにより、バンドデータの書き込み先となるファイルの識別子であるファイル識別子を、読出側プロセス40の読出側プログラム41aに通知する(ステップS1)。ファイル識別子は、例えばファイル名とされる。メインコントローラー12は、書込側プログラム31aに従って、API(Application Program Interface)31bでファイルシステム60の共有ライブラリーを呼び出し、そのファイル識別子のファイルをオープンし、ファイルハンドルを生成する(ステップS2)。
【0046】
メインコントローラー12は、ファイルオープン後、書込側スレッド31で書込側プログラム31aにより、ファイルシステム60のAPI31bを呼び出し、バンドデータをHDD14内のファイルに書き込むようHDDコントローラー24を制御する(ステップS3)。ここで、メインコントローラー12は、バンドデータを、DMA転送でRAM13から読み出す。HDDコントローラー24は、RAM13から読み出されたバンドデータをHDD14へ書き込む。1つのバンドデータの書き込みが完了すると、メインコントローラー12は、API31bにより、イベントを発行する(ステップS4)。メインコントローラー12は、書込側スレッド31で書込側プログラム31aに従って、書き込みが完了したバンドデータをRAM13から消去する(ステップS5)。
【0047】
このようにして、1ページ分の複数のバンドデータが順番に書き込まれる。そして、1ページ分の全てのバンドデータの書き込みが完了すると(ステップS6)、メインコントローラー12は、書込側プログラム31aに従って、API31bを用いて、ファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする(ステップS7)。
【0048】
図5は、読出側プロセス40の動作のフローチャートである。
【0049】
図5に示すように、メインコントローラー12は、読出側スレッド41で読出側プログラム41aを実行する。ここで、読出側プログラム41aは、書込側プログラム31aとは非同期で動作している。メインコントローラー12は、読出側スレッド41で読出側プログラム41aに従って、書込側スレッド31からファイル識別子を受領すると(ステップS11)、ファイル識別子に対応するファイルをオープンし、ファイルハンドルを生成する(ステップS12)。
【0050】
メインコントローラー12は、ファイルオープン後、読出側スレッド41で読出側プログラム41aに従って、イベントを受領するまで待機する(ステップS13)。メインコントローラー12は、書込側プロセス30からのイベントを受領すると、読出側スレッド41で読出側プログラム41aに従って、ファイルシステム60のAPI41bを呼び出し、1つのバンドデータをHDD14内のファイルから読み出すようHDDコントローラー24を制御する(ステップS14)。ここで、HDDコントローラー24は、バンドデータを、HDD14から読み出す。メインコントローラー12は、HDD14から読み出されたバンドデータを、DMA転送でRAM13へ書き込む。
【0051】
このようにして、書込側プロセス30からのイベントにつき1つずつ、バンドデータが順番に読み出される。そして、1ページ分の全てのバンドデータの読み出しが完了すると(ステップS15)、メインコントローラー12は、読出側スレッド41で読出側プログラム41aに従って、API41bを用いてファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする(ステップS16)。ここで、HDDコントローラー24は、クローズされたファイルをHDD14から消去する。
【0052】
図6は、ファイル読出スレッド42の動作の流れを示す図である。図7は、読出側プロセス40の動作の流れを示す図である。
【0053】
ファイル読出スレッド42は、読出側スレッド41によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロックを予めHDDコントローラー24に読み出させて、RAM13に記憶させる。つまり、ファイル読出スレッド42は、読出側スレッド41によって1バンド目のバンドデータの読み出しが要求された場合、読出側スレッド41によって2バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、図6に示すように、読出側スレッド41によって読み出しが要求されたデータブロックである1バンド目のバンドデータの読み出しだけでなく、読出側スレッド41によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、2バンド目、3バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。次いで、ファイル読出スレッド42は、読出側スレッド41によって2バンド目のバンドデータの読み出しが要求された場合、読出側スレッド41によって3バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、読出側スレッド41によって読み出しが要求されたデータブロックである2バンド目のバンドデータの読み出しだけでなく、読出側スレッド41によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、3バンド目、4バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。ここで、ファイル読出スレッド42は、2バンド目および3バンド目のバンドデータについては、読出側スレッド41によって1バンド目のバンドデータの読み出しが要求されたときに、ファイルシステム60への読み出しの要求を既に予定しているので、実際には、4バンド目のバンドデータについてファイルシステム60への読み出しの要求を追加する。ファイル読出スレッド42が読出側スレッド41によって3バンド目以降のバンドデータの読み出しが要求された場合の動作については、ファイル読出スレッド42が読出側スレッド41によって2バンド目のバンドデータの読み出しが要求された場合の動作と同様である。なお、読出側スレッド41は、ファイル読出スレッド42に読み出しを要求したバンドデータについて、ファイル読出スレッド42によって読み出されてRAM13に記憶されたバンドデータを順番に取得する。読出側スレッド41およびファイル読出スレッド42が以上のように動作するので、読出側プロセス40の動作のタイミングは、図7に示すようになる。
【0054】
以上に説明したように、本実施の形態に係るメインコントローラー12は、(i)書込側プロセス30および読出側プロセス40を生成し、(ii)書込側プロセス30から読出側プロセス40へ、HDD14におけるファイルのファイル識別子を通知した後に、(iii)書込側プロセス30を用いて、HDDコントローラー24に一連の複数のバンドデータを順番にHDD14へ書き込ませ、(iv)読出側プロセス40でファイル識別子を受領すると、読出側プロセス40を用いて、HDDコントローラー24に、そのファイル識別子に対応するファイルから一連の複数のバンドデータを読み出させる。これにより、画像形成装置10は、HDD14へのデータの書き込み前に、バッファー用の記憶領域(つまり、ファイル)の識別子(つまりファイル識別子)が読出側プロセス40へ渡され、書込側プロセス30とは独立して読出側プロセス40でデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。したがって、画像形成装置10は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【0055】
また、画像形成装置10は、図7に示すように読出側スレッド41によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予めファイル読出スレッド42がHDDコントローラー24に読み出させるので、図8に示すように読出側スレッド41によってバンドデータの読み出しが要求される度に要求されたバンドデータのみをファイル読出スレッド42がHDDコントローラー24に読み出させる構成と比較して、バンドデータをHDDコントローラー24に読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、画像形成装置10は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。つまり、画像形成装置10は、CPUなどのプロセッサーであるメインコントローラー12と、ASICとして実現されているHDDコントローラー24とが同時に動作する時間を増やすことができるので、1ページを読み込む時間を短縮することができる。
【0056】
なお、ファイル読出スレッド42は、本実施の形態において、読出側スレッド41によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予めHDDコントローラー24に読み出させているが、何バンド分を予め読み出させるようになっていても良い。
【0057】
(第2の実施の形態)
本発明の第2の実施の形態では、メインコントローラー12は、アプリケーション50の動作する書込側スレッドおよび読出側スレッドとは別に、ファイルへバンドデータを書き込む共有ライブラリーのプログラが動作するスレッドと、ファイルからバンドデータを読み出す共有ライブラリーのプログラムが動作するスレッドとを生成する。これにより、本実施の形態に係る画像形成装置は、アプリケーション50の処理とは非同期に、バンドデータの書き込みの処理およびバンドデータの読み出しの処理を実行する。
【0058】
なお、本実施の形態に係る画像形成装置の基本的な構成は、第1の実施の形態に係る画像形成装置10(図1参照。)と同様であるので、その説明を省略する。
【0059】
図9は、本実施の形態に係るメインコントローラー12のプログラム構成を示すブロック図である。
【0060】
図9に示すメインコントローラー12では、マルチプロセスおよびマルチスレッド対応のオペレーティングシステムが稼働している。メインコントローラー12は、データ処理プログラムを実行し、まず、書込側プロセス130および読出側プロセス140を生成する。メインコントローラー12は、書込側プロセス130および読出側プロセス140を使用して、HDD14にデータをバッファリングするアプリケーション150を実行する。アプリケーション150のうち、書込側プログラム131aは、書込側プロセス130内の書込側スレッド131で実行される。メインコントローラー12は、書込側プログラム131aを実行することにより、HDDコントローラー24にHDD14へバンドデータを書き込ませることが可能になる。一方、アプリケーション150のうち、読出側プログラム141aは、読出側プロセス140内の読出側スレッド141で実行される。メインコントローラー12は、読出側プログラム141aの実行により、HDDコントローラー24にHDD14からバンドデータを読み出させることが可能になる。
【0061】
そして、第2の実施の形態では、メインコントローラー12は、書込側プロセス130内でファイル書込スレッド132を生成して、そのファイル書込スレッド132で、ファイルへのデータの書き込みを行う共有ライブラリーのファイル書込プログラム132aを実行する。メインコントローラー12は、読出側プロセス140内で本発明の読出要求スレッドとしてのファイル読出スレッド142を生成して、そのファイル読出スレッド142で、ファイルからのバンドデータの読み出しを行う共有ライブラリーのファイル読出プログラム142aを実行する。また、メインコントローラー12は、読出側プロセス140内で読出実行スレッド143を生成して、その読出実行スレッド143で、ファイルからのバンドデータの読み出しを行う共有ライブラリーの読出実行プログラム143aを実行する。さらに、メインコントローラー12は、アプリケーション150で発生するデータの書き込み要求およびデータの読み出し要求をアクセス要求としてキューシステム170にキューイングし、ファイル書込プログラム132aおよびファイル読出プログラム142aを実行し、キューシステム170にキューイングされているアクセス要求に基づいて、バンドデータの書き込みおよび読み出しを実行していく。これにより、画像形成装置10は、アプリケーション150の処理とは非同期にバンドデータの書き込みおよび読み出しを実行する。
【0062】
以下、本実施の形態に係るメインコントローラー12の動作について説明する。
【0063】
図10は、書込側スレッド131の動作のフローチャートである。
【0064】
図10に示すように、メインコントローラー12は、書込側スレッド131で書込側プログラム131aを実行することにより、バンドデータの書き込み先となるファイルのファイル識別子を、読出側プロセス140の読出側プログラム141aに通知する(ステップS21)。ファイル識別子は、例えばファイル名とされる。メインコントローラー12は、書込側プログラム131aに従って、API131bでファイルシステム60の共有ライブラリーを呼び出し、そのファイル識別子のファイルをオープンし、ファイルハンドルを生成する(ステップS22)。
【0065】
メインコントローラー12は、ファイルオープン後、書込側スレッド131で書込側プログラム131aに従って、ファイルシステム60のAPI131bを呼び出し、ファイル識別子に対応するファイルへのバンドデータの書き込み要求を順に、キューシステム170にキューイングする。メインコントローラー12は、データの書き込み要求に応じて、書込側プログラム131aに従って、ファイル書込スレッド132に対して各バンドデータの書き込み指令を供給する(ステップS23)。書き込み指令では、書き込みの対象となるバンドデータの識別情報(つまり、そのバンドデータを含むドキュメントの識別情報、そのバンドデータを含むページの識別情報、およびそのページ内でのバンドデータの識別情報)が指定される。メインコントローラー12は、全てのバンドデータの書き込み要求をキューイングするまで、ステップS23の処理を繰り返す(ステップS24)。
【0066】
図11は、キューシステム170内の共有メモリー領域を示す図である。
【0067】
図11に示すように、この共有メモリー領域は、RAM13上に割り当てられ、その物理アドレスが、書込側プロセス130および読出側プロセス140の論理アドレスにマッピングされ、各プロセスから共有メモリー領域へのアクセスが可能となる。キューシステム170において、この共有メモリー領域は、ドキュメントリスト領域、ページリスト領域、FDリスト領域およびキュー領域を有する。
【0068】
ドキュメントリスト領域には、API131bまたはAPI141bにより、書き込み対象または読み出し対象のバンドデータを含むドキュメントのノードデータが記憶される。ドキュメントのノードデータは、このドキュメントを構成するページのノードデータへのリンク情報を有する。
【0069】
ページリスト領域には、API131bまたはAPI141bにより、書き込みの対象または読み出しの対象のバンドデータを含むページのノードデータが記憶される。ページのノードデータは、このページを構成するバンドのノードデータへのリンク情報、およびファイルディスクリプターへのリンク情報を有する。
【0070】
バンドリスト領域には、API131bまたはAPI141bにより、書き込みの対象または読み出しの対象のバンドのノードデータが記憶される。バンドのノードデータは、このバンドの属するドキュメントおよびページのIDやシリアル番号を有し、さらに、ファイル内でのバンドデータの識別情報(シリアル番号など)を有する。
【0071】
FDリスト領域には、API131bまたはAPI141bにより、ページ毎に、そのページに対応するファイルのファイルディスクリプターが書き込まれる。
【0072】
キュー領域には、API131bまたはAPI141bにより、バンドデータ毎にアクセス要求が書き込まれる。アクセス要求は、アクセス種別(書き込みまたは読み出し)、および対象のバンドデータの識別情報を含む。したがって、1つのキューに、データの書き込み要求とデータの読み出し要求が混在する。
【0073】
このキューシステム170へのアクセスは、セマフォにより排他制御され、書込側スレッド131、ファイル書込スレッド132、読出側スレッド141、ファイル読出スレッド142のうちの2つ以上から同時にアクセスできないようになっている。
【0074】
図12は、ファイル書込スレッド132の動作のフローチャートである。
【0075】
図12に示すように、メインコントローラー12は、ファイル書込スレッド132で、ファイル書込プログラム132aに従って、キュー内のアクセス要求を検索する(ステップS31)。メインコントローラー12は、キュー内に、書き込み指令のあったバンドデータの書き込み要求を発見すると(ステップS32)、その書き込み要求により指定されたバンドデータおよび書き込み先が、キューシステム170に書き込まれている構造データおよびファイルディスクリプターから特定する。メインコントローラー12は、ファイル書込スレッド132でRAM13からDMA転送でそのバンドデータを読み出す。HDDコントローラー24は、読み出されたバンドデータを特定された書き込み先に書き込む(ステップS33)。
【0076】
1つのバンドデータの書き込みが完了すると、メインコントローラー12は、ファイル書込スレッド132で、ファイル書込プログラム132aに従って、そのバンドデータの書き込み要求をキューから削除し(ステップS34)、API131bへバンドデータの書き込みの完了通知を供給する(ステップS35)。
【0077】
このように、キューイングされている書き込みのアクセス要求は、アプリケーション150とは別のファイル書込スレッド132のファイル書込プログラム132aを実行することにより、非同期で処理されていく。
【0078】
そして、図10に示すように、API131bへデータの書き込みの完了通知が供給されると、メインコントローラー12はAPI131bにより、イベントを発行する(ステップS26)。メインコントローラー12は、書込側スレッド131で書込側プログラム131aに従って、その書き込みが完了したバンドデータをRAM13から消去する(ステップS27)。
【0079】
そして、1ページ分の全てのバンドデータの書き込みが完了すると(ステップS28)、メインコントローラー12は、書込側プログラム131aに従って、API131bを用いてファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする(ステップS29)。
【0080】
図13は、読出側スレッド141の動作のフローチャートである。
【0081】
図13に示すように、メインコントローラー12は、読出側スレッド141で読出側プログラム141aを実行する。ここで、読出側プログラム141aは、書込側プログラム131aとは非同期で動作している。メインコントローラー12は、読出側スレッド141で読出側プログラム141aに従って、書込側スレッド131からファイル識別子を受領すると(ステップS41)、そのファイル識別子に対応するファイルをオープンし、ファイルハンドルを生成する(ステップS42)。
【0082】
そして、メインコントローラー12は、ファイルオープン後、読出側スレッド141で読出側プログラム141aに従って、ファイルシステム60のAPI141bを呼び出し、ファイル識別子に対応するファイルからの各バンドデータの読み出し要求を順に、キューシステム170にキューイングする。メインコントローラー12は、データの読み出し要求に応じて、読出側プログラム141aに従って、ファイル読出スレッド142に対して各バンドデータの読み出し指令を供給する(ステップS43)。読み出し指令では、読み出しの対象となるバンドデータの識別情報(つまり、そのバンドデータを含むドキュメントの識別情報、そのバンドデータを含むページの識別情報、およびそのページ内でのバンドデータの識別情報)が指定される。メインコントローラー12は、全てのバンドデータの読み出し要求をキューイングするまで、ステップS43の処理を繰り返す(ステップS44)。
【0083】
図14は、ファイル読出スレッド142の動作のフローチャートである。
【0084】
図14に示すように、メインコントローラー12は、ファイル読出スレッド142で、そのバンドデータの書き込み完了時のイベントを受領すると(ステップS51)、ファイル読出プログラム142aに従って、キュー内の読み出し要求を検索する(ステップS52)。メインコントローラー12は、キュー内に、読み出し指令のあったバンドデータのアクセス要求を発見すると(ステップS53)、ファイルシステム60のAPI141bを呼び出して、バンドデータをHDD14内のファイルから読み出すようHDDコントローラー24を制御する(ステップS54)。このとき、その読み出し要求により指定されたバンドデータおよび読み出し元が、キューシステム170に書き込まれている構造データおよびファイルディスクリプターから特定される。HDDコントローラー24は、特定された読み出し元からそのバンドデータを読み出す。メインコントローラー12は、ファイル読出プログラム142aに従って、読み出されたバンドデータをDMA転送でRAM13に書き込む。
【0085】
1つのバンドデータの読み出しが完了すると、メインコントローラー12は、ファイル読出スレッド142で、ファイル読出プログラム142aに従って、そのバンドデータの読み出し要求をキューから削除し(ステップS55)、API141bへバンドデータの読み出しの完了通知を供給する(ステップS56)。
【0086】
このようにして、書込側プロセス130からのイベントにつき1つずつ、バンドデータが順番に読み出される。
【0087】
そして、図13に示すように、メインコントローラー12は、読出側スレッド141で読出側プログラム141aに従って、読み出しの完了通知の度に、1ページ分の全てのバンドデータの読み出しが完了したか否かを判定する(ステップS46)。1ページ分の全てのバンドデータの読み出しが完了すると、メインコントローラー12は、API141bを用いてファイルシステム60の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする。(ステップS47)ここで、HDDコントローラー24は、クローズされたファイルをHDD14から消去する。
【0088】
図15は、読出実行スレッド143の動作の流れを示す図である。図16は、読出側プロセス140の動作の流れを示す図である。
【0089】
読出実行スレッド143は、ファイル読出スレッド142によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロックを予めHDDコントローラー24に読み出させて、RAM13に記憶させる。つまり、読出実行スレッド143は、ファイル読出スレッド142によって1バンド目のバンドデータの読み出しが要求された場合、ファイル読出スレッド142によって2バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、図15に示すように、ファイル読出スレッド142によって読み出しが要求されたデータブロックである1バンド目のバンドデータの読み出しだけでなく、ファイル読出スレッド142によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、2バンド目、3バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。次いで、読出実行スレッド143は、ファイル読出スレッド142によって2バンド目のバンドデータの読み出しが要求された場合、ファイル読出スレッド142によって3バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、ファイル読出スレッド142によって読み出しが要求されたデータブロックである2バンド目のバンドデータの読み出しだけでなく、ファイル読出スレッド142によって読み出しが要求されたデータブロックの後続の2バンド分のデータブロック、すなわち、3バンド目、4バンド目のバンドデータの読み出しも順番にファイルシステム60に要求する。ここで、読出実行スレッド143は、2バンド目および3バンド目のバンドデータについては、ファイル読出スレッド142によって1バンド目のバンドデータの読み出しが要求されたときに、ファイルシステム60への読み出しの要求を既に予定しているので、実際には、4バンド目のバンドデータについてファイルシステム60への読み出しの要求を追加する。読出実行スレッド143がファイル読出スレッド142によって3バンド目以降のバンドデータの読み出しが要求された場合の動作については、読出実行スレッド143がファイル読出スレッド142によって2バンド目のバンドデータの読み出しが要求された場合の動作と同様である。なお、ファイル読出スレッド142は、読出実行スレッド143に読み出しを要求したバンドデータについて、読出実行スレッド143によって読み出されてRAM13に記憶されたバンドデータを順番に取得する。ファイル読出スレッド142および読出実行スレッド143が以上のように動作するので、読出側プロセス40の動作のタイミングは、図16に示すようになる。
【0090】
以上に説明したように、本実施の形態に係るメインコントローラー12は、(i)書込側プロセス130で書込側スレッド131およびファイル書込スレッド132を生成し、(ii)読出側プロセス140で読出側スレッド141およびファイル読出スレッド142を生成し、(iii)書込側スレッド131から読出側スレッド141へ、HDD14におけるファイルの識別子を通知した後に、書込側スレッド131で一連の複数のバンドデータのそれぞれについての書き込み要求を順番にキューイングし、(iv)ファイル書込スレッド132を用いて、キューイングされた書き込み要求の順番で、HDDコントローラー24に一連の複数のバンドデータを書き込ませ、(v)読出側スレッド141で、ファイルのファイル識別子を受領すると、一連の複数のバンドデータのそれぞれについての読み出し要求を順番にキューイングし、(vi)ファイル読出スレッド142を用いて、キューイングされた読み出し要求の順番で、HDDコントローラー24に一連の複数のバンドデータを読み出させる。これにより、本実施の形態に係る画像形成装置は、HDD14への書き込みを行うファイル書込プログラム132aが書込側スレッド131とは別のスレッドであるファイル書込スレッド132で動作するため、非同期でのデータの書き込みとなり、書込側プログラム131aがデータの書き込みの完了を待たずに別の処理を実行することができる。また、HDD14からの読み出しを行うファイル読出プログラム142aが読出側スレッド141とは別のスレッドであるファイル読出スレッド142で動作するため、非同期でのデータの読み出しとなり、読出側プログラム141aがデータの読み出しの完了を待たずに別の処理を実行することができる。したがって、本実施の形態に係る画像形成装置は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【0091】
また、本実施の形態に係る画像形成装置は、図16に示すようにファイル読出スレッド142によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予め読出実行スレッド143がHDDコントローラー24に読み出させるので、図17に示すようにファイル読出スレッド142によってバンドデータの読み出しが要求される度に要求されたバンドデータのみを読出実行スレッド143がHDDコントローラー24に読み出させる構成と比較して、バンドデータをHDDコントローラー24に読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本実施の形態に係る画像形成装置は、HDD14へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。つまり、本実施の形態に係る画像形成装置は、CPUなどのプロセッサーであるメインコントローラー12と、ASICとして実現されているHDDコントローラー24とが同時に動作する時間を増やすことができるので、1ページを読み込む時間を短縮することができる。
【0092】
なお、読出実行スレッド143は、本実施の形態において、ファイル読出スレッド142によって読み出しが要求されたバンドデータの後続の2バンド分のバンドデータを予めHDDコントローラー24に読み出させているが、何バンド分を予め読み出させるようになっていても良い。
【0093】
(第3の実施の形態)
本発明の第3の実施の形態では、書込側スレッド131は、バンドデータの書き込みのキューイングが完了した時点でイベントを発行する。ファイル読出スレッド142は、RAM13上にバンドデータがあればRAM13からそのバンドデータを読み出し、RAM13上にバンドデータがなければHDD14のファイルからそのバンドデータを読み出す。
【0094】
なお、本実施の形態に係る画像形成装置の基本的な構成は、第1の実施の形態に係る画像形成装置10(図1参照。)と同様であるので、その説明を省略する。
【0095】
また、本実施の形態に係る画像形成装置の基本的なプログラム構成は、第2の実施の形態に係る画像形成装置(図9参照。)と同様であるので、その説明を省略する。
【0096】
以下、本実施の形態に係るメインコントローラー12の動作について説明する。
【0097】
なお、ファイル書込スレッド132および読出側スレッド141の動作については、第2の実施の形態に係る動作と同様であるので、説明を省略する。
【0098】
図18は、本実施の形態に係る書込側スレッド131の動作のフローチャートである。
【0099】
図18に示すように、本実施の形態に係る書込側スレッド131は、第2の実施の形態(図10参照。)とは異なり、バンドデータの書き込みの完了時(ステップS25でYES)ではなく、バンドデータのキューイング(ステップS23)が終了する度に、イベントを発行する(ステップS61)。
【0100】
図19は、本実施の形態に係るファイル読出スレッド142の動作のフローチャートである。
【0101】
図19に示すように、本実施の形態に係るファイル読出スレッド142は、第2の実施の形態(図14参照。)とは異なり、キューにおいてアクセス要求を発見したとき(ステップS53でYES)に、読み出し対象のバンドデータがRAM13上に残っているか否かを調べる(ステップS71)。その結果、読み出し対象のバンドデータがRAM13上に残っていれば、ファイル読出スレッド142は、ファイル読出プログラム142aに従って、バンドデータをRAM13から読み出す(ステップS72)。読み出し対象のバンドデータがRAM13上に残っていなければ、ファイル読出スレッド142は、ファイル読出プログラム142aに従って、バンドデータをHDD14のファイルから読み出すようHDDコントローラー24を制御する。このとき、HDDコントローラー24は、バンドデータをHDD14から読み出す(ステップS54)。
【0102】
図20は、本実施の形態に係るRAM13からのバンドデータの読み出し方法を示す図である。
【0103】
図20に示すように、バンドデータは、RAM13内の所定の共有メモリー領域に記憶され、この共有メモリー領域の物理アドレスは、各プロセス、すなわち、書込側プロセス130、読出側プロセス140の論理アドレスにマッピングされ、書込側プロセス130、読出側プロセス140の各スレッド、すなわち、書込側スレッド131、ファイル書込スレッド132、読出側スレッド141、ファイル読出スレッド142、読出実行スレッド143から共有メモリー領域へのアクセスが可能となっている。
【0104】
以上に説明したように、本実施の形態に係るメインコントローラー12は、(i)書込側プロセス130で、1つのバンドデータをRAM13に記憶し、(ii)書込側スレッド131で1つのバンドデータの書き込み要求をキューイングするたびにイベントを発行し、(iii)HDD14へのバンドデータの書き込みが完了したときに、読出側スレッド141でそのバンドデータをRAM13から消去し、(iv)キューイングされたデータの読み出し要求を順番に実行するとき、読み出し対象のバンドデータがRAM13にあれば、ファイル読出スレッド142で、HDD14からバンドデータを読み出さずにRAM13からそのバンドデータを読み出し、(v)RAM13にそのバンドデータがなければ、HDDコントローラー24にHDD14からそのバンドデータを読み出させる。
【0105】
これにより、RAM13にバンドデータが残っていれば、ただちにRAM13上のバンドデータを使用できる。このため、HDD14からの読み出しより短時間でデータを読み出すことができ、データの読み出し時の遅延を低減することができる。
【0106】
なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【0107】
例えば、第3の実施の形態において、読出側スレッド141でRAM13からバンドデータを読み出している最中に、書込側プロセス130においてそのバンドデータの、HDD14への書き込みが完了した場合、メインコントローラー12は、書込側スレッド131で、読出側スレッド141でのバンドデータの読み出しが完了した後に、そのバンドデータをRAM13から削除してもよい。例えば、バンドデータの記憶領域へのアクセスを排他制御すれば、このような処理が実現可能である。
【0108】
また、上述の各実施の形態において、HDD14へデータを書き込む前に、データを圧縮し、HDD14からデータを読み出した後に、データを伸張するようにしても良い。圧縮・伸張の方式としては、JPEG(Joint Photographic Experts Group)方式、RLE(Run Length Encoding)方式などが使用可能である。
【0109】
また、上述の各実施の形態において、書込側プロセスから読出側プロセスへ通知するファイル識別子には、ファイルハンドルを使用しても良い。
【0110】
また、上述の各実施の形態においては、ファイルシステム60を使用してHDD14に対するデータの読み書きを行っているが、ファイルシステム60はなくても良い。その場合には、ファイル識別子の代わりに、1ページ分のバンドデータを記憶するHDD14上の記憶領域の識別情報(例えばアドレスとサイズなど)が使用される。
【0111】
また、上述の各実施の形態において、書込側プロセスのアプリケーションと読出側プロセスのアプリケーションとは、別々の独立したプログラムとしても良い。
【0112】
また、上述の各実施の形態においては、ストレージとしてHDD14が使用されているが、SSD(Solid State Drive)などの半導体メモリーを使用した記憶装置を使用しても良い。
【0113】
また、上述の各実施の形態においては、書込側プロセスおよび読出側プロセスは、それぞれ1つであるが、書き込み側および読み出し側のいずれも複数の同様のプロセスが生成されても良い。その場合でも、第2の実施の形態、第3の実施の形態におけるキューシステム170は1つで足りる。
【0114】
また、上述の各実施の形態においては、単一のメインコントローラー12で書込側プロセスおよび読出側プロセスの両方のプロセスを処理しているが、複数のプロセシングエレメントを有するプロセッサーで、書込側プロセスおよび読出側プロセスを別々に処理するようにしても良い。
【0115】
また、上述の各実施の形態においては、バンドデータに分割された画像データを処理しているが、本発明は、他の種別のデータを所定のサイズのブロックへ分割し、そのブロック毎に処理をする装置にも適用可能である。
【0116】
また、本発明のデータ処理装置は、上述の各実施の形態において、画像形成装置に備えられているが、画像形成装置以外の装置に備えられていても良い。
【符号の説明】
【0117】
10a データ処理装置
12 メインコントローラー(プロセッサー)
14 HDD(ストレージ)
18 データ処理プログラム
24 HDDコントローラー(ストレージコントローラー)
30 書込側プロセス
40 読出側プロセス
41 読出側スレッド(読出要求スレッド)
42 ファイル読出スレッド(読出実行スレッド)
130 書込側プロセス
140 読出側プロセス
142 ファイル読出スレッド(読出要求スレッド)
143 読出実行スレッド
【特許請求の範囲】
【請求項1】
所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えており、
前記プロセッサーは、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成し、
前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、
前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、
前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、
前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とするデータ処理装置。
【請求項2】
前記一連の複数のデータブロックは、前記ストレージにおけるファイルに書き込まれ、
前記記憶領域の識別子は、前記ファイルの識別子であることを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記一連の複数のデータブロックは、1ページの画像データを構成する複数のバンドデータであり、
前記ストレージは、前記画像データに対する画像処理の前または後に前記画像データを一時的に記憶するバッファーであることを特徴とする請求項1または請求項2に記載のデータ処理装置。
【請求項4】
所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えているデータ処理装置の前記プロセッサーに、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成させるデータ処理プログラムであって、
前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、
前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、
前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、
前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とするデータ処理プログラム。
【請求項1】
所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えており、
前記プロセッサーは、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成し、
前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、
前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、
前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、
前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とするデータ処理装置。
【請求項2】
前記一連の複数のデータブロックは、前記ストレージにおけるファイルに書き込まれ、
前記記憶領域の識別子は、前記ファイルの識別子であることを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
前記一連の複数のデータブロックは、1ページの画像データを構成する複数のバンドデータであり、
前記ストレージは、前記画像データに対する画像処理の前または後に前記画像データを一時的に記憶するバッファーであることを特徴とする請求項1または請求項2に記載のデータ処理装置。
【請求項4】
所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えているデータ処理装置の前記プロセッサーに、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成させるデータ処理プログラムであって、
前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、
前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、
前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、
前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とするデータ処理プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2012−212267(P2012−212267A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願番号】特願2011−76879(P2011−76879)
【出願日】平成23年3月30日(2011.3.30)
【出願人】(000006150)京セラドキュメントソリューションズ株式会社 (13,173)
【Fターム(参考)】
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願日】平成23年3月30日(2011.3.30)
【出願人】(000006150)京セラドキュメントソリューションズ株式会社 (13,173)
【Fターム(参考)】
[ Back to top ]