画像形成装置、その制御方法及びプログラム
【課題】1つの大容量記憶装置を用いた分散システムにおいて、高速な画像処理を実現するとともに、必要となるハードウェアによるコストを低減する画像形成装置及びその制御方法を提供する。
【解決手段】本画像形成装置は、メインボードと、メインボードにバスを介して接続されるサブボードと、サブボードに接続されるとともにサブボードを介してメインボードに間接的に接続され、画像データを記憶するハードディスク6とを備える。さらに、メインボードは、ハードディスクに対するアクセス要求が発生すると、当該アクセスによるデータ転送が、メインボードとサブボードとの何れとの間で行なわれるかを判定し、メインボードである場合は通常アクセスを適用し、サブボードである場合は高速アクセスを適用する。
【解決手段】本画像形成装置は、メインボードと、メインボードにバスを介して接続されるサブボードと、サブボードに接続されるとともにサブボードを介してメインボードに間接的に接続され、画像データを記憶するハードディスク6とを備える。さらに、メインボードは、ハードディスクに対するアクセス要求が発生すると、当該アクセスによるデータ転送が、メインボードとサブボードとの何れとの間で行なわれるかを判定し、メインボードである場合は通常アクセスを適用し、サブボードである場合は高速アクセスを適用する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像形成装置、その制御方法及びプログラムに関するものである。
【背景技術】
【0002】
複合機等の画像形成装置では、大量の画像を高速に扱う機能に加え、汎用PCサーバ機能を取り込み、多くの汎用アプリケーションを同時に動作させる機能を有するようになってきている。このような画像形成装置では、ハードウェア構成として、汎用PCサーバ機能を実現するための独立した汎用PCシステムと、リアルタイム画像処理システムとを独立して備えている。これは、各々の機能で異なるパフォーマンスを追及するためである。
【0003】
例えば、特許文献1では、汎用PCのマザーボードに対して、汎用PCIバスを介してプリンタ制御ボードを接続することで、高機能低価格な汎用PC技術を用いた画像形成装置が提案されている。なお、通常の汎用PCはストレージ装置が必須となる。したがって、特許文献1においても汎用PCのマザーボード上にストレージ装置を有し、PCIバスを介して画像データのやり取りを行なっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平09−34609号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来技術には以下に記載する問題がある。上述のような画像形成装置では、2つのシステム間を接続する汎用バスの性能に依存してパフォーマンスが決定する。つまり、白黒や低解像度カラー画像など、比較的小さい画像データを低速に扱う場合には問題無いが、高画質なカラー画像を高速に扱う場合には、バス帯域的な問題や、転送用バッファの増加等が懸念される。
【0006】
また、汎用PCIバスの先にさらにCPUシステムを搭載した画像形成装置の場合、これらのCPU間のコミュニケーションや、汎用PC側の各種サーバ機能を実現するためにハードディスクの多くの領域が使用される。さらに、オペレーティングシステムがファイルのアクセスをキュー方式で逐次実行するため、ディスクのI/O待ちにより画像入出力のパフォーマンスが低下する可能性もある。この問題を解決する1つの方法として、拡張ボード側に画像蓄積専用のハードディスクを搭載する方法が考えられる。しかし、複数のハードディスクを搭載することにより、故障率増加の懸念や、コスト高という問題が発生する。
【0007】
本発明は、上述の問題に鑑みて成されたものであり、1つの大容量記憶装置を用いた分散システムにおいて、高速な画像処理を実現するとともに、必要となるハードウェアによるコストを低減する画像形成装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、画像形成装置として実現できる。画像形成装置は、画像形成装置を統括的に制御する第1制御手段と、第1制御手段にバスを介して接続され、画像形成装置が提供する機能の中で高速な画像処理を必要とする機能を制御する第2制御手段と、第2制御手段に接続されるとともに第2制御手段を介して第1制御手段に間接的に接続され、画像データを記憶する大容量記憶手段とを備え、第1制御手段は、大容量記憶手段に対するアクセス要求が発生すると、当該アクセスが、第1制御手段と大容量記憶手段との間でのデータ転送か、又は、第2制御手段と大容量記憶手段との間でのデータ転送かを判定する判定手段と、アクセスが第1制御手段と大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に従って大容量記憶手段にアクセスする通常アクセス手段と、アクセスが第2制御手段と大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に関係なく、大容量記憶手段にアクセスする高速アクセス手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明は、例えば、1つの大容量記憶装置を用いた分散システムにおいて、高速な画像処理を実現するとともに、必要となるハードウェアによるコストを低減する画像形成装置及びその制御方法を提供できる。
【図面の簡単な説明】
【0010】
【図1】本実施形態に係る画像形成装置100の構成例を示す図である。
【図2】本実施形態に係るコントローラ3のハードウェア構成を示す図である。
【図3A】本実施形態に係るソフトウエアの概念図である。
【図3B】図3Aの変形例を示す図である。
【図4】本実施形態に係るCPU201のメモリマップの一例を示す図である。
【図5】比較例となる画像データの転送シーケンスを示す図である。
【図6】本実施形態に係る画像データの転送シーケンスを示す図である。
【図7】本実施形態に係るストレージデバイスドライバ304の処理手順を示すフローチャートである。
【図8】本実施形態に係る高速ファイルシステム305の処理手順を示すフローチャートである。
【図9】本実施形態に係る転送先ボードを判定する処理手順を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0012】
<第1の実施形態>
<画像形成装置の構成>
まず、図1を参照して、本実施形態における画像形成装置100について説明する。尚、本実施形態では、この画像形成装置100は、コピー機能、ファクシミリ機能、プリンタ機能等を有する複合機の場合で説明するが、本発明はこれに限定されるものではない。
【0013】
この画像形成装置100は、イーサネット(登録商標)等のLAN8を介してホストコンピュータ9に接続されている。この画像形成装置100は、画像データの読取処理を行うリーダ装置(リーダ部)2と、画像データの印刷処理を行うプリンタ装置(プリンタ部)4、操作部5、画像記憶部(ハードディスク)6及びこれらを制御するコントローラ(制御装置)3とを有している。操作部5は、画像データの入出力操作を行うキーボード及び画像データや各種機能の表示/設定などを行う液晶パネルとを備える。記憶部(HDD)6は、リーダ部2を制御して読み込んだ画像データや、LAN8を介してホストコンピュータ9より受信したコードデータから生成される画像データを格納する。コントローラ3は、これら各構成要素に接続され、これら構成要素を制御する。
【0014】
リーダ部2は、原稿を搬送する原稿給紙ユニット21と、その原稿を光学的に読み取って電気信号としての画像データに変換するスキャナユニット22とを有している。FAXユニット7は、電話回線10を介してファクシミリデータを送受信する。またプリンタ部4は、シートを収容する複数段の給紙カセットを備えた給紙ユニット42と、画像データをシートに転写して定着するマーキングユニット41とを有している。さらに、印刷されたシートにソート処理やステイプル処理を施して外部に排出する排紙ユニット43を有している。
【0015】
コントローラ3は、リーダ部2を制御して原稿の画像データを読み込み、プリンタ部4を制御して、その画像データをシートに印刷するコピー機能を提供する。また、リーダ部2で読み取った画像データをコードデータに変換し、ネットワーク8を介してホストコンピュータ9へ送信するスキャナ機能を有している。またホストコンピュータ9からネットワーク8を介して受信したコードデータを画像データに変換し、プリンタ部4に出力して印刷するプリンタ機能やその他の機能ブロックを有している。
【0016】
上述した画像形成装置100は、大きく分けて複写機能、画像送信機能、画像保存機能、画像印刷機能、及びファクシミリ受信機能を有している。複写機能は、リーダ部2から入力した画像データをハードディスク6に記憶するとともに、プリンタ部4により印刷するものである。画像送信機能は、リーダ部2から入力した画像データをLAN8を介してホストコンピュータ9に送信する機能である。画像保存機能は、リーダ部2から入力した画像データをハードディスク6に記憶し、必要に応じて画像データの送信や印刷を行なう機能である。また画像印刷機能は、ホストコンピュータ9から送信された例えばページ記述言語を解析し、プリンタ部4で印刷する機能である。またファクシミリ受信機能は、FAXユニット7が電話回線から画像データを受信してプリンタ部4で印刷するか、又は、ハードディスク6に保存する機能である。また、スキャナユニット22から読み込んだデータをハードディスク6に保存して、FAXユニット7を介して電話回線へデータを送信することもできる。また、これらの機能は、各ハードウェアデバイスを排他的に制御し、見かけ上同時に実行することが可能である。
【0017】
<コントローラ3>
次に、図2を参照して、画像形成装置100のコントローラ3のハードウェア構成について説明する。図1と共通する部分は同一の参照番号で示している。なお、図2は簡略化して示している。例えば後述するCPU201、CPU221等にはチップセット、バスブリッジ、クロックジェネレータ等のCPU周辺ハードウェアが多数含まれているが、簡略化のためにこれらを省略して記述している。コントローラ3は、メインボード200と、サブボード220とを備える。メインボード200は、第1制御手段として機能し、画像形成装置100を統括的に制御する制御基板である。また、サブボード220は、第2制御手段として機能し、画像形成装置100が提供する機能の中で高速な画像処理を必要とする機能を制御する制御基板である。
【0018】
メインボード200は、所謂汎用のCPUシステムで、メインボード200全体を制御するCPU201、ブートプログラムが含まれるブートROM202、CPU201がワーク領域として使用するメモリ(第1記憶手段)203を有している。また、外部バスとのブリッジ機能を持つバスコントローラ204、不揮発メモリ205(バッテリ等によりバックアップされたメモリであっても良い)を含む。さらに、メインボード200は、半導体デバイスで構成された比較的小容量なストレージ装置であるフラッシュディスク(SSD等)207、当該フラッシュディスク207を制御するディスクコントローラ206、及びUSBメモリ209を制御するUSBコントローラ208を含む。メインボード200は、図2に示すように、USBメモリ209、及び操作部5に接続されている。
【0019】
サブボード220は、比較的小さな汎用CPUシステムと、画像処理用のハードウェアで構成される。サブボード220はCPU221、当該CPU221がワーク領域として使用するメモリ(第2記憶手段)223、外部バスとのブリッジ機能を持つバスコントローラ224、及び不揮発メモリ225を有している。さらに、サブボード220は、リアルタイムでデジタル画像処理を行なう画像処理部227、デバイスコントローラ226、228及びディスクコントローラ229を有する。サブボード220は、図2に示すように、プリンタ部4、リーダ部2、FAXユニット7及びハードディスク6に接続されている。上述したリーダ部2及びプリンタ部4は、それぞれデバイスコントローラ226、228を介して画像処理部227との間でデジタル画像データの受け渡しを行なう。FAXユニット7は、CPU221によって直接制御される。ハードディスク6は、ディスクコントローラ229によって制御される。
【0020】
このように、本実施形態に係る画像形成装置100では、メインの大容量記憶装置となるハードディスク6がサブボード220側に接続され、メインボード200側にはバスコントローラ224、204を介して間接的に接続される。これにより、本画像形成装置100は、比較的高速な画像転送が必要となるサブボード220側の処理において、ハードディスク6に対して高速なアクセスを実現する。なお、このディスクコントローラ229はCPU201から見ると、例えばPCIコントローラの先のストレージコントローラ(デバイスバスブリッジ経由でI/Oが見える形のデバイス)となる。また、本実施形態では、CPU221からはディスクコントローラ229及びハードディスク6を操作することはない構成としている。
【0021】
次に複写機能を例にして、コントローラ3の動作を説明する。ユーザが操作部5から複写を指示すると、CPU201がCPU221を介してリーダ部2に読取処理を実行する画像読取命令を送る。これによりリーダ部2は、原稿を光学的にスキャンしてデジタル画像データに変換してデバイスコントローラ228を介して画像処理部227に入力する。画像処理部227はCPU221を介してメモリ223にDMAにより画像データを格納する。
【0022】
CPU201はデジタル画像データがメモリ223に一定量もしくは全て記憶されたことを確認すると、CPU221を介してプリンタ部4に印刷指示を出す。CPU221は画像処理部227にメモリ223の画像データの位置を教える。そしてプリンタ部4からの同期信号に従ってメモリ223上の画像データは、画像処理部227とデバイスコントローラ226を介してプリンタ部4に送信され、プリンタ部4によりシート上に印刷される。
【0023】
また、複数部の印刷を行なう場合には、CPU201は、原稿を一度しか読み取らないため、メモリ223の画像データをハードディスク6に対して保存する。具体的には、CPU201は、メモリ223の画像データを一旦ハードディスク6がアクセス可能なRAMへ転送し、ハードディスク6に対して保存を行う。したがって、2部目以降は、当該ハードディスク6から画像データを読み出し、プリンタ部4によって印刷される。
【0024】
<メモリマップ>
次に、図4を参照して、図2に示すCPU201のメモリマップについて説明する。400はCPU201の仮想メモリ空間(領域)となる。410はCPU201の物理メモリ空間である。420はバスコントローラ204、224のメモリ空間である。本実施形態では一般的なPCIバスを用いて説明する。430はCPU201のメモリマップである。
【0025】
仮想メモリ空間401は、物理メモリ空間411と、仮想メモリページテーブルを介して離散的に対応している。402はPCIに割り当てた領域であり、CPU201の433のメモリ領域が参照できるようになっている。431はCPU201の物理メモリである。433の物理メモリと分離して示しているが、これらの領域は通常1つの領域で構成される。432はPCI空間に割り当てたI/O領域である。I/O領域432のメモリを参照することで、CPU201の物理メモリ空間411を参照することが可能となる。これらの設定はバスコントローラ204、224を相互に設定するすることにより可能であり、互いのメモリエリアを参照するようなシステムを構築することができる。
【0026】
<比較例となる画像データの転送シーケンス>
ここで、図5を参照して、図2に示す構成からハードディスク6をメインボード200のディスクコントローラ206に接続するように変更した構成の画像データの転送シーケンスについて説明する。この変更した構成は、従来の一般的な構成となる。したがって、以下で説明する転送シーケンスは比較例の転送シーケンスとなる。図5の501はプリンタ部4の動作タイミングを示す。502はリーダ部2の動作タイミングを示す。503、505はそれぞれメモリ223、203上のバッファにおけるデータのリード・ライトのタイミングを示す。504はバスコントローラ204、224の動作タイミングを示す。506は後述するブロックデバイス303におけるデータのリード・ライトのタイミングを示す。507はメインボード200側に接続を変更したハードディスク6におけるデータのリード・ライトのタイミングを示す。
【0027】
ここでは、1部が複数枚の原稿からなる複数部の原稿をコピーするシーケンスについて説明する。原稿給紙ユニット21は、原稿を痛めないように一度だけスキャンして得た画像データをハードディスク6に保存する。保存された画像データは、プリンタ部4の速度に応じて、非同期でハードディスク6から必要な画像データだけ読み出されて印刷される。
【0028】
まず、リーダ部2によって原稿スキャン510が行なわれ、読み取られた画像データがメモリ223上のバッファ511に格納される。続いて、ハードディスク6に格納するために、バッファ511のデータがメモリ203上のバッファ513に転送される。ここでの転送は、矢印512に示すように、バスコントローラ204、224を介して行なわれる。
【0029】
次に、CPU201は、カーネルに対してバッファ513に格納されたデータをハードディスク6に保存するように依頼する。この操作によりブロックデバイス303に対して当該データのライト514が行なわれる。ここで、ブロックデバイスとは、カーネルがハードディスク6等に対して、データ転送をブロック単位で行なうサービスを示し、一般的にブロック単位のバッファを使用した入出力、ランダムアクセス、探索などの機能を提供する。なお、バッファの空き領域がなくなると、必要に応じてバッファ内のデータをハードディスク6に書き出すことができる。そのため507と506上のデータは仮想的に等価と考えることができる。
【0030】
ブロックデバイス303へライト514が行なわれたデータは、プリント処理を実行するために、ブロックデバイス303からリード515が行なわれ、メモリ203上のバッファ516に格納される。その後、メモリ223上のバッファ518に転送され、原稿プリント519を行なうプリンタ部4へ送信される。
【0031】
上述したメモリ223とメモリ203との間のデータ転送は主にDMAが使用され、図4で説明した相互メモリ参照の仕組みを用いて行なわれる。ブロックデバイス303は、比較的遅いハードディスク6のキャッシュの役割を行うため、同じ場所を読み書きするようなファイルアクセスにおいては非常に有効に動作する。しかし、当該制御はカーネルがメモリとストレージの関係を隠蔽する仕組みであり、即時動作させる用途では応答性に問題がある。
【0032】
このような画像データの転送シーケンスにおいて、パフォーマンスを追及すると、3つの問題が発生する。1つ目はメモリ223とメモリ203との間のデータ送受信である。これは汎用バスブリッジが汎用的なデータの送受信を行うためのものであり、バス帯域が保証されていない場合が多い。例えば、プリンタ・スキャナ等のリアルタイムで画像を送受信するデバイスとのデータ送受信を行う際には、データオーバーラン・アンダーランの可能性が発生するため、バス速度が保証されたバッファ領域に格納しなければならない。つまり、比較的バス速度の高いバッファ領域が別途必要となる。
【0033】
2つ目はバッファ量の問題である。図5の530の範囲に示すように、メモリ223、203上に同一画像のためのバッファが同一時間内に複数発生する。これは転送先に転送元と同じだけのデータ領域を確保してからDMA転送を行う必要があるからである。
【0034】
3つ目はブロックデバイス303である。ブロックデバイスはリクエストキュー構成(後述する図3Bの303に示す。)を有する。つまり、カーネル内でストレージに対する要求が発生した順番にリクエストキューに積み、そのキューに従って逐次処理される。例えば、対象がハードディスク等の低速度デバイスであった場合、アプリケーションがハードディスクアクセスを頻発させると、リクエストキューに要求がたくさん溜まることになる。したがって、このようにブロックデバイス経由でハードディスクと画像データをやり取りすると、即座にアクセスできない可能性がある。
【0035】
<本実施形態に係る画像データの転送シーケンス>
図2に示す本実施形態に係るコントローラ3の構成では、上述した問題を解消する画像形成装置100を提供することができる。まず、図3Aを参照して、ハードディスクへの2種類のアクセス方法について説明する。図3Aは、ソフトウェアの概念図を示す。なお、ここでは、以下で説明する機能をソフトウェアで実現した例について説明するが、本発明はこれに限定されず、当該機能をハードウェア、又は、ソフトウェアとハードウェアとの組み合わせとして実現してもよい。
【0036】
まず、1つ目のアクセス方法として通常アクセスについて説明する。通常アクセスとは、高速にアクセスする必要のある画像データ以外のデータアクセスに用いられる。アプリケーション310は、307の経路でオペレーティングシステムが有するファイルシステム302にアクセスする。ファイルシステム302はディスクの物理的な場所(一般的にLBAアドレス)を決定し、ブロックデバイス303にアクセス要求を出す。カーネルは必要に応じて経路309によりストレージデバイスドライバ304に要求を出す。ストレージデバイスドライバ304はディスクコントローラ229を介してハードディスク6にアクセスする。このように、通常アクセスでは、メインボード200が提供するブロックデバイス303のリクエストキューの順番(つまり、アクセス要求が発生した順番)でハードディスク6にアクセスする。
【0037】
次に、2つ目のアクセス方法として高速アクセスについて説明する。高速アクセスとは、プリンタ部4、リーダ部2等の生産性を保証するために、高速にアクセスする必要のある画像データのデータアクセスに用いられる。このようなデータアクセスには、例えば、リーダ部2によって原稿から画像を読み取る読取処理、又は、プリンタ部4によって、画像データに従って記録材に画像を形成する画像形成処理(印刷処理)がある。高速アクセスは、高速アクセスに対応して拡張された高速ファイルシステム305により実現される。また、高速アクセスでは、通常アクセスで用いられたリクエストキューが適用されず、直接的にハードディスク6にアクセスされる。
【0038】
アプリケーション310は、経路308を経由して高速ファイルシステム305にアクセスする。高速ファイルシステムは、画像データの転送先がサブボード220か、メインボード200かを判定する。メインボード200である場合は、既存のファイルシステム302に対してアクセスを依頼し、その後、通常アクセスと同様の動作が行なわれる。一方、サブボード220に転送する場合は、ストレージデバイスドライバ304に対する直接的なシステムコール(例えば、ioctl等)の高速アクセスI/F306によりファイルアクセス要求を出す。ストレージデバイスドライバ304は、高速アクセスI/F306を経由した処理を優先的に処理する。つまり、ブロックデバイス303のリクエストキューからの順序制御を待たずに優先的に処理が行なわれる。
【0039】
なお、図3Bは図3Aの変形例である。図3Bの構成では、高速ファイルシステム305がオペレーティングシステム301上に構築されている。高速ファイルシステム305がオペレーティングシステム301に構築されるため、直接的にブロックデバイス303に対して依頼を行うことができる。制御については図3Aの構成と同様である。
【0040】
次に、図8を参照して、本実施形態における高速ファイルシステム305の処理手順について説明する。フローチャート800は図3Aの構成である非カーネル領域に拡張した高速ファイルシステム305による処理手順を示す。また、フローチャート801は図3Bの構成であるカーネル領域に拡張した高速ファイルシステム305による処理手順を示す。以下で説明する処理は、メインボード200のCPU201が不揮発メモリ205等に格納されたプログラムを実行することにより行なわれる。なお、以下で示すSに続く番号はステップ番号を示す。
【0041】
まずフローチャート800について説明する。S801において、高速ファイルシステム305は、転送先のボードがメインボード200かサブボード220かを判定する。ここでの判定では、ハードディスク6へのアクセス要求として、リードが要求された場合を想定しているため、転送先のボードがメインボード200かサブボード220かを判定している。しかしながら、本発明は、これに限定されず、ハードディスク6に対するライト要求にも対応できる。この場合、ここでの判定は、アクセス要求による当該アクセスにおいて、メインボード200とハードディスク6との間でのデータ転送か、サブボード220とハードディスク6との間でのデータ転送かを判定する。メインボード200である場合はS802に進み、ファイルシステム302をコールし、処理を終了する。これは、通常アクセスと同等の結果を得ることができる。一方、S801で転送先がサブボード220であると判定されると、S803に進み、高速ファイルシステム305は、要求されたファイルからアクセスすべきディスクの物理的アドレスを算出する。これは一般的なファイルシステムの動作である。その後、S804において、高速ファイルシステム305は、高速アクセスI/F306を経由してストレージデバイスドライバ304に依頼する。
【0042】
次にフローチャート801について説明する。S811において、高速ファイルシステム305は、S804と同様に、ファイルからアクセスすべきディスクの物理的な記録場所を特定する。次に、S812において、高速ファイルシステム305は、転送先ボードがメインボード200かサブボード220かを判定する。メインボード200である場合はS813に進み、高速ファイルシステム305は、カーネルのブロックデバイス303をコールし、処理を終了する。一方、サブボード220である場合はS814に進み、高速ファイルシステム305は、高速アクセスI/F306を経由してストレージデバイスドライバ304に依頼する。
【0043】
次に、図7を参照して、ストレージデバイスドライバ304の処理手順について説明する。以下で説明する処理は、メインボード200のCPU201が不揮発メモリ205等に格納されたプログラムを実行することにより行なわれる。なお、以下で示すSに続く番号はステップ番号を示す。
【0044】
まず、S701において、ストレージデバイスドライバ304は、高速アクセスI/F306からの高速アクセス要求があるか否かを判定する。高速アクセス要求がない場合はS702に進み、ストレージデバイスドライバ304は、ブロックデバイス303からの要求があるか否かを判定する。ブロックデバイス303からの要求がある場合はS703に進み、ストレージデバイスドライバ304は、ブロックデバイス303からのアクセス要求を取得し、S704でハードディスク6にアクセスするための情報(ディスクリプタ)を作成する。その後、S705において、ストレージデバイスドライバ304は、ストレージコントローラに要求することでハードディスク6にアクセスし、処理をS701に戻す。
【0045】
一方、S701で高速アクセス要求がある場合、S706に進み、ストレージデバイスドライバ304は、高速アクセスI/F306で要求された高速アクセス要求を取得する。続いて、S707において、ストレージデバイスドライバ304は、アドレス変換を行い、S704に進む。その後、ブロックデバイス303の動作と同様にS704、S705の処理を実行し、ハードディスクに対してアクセスする。このように、本フローチャートでは、高速アクセスを通常アクセス(リクエストキューを用いるブロックデバイス要求)も優先的に実行するように制御している。つまり、ストレージデバイスドライバ304は、アクセス制御手段に相当する。
【0046】
ここで、S801及びS812の、転送先(転送要求)ボードの判定方法について詳細に説明する。当該判定方法には、例えばファイルシステムのI/Fを分ける方法、ボリューム名を変更する方法、特定のパス名を割り当てる方法などがある。本実施形態では以下に説明する方法を適用するが、この判定方法に限定するわけではない。
【0047】
本判定方法は、図4に示す領域403を用いる。領域403は、オペレーティングシステムが管理する一部の仮想メモリ領域以外のメモリ領域であり、サブボード220用の領域433のミラーアドレスとして割り当てられる。つまり、サブボード220のメモリ223のアドレスに関連付けられる。この割り当ては、ハードウェア的に割り当てたものではなく、転送先ボードを判定するためのものである。アプリケーション310は、CPU201のメモリマップ430上の領域433にデータを転送したい場合、オペレーティングシステムの非管理領域である領域403を指定して高速ファイルシステム305をコールする。
【0048】
図9を参照して、S801及びS812の詳細な処理について説明する。以下で説明する処理は、メインボード200のCPU201が不揮発メモリ205等に格納されたプログラムを実行することにより行なわれる。なお、以下で示すSに続く番号はステップ番号を示す。
【0049】
S901において、高速ファイルシステム305は、ファイルシステムに与えられたバッファアドレスが、領域403を示すか否かを判定する。同様に、カーネルの仮想メモリ領域であるか否かの判定でもよい。バッファアドレスが領域403を示す場合、S902に進み、高速ファイルシステム305は、転送先をサブボード220に設定する。一方、バッファアドレスが領域403を示さない場合、S903に進み、高速ファイルシステム305は、転送先をメインボード200に設定する。
【0050】
次に、図7に示すS707のアドレス変換処理について詳細に説明する。S706では、高速アクセス要求であるため、領域403を示すバッファアドレスが通知されている。領域403は、仮想アドレスであるため、S707で対応するサブボード用の領域433のアドレスに変換する。当該アドレスは、サブボード220のディスクコントローラ229がメモリ223を参照するためのアドレスである。このアドレス変換処理により、ディスクコントローラ229は、ハードディスク6とメモリ223との間で直接データ転送を行なうことができる。
【0051】
次に、図6を参照して、本実施形態における画像データの転送シーケンスについて説明する。図6の601はプリンタ部4の動作タイミングを示す。602はリーダ部2の動作タイミングを示す。603、606はそれぞれメモリ223、203上のバッファにおけるデータのリード・ライトのタイミングを示す。604は本実施形態におけるサブボード220側に接続されたハードディスク6におけるデータのリード・ライトのタイミングを示す。605はバスコントローラ204、224の動作タイミングを示す。607はブロックデバイス303におけるデータのリード・ライトのタイミングを示す。
【0052】
ブロックデバイス303に621、624の大量のリード要求が入っているとする。リード621はハードディスク6を使用し、メモリ203上にデータをリードする。この動作は図3Aにおけるファイルシステム302、ブロックデバイス303、ストレージデバイスドライバ304、ディスクコントローラ229における経路のアクセスである。当該アクセスは、既存のブロックデバイスを用いたオペレーティングシステムの1つの機能であるディスクキャッシュを最大限に利用したファイルアクセスである。
【0053】
図6では、リーダ部2が原稿スキャン610を行いメモリ223上のバッファ611にデータが読み込まれ、当該データをハードディスク6に書き込む動作が先のファイルアクセスに競合した場合を想定している。612の書き込みは上述した高速アクセスI/F306からアクセスされるためS706、S707の経路で624のリード要求に先行して実行される。その後、同様にバッファ614に対してリード613が実行され、原稿プリント615を行なうためプリンタ部4に画像データが転送される。
【0054】
630から635についても同様に画像データが優先的に転送される。リード624はハードディスク6が空いたときにスケジューリングされるためリード625のタイミングで遅延してバッファ626にリードされる。つまり、優先度の高いライト612、632、リード613、633が先に実行され、リード624に対応するリード625は遅延して実行される。640から642も同様に遅延リードされる。
【0055】
以上説明したように、本実施形態に係る画像形成装置100では、メインのハードディスク6をサブボード220側に設けることにより、サブボード220で制御されるプリント処理やスキャナ処理におけるデータ転送を高速で行なう。具体的には、当該データ転送は、サブボード220内でのデータ転送となり、バスコントローラ204、224を介することなく行なわれる。したがって、本画像形成装置100では、高速なデータ転送が要求されるプリント処理やスキャナ処理においては、複数のボードを介することなく1つのボードに閉じて制御が行えるため上述した問題を解消することができる。例えば、本画像形成装置は、ハードディスク6から、画像データを出力するデバイスが装着されているRAM223にデータを直接転送することが可能であり、中間バッファ量の削減、バスブリッジの帯域負荷を軽減させることができる。これにより、複数の画像操作要求が競合した場合や、汎用PCのサーバ機能からのストレージアクセス要求が競合した場合においても、画像入出力のパフォーマンスを保証することが可能となる。また、本画像形成装置は、汎用バスブリッジのバス負荷の大幅な軽減、画像転送用のバッファの削減、ストレージ装置の個数削減などによるコスト優位性もある。
【0056】
なお、上記実施形態は様々な変形が可能となる。上記実施形態においては、ディスクコントローラ、ハードディスクを用いて説明したが、ストレージ装置であれば同様に発明を適用することが可能である。また、その場合、ディスクコントローラに相当するハードウェアは使用するストレージに対応したコントローラとなる。例えば、高速なSSD等のストレージデバイスを用いる場合は、バスブリッジ間の帯域問題が発生する可能性もある。しかし、本発明は、このような場合であっても有効に適用することが可能である。
【0057】
<他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、画像形成装置、その制御方法及びプログラムに関するものである。
【背景技術】
【0002】
複合機等の画像形成装置では、大量の画像を高速に扱う機能に加え、汎用PCサーバ機能を取り込み、多くの汎用アプリケーションを同時に動作させる機能を有するようになってきている。このような画像形成装置では、ハードウェア構成として、汎用PCサーバ機能を実現するための独立した汎用PCシステムと、リアルタイム画像処理システムとを独立して備えている。これは、各々の機能で異なるパフォーマンスを追及するためである。
【0003】
例えば、特許文献1では、汎用PCのマザーボードに対して、汎用PCIバスを介してプリンタ制御ボードを接続することで、高機能低価格な汎用PC技術を用いた画像形成装置が提案されている。なお、通常の汎用PCはストレージ装置が必須となる。したがって、特許文献1においても汎用PCのマザーボード上にストレージ装置を有し、PCIバスを介して画像データのやり取りを行なっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平09−34609号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来技術には以下に記載する問題がある。上述のような画像形成装置では、2つのシステム間を接続する汎用バスの性能に依存してパフォーマンスが決定する。つまり、白黒や低解像度カラー画像など、比較的小さい画像データを低速に扱う場合には問題無いが、高画質なカラー画像を高速に扱う場合には、バス帯域的な問題や、転送用バッファの増加等が懸念される。
【0006】
また、汎用PCIバスの先にさらにCPUシステムを搭載した画像形成装置の場合、これらのCPU間のコミュニケーションや、汎用PC側の各種サーバ機能を実現するためにハードディスクの多くの領域が使用される。さらに、オペレーティングシステムがファイルのアクセスをキュー方式で逐次実行するため、ディスクのI/O待ちにより画像入出力のパフォーマンスが低下する可能性もある。この問題を解決する1つの方法として、拡張ボード側に画像蓄積専用のハードディスクを搭載する方法が考えられる。しかし、複数のハードディスクを搭載することにより、故障率増加の懸念や、コスト高という問題が発生する。
【0007】
本発明は、上述の問題に鑑みて成されたものであり、1つの大容量記憶装置を用いた分散システムにおいて、高速な画像処理を実現するとともに、必要となるハードウェアによるコストを低減する画像形成装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、画像形成装置として実現できる。画像形成装置は、画像形成装置を統括的に制御する第1制御手段と、第1制御手段にバスを介して接続され、画像形成装置が提供する機能の中で高速な画像処理を必要とする機能を制御する第2制御手段と、第2制御手段に接続されるとともに第2制御手段を介して第1制御手段に間接的に接続され、画像データを記憶する大容量記憶手段とを備え、第1制御手段は、大容量記憶手段に対するアクセス要求が発生すると、当該アクセスが、第1制御手段と大容量記憶手段との間でのデータ転送か、又は、第2制御手段と大容量記憶手段との間でのデータ転送かを判定する判定手段と、アクセスが第1制御手段と大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に従って大容量記憶手段にアクセスする通常アクセス手段と、アクセスが第2制御手段と大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に関係なく、大容量記憶手段にアクセスする高速アクセス手段とを備えることを特徴とする。
【発明の効果】
【0009】
本発明は、例えば、1つの大容量記憶装置を用いた分散システムにおいて、高速な画像処理を実現するとともに、必要となるハードウェアによるコストを低減する画像形成装置及びその制御方法を提供できる。
【図面の簡単な説明】
【0010】
【図1】本実施形態に係る画像形成装置100の構成例を示す図である。
【図2】本実施形態に係るコントローラ3のハードウェア構成を示す図である。
【図3A】本実施形態に係るソフトウエアの概念図である。
【図3B】図3Aの変形例を示す図である。
【図4】本実施形態に係るCPU201のメモリマップの一例を示す図である。
【図5】比較例となる画像データの転送シーケンスを示す図である。
【図6】本実施形態に係る画像データの転送シーケンスを示す図である。
【図7】本実施形態に係るストレージデバイスドライバ304の処理手順を示すフローチャートである。
【図8】本実施形態に係る高速ファイルシステム305の処理手順を示すフローチャートである。
【図9】本実施形態に係る転送先ボードを判定する処理手順を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。
【0012】
<第1の実施形態>
<画像形成装置の構成>
まず、図1を参照して、本実施形態における画像形成装置100について説明する。尚、本実施形態では、この画像形成装置100は、コピー機能、ファクシミリ機能、プリンタ機能等を有する複合機の場合で説明するが、本発明はこれに限定されるものではない。
【0013】
この画像形成装置100は、イーサネット(登録商標)等のLAN8を介してホストコンピュータ9に接続されている。この画像形成装置100は、画像データの読取処理を行うリーダ装置(リーダ部)2と、画像データの印刷処理を行うプリンタ装置(プリンタ部)4、操作部5、画像記憶部(ハードディスク)6及びこれらを制御するコントローラ(制御装置)3とを有している。操作部5は、画像データの入出力操作を行うキーボード及び画像データや各種機能の表示/設定などを行う液晶パネルとを備える。記憶部(HDD)6は、リーダ部2を制御して読み込んだ画像データや、LAN8を介してホストコンピュータ9より受信したコードデータから生成される画像データを格納する。コントローラ3は、これら各構成要素に接続され、これら構成要素を制御する。
【0014】
リーダ部2は、原稿を搬送する原稿給紙ユニット21と、その原稿を光学的に読み取って電気信号としての画像データに変換するスキャナユニット22とを有している。FAXユニット7は、電話回線10を介してファクシミリデータを送受信する。またプリンタ部4は、シートを収容する複数段の給紙カセットを備えた給紙ユニット42と、画像データをシートに転写して定着するマーキングユニット41とを有している。さらに、印刷されたシートにソート処理やステイプル処理を施して外部に排出する排紙ユニット43を有している。
【0015】
コントローラ3は、リーダ部2を制御して原稿の画像データを読み込み、プリンタ部4を制御して、その画像データをシートに印刷するコピー機能を提供する。また、リーダ部2で読み取った画像データをコードデータに変換し、ネットワーク8を介してホストコンピュータ9へ送信するスキャナ機能を有している。またホストコンピュータ9からネットワーク8を介して受信したコードデータを画像データに変換し、プリンタ部4に出力して印刷するプリンタ機能やその他の機能ブロックを有している。
【0016】
上述した画像形成装置100は、大きく分けて複写機能、画像送信機能、画像保存機能、画像印刷機能、及びファクシミリ受信機能を有している。複写機能は、リーダ部2から入力した画像データをハードディスク6に記憶するとともに、プリンタ部4により印刷するものである。画像送信機能は、リーダ部2から入力した画像データをLAN8を介してホストコンピュータ9に送信する機能である。画像保存機能は、リーダ部2から入力した画像データをハードディスク6に記憶し、必要に応じて画像データの送信や印刷を行なう機能である。また画像印刷機能は、ホストコンピュータ9から送信された例えばページ記述言語を解析し、プリンタ部4で印刷する機能である。またファクシミリ受信機能は、FAXユニット7が電話回線から画像データを受信してプリンタ部4で印刷するか、又は、ハードディスク6に保存する機能である。また、スキャナユニット22から読み込んだデータをハードディスク6に保存して、FAXユニット7を介して電話回線へデータを送信することもできる。また、これらの機能は、各ハードウェアデバイスを排他的に制御し、見かけ上同時に実行することが可能である。
【0017】
<コントローラ3>
次に、図2を参照して、画像形成装置100のコントローラ3のハードウェア構成について説明する。図1と共通する部分は同一の参照番号で示している。なお、図2は簡略化して示している。例えば後述するCPU201、CPU221等にはチップセット、バスブリッジ、クロックジェネレータ等のCPU周辺ハードウェアが多数含まれているが、簡略化のためにこれらを省略して記述している。コントローラ3は、メインボード200と、サブボード220とを備える。メインボード200は、第1制御手段として機能し、画像形成装置100を統括的に制御する制御基板である。また、サブボード220は、第2制御手段として機能し、画像形成装置100が提供する機能の中で高速な画像処理を必要とする機能を制御する制御基板である。
【0018】
メインボード200は、所謂汎用のCPUシステムで、メインボード200全体を制御するCPU201、ブートプログラムが含まれるブートROM202、CPU201がワーク領域として使用するメモリ(第1記憶手段)203を有している。また、外部バスとのブリッジ機能を持つバスコントローラ204、不揮発メモリ205(バッテリ等によりバックアップされたメモリであっても良い)を含む。さらに、メインボード200は、半導体デバイスで構成された比較的小容量なストレージ装置であるフラッシュディスク(SSD等)207、当該フラッシュディスク207を制御するディスクコントローラ206、及びUSBメモリ209を制御するUSBコントローラ208を含む。メインボード200は、図2に示すように、USBメモリ209、及び操作部5に接続されている。
【0019】
サブボード220は、比較的小さな汎用CPUシステムと、画像処理用のハードウェアで構成される。サブボード220はCPU221、当該CPU221がワーク領域として使用するメモリ(第2記憶手段)223、外部バスとのブリッジ機能を持つバスコントローラ224、及び不揮発メモリ225を有している。さらに、サブボード220は、リアルタイムでデジタル画像処理を行なう画像処理部227、デバイスコントローラ226、228及びディスクコントローラ229を有する。サブボード220は、図2に示すように、プリンタ部4、リーダ部2、FAXユニット7及びハードディスク6に接続されている。上述したリーダ部2及びプリンタ部4は、それぞれデバイスコントローラ226、228を介して画像処理部227との間でデジタル画像データの受け渡しを行なう。FAXユニット7は、CPU221によって直接制御される。ハードディスク6は、ディスクコントローラ229によって制御される。
【0020】
このように、本実施形態に係る画像形成装置100では、メインの大容量記憶装置となるハードディスク6がサブボード220側に接続され、メインボード200側にはバスコントローラ224、204を介して間接的に接続される。これにより、本画像形成装置100は、比較的高速な画像転送が必要となるサブボード220側の処理において、ハードディスク6に対して高速なアクセスを実現する。なお、このディスクコントローラ229はCPU201から見ると、例えばPCIコントローラの先のストレージコントローラ(デバイスバスブリッジ経由でI/Oが見える形のデバイス)となる。また、本実施形態では、CPU221からはディスクコントローラ229及びハードディスク6を操作することはない構成としている。
【0021】
次に複写機能を例にして、コントローラ3の動作を説明する。ユーザが操作部5から複写を指示すると、CPU201がCPU221を介してリーダ部2に読取処理を実行する画像読取命令を送る。これによりリーダ部2は、原稿を光学的にスキャンしてデジタル画像データに変換してデバイスコントローラ228を介して画像処理部227に入力する。画像処理部227はCPU221を介してメモリ223にDMAにより画像データを格納する。
【0022】
CPU201はデジタル画像データがメモリ223に一定量もしくは全て記憶されたことを確認すると、CPU221を介してプリンタ部4に印刷指示を出す。CPU221は画像処理部227にメモリ223の画像データの位置を教える。そしてプリンタ部4からの同期信号に従ってメモリ223上の画像データは、画像処理部227とデバイスコントローラ226を介してプリンタ部4に送信され、プリンタ部4によりシート上に印刷される。
【0023】
また、複数部の印刷を行なう場合には、CPU201は、原稿を一度しか読み取らないため、メモリ223の画像データをハードディスク6に対して保存する。具体的には、CPU201は、メモリ223の画像データを一旦ハードディスク6がアクセス可能なRAMへ転送し、ハードディスク6に対して保存を行う。したがって、2部目以降は、当該ハードディスク6から画像データを読み出し、プリンタ部4によって印刷される。
【0024】
<メモリマップ>
次に、図4を参照して、図2に示すCPU201のメモリマップについて説明する。400はCPU201の仮想メモリ空間(領域)となる。410はCPU201の物理メモリ空間である。420はバスコントローラ204、224のメモリ空間である。本実施形態では一般的なPCIバスを用いて説明する。430はCPU201のメモリマップである。
【0025】
仮想メモリ空間401は、物理メモリ空間411と、仮想メモリページテーブルを介して離散的に対応している。402はPCIに割り当てた領域であり、CPU201の433のメモリ領域が参照できるようになっている。431はCPU201の物理メモリである。433の物理メモリと分離して示しているが、これらの領域は通常1つの領域で構成される。432はPCI空間に割り当てたI/O領域である。I/O領域432のメモリを参照することで、CPU201の物理メモリ空間411を参照することが可能となる。これらの設定はバスコントローラ204、224を相互に設定するすることにより可能であり、互いのメモリエリアを参照するようなシステムを構築することができる。
【0026】
<比較例となる画像データの転送シーケンス>
ここで、図5を参照して、図2に示す構成からハードディスク6をメインボード200のディスクコントローラ206に接続するように変更した構成の画像データの転送シーケンスについて説明する。この変更した構成は、従来の一般的な構成となる。したがって、以下で説明する転送シーケンスは比較例の転送シーケンスとなる。図5の501はプリンタ部4の動作タイミングを示す。502はリーダ部2の動作タイミングを示す。503、505はそれぞれメモリ223、203上のバッファにおけるデータのリード・ライトのタイミングを示す。504はバスコントローラ204、224の動作タイミングを示す。506は後述するブロックデバイス303におけるデータのリード・ライトのタイミングを示す。507はメインボード200側に接続を変更したハードディスク6におけるデータのリード・ライトのタイミングを示す。
【0027】
ここでは、1部が複数枚の原稿からなる複数部の原稿をコピーするシーケンスについて説明する。原稿給紙ユニット21は、原稿を痛めないように一度だけスキャンして得た画像データをハードディスク6に保存する。保存された画像データは、プリンタ部4の速度に応じて、非同期でハードディスク6から必要な画像データだけ読み出されて印刷される。
【0028】
まず、リーダ部2によって原稿スキャン510が行なわれ、読み取られた画像データがメモリ223上のバッファ511に格納される。続いて、ハードディスク6に格納するために、バッファ511のデータがメモリ203上のバッファ513に転送される。ここでの転送は、矢印512に示すように、バスコントローラ204、224を介して行なわれる。
【0029】
次に、CPU201は、カーネルに対してバッファ513に格納されたデータをハードディスク6に保存するように依頼する。この操作によりブロックデバイス303に対して当該データのライト514が行なわれる。ここで、ブロックデバイスとは、カーネルがハードディスク6等に対して、データ転送をブロック単位で行なうサービスを示し、一般的にブロック単位のバッファを使用した入出力、ランダムアクセス、探索などの機能を提供する。なお、バッファの空き領域がなくなると、必要に応じてバッファ内のデータをハードディスク6に書き出すことができる。そのため507と506上のデータは仮想的に等価と考えることができる。
【0030】
ブロックデバイス303へライト514が行なわれたデータは、プリント処理を実行するために、ブロックデバイス303からリード515が行なわれ、メモリ203上のバッファ516に格納される。その後、メモリ223上のバッファ518に転送され、原稿プリント519を行なうプリンタ部4へ送信される。
【0031】
上述したメモリ223とメモリ203との間のデータ転送は主にDMAが使用され、図4で説明した相互メモリ参照の仕組みを用いて行なわれる。ブロックデバイス303は、比較的遅いハードディスク6のキャッシュの役割を行うため、同じ場所を読み書きするようなファイルアクセスにおいては非常に有効に動作する。しかし、当該制御はカーネルがメモリとストレージの関係を隠蔽する仕組みであり、即時動作させる用途では応答性に問題がある。
【0032】
このような画像データの転送シーケンスにおいて、パフォーマンスを追及すると、3つの問題が発生する。1つ目はメモリ223とメモリ203との間のデータ送受信である。これは汎用バスブリッジが汎用的なデータの送受信を行うためのものであり、バス帯域が保証されていない場合が多い。例えば、プリンタ・スキャナ等のリアルタイムで画像を送受信するデバイスとのデータ送受信を行う際には、データオーバーラン・アンダーランの可能性が発生するため、バス速度が保証されたバッファ領域に格納しなければならない。つまり、比較的バス速度の高いバッファ領域が別途必要となる。
【0033】
2つ目はバッファ量の問題である。図5の530の範囲に示すように、メモリ223、203上に同一画像のためのバッファが同一時間内に複数発生する。これは転送先に転送元と同じだけのデータ領域を確保してからDMA転送を行う必要があるからである。
【0034】
3つ目はブロックデバイス303である。ブロックデバイスはリクエストキュー構成(後述する図3Bの303に示す。)を有する。つまり、カーネル内でストレージに対する要求が発生した順番にリクエストキューに積み、そのキューに従って逐次処理される。例えば、対象がハードディスク等の低速度デバイスであった場合、アプリケーションがハードディスクアクセスを頻発させると、リクエストキューに要求がたくさん溜まることになる。したがって、このようにブロックデバイス経由でハードディスクと画像データをやり取りすると、即座にアクセスできない可能性がある。
【0035】
<本実施形態に係る画像データの転送シーケンス>
図2に示す本実施形態に係るコントローラ3の構成では、上述した問題を解消する画像形成装置100を提供することができる。まず、図3Aを参照して、ハードディスクへの2種類のアクセス方法について説明する。図3Aは、ソフトウェアの概念図を示す。なお、ここでは、以下で説明する機能をソフトウェアで実現した例について説明するが、本発明はこれに限定されず、当該機能をハードウェア、又は、ソフトウェアとハードウェアとの組み合わせとして実現してもよい。
【0036】
まず、1つ目のアクセス方法として通常アクセスについて説明する。通常アクセスとは、高速にアクセスする必要のある画像データ以外のデータアクセスに用いられる。アプリケーション310は、307の経路でオペレーティングシステムが有するファイルシステム302にアクセスする。ファイルシステム302はディスクの物理的な場所(一般的にLBAアドレス)を決定し、ブロックデバイス303にアクセス要求を出す。カーネルは必要に応じて経路309によりストレージデバイスドライバ304に要求を出す。ストレージデバイスドライバ304はディスクコントローラ229を介してハードディスク6にアクセスする。このように、通常アクセスでは、メインボード200が提供するブロックデバイス303のリクエストキューの順番(つまり、アクセス要求が発生した順番)でハードディスク6にアクセスする。
【0037】
次に、2つ目のアクセス方法として高速アクセスについて説明する。高速アクセスとは、プリンタ部4、リーダ部2等の生産性を保証するために、高速にアクセスする必要のある画像データのデータアクセスに用いられる。このようなデータアクセスには、例えば、リーダ部2によって原稿から画像を読み取る読取処理、又は、プリンタ部4によって、画像データに従って記録材に画像を形成する画像形成処理(印刷処理)がある。高速アクセスは、高速アクセスに対応して拡張された高速ファイルシステム305により実現される。また、高速アクセスでは、通常アクセスで用いられたリクエストキューが適用されず、直接的にハードディスク6にアクセスされる。
【0038】
アプリケーション310は、経路308を経由して高速ファイルシステム305にアクセスする。高速ファイルシステムは、画像データの転送先がサブボード220か、メインボード200かを判定する。メインボード200である場合は、既存のファイルシステム302に対してアクセスを依頼し、その後、通常アクセスと同様の動作が行なわれる。一方、サブボード220に転送する場合は、ストレージデバイスドライバ304に対する直接的なシステムコール(例えば、ioctl等)の高速アクセスI/F306によりファイルアクセス要求を出す。ストレージデバイスドライバ304は、高速アクセスI/F306を経由した処理を優先的に処理する。つまり、ブロックデバイス303のリクエストキューからの順序制御を待たずに優先的に処理が行なわれる。
【0039】
なお、図3Bは図3Aの変形例である。図3Bの構成では、高速ファイルシステム305がオペレーティングシステム301上に構築されている。高速ファイルシステム305がオペレーティングシステム301に構築されるため、直接的にブロックデバイス303に対して依頼を行うことができる。制御については図3Aの構成と同様である。
【0040】
次に、図8を参照して、本実施形態における高速ファイルシステム305の処理手順について説明する。フローチャート800は図3Aの構成である非カーネル領域に拡張した高速ファイルシステム305による処理手順を示す。また、フローチャート801は図3Bの構成であるカーネル領域に拡張した高速ファイルシステム305による処理手順を示す。以下で説明する処理は、メインボード200のCPU201が不揮発メモリ205等に格納されたプログラムを実行することにより行なわれる。なお、以下で示すSに続く番号はステップ番号を示す。
【0041】
まずフローチャート800について説明する。S801において、高速ファイルシステム305は、転送先のボードがメインボード200かサブボード220かを判定する。ここでの判定では、ハードディスク6へのアクセス要求として、リードが要求された場合を想定しているため、転送先のボードがメインボード200かサブボード220かを判定している。しかしながら、本発明は、これに限定されず、ハードディスク6に対するライト要求にも対応できる。この場合、ここでの判定は、アクセス要求による当該アクセスにおいて、メインボード200とハードディスク6との間でのデータ転送か、サブボード220とハードディスク6との間でのデータ転送かを判定する。メインボード200である場合はS802に進み、ファイルシステム302をコールし、処理を終了する。これは、通常アクセスと同等の結果を得ることができる。一方、S801で転送先がサブボード220であると判定されると、S803に進み、高速ファイルシステム305は、要求されたファイルからアクセスすべきディスクの物理的アドレスを算出する。これは一般的なファイルシステムの動作である。その後、S804において、高速ファイルシステム305は、高速アクセスI/F306を経由してストレージデバイスドライバ304に依頼する。
【0042】
次にフローチャート801について説明する。S811において、高速ファイルシステム305は、S804と同様に、ファイルからアクセスすべきディスクの物理的な記録場所を特定する。次に、S812において、高速ファイルシステム305は、転送先ボードがメインボード200かサブボード220かを判定する。メインボード200である場合はS813に進み、高速ファイルシステム305は、カーネルのブロックデバイス303をコールし、処理を終了する。一方、サブボード220である場合はS814に進み、高速ファイルシステム305は、高速アクセスI/F306を経由してストレージデバイスドライバ304に依頼する。
【0043】
次に、図7を参照して、ストレージデバイスドライバ304の処理手順について説明する。以下で説明する処理は、メインボード200のCPU201が不揮発メモリ205等に格納されたプログラムを実行することにより行なわれる。なお、以下で示すSに続く番号はステップ番号を示す。
【0044】
まず、S701において、ストレージデバイスドライバ304は、高速アクセスI/F306からの高速アクセス要求があるか否かを判定する。高速アクセス要求がない場合はS702に進み、ストレージデバイスドライバ304は、ブロックデバイス303からの要求があるか否かを判定する。ブロックデバイス303からの要求がある場合はS703に進み、ストレージデバイスドライバ304は、ブロックデバイス303からのアクセス要求を取得し、S704でハードディスク6にアクセスするための情報(ディスクリプタ)を作成する。その後、S705において、ストレージデバイスドライバ304は、ストレージコントローラに要求することでハードディスク6にアクセスし、処理をS701に戻す。
【0045】
一方、S701で高速アクセス要求がある場合、S706に進み、ストレージデバイスドライバ304は、高速アクセスI/F306で要求された高速アクセス要求を取得する。続いて、S707において、ストレージデバイスドライバ304は、アドレス変換を行い、S704に進む。その後、ブロックデバイス303の動作と同様にS704、S705の処理を実行し、ハードディスクに対してアクセスする。このように、本フローチャートでは、高速アクセスを通常アクセス(リクエストキューを用いるブロックデバイス要求)も優先的に実行するように制御している。つまり、ストレージデバイスドライバ304は、アクセス制御手段に相当する。
【0046】
ここで、S801及びS812の、転送先(転送要求)ボードの判定方法について詳細に説明する。当該判定方法には、例えばファイルシステムのI/Fを分ける方法、ボリューム名を変更する方法、特定のパス名を割り当てる方法などがある。本実施形態では以下に説明する方法を適用するが、この判定方法に限定するわけではない。
【0047】
本判定方法は、図4に示す領域403を用いる。領域403は、オペレーティングシステムが管理する一部の仮想メモリ領域以外のメモリ領域であり、サブボード220用の領域433のミラーアドレスとして割り当てられる。つまり、サブボード220のメモリ223のアドレスに関連付けられる。この割り当ては、ハードウェア的に割り当てたものではなく、転送先ボードを判定するためのものである。アプリケーション310は、CPU201のメモリマップ430上の領域433にデータを転送したい場合、オペレーティングシステムの非管理領域である領域403を指定して高速ファイルシステム305をコールする。
【0048】
図9を参照して、S801及びS812の詳細な処理について説明する。以下で説明する処理は、メインボード200のCPU201が不揮発メモリ205等に格納されたプログラムを実行することにより行なわれる。なお、以下で示すSに続く番号はステップ番号を示す。
【0049】
S901において、高速ファイルシステム305は、ファイルシステムに与えられたバッファアドレスが、領域403を示すか否かを判定する。同様に、カーネルの仮想メモリ領域であるか否かの判定でもよい。バッファアドレスが領域403を示す場合、S902に進み、高速ファイルシステム305は、転送先をサブボード220に設定する。一方、バッファアドレスが領域403を示さない場合、S903に進み、高速ファイルシステム305は、転送先をメインボード200に設定する。
【0050】
次に、図7に示すS707のアドレス変換処理について詳細に説明する。S706では、高速アクセス要求であるため、領域403を示すバッファアドレスが通知されている。領域403は、仮想アドレスであるため、S707で対応するサブボード用の領域433のアドレスに変換する。当該アドレスは、サブボード220のディスクコントローラ229がメモリ223を参照するためのアドレスである。このアドレス変換処理により、ディスクコントローラ229は、ハードディスク6とメモリ223との間で直接データ転送を行なうことができる。
【0051】
次に、図6を参照して、本実施形態における画像データの転送シーケンスについて説明する。図6の601はプリンタ部4の動作タイミングを示す。602はリーダ部2の動作タイミングを示す。603、606はそれぞれメモリ223、203上のバッファにおけるデータのリード・ライトのタイミングを示す。604は本実施形態におけるサブボード220側に接続されたハードディスク6におけるデータのリード・ライトのタイミングを示す。605はバスコントローラ204、224の動作タイミングを示す。607はブロックデバイス303におけるデータのリード・ライトのタイミングを示す。
【0052】
ブロックデバイス303に621、624の大量のリード要求が入っているとする。リード621はハードディスク6を使用し、メモリ203上にデータをリードする。この動作は図3Aにおけるファイルシステム302、ブロックデバイス303、ストレージデバイスドライバ304、ディスクコントローラ229における経路のアクセスである。当該アクセスは、既存のブロックデバイスを用いたオペレーティングシステムの1つの機能であるディスクキャッシュを最大限に利用したファイルアクセスである。
【0053】
図6では、リーダ部2が原稿スキャン610を行いメモリ223上のバッファ611にデータが読み込まれ、当該データをハードディスク6に書き込む動作が先のファイルアクセスに競合した場合を想定している。612の書き込みは上述した高速アクセスI/F306からアクセスされるためS706、S707の経路で624のリード要求に先行して実行される。その後、同様にバッファ614に対してリード613が実行され、原稿プリント615を行なうためプリンタ部4に画像データが転送される。
【0054】
630から635についても同様に画像データが優先的に転送される。リード624はハードディスク6が空いたときにスケジューリングされるためリード625のタイミングで遅延してバッファ626にリードされる。つまり、優先度の高いライト612、632、リード613、633が先に実行され、リード624に対応するリード625は遅延して実行される。640から642も同様に遅延リードされる。
【0055】
以上説明したように、本実施形態に係る画像形成装置100では、メインのハードディスク6をサブボード220側に設けることにより、サブボード220で制御されるプリント処理やスキャナ処理におけるデータ転送を高速で行なう。具体的には、当該データ転送は、サブボード220内でのデータ転送となり、バスコントローラ204、224を介することなく行なわれる。したがって、本画像形成装置100では、高速なデータ転送が要求されるプリント処理やスキャナ処理においては、複数のボードを介することなく1つのボードに閉じて制御が行えるため上述した問題を解消することができる。例えば、本画像形成装置は、ハードディスク6から、画像データを出力するデバイスが装着されているRAM223にデータを直接転送することが可能であり、中間バッファ量の削減、バスブリッジの帯域負荷を軽減させることができる。これにより、複数の画像操作要求が競合した場合や、汎用PCのサーバ機能からのストレージアクセス要求が競合した場合においても、画像入出力のパフォーマンスを保証することが可能となる。また、本画像形成装置は、汎用バスブリッジのバス負荷の大幅な軽減、画像転送用のバッファの削減、ストレージ装置の個数削減などによるコスト優位性もある。
【0056】
なお、上記実施形態は様々な変形が可能となる。上記実施形態においては、ディスクコントローラ、ハードディスクを用いて説明したが、ストレージ装置であれば同様に発明を適用することが可能である。また、その場合、ディスクコントローラに相当するハードウェアは使用するストレージに対応したコントローラとなる。例えば、高速なSSD等のストレージデバイスを用いる場合は、バスブリッジ間の帯域問題が発生する可能性もある。しかし、本発明は、このような場合であっても有効に適用することが可能である。
【0057】
<他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
画像形成装置であって、
前記画像形成装置を統括的に制御する第1制御手段と、
前記第1制御手段にバスを介して接続され、前記画像形成装置が提供する機能の中で高速な画像処理を必要とする機能を制御する第2制御手段と、
前記第2制御手段に接続されるとともに該第2制御手段を介して前記第1制御手段に間接的に接続され、画像データを記憶する大容量記憶手段と
を備え、
前記第1制御手段は、
前記大容量記憶手段に対するアクセス要求が発生すると、当該アクセスが、前記第1制御手段と前記大容量記憶手段との間でのデータ転送か、又は、前記第2制御手段と前記大容量記憶手段との間でのデータ転送かを判定する判定手段と、
前記アクセスが前記第1制御手段と前記大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に従って前記大容量記憶手段にアクセスする通常アクセス手段と、
前記アクセスが前記第2制御手段と前記大容量記憶手段との間でのデータ転送である場合に、前記アクセス要求の発生した順番に関係なく、前記大容量記憶手段にアクセスする高速アクセス手段と
を備えることを特徴とする画像形成装置。
【請求項2】
前記通常アクセス手段は、前記第1制御手段から、該第1制御手段と前記第2制御手段とを接続する前記バスを経由して前記大容量記憶手段にアクセスすることを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記高速アクセス手段は、前記第2制御手段から、直接的に前記大容量記憶手段にアクセスすることを特徴とする請求項1又は2に記載の画像形成装置。
【請求項4】
前記第1制御手段は、仮想メモリ領域の一部を管理するオペレーティングシステムを実行し、
前記アクセス要求は、当該アクセスが前記第1制御手段と前記大容量記憶手段との間でのデータ転送である場合には前記オペレーティングシステムが管理している前記仮想メモリ領域のアドレスが指定され、当該アクセスが前記第2制御手段と前記大容量記憶手段との間でのデータ転送である場合には前記オペレーティングシステムが管理していない前記仮想メモリ領域のアドレスが指定され、
前記判定手段は、
前記アクセス要求に指定された前記アドレスが前記オペレーティングシステムが管理している前記仮想メモリ領域を示すか否かを判定することにより、当該アクセスが、前記第1制御手段と前記大容量記憶手段との間でのデータ転送か、又は、前記第2制御手段と前記大容量記憶手段との間でのデータ転送かを判定することを特徴とする請求項1乃至3の何れか1項に記載の画像形成装置。
【請求項5】
前記第1制御手段のワーク領域である第1記憶手段と、
前記第2制御手段のワーク領域である第2記憶手段とをさらに備え、
前記オペレーティングシステムが管理していない仮想メモリ領域を示すアドレスは、前記第2記憶手段のアドレスに関連付けられていることを特徴とする請求項4に記載の画像形成装置。
【請求項6】
前記高速な画像処理とは、原稿から画像を読み取る読取処理、又は、画像データに従って記録材に画像を形成する画像形成処理であることを特徴とする請求項1乃至5の何れか1項に記載の画像形成装置。
【請求項7】
前記第1制御手段と前記第2制御手段とは異なる基板に設けられていることを特徴とする請求項1乃至6の何れか1項に記載の画像形成装置。
【請求項8】
画像形成装置を統括的に制御する第1制御手段と、前記第1制御手段にバスを介して接続され、前記画像形成装置が提供する機能の中で高速な画像処理を必要とする機能を制御する第2制御手段と、前記第2制御手段に接続されるとともに該第2制御手段を介して前記第1制御手段に間接的に接続され、画像データを記憶する大容量記憶手段とを備える画像形成装置の制御方法であって、
前記第1制御手段は、
判定手段が、前記大容量記憶手段に対するアクセス要求が発生すると、当該アクセスが、前記第1制御手段と前記大容量記憶手段との間でのデータ転送か、又は、前記第2制御手段と前記大容量記憶手段との間でのデータ転送かを判定する判定ステップと、
通常アクセス手段が、前記アクセスが前記第1制御手段と前記大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に従って前記大容量記憶手段にアクセスする通常アクセスステップと、
高速アクセス手段が、前記アクセスが前記第2制御手段と前記大容量記憶手段との間でのデータ転送である場合に、前記アクセス要求の発生した順番に関係なく、前記大容量記憶手段にアクセスする高速アクセスステップと
を実行することを特徴とする画像形成装置の制御方法。
【請求項9】
請求項8に記載の画像形成装置の制御方法をコンピュータに実行させるためのプログラム。
【請求項1】
画像形成装置であって、
前記画像形成装置を統括的に制御する第1制御手段と、
前記第1制御手段にバスを介して接続され、前記画像形成装置が提供する機能の中で高速な画像処理を必要とする機能を制御する第2制御手段と、
前記第2制御手段に接続されるとともに該第2制御手段を介して前記第1制御手段に間接的に接続され、画像データを記憶する大容量記憶手段と
を備え、
前記第1制御手段は、
前記大容量記憶手段に対するアクセス要求が発生すると、当該アクセスが、前記第1制御手段と前記大容量記憶手段との間でのデータ転送か、又は、前記第2制御手段と前記大容量記憶手段との間でのデータ転送かを判定する判定手段と、
前記アクセスが前記第1制御手段と前記大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に従って前記大容量記憶手段にアクセスする通常アクセス手段と、
前記アクセスが前記第2制御手段と前記大容量記憶手段との間でのデータ転送である場合に、前記アクセス要求の発生した順番に関係なく、前記大容量記憶手段にアクセスする高速アクセス手段と
を備えることを特徴とする画像形成装置。
【請求項2】
前記通常アクセス手段は、前記第1制御手段から、該第1制御手段と前記第2制御手段とを接続する前記バスを経由して前記大容量記憶手段にアクセスすることを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記高速アクセス手段は、前記第2制御手段から、直接的に前記大容量記憶手段にアクセスすることを特徴とする請求項1又は2に記載の画像形成装置。
【請求項4】
前記第1制御手段は、仮想メモリ領域の一部を管理するオペレーティングシステムを実行し、
前記アクセス要求は、当該アクセスが前記第1制御手段と前記大容量記憶手段との間でのデータ転送である場合には前記オペレーティングシステムが管理している前記仮想メモリ領域のアドレスが指定され、当該アクセスが前記第2制御手段と前記大容量記憶手段との間でのデータ転送である場合には前記オペレーティングシステムが管理していない前記仮想メモリ領域のアドレスが指定され、
前記判定手段は、
前記アクセス要求に指定された前記アドレスが前記オペレーティングシステムが管理している前記仮想メモリ領域を示すか否かを判定することにより、当該アクセスが、前記第1制御手段と前記大容量記憶手段との間でのデータ転送か、又は、前記第2制御手段と前記大容量記憶手段との間でのデータ転送かを判定することを特徴とする請求項1乃至3の何れか1項に記載の画像形成装置。
【請求項5】
前記第1制御手段のワーク領域である第1記憶手段と、
前記第2制御手段のワーク領域である第2記憶手段とをさらに備え、
前記オペレーティングシステムが管理していない仮想メモリ領域を示すアドレスは、前記第2記憶手段のアドレスに関連付けられていることを特徴とする請求項4に記載の画像形成装置。
【請求項6】
前記高速な画像処理とは、原稿から画像を読み取る読取処理、又は、画像データに従って記録材に画像を形成する画像形成処理であることを特徴とする請求項1乃至5の何れか1項に記載の画像形成装置。
【請求項7】
前記第1制御手段と前記第2制御手段とは異なる基板に設けられていることを特徴とする請求項1乃至6の何れか1項に記載の画像形成装置。
【請求項8】
画像形成装置を統括的に制御する第1制御手段と、前記第1制御手段にバスを介して接続され、前記画像形成装置が提供する機能の中で高速な画像処理を必要とする機能を制御する第2制御手段と、前記第2制御手段に接続されるとともに該第2制御手段を介して前記第1制御手段に間接的に接続され、画像データを記憶する大容量記憶手段とを備える画像形成装置の制御方法であって、
前記第1制御手段は、
判定手段が、前記大容量記憶手段に対するアクセス要求が発生すると、当該アクセスが、前記第1制御手段と前記大容量記憶手段との間でのデータ転送か、又は、前記第2制御手段と前記大容量記憶手段との間でのデータ転送かを判定する判定ステップと、
通常アクセス手段が、前記アクセスが前記第1制御手段と前記大容量記憶手段との間でのデータ転送である場合に、アクセス要求の発生した順番に従って前記大容量記憶手段にアクセスする通常アクセスステップと、
高速アクセス手段が、前記アクセスが前記第2制御手段と前記大容量記憶手段との間でのデータ転送である場合に、前記アクセス要求の発生した順番に関係なく、前記大容量記憶手段にアクセスする高速アクセスステップと
を実行することを特徴とする画像形成装置の制御方法。
【請求項9】
請求項8に記載の画像形成装置の制御方法をコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図2】
【図3A】
【図3B】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【公開番号】特開2011−15093(P2011−15093A)
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願番号】特願2009−156328(P2009−156328)
【出願日】平成21年6月30日(2009.6.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年1月20日(2011.1.20)
【国際特許分類】
【出願日】平成21年6月30日(2009.6.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]