(57)【特許請求の範囲】
【請求項１】
所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えており、
前記プロセッサーは、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成し、
前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、
前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、
前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、
前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とするデータ処理装置。
【請求項２】
前記一連の複数のデータブロックは、前記ストレージにおけるファイルに書き込まれ、
前記記憶領域の識別子は、前記ファイルの識別子であることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記一連の複数のデータブロックは、１ページの画像データを構成する複数のバンドデータであり、
前記ストレージは、前記画像データに対する画像処理の前または後に前記画像データを一時的に記憶するバッファーであることを特徴とする請求項１または請求項２に記載のデータ処理装置。
【請求項４】
所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えているデータ処理装置の前記プロセッサーに、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成させるデータ処理プログラムであって、
前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、
前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、
前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、
前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とするデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージにデータをバッファリングするデータ処理装置およびデータ処理プログラムに関するものである。
【背景技術】
【０００２】
一般的に、コピー機、複合機などの画像形成装置は、各種の画像処理を行うデータ処理装置を内蔵している。そのようなデータ処理装置は、画像データをバッファリングする際に、書込側プログラム（例えばある画像処理プログラム）により、１ページ分の画像データを、ＨＤＤ（Hard Disk Drive）などのストレージ内のファイルに記憶した後、そのファイルのファイル識別子を読出側プログラム（例えば後段の画像処理プログラム）へ通知する。そして、読出側プログラムは、書込側プログラムから通知されたファイル識別子に対応したストレージ上のファイルから、画像データを読み出す。
【０００３】
その他、ＨＤＤにデータを書き込む際に、バッファーとしてＦＩＦＯ（First-In First-Out）を設け、１つのスレッドで、そのＦＩＦＯにデータを書き込み、別のスレッドで、そのＦＩＦＯからＨＤＤへデータを書き込む技術がある（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７９４９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、通常、所定単位（上述の場合、ページ）のデータがストレージへ記憶された後に、そのデータを読み出すため、データの書き込みと読み出しとが逐次的に行われることになる。このため、所定単位のデータの書き込みが完了する前は、そのデータの読み出しを行うことができず、バッファリング後の処理に遅延が生じてしまう。
【０００６】
本発明は、上記の問題に鑑みてなされたものであり、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができるデータ処理装置およびデータ処理プログラムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明のデータ処理装置は、所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えており、前記プロセッサーは、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成し、前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とする。
【０００８】
この構成により、本発明のデータ処理装置は、ストレージへのデータの書き込み前に、バッファー用の記憶領域の識別子が読出側プロセスへ渡され、書込側プロセスとは独立して読出側プロセスでデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。また、本発明のデータ処理装置は、読出要求スレッドによって読み出しが要求されたデータブロックの後続のデータブロックを予め読出実行スレッドがストレージコントローラーに読み出させるので、読出要求スレッドによってデータブロックの読み出しが要求される度に要求されたデータブロックのみを読出実行スレッドがストレージコントローラーに読み出させる構成と比較して、データブロックをストレージコントローラーに読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本発明のデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【０００９】
また、本発明のデータ処理装置の前記一連の複数のデータブロックは、前記ストレージにおけるファイルに書き込まれ、前記記憶領域の識別子は、前記ファイルの識別子であっても良い。
【００１０】
この構成により、本発明のデータ処理装置は、バッファー用の記憶領域をファイルシステムで管理することができ、各プロセスからのストレージ内のデータへのアクセスを簡単に行うことができる。
【００１１】
また、本発明のデータ処理装置の前記一連の複数のデータブロックは、１ページの画像データを構成する複数のバンドデータであり、前記ストレージは、前記画像データに対する画像処理の前または後に前記画像データを一時的に記憶するバッファーであっても良い。
【００１２】
本発明のデータ処理プログラムは、所定単位のデータを構成する一連の複数のデータブロックをストレージに書き込み、前記ストレージからその一連の複数のデータブロックを読み出すストレージコントローラーと、前記ストレージコントローラーを制御するプロセッサーとを備えているデータ処理装置の前記プロセッサーに、前記一連の複数のデータブロックを前記ストレージコントローラーに書き込ませる書込側プロセスと、前記一連の複数のデータブロックを前記ストレージコントローラーに読み出させる読出側プロセスとを生成させるデータ処理プログラムであって、前記書込側プロセスは、前記ストレージにおける記憶領域の識別子を前記読出側プロセスに通知した後、前記一連の複数のデータブロックを前記ストレージコントローラーに順番に書き込ませ、前記読出側プロセスは、前記書込側プロセスから受信した前記識別子に対応する前記記憶領域から前記一連の複数のデータブロックを前記ストレージコントローラーに順番に読み出させ、前記読出側プロセスは、前記データブロックを前記ストレージコントローラーに読み出させる読出実行スレッドと、前記一連の複数のデータブロックの読み出しを前記読出実行スレッドに順番に要求する読出要求スレッドとを生成し、前記読出実行スレッドは、前記読出要求スレッドによって前記データブロックの読み出しが要求された場合、前記読出要求スレッドによって読み出しが要求された前記データブロックだけでなく、後続の前記データブロックも前記ストレージコントローラーに読み出させることを特徴とする。
【００１３】
この構成により、本発明のデータ処理プログラムを実行するデータ処理装置は、ストレージへのデータの書き込み前に、バッファー用の記憶領域の識別子が読出側プロセスへ渡され、書込側プロセスとは独立して読出側プロセスでデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。また、本発明のデータ処理プログラムを実行するデータ処理装置は、読出要求スレッドによって読み出しが要求されたデータブロックの後続のデータブロックを予め読出実行スレッドがストレージコントローラーに読み出させるので、読出要求スレッドによってデータブロックの読み出しが要求される度に要求されたデータブロックのみを読出実行スレッドがストレージコントローラーに読み出させる構成と比較して、データブロックをストレージコントローラーに読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本発明のデータ処理プログラムを実行するデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【発明の効果】
【００１４】
本発明のデータ処理装置は、ストレージへのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態に係る画像形成装置の構成を示すブロック図である。
【図２】図１に示すデータ処理回路で取り扱うデータの構造を示す図である。
【図３】図１に示すメインコントローラーのプログラム構成を示すブロック図である。
【図４】図３に示す書込側プロセスの動作のフローチャートである。
【図５】図３に示す読出側プロセスの動作のフローチャートである。
【図６】図３に示すファイル読出スレッドの動作の流れを示す図である。
【図７】図３に示す読出側プロセスの動作の流れを示す図である。
【図８】本発明が適用されない場合の図３に示す読出側プロセスの動作の流れを示す図である。
【図９】本発明の第２の実施の形態に係る画像形成装置のメインコントローラーのプログラム構成を示すブロック図である。
【図１０】図９に示す書込側スレッドの動作のフローチャートである。
【図１１】図９に示すキューシステム内の共有メモリー領域を示す図である。
【図１２】図９に示すファイル書込スレッドの動作のフローチャートである。
【図１３】図９に示す読出側スレッドの動作のフローチャートである。
【図１４】図９に示すファイル読出スレッドの動作のフローチャートである。
【図１５】図９に示すファイル読出スレッドの動作の流れを示す図である。
【図１６】図９に示す読出側プロセスの動作の流れを示す図である。
【図１７】本発明が適用されない場合の図９に示す読出側プロセスの動作の流れを示す図である。
【図１８】本発明の第３の実施の形態に係る画像形成装置の書込側スレッドの動作のフローチャートである。
【図１９】本発明の第３の実施の形態に係る画像形成装置のファイル読出スレッドの動作のフローチャートである。
【図２０】本発明の第３の実施の形態に係る画像形成装置のＲＡＭからのバンドデータの読み出し方法を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１７】
（第１の実施の形態）
まず、本実施の形態に係るデータ処理装置を内蔵しているコピー機、複合機などの画像形成装置の構成について説明する。
【００１８】
図１は、本実施の形態に係る画像形成装置１０の構成を示すブロック図である。
【００１９】
図１に示すように、画像形成装置１０は、データ処理回路１１、メインコントローラー１２、ＲＡＭ（Random Access Memory）１３、ＨＤＤ（Hard Disk Drive）１４、スキャナー１５、印刷エンジン制御回路１６、記憶装置１７、用紙に印刷を行う印刷エンジン（図示せず）などを有する。データ処理回路１１、メインコントローラー１２、ＲＡＭ１３、ＨＤＤ１４および記憶装置１７は、データ処理装置１０ａを構成している。
【００２０】
データ処理回路１１は、スキャナー１５などから画像データを、バンド単位またはページ単位で処理し、ＨＤＤ１４または印刷エンジン制御回路１６へ出力する装置である。
【００２１】
メインコントローラー１２は、データ処理回路１１内の各部へ指令を供給する装置である。メインコントローラー１２は、バスインターフェイス回路２１およびバス２２を介してデータ処理回路１１内の各部へ指令を供給する。メインコントローラー１２は、ＣＰＵ（Central Processing Unit）などのプロセッサーであり、記憶装置１７に記憶されているデータ処理プログラム１８に従って指令を出力する。
【００２２】
ＲＡＭ１３は、データ処理回路１１による処理においてバンドデータなどを一時的に記憶するためのメモリーである。ＲＡＭ１３としては、例えば、１または複数のＤＲＡＭ（Dynamic RAM）が使用される。
【００２３】
ＨＤＤ１４は、１ページの画像データを構成する一連の複数のバンドデータを一時的に記憶するためのストレージである。
【００２４】
スキャナー１５は、原稿の画像を光学的に読み取り、その読み取りにより得られる画像データを出力する装置である。
【００２５】
印刷エンジン制御回路１６は、印刷エンジンへ印刷画像データを供給するとともに、印刷エンジンを制御して印刷を実行させる回路である。
【００２６】
記憶装置１７は、フラッシュメモリーなどの不揮発性の記憶装置であり、メインコントローラー１２の使用する各種プログラムやデータを記憶する。ここでは、データ処理プログラム１８が記憶装置１７に記憶されている。
【００２７】
ここで、データ処理回路１１の構成について説明する。
【００２８】
データ処理回路１１は、バスインターフェイス回路２１、バス２２、メモリーインターフェイス２３、ＨＤＤコントローラー２４、データ取得回路２５、画像処理回路２６、ラスター処理回路２７、ハーフトーン処理回路２８およびデータ出力回路２９を有する。なお、データ処理回路１１は、ＡＳＩＣ（Application Specific Integrated Circuit）として実現される。
【００２９】
バスインターフェイス回路２１は、メインコントローラー１２をバス２２に接続する回路である。
【００３０】
メモリーインターフェイス２３は、ＲＡＭ１３とバス２２との間のデータおよび指令の送受を行う回路である。
【００３１】
ＨＤＤコントローラー２４は、メインコントローラー１２からの指令に応じて、ＨＤＤ１４に対してデータの読み書きを行う回路であって、本発明のストレージコントローラーを構成している。
【００３２】
データ取得回路２５は、メインコントローラー１２からの指令に応じて、スキャナー１５から画像データをバンドデータとして順番に取得し、ＲＡＭ１３またはＨＤＤ１４に記憶する回路である。データ取得回路２５は、ＤＭＡ（Direct Memory Access）コントローラーを有する。例えば、バンドデータは、１２８ライン分のデータであって、１ページにつき５８バンド分のバンドデータがある。
【００３３】
図２は、データ処理回路１１で取り扱うデータの構造を示す図である。
【００３４】
図２に示すように、１つのドキュメントデータが、１または複数のページデータで構成される。ページデータは、所定数のバンドデータで構成される。ドキュメントの構造は、ノードのリストで表現され、ドキュメントのノードデータは、ページのノードデータへのリンクを含み、ページのノードデータは、バンドのノードデータへのリンクを含む。バンドのノードデータは、ページ内でのバンドの識別情報、バンドデータの状態などを含む。したがって、これらのリンクにより、ドキュメント内のあるページのあるバンドのデータを特定可能である。
【００３５】
図１に示すように、画像処理回路２６は、メインコントローラー１２からの指令に応じて、画像データのバンドデータをＲＡＭ１３またはＨＤＤ１４から読み出し、それらのバンドデータに対して所定の画像処理（画像拡大、画像縮小、色変換など）を実行し、処理後のバンドデータをＲＡＭ１３またはＨＤＤ１４に記憶する回路である。画像処理回路２６は、ＤＭＡコントローラーを有する。
【００３６】
ラスター処理回路２７は、画像データのバンドデータをＲＡＭ１３またはＨＤＤ１４から読み出し、それらのバンドデータに対してラスタライズを実行し、ラスターデータを生成する回路である。ラスターデータは、バンド毎に、ＨＤＤ１４に記憶され、ハーフトーン処理実行時にＲＡＭ１３に読み出される。
【００３７】
ハーフトーン処理回路２８は、バンド毎にラスターデータをＲＡＭ１３から読み出し、ハーフトーン処理を実行し、ハーフトーン処理後のデータをＲＡＭ１３に記憶する回路である。
【００３８】
データ出力回路２９は、ハーフトーン処理後のデータをＲＡＭ１３から読み出し、印刷エンジン制御回路１６へ供給する回路である。
【００３９】
データ処理回路１１では、スキャナー１５から取得された画像データに対して、回転、拡大／縮小などの画像処理が必要に応じて施される。その後、ハーフトーニングで印刷画像データが生成され、印刷エンジン制御回路１６へ出力される。これらのデータ処理の途中で、バンド単位でのデータのバッファリングにはＲＡＭ１３が使用され、ページ単位でのデータのバッファリングにはＨＤＤ１４が使用される。
【００４０】
図３は、メインコントローラー１２のプログラム構成を示すブロック図である。
【００４１】
図３に示すメインコントローラー１２では、マルチプロセスおよびマルチスレッド対応のオペレーティングシステムが稼働している。メインコントローラー１２は、データ処理プログラム１８（図１参照。）を実行し、まず、書込側プロセス３０および読出側プロセス４０を生成する。メインコントローラー１２は、書込側プロセス３０および読出側プロセス４０を使用して、ＨＤＤ１４にデータをバッファリングするアプリケーション５０を実行する。アプリケーション５０のうち、書込側プログラム３１ａは、書込側プロセス３０内の書込側スレッド３１で実行される。メインコントローラー１２は、書込側プログラム３１ａを実行することにより、ＨＤＤコントローラー２４にＨＤＤ１４へバンドデータを書き込ませることが可能になる。一方、アプリケーション５０のうち、読出側プログラム４１ａは、読出側プロセス４０内の本発明の読出要求スレッドとしての読出側スレッド４１で実行される。メインコントローラー１２は、読出側プログラム４１ａの実行により、ＨＤＤコントローラー２４にＨＤＤ１４からバンドデータを読み出させることが可能になる。
【００４２】
メインコントローラー１２は、読出側プロセス４０内で本発明の読出実行スレッドとしてのファイル読出スレッド４２を生成して、そのファイル読出スレッド４２で、ファイルからのバンドデータの読み出しを行う共有ライブラリーのファイル読出プログラム４２ａを実行する。
【００４３】
次に、画像形成装置１０による、ＨＤＤ１４へのデータの書き込みおよび読み出しの動作について説明する。
【００４４】
図４は、書込側プロセス３０の動作のフローチャートである。
【００４５】
図４に示すように、メインコントローラー１２は、書込側スレッド３１で書込側プログラム３１ａを実行することにより、バンドデータの書き込み先となるファイルの識別子であるファイル識別子を、読出側プロセス４０の読出側プログラム４１ａに通知する（ステップＳ１）。ファイル識別子は、例えばファイル名とされる。メインコントローラー１２は、書込側プログラム３１ａに従って、ＡＰＩ（Application Program Interface）３１ｂでファイルシステム６０の共有ライブラリーを呼び出し、そのファイル識別子のファイルをオープンし、ファイルハンドルを生成する（ステップＳ２）。
【００４６】
メインコントローラー１２は、ファイルオープン後、書込側スレッド３１で書込側プログラム３１ａにより、ファイルシステム６０のＡＰＩ３１ｂを呼び出し、バンドデータをＨＤＤ１４内のファイルに書き込むようＨＤＤコントローラー２４を制御する（ステップＳ３）。ここで、メインコントローラー１２は、バンドデータを、ＤＭＡ転送でＲＡＭ１３から読み出す。ＨＤＤコントローラー２４は、ＲＡＭ１３から読み出されたバンドデータをＨＤＤ１４へ書き込む。１つのバンドデータの書き込みが完了すると、メインコントローラー１２は、ＡＰＩ３１ｂにより、イベントを発行する（ステップＳ４）。メインコントローラー１２は、書込側スレッド３１で書込側プログラム３１ａに従って、書き込みが完了したバンドデータをＲＡＭ１３から消去する（ステップＳ５）。
【００４７】
このようにして、１ページ分の複数のバンドデータが順番に書き込まれる。そして、１ページ分の全てのバンドデータの書き込みが完了すると（ステップＳ６）、メインコントローラー１２は、書込側プログラム３１ａに従って、ＡＰＩ３１ｂを用いて、ファイルシステム６０の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする（ステップＳ７）。
【００４８】
図５は、読出側プロセス４０の動作のフローチャートである。
【００４９】
図５に示すように、メインコントローラー１２は、読出側スレッド４１で読出側プログラム４１ａを実行する。ここで、読出側プログラム４１ａは、書込側プログラム３１ａとは非同期で動作している。メインコントローラー１２は、読出側スレッド４１で読出側プログラム４１ａに従って、書込側スレッド３１からファイル識別子を受領すると（ステップＳ１１）、ファイル識別子に対応するファイルをオープンし、ファイルハンドルを生成する（ステップＳ１２）。
【００５０】
メインコントローラー１２は、ファイルオープン後、読出側スレッド４１で読出側プログラム４１ａに従って、イベントを受領するまで待機する（ステップＳ１３）。メインコントローラー１２は、書込側プロセス３０からのイベントを受領すると、読出側スレッド４１で読出側プログラム４１ａに従って、ファイルシステム６０のＡＰＩ４１ｂを呼び出し、１つのバンドデータをＨＤＤ１４内のファイルから読み出すようＨＤＤコントローラー２４を制御する（ステップＳ１４）。ここで、ＨＤＤコントローラー２４は、バンドデータを、ＨＤＤ１４から読み出す。メインコントローラー１２は、ＨＤＤ１４から読み出されたバンドデータを、ＤＭＡ転送でＲＡＭ１３へ書き込む。
【００５１】
このようにして、書込側プロセス３０からのイベントにつき１つずつ、バンドデータが順番に読み出される。そして、１ページ分の全てのバンドデータの読み出しが完了すると（ステップＳ１５）、メインコントローラー１２は、読出側スレッド４１で読出側プログラム４１ａに従って、ＡＰＩ４１ｂを用いてファイルシステム６０の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする（ステップＳ１６）。ここで、ＨＤＤコントローラー２４は、クローズされたファイルをＨＤＤ１４から消去する。
【００５２】
図６は、ファイル読出スレッド４２の動作の流れを示す図である。図７は、読出側プロセス４０の動作の流れを示す図である。
【００５３】
ファイル読出スレッド４２は、読出側スレッド４１によって読み出しが要求されたデータブロックの後続の２バンド分のデータブロックを予めＨＤＤコントローラー２４に読み出させて、ＲＡＭ１３に記憶させる。つまり、ファイル読出スレッド４２は、読出側スレッド４１によって１バンド目のバンドデータの読み出しが要求された場合、読出側スレッド４１によって２バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、図６に示すように、読出側スレッド４１によって読み出しが要求されたデータブロックである１バンド目のバンドデータの読み出しだけでなく、読出側スレッド４１によって読み出しが要求されたデータブロックの後続の２バンド分のデータブロック、すなわち、２バンド目、３バンド目のバンドデータの読み出しも順番にファイルシステム６０に要求する。次いで、ファイル読出スレッド４２は、読出側スレッド４１によって２バンド目のバンドデータの読み出しが要求された場合、読出側スレッド４１によって３バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、読出側スレッド４１によって読み出しが要求されたデータブロックである２バンド目のバンドデータの読み出しだけでなく、読出側スレッド４１によって読み出しが要求されたデータブロックの後続の２バンド分のデータブロック、すなわち、３バンド目、４バンド目のバンドデータの読み出しも順番にファイルシステム６０に要求する。ここで、ファイル読出スレッド４２は、２バンド目および３バンド目のバンドデータについては、読出側スレッド４１によって１バンド目のバンドデータの読み出しが要求されたときに、ファイルシステム６０への読み出しの要求を既に予定しているので、実際には、４バンド目のバンドデータについてファイルシステム６０への読み出しの要求を追加する。ファイル読出スレッド４２が読出側スレッド４１によって３バンド目以降のバンドデータの読み出しが要求された場合の動作については、ファイル読出スレッド４２が読出側スレッド４１によって２バンド目のバンドデータの読み出しが要求された場合の動作と同様である。なお、読出側スレッド４１は、ファイル読出スレッド４２に読み出しを要求したバンドデータについて、ファイル読出スレッド４２によって読み出されてＲＡＭ１３に記憶されたバンドデータを順番に取得する。読出側スレッド４１およびファイル読出スレッド４２が以上のように動作するので、読出側プロセス４０の動作のタイミングは、図７に示すようになる。
【００５４】
以上に説明したように、本実施の形態に係るメインコントローラー１２は、（ｉ）書込側プロセス３０および読出側プロセス４０を生成し、（ｉｉ）書込側プロセス３０から読出側プロセス４０へ、ＨＤＤ１４におけるファイルのファイル識別子を通知した後に、（ｉｉｉ）書込側プロセス３０を用いて、ＨＤＤコントローラー２４に一連の複数のバンドデータを順番にＨＤＤ１４へ書き込ませ、（ｉｖ）読出側プロセス４０でファイル識別子を受領すると、読出側プロセス４０を用いて、ＨＤＤコントローラー２４に、そのファイル識別子に対応するファイルから一連の複数のバンドデータを読み出させる。これにより、画像形成装置１０は、ＨＤＤ１４へのデータの書き込み前に、バッファー用の記憶領域（つまり、ファイル）の識別子（つまりファイル識別子）が読出側プロセス４０へ渡され、書込側プロセス３０とは独立して読出側プロセス４０でデータの読み出しを開始できるため、データの書き込み途中でもデータの読み出しを行うことができる。したがって、画像形成装置１０は、ＨＤＤ１４へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【００５５】
また、画像形成装置１０は、図７に示すように読出側スレッド４１によって読み出しが要求されたバンドデータの後続の２バンド分のバンドデータを予めファイル読出スレッド４２がＨＤＤコントローラー２４に読み出させるので、図８に示すように読出側スレッド４１によってバンドデータの読み出しが要求される度に要求されたバンドデータのみをファイル読出スレッド４２がＨＤＤコントローラー２４に読み出させる構成と比較して、バンドデータをＨＤＤコントローラー２４に読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、画像形成装置１０は、ＨＤＤ１４へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。つまり、画像形成装置１０は、ＣＰＵなどのプロセッサーであるメインコントローラー１２と、ＡＳＩＣとして実現されているＨＤＤコントローラー２４とが同時に動作する時間を増やすことができるので、１ページを読み込む時間を短縮することができる。
【００５６】
なお、ファイル読出スレッド４２は、本実施の形態において、読出側スレッド４１によって読み出しが要求されたバンドデータの後続の２バンド分のバンドデータを予めＨＤＤコントローラー２４に読み出させているが、何バンド分を予め読み出させるようになっていても良い。
【００５７】
（第２の実施の形態）
本発明の第２の実施の形態では、メインコントローラー１２は、アプリケーション５０の動作する書込側スレッドおよび読出側スレッドとは別に、ファイルへバンドデータを書き込む共有ライブラリーのプログラが動作するスレッドと、ファイルからバンドデータを読み出す共有ライブラリーのプログラムが動作するスレッドとを生成する。これにより、本実施の形態に係る画像形成装置は、アプリケーション５０の処理とは非同期に、バンドデータの書き込みの処理およびバンドデータの読み出しの処理を実行する。
【００５８】
なお、本実施の形態に係る画像形成装置の基本的な構成は、第１の実施の形態に係る画像形成装置１０（図１参照。）と同様であるので、その説明を省略する。
【００５９】
図９は、本実施の形態に係るメインコントローラー１２のプログラム構成を示すブロック図である。
【００６０】
図９に示すメインコントローラー１２では、マルチプロセスおよびマルチスレッド対応のオペレーティングシステムが稼働している。メインコントローラー１２は、データ処理プログラムを実行し、まず、書込側プロセス１３０および読出側プロセス１４０を生成する。メインコントローラー１２は、書込側プロセス１３０および読出側プロセス１４０を使用して、ＨＤＤ１４にデータをバッファリングするアプリケーション１５０を実行する。アプリケーション１５０のうち、書込側プログラム１３１ａは、書込側プロセス１３０内の書込側スレッド１３１で実行される。メインコントローラー１２は、書込側プログラム１３１ａを実行することにより、ＨＤＤコントローラー２４にＨＤＤ１４へバンドデータを書き込ませることが可能になる。一方、アプリケーション１５０のうち、読出側プログラム１４１ａは、読出側プロセス１４０内の読出側スレッド１４１で実行される。メインコントローラー１２は、読出側プログラム１４１ａの実行により、ＨＤＤコントローラー２４にＨＤＤ１４からバンドデータを読み出させることが可能になる。
【００６１】
そして、第２の実施の形態では、メインコントローラー１２は、書込側プロセス１３０内でファイル書込スレッド１３２を生成して、そのファイル書込スレッド１３２で、ファイルへのデータの書き込みを行う共有ライブラリーのファイル書込プログラム１３２ａを実行する。メインコントローラー１２は、読出側プロセス１４０内で本発明の読出要求スレッドとしてのファイル読出スレッド１４２を生成して、そのファイル読出スレッド１４２で、ファイルからのバンドデータの読み出しを行う共有ライブラリーのファイル読出プログラム１４２ａを実行する。また、メインコントローラー１２は、読出側プロセス１４０内で読出実行スレッド１４３を生成して、その読出実行スレッド１４３で、ファイルからのバンドデータの読み出しを行う共有ライブラリーの読出実行プログラム１４３ａを実行する。さらに、メインコントローラー１２は、アプリケーション１５０で発生するデータの書き込み要求およびデータの読み出し要求をアクセス要求としてキューシステム１７０にキューイングし、ファイル書込プログラム１３２ａおよびファイル読出プログラム１４２ａを実行し、キューシステム１７０にキューイングされているアクセス要求に基づいて、バンドデータの書き込みおよび読み出しを実行していく。これにより、画像形成装置１０は、アプリケーション１５０の処理とは非同期にバンドデータの書き込みおよび読み出しを実行する。
【００６２】
以下、本実施の形態に係るメインコントローラー１２の動作について説明する。
【００６３】
図１０は、書込側スレッド１３１の動作のフローチャートである。
【００６４】
図１０に示すように、メインコントローラー１２は、書込側スレッド１３１で書込側プログラム１３１ａを実行することにより、バンドデータの書き込み先となるファイルのファイル識別子を、読出側プロセス１４０の読出側プログラム１４１ａに通知する（ステップＳ２１）。ファイル識別子は、例えばファイル名とされる。メインコントローラー１２は、書込側プログラム１３１ａに従って、ＡＰＩ１３１ｂでファイルシステム６０の共有ライブラリーを呼び出し、そのファイル識別子のファイルをオープンし、ファイルハンドルを生成する（ステップＳ２２）。
【００６５】
メインコントローラー１２は、ファイルオープン後、書込側スレッド１３１で書込側プログラム１３１ａに従って、ファイルシステム６０のＡＰＩ１３１ｂを呼び出し、ファイル識別子に対応するファイルへのバンドデータの書き込み要求を順に、キューシステム１７０にキューイングする。メインコントローラー１２は、データの書き込み要求に応じて、書込側プログラム１３１ａに従って、ファイル書込スレッド１３２に対して各バンドデータの書き込み指令を供給する（ステップＳ２３）。書き込み指令では、書き込みの対象となるバンドデータの識別情報（つまり、そのバンドデータを含むドキュメントの識別情報、そのバンドデータを含むページの識別情報、およびそのページ内でのバンドデータの識別情報）が指定される。メインコントローラー１２は、全てのバンドデータの書き込み要求をキューイングするまで、ステップＳ２３の処理を繰り返す（ステップＳ２４）。
【００６６】
図１１は、キューシステム１７０内の共有メモリー領域を示す図である。
【００６７】
図１１に示すように、この共有メモリー領域は、ＲＡＭ１３上に割り当てられ、その物理アドレスが、書込側プロセス１３０および読出側プロセス１４０の論理アドレスにマッピングされ、各プロセスから共有メモリー領域へのアクセスが可能となる。キューシステム１７０において、この共有メモリー領域は、ドキュメントリスト領域、ページリスト領域、ＦＤリスト領域およびキュー領域を有する。
【００６８】
ドキュメントリスト領域には、ＡＰＩ１３１ｂまたはＡＰＩ１４１ｂにより、書き込み対象または読み出し対象のバンドデータを含むドキュメントのノードデータが記憶される。ドキュメントのノードデータは、このドキュメントを構成するページのノードデータへのリンク情報を有する。
【００６９】
ページリスト領域には、ＡＰＩ１３１ｂまたはＡＰＩ１４１ｂにより、書き込みの対象または読み出しの対象のバンドデータを含むページのノードデータが記憶される。ページのノードデータは、このページを構成するバンドのノードデータへのリンク情報、およびファイルディスクリプターへのリンク情報を有する。
【００７０】
バンドリスト領域には、ＡＰＩ１３１ｂまたはＡＰＩ１４１ｂにより、書き込みの対象または読み出しの対象のバンドのノードデータが記憶される。バンドのノードデータは、このバンドの属するドキュメントおよびページのＩＤやシリアル番号を有し、さらに、ファイル内でのバンドデータの識別情報（シリアル番号など）を有する。
【００７１】
ＦＤリスト領域には、ＡＰＩ１３１ｂまたはＡＰＩ１４１ｂにより、ページ毎に、そのページに対応するファイルのファイルディスクリプターが書き込まれる。
【００７２】
キュー領域には、ＡＰＩ１３１ｂまたはＡＰＩ１４１ｂにより、バンドデータ毎にアクセス要求が書き込まれる。アクセス要求は、アクセス種別（書き込みまたは読み出し）、および対象のバンドデータの識別情報を含む。したがって、１つのキューに、データの書き込み要求とデータの読み出し要求が混在する。
【００７３】
このキューシステム１７０へのアクセスは、セマフォにより排他制御され、書込側スレッド１３１、ファイル書込スレッド１３２、読出側スレッド１４１、ファイル読出スレッド１４２のうちの２つ以上から同時にアクセスできないようになっている。
【００７４】
図１２は、ファイル書込スレッド１３２の動作のフローチャートである。
【００７５】
図１２に示すように、メインコントローラー１２は、ファイル書込スレッド１３２で、ファイル書込プログラム１３２ａに従って、キュー内のアクセス要求を検索する（ステップＳ３１）。メインコントローラー１２は、キュー内に、書き込み指令のあったバンドデータの書き込み要求を発見すると（ステップＳ３２）、その書き込み要求により指定されたバンドデータおよび書き込み先が、キューシステム１７０に書き込まれている構造データおよびファイルディスクリプターから特定する。メインコントローラー１２は、ファイル書込スレッド１３２でＲＡＭ１３からＤＭＡ転送でそのバンドデータを読み出す。ＨＤＤコントローラー２４は、読み出されたバンドデータを特定された書き込み先に書き込む（ステップＳ３３）。
【００７６】
１つのバンドデータの書き込みが完了すると、メインコントローラー１２は、ファイル書込スレッド１３２で、ファイル書込プログラム１３２ａに従って、そのバンドデータの書き込み要求をキューから削除し（ステップＳ３４）、ＡＰＩ１３１ｂへバンドデータの書き込みの完了通知を供給する（ステップＳ３５）。
【００７７】
このように、キューイングされている書き込みのアクセス要求は、アプリケーション１５０とは別のファイル書込スレッド１３２のファイル書込プログラム１３２ａを実行することにより、非同期で処理されていく。
【００７８】
そして、図１０に示すように、ＡＰＩ１３１ｂへデータの書き込みの完了通知が供給されると、メインコントローラー１２はＡＰＩ１３１ｂにより、イベントを発行する（ステップＳ２６）。メインコントローラー１２は、書込側スレッド１３１で書込側プログラム１３１ａに従って、その書き込みが完了したバンドデータをＲＡＭ１３から消去する（ステップＳ２７）。
【００７９】
そして、１ページ分の全てのバンドデータの書き込みが完了すると（ステップＳ２８）、メインコントローラー１２は、書込側プログラム１３１ａに従って、ＡＰＩ１３１ｂを用いてファイルシステム６０の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする（ステップＳ２９）。
【００８０】
図１３は、読出側スレッド１４１の動作のフローチャートである。
【００８１】
図１３に示すように、メインコントローラー１２は、読出側スレッド１４１で読出側プログラム１４１ａを実行する。ここで、読出側プログラム１４１ａは、書込側プログラム１３１ａとは非同期で動作している。メインコントローラー１２は、読出側スレッド１４１で読出側プログラム１４１ａに従って、書込側スレッド１３１からファイル識別子を受領すると（ステップＳ４１）、そのファイル識別子に対応するファイルをオープンし、ファイルハンドルを生成する（ステップＳ４２）。
【００８２】
そして、メインコントローラー１２は、ファイルオープン後、読出側スレッド１４１で読出側プログラム１４１ａに従って、ファイルシステム６０のＡＰＩ１４１ｂを呼び出し、ファイル識別子に対応するファイルからの各バンドデータの読み出し要求を順に、キューシステム１７０にキューイングする。メインコントローラー１２は、データの読み出し要求に応じて、読出側プログラム１４１ａに従って、ファイル読出スレッド１４２に対して各バンドデータの読み出し指令を供給する（ステップＳ４３）。読み出し指令では、読み出しの対象となるバンドデータの識別情報（つまり、そのバンドデータを含むドキュメントの識別情報、そのバンドデータを含むページの識別情報、およびそのページ内でのバンドデータの識別情報）が指定される。メインコントローラー１２は、全てのバンドデータの読み出し要求をキューイングするまで、ステップＳ４３の処理を繰り返す（ステップＳ４４）。
【００８３】
図１４は、ファイル読出スレッド１４２の動作のフローチャートである。
【００８４】
図１４に示すように、メインコントローラー１２は、ファイル読出スレッド１４２で、そのバンドデータの書き込み完了時のイベントを受領すると（ステップＳ５１）、ファイル読出プログラム１４２ａに従って、キュー内の読み出し要求を検索する（ステップＳ５２）。メインコントローラー１２は、キュー内に、読み出し指令のあったバンドデータのアクセス要求を発見すると（ステップＳ５３）、ファイルシステム６０のＡＰＩ１４１ｂを呼び出して、バンドデータをＨＤＤ１４内のファイルから読み出すようＨＤＤコントローラー２４を制御する（ステップＳ５４）。このとき、その読み出し要求により指定されたバンドデータおよび読み出し元が、キューシステム１７０に書き込まれている構造データおよびファイルディスクリプターから特定される。ＨＤＤコントローラー２４は、特定された読み出し元からそのバンドデータを読み出す。メインコントローラー１２は、ファイル読出プログラム１４２ａに従って、読み出されたバンドデータをＤＭＡ転送でＲＡＭ１３に書き込む。
【００８５】
１つのバンドデータの読み出しが完了すると、メインコントローラー１２は、ファイル読出スレッド１４２で、ファイル読出プログラム１４２ａに従って、そのバンドデータの読み出し要求をキューから削除し（ステップＳ５５）、ＡＰＩ１４１ｂへバンドデータの読み出しの完了通知を供給する（ステップＳ５６）。
【００８６】
このようにして、書込側プロセス１３０からのイベントにつき１つずつ、バンドデータが順番に読み出される。
【００８７】
そして、図１３に示すように、メインコントローラー１２は、読出側スレッド１４１で読出側プログラム１４１ａに従って、読み出しの完了通知の度に、１ページ分の全てのバンドデータの読み出しが完了したか否かを判定する（ステップＳ４６）。１ページ分の全てのバンドデータの読み出しが完了すると、メインコントローラー１２は、ＡＰＩ１４１ｂを用いてファイルシステム６０の共有ライブラリーを呼び出し、ファイル識別子に対応するファイルをクローズする。（ステップＳ４７）ここで、ＨＤＤコントローラー２４は、クローズされたファイルをＨＤＤ１４から消去する。
【００８８】
図１５は、読出実行スレッド１４３の動作の流れを示す図である。図１６は、読出側プロセス１４０の動作の流れを示す図である。
【００８９】
読出実行スレッド１４３は、ファイル読出スレッド１４２によって読み出しが要求されたデータブロックの後続の２バンド分のデータブロックを予めＨＤＤコントローラー２４に読み出させて、ＲＡＭ１３に記憶させる。つまり、読出実行スレッド１４３は、ファイル読出スレッド１４２によって１バンド目のバンドデータの読み出しが要求された場合、ファイル読出スレッド１４２によって２バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、図１５に示すように、ファイル読出スレッド１４２によって読み出しが要求されたデータブロックである１バンド目のバンドデータの読み出しだけでなく、ファイル読出スレッド１４２によって読み出しが要求されたデータブロックの後続の２バンド分のデータブロック、すなわち、２バンド目、３バンド目のバンドデータの読み出しも順番にファイルシステム６０に要求する。次いで、読出実行スレッド１４３は、ファイル読出スレッド１４２によって２バンド目のバンドデータの読み出しが要求された場合、ファイル読出スレッド１４２によって３バンド目以降のバンドデータの読み出しが要求されたか否かに関わらず、ファイル読出スレッド１４２によって読み出しが要求されたデータブロックである２バンド目のバンドデータの読み出しだけでなく、ファイル読出スレッド１４２によって読み出しが要求されたデータブロックの後続の２バンド分のデータブロック、すなわち、３バンド目、４バンド目のバンドデータの読み出しも順番にファイルシステム６０に要求する。ここで、読出実行スレッド１４３は、２バンド目および３バンド目のバンドデータについては、ファイル読出スレッド１４２によって１バンド目のバンドデータの読み出しが要求されたときに、ファイルシステム６０への読み出しの要求を既に予定しているので、実際には、４バンド目のバンドデータについてファイルシステム６０への読み出しの要求を追加する。読出実行スレッド１４３がファイル読出スレッド１４２によって３バンド目以降のバンドデータの読み出しが要求された場合の動作については、読出実行スレッド１４３がファイル読出スレッド１４２によって２バンド目のバンドデータの読み出しが要求された場合の動作と同様である。なお、ファイル読出スレッド１４２は、読出実行スレッド１４３に読み出しを要求したバンドデータについて、読出実行スレッド１４３によって読み出されてＲＡＭ１３に記憶されたバンドデータを順番に取得する。ファイル読出スレッド１４２および読出実行スレッド１４３が以上のように動作するので、読出側プロセス４０の動作のタイミングは、図１６に示すようになる。
【００９０】
以上に説明したように、本実施の形態に係るメインコントローラー１２は、（ｉ）書込側プロセス１３０で書込側スレッド１３１およびファイル書込スレッド１３２を生成し、（ｉｉ）読出側プロセス１４０で読出側スレッド１４１およびファイル読出スレッド１４２を生成し、（ｉｉｉ）書込側スレッド１３１から読出側スレッド１４１へ、ＨＤＤ１４におけるファイルの識別子を通知した後に、書込側スレッド１３１で一連の複数のバンドデータのそれぞれについての書き込み要求を順番にキューイングし、（ｉｖ）ファイル書込スレッド１３２を用いて、キューイングされた書き込み要求の順番で、ＨＤＤコントローラー２４に一連の複数のバンドデータを書き込ませ、（ｖ）読出側スレッド１４１で、ファイルのファイル識別子を受領すると、一連の複数のバンドデータのそれぞれについての読み出し要求を順番にキューイングし、（ｖｉ）ファイル読出スレッド１４２を用いて、キューイングされた読み出し要求の順番で、ＨＤＤコントローラー２４に一連の複数のバンドデータを読み出させる。これにより、本実施の形態に係る画像形成装置は、ＨＤＤ１４への書き込みを行うファイル書込プログラム１３２ａが書込側スレッド１３１とは別のスレッドであるファイル書込スレッド１３２で動作するため、非同期でのデータの書き込みとなり、書込側プログラム１３１ａがデータの書き込みの完了を待たずに別の処理を実行することができる。また、ＨＤＤ１４からの読み出しを行うファイル読出プログラム１４２ａが読出側スレッド１４１とは別のスレッドであるファイル読出スレッド１４２で動作するため、非同期でのデータの読み出しとなり、読出側プログラム１４１ａがデータの読み出しの完了を待たずに別の処理を実行することができる。したがって、本実施の形態に係る画像形成装置は、ＨＤＤ１４へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。
【００９１】
また、本実施の形態に係る画像形成装置は、図１６に示すようにファイル読出スレッド１４２によって読み出しが要求されたバンドデータの後続の２バンド分のバンドデータを予め読出実行スレッド１４３がＨＤＤコントローラー２４に読み出させるので、図１７に示すようにファイル読出スレッド１４２によってバンドデータの読み出しが要求される度に要求されたバンドデータのみを読出実行スレッド１４３がＨＤＤコントローラー２４に読み出させる構成と比較して、バンドデータをＨＤＤコントローラー２４に読み出させる処理の単位時間当たりの実行回数を増やすことができる。したがって、本実施の形態に係る画像形成装置は、ＨＤＤ１４へのデータのバッファリングに起因する、バッファリング後の処理の遅延を低減することができる。つまり、本実施の形態に係る画像形成装置は、ＣＰＵなどのプロセッサーであるメインコントローラー１２と、ＡＳＩＣとして実現されているＨＤＤコントローラー２４とが同時に動作する時間を増やすことができるので、１ページを読み込む時間を短縮することができる。
【００９２】
なお、読出実行スレッド１４３は、本実施の形態において、ファイル読出スレッド１４２によって読み出しが要求されたバンドデータの後続の２バンド分のバンドデータを予めＨＤＤコントローラー２４に読み出させているが、何バンド分を予め読み出させるようになっていても良い。
【００９３】
（第３の実施の形態）
本発明の第３の実施の形態では、書込側スレッド１３１は、バンドデータの書き込みのキューイングが完了した時点でイベントを発行する。ファイル読出スレッド１４２は、ＲＡＭ１３上にバンドデータがあればＲＡＭ１３からそのバンドデータを読み出し、ＲＡＭ１３上にバンドデータがなければＨＤＤ１４のファイルからそのバンドデータを読み出す。
【００９４】
なお、本実施の形態に係る画像形成装置の基本的な構成は、第１の実施の形態に係る画像形成装置１０（図１参照。）と同様であるので、その説明を省略する。
【００９５】
また、本実施の形態に係る画像形成装置の基本的なプログラム構成は、第２の実施の形態に係る画像形成装置（図９参照。）と同様であるので、その説明を省略する。
【００９６】
以下、本実施の形態に係るメインコントローラー１２の動作について説明する。
【００９７】
なお、ファイル書込スレッド１３２および読出側スレッド１４１の動作については、第２の実施の形態に係る動作と同様であるので、説明を省略する。
【００９８】
図１８は、本実施の形態に係る書込側スレッド１３１の動作のフローチャートである。
【００９９】
図１８に示すように、本実施の形態に係る書込側スレッド１３１は、第２の実施の形態（図１０参照。）とは異なり、バンドデータの書き込みの完了時（ステップＳ２５でＹＥＳ）ではなく、バンドデータのキューイング（ステップＳ２３）が終了する度に、イベントを発行する（ステップＳ６１）。
【０１００】
図１９は、本実施の形態に係るファイル読出スレッド１４２の動作のフローチャートである。
【０１０１】
図１９に示すように、本実施の形態に係るファイル読出スレッド１４２は、第２の実施の形態（図１４参照。）とは異なり、キューにおいてアクセス要求を発見したとき（ステップＳ５３でＹＥＳ）に、読み出し対象のバンドデータがＲＡＭ１３上に残っているか否かを調べる（ステップＳ７１）。その結果、読み出し対象のバンドデータがＲＡＭ１３上に残っていれば、ファイル読出スレッド１４２は、ファイル読出プログラム１４２ａに従って、バンドデータをＲＡＭ１３から読み出す（ステップＳ７２）。読み出し対象のバンドデータがＲＡＭ１３上に残っていなければ、ファイル読出スレッド１４２は、ファイル読出プログラム１４２ａに従って、バンドデータをＨＤＤ１４のファイルから読み出すようＨＤＤコントローラー２４を制御する。このとき、ＨＤＤコントローラー２４は、バンドデータをＨＤＤ１４から読み出す（ステップＳ５４）。
【０１０２】
図２０は、本実施の形態に係るＲＡＭ１３からのバンドデータの読み出し方法を示す図である。
【０１０３】
図２０に示すように、バンドデータは、ＲＡＭ１３内の所定の共有メモリー領域に記憶され、この共有メモリー領域の物理アドレスは、各プロセス、すなわち、書込側プロセス１３０、読出側プロセス１４０の論理アドレスにマッピングされ、書込側プロセス１３０、読出側プロセス１４０の各スレッド、すなわち、書込側スレッド１３１、ファイル書込スレッド１３２、読出側スレッド１４１、ファイル読出スレッド１４２、読出実行スレッド１４３から共有メモリー領域へのアクセスが可能となっている。
【０１０４】
以上に説明したように、本実施の形態に係るメインコントローラー１２は、（ｉ）書込側プロセス１３０で、１つのバンドデータをＲＡＭ１３に記憶し、（ｉｉ）書込側スレッド１３１で１つのバンドデータの書き込み要求をキューイングするたびにイベントを発行し、（ｉｉｉ）ＨＤＤ１４へのバンドデータの書き込みが完了したときに、読出側スレッド１４１でそのバンドデータをＲＡＭ１３から消去し、（ｉｖ）キューイングされたデータの読み出し要求を順番に実行するとき、読み出し対象のバンドデータがＲＡＭ１３にあれば、ファイル読出スレッド１４２で、ＨＤＤ１４からバンドデータを読み出さずにＲＡＭ１３からそのバンドデータを読み出し、（ｖ）ＲＡＭ１３にそのバンドデータがなければ、ＨＤＤコントローラー２４にＨＤＤ１４からそのバンドデータを読み出させる。
【０１０５】
これにより、ＲＡＭ１３にバンドデータが残っていれば、ただちにＲＡＭ１３上のバンドデータを使用できる。このため、ＨＤＤ１４からの読み出しより短時間でデータを読み出すことができ、データの読み出し時の遅延を低減することができる。
【０１０６】
なお、上述の各実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【０１０７】
例えば、第３の実施の形態において、読出側スレッド１４１でＲＡＭ１３からバンドデータを読み出している最中に、書込側プロセス１３０においてそのバンドデータの、ＨＤＤ１４への書き込みが完了した場合、メインコントローラー１２は、書込側スレッド１３１で、読出側スレッド１４１でのバンドデータの読み出しが完了した後に、そのバンドデータをＲＡＭ１３から削除してもよい。例えば、バンドデータの記憶領域へのアクセスを排他制御すれば、このような処理が実現可能である。
【０１０８】
また、上述の各実施の形態において、ＨＤＤ１４へデータを書き込む前に、データを圧縮し、ＨＤＤ１４からデータを読み出した後に、データを伸張するようにしても良い。圧縮・伸張の方式としては、ＪＰＥＧ（Joint Photographic Experts Group）方式、ＲＬＥ（Run Length Encoding）方式などが使用可能である。
【０１０９】
また、上述の各実施の形態において、書込側プロセスから読出側プロセスへ通知するファイル識別子には、ファイルハンドルを使用しても良い。
【０１１０】
また、上述の各実施の形態においては、ファイルシステム６０を使用してＨＤＤ１４に対するデータの読み書きを行っているが、ファイルシステム６０はなくても良い。その場合には、ファイル識別子の代わりに、１ページ分のバンドデータを記憶するＨＤＤ１４上の記憶領域の識別情報（例えばアドレスとサイズなど）が使用される。
【０１１１】
また、上述の各実施の形態において、書込側プロセスのアプリケーションと読出側プロセスのアプリケーションとは、別々の独立したプログラムとしても良い。
【０１１２】
また、上述の各実施の形態においては、ストレージとしてＨＤＤ１４が使用されているが、ＳＳＤ（Solid State Drive）などの半導体メモリーを使用した記憶装置を使用しても良い。
【０１１３】
また、上述の各実施の形態においては、書込側プロセスおよび読出側プロセスは、それぞれ１つであるが、書き込み側および読み出し側のいずれも複数の同様のプロセスが生成されても良い。その場合でも、第２の実施の形態、第３の実施の形態におけるキューシステム１７０は１つで足りる。
【０１１４】
また、上述の各実施の形態においては、単一のメインコントローラー１２で書込側プロセスおよび読出側プロセスの両方のプロセスを処理しているが、複数のプロセシングエレメントを有するプロセッサーで、書込側プロセスおよび読出側プロセスを別々に処理するようにしても良い。
【０１１５】
また、上述の各実施の形態においては、バンドデータに分割された画像データを処理しているが、本発明は、他の種別のデータを所定のサイズのブロックへ分割し、そのブロック毎に処理をする装置にも適用可能である。
【０１１６】
また、本発明のデータ処理装置は、上述の各実施の形態において、画像形成装置に備えられているが、画像形成装置以外の装置に備えられていても良い。
【符号の説明】
【０１１７】
１０ａ  データ処理装置
１２  メインコントローラー（プロセッサー）
１４  ＨＤＤ（ストレージ）
１８  データ処理プログラム
２４  ＨＤＤコントローラー（ストレージコントローラー）
３０  書込側プロセス
４０  読出側プロセス
４１  読出側スレッド（読出要求スレッド）
４２  ファイル読出スレッド（読出実行スレッド）
１３０  書込側プロセス
１４０  読出側プロセス
１４２  ファイル読出スレッド（読出要求スレッド）
１４３  読出実行スレッド
【図１】
0005298154.tif 000002
【図２】
0005298154.tif 000003
【図３】
0005298154.tif 000004
【図４】
0005298154.tif 000005
【図５】
0005298154.tif 000006
【図６】
0005298154.tif 000007
【図７】
0005298154.tif 000008
【図８】
0005298154.tif 000009
【図９】
0005298154.tif 000010
【図１０】
0005298154.tif 000011
【図１１】
0005298154.tif 000012
【図１２】
0005298154.tif 000013
【図１３】
0005298154.tif 000014
【図１４】
0005298154.tif 000015
【図１５】
0005298154.tif 000016
【図１６】
0005298154.tif 000017
【図１７】
0005298154.tif 000018
【図１８】
0005298154.tif 000019
【図１９】
0005298154.tif 000020
【図２０】
0005298154.tif 000021