(57)【要約】      （修正有）【課題】複数のＣＰＵ間通信を少なくし、キャッシュされているデータと、データベースのデータとを同期させる技術を提供する。【解決手段】データベースにアクセスできる第１ＣＰＵと、ＣＰＵ間通信により前記データベースにアクセスする第２ＣＰＵとを有する情報処理装置であって、第１ＣＰＵは、アプリケーションからのデータベースに記憶されたデータの取得要求に応答して、当該データの第１ＣＰＵに対応するアクセスフラグをオンにし、そのデータの第２ＣＰＵに対応するアクセスフラグがオンであれば第２ＣＰＵに、そのデータにアクセスしたことを通知し、第２ＣＰＵは、データが第２ＣＰＵの専用のデータとしてキャッシュされていると、当該データを第１ＣＰＵとの共有データとしてキャッシュし、アプリケーションからデータの更新要求を受けた際に、当該キャッシュされているデータを更新し、第１ＣＰＵに、当該データを更新するように通知する。【選択図】図３
2013218580.tif 000002
【特許請求の範囲】
【請求項１】
データベースにアクセスできる第１ＣＰＵと、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースにアクセスする第２ＣＰＵとを有する情報処理装置であって、
前記第２ＣＰＵは、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースから取得したデータを、前記第１ＣＰＵとの共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュし、
前記第１ＣＰＵは、アプリケーションからの前記データベースに記憶されたデータの取得要求に応答して、当該データの前記第１ＣＰＵに対応するアクセスフラグをオンにし、当該データの前記第２ＣＰＵに対応するアクセスフラグがオンであれば前記第２ＣＰＵに前記データにアクセスしたことを通知し、
前記第２ＣＰＵは、アプリケーションからのデータの取得要求に対して、当該データがキャッシュされていなければ前記第１ＣＰＵとのＣＰＵ間通信により取得した当該データの前記アクセスフラグに従って、当該データを前記共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュし、
前記第２ＣＰＵは、前記第１ＣＰＵからの前記通知に応答して、前記データが前記第２ＣＰＵの専用のデータとしてキャッシュされていると、当該データを前記第１ＣＰＵとの共有データとしてキャッシュし、
前記第２ＣＰＵは、アプリケーションからデータの更新要求を受けた際に、当該データがキャッシュされていれば当該キャッシュされているデータを更新し、当該データが前記共有データにキャッシュされていれば、前記第１ＣＰＵに、前記データベースの前記データを更新するように通知することを特徴とする情報処理装置。
【請求項２】
前記第２ＣＰＵは、前記第１ＣＰＵとのＣＰＵ間通信により取得した当該データの前記第１ＣＰＵに対応する前記アクセスフラグがオンのときは、当該データを前記第１ＣＰＵとの共有データとしてキャッシュすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
データベースにアクセスできる第１ＣＰＵと、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースにアクセスするとともに前記データベースから取得したデータをキャッシュする第２ＣＰＵとを有する情報処理装置であって、
前記データベースは、データごとに前記第１ＣＰＵ或いは前記第２ＣＰＵからアクセスされたことを示すアクセスフラグをそれぞれ有しており、
キャッシュされていないデータへのアクセスが指示されると、当該データを前記第１ＣＰＵと前記第２ＣＰＵとのＣＰＵ間通信により前記データベースから取得し、当該データの前記アクセスフラグに応じて、前記第２ＣＰＵが前記第１ＣＰＵとの共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュするキャッシュ手段と、
前記共有データとしてキャッシュされているデータの更新が指示されると、当該キャッシュされているデータを更新して前記第２ＣＰＵから前記第１ＣＰＵに対して前記データの更新を通知する通知手段と、
前記データベースのデータの更新或いはアクセスが指示されると当該データを更新し、当該データの前記第２ＣＰＵからアクセスされたことを示すアクセスフラグがオンであれば、前記第１ＣＰＵから前記第２ＣＰＵに対して前記データの更新或いはアクセスがあったことを通知する手段と、
を有することを特徴とする情報処理装置。
【請求項４】
特定条件が発生したときに、前記アクセスフラグ及びキャッシュをリセットするリセット手段を更に有することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
データベースにアクセスできる第１ＣＰＵと、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースにアクセスするとともに前記データベースから取得したデータをキャッシュする第２ＣＰＵとを有する情報処理装置であって、
前記データベースは、データごとに前記第１ＣＰＵ或いは前記第２ＣＰＵからアクセスされた回数を示すカウンタをそれぞれ有しており、
キャッシュされていないデータへのアクセスが指示されると、当該データを前記第１ＣＰＵと前記第２ＣＰＵとのＣＰＵ間通信により前記データベースから取得し、当該データの前記カウンタの値に応じて、前記第２ＣＰＵが前記第１ＣＰＵとの共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュするキャッシュ手段と、
前記共有データとしてキャッシュされているデータの更新が指示されると、当該キャッシュされているデータを更新するとともに前記第２ＣＰＵからのアクセス回数をカウントするカウンタを更新し前記第２ＣＰＵから前記第１ＣＰＵに対して前記データの更新を通知する通知手段と、
前記データベースのデータの更新或いはアクセスが指示されると当該データを更新し、当該データの前記第２ＣＰＵからアクセスされた回数を示す前記カウンタの値が１以上であれば、前記第１ＣＰＵから前記第２ＣＰＵに対して前記データの更新或いはアクセスがあったことを通知する手段と、
を有することを特徴とする情報処理装置。
【請求項６】
データベースにアクセスできる第１ＣＰＵと、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースにアクセスする第２ＣＰＵとを有する情報処理装置の制御方法であって、
前記第２ＣＰＵが、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースから取得したデータを、前記第１ＣＰＵとの共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュし、
前記第１ＣＰＵが、アプリケーションからの前記データベースに記憶されたデータの取得要求に応答して、当該データの前記第１ＣＰＵに対応するアクセスフラグをオンにし、当該データの前記第２ＣＰＵに対応するアクセスフラグがオンであれば前記第２ＣＰＵに前記データにアクセスしたことを通知し、
前記第２ＣＰＵが、アプリケーションからのデータの取得要求に対して、当該データがキャッシュされていなければ、前記第１ＣＰＵとのＣＰＵ間通信により取得した当該データの前記アクセスフラグに従って、当該データを前記共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュし、
前記第２ＣＰＵが、前記第１ＣＰＵからの前記通知に応答して、前記データが前記第２ＣＰＵの専用のデータとしてキャッシュされていると、当該データを前記第１ＣＰＵとの共有データとしてキャッシュし、
前記第２ＣＰＵが、アプリケーションからデータの更新要求を受けた際に、当該データがキャッシュされていれば当該キャッシュされているデータを更新し、当該データが前記共有データにキャッシュされていれば、前記第１ＣＰＵに、前記データベースの前記データを更新するように通知することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及び情報処理装置を制御する制御方法に関する。
【背景技術】
【０００２】
近年の情報処理装置では、処理のパフォーマンスを向上するために複数のＣＰＵを備えている。例えば複合機（ＭＦＰ）では、主にプリンタやスキャナのエンジンの制御や画像処理を担当する画像処理用のＣＰＵと、主にユーザインターフェースやアプリケーションの動作等を担当する情報処理用のＣＰＵのように、複数のＣＰＵを備えることがある。この場合、不揮発ストレージであるＨＤＤ等は、いずれか一方のＣＰＵしかアクセスできない構成になることが多く、他方のＣＰＵからの不揮発ストレージへのアクセスには、ＣＰＵ間通信が発生することになる。
【０００３】
このような複合機で、スキャンやプリントといったジョブを実行する際、ユーザが複合機の動作を制御する設定情報を設定すると、情報処理用のＣＰＵのプログラムが実行されて不揮発ストレージにその設定されたデータを保存する。その後、ユーザによりコピー等のジョブが指示されると、画像処理用のＣＰＵのプログラムを実行して不揮発ストレージから、その設定情報を読み出して利用する。このような動作仕様のため、コピー等のジョブの実行ごとにＣＰＵ間通信が発生し、それが複合機の処理のパフォーマンスに大きな影響を及ぼすことになる。
【０００４】
特許文献１には、動作するプログラムに紐づけて必要な設定データを管理し、プログラムに紐づけてロードする技術が記載されている。これによれば、必要な時に必要な設定データだけを最適なアクセスエリアに配置できる。しかしこのためには、どのプログラムがどのデータにアクセスするか、また複数のプログラム間で同じ設定データを利用するか否かなどを事前に全て把握する必要がある。よって、この技術は、どのアプリケーションが動作するかがユーザ毎に異なるシステムでは非現実的である。
【０００５】
また、データのアクセスの最適化では、キャッシュによる高速アクセスを実現するのが一般的であるが、キャッシュは読み出しの高速化手法であり、データの更新時には必ずＣＰＵ間での同期処理が発生することになる。
【０００６】
特許文献２には、複数のＣＰＵが共有メモリを参照するか否かを判断し、複数のＣＰＵ間で利用するメモリエリアについては排他制御を行い、１つのＣＰＵだけがアクセスするメモリエリアについては排他制御をしない技術が開示されている。これは複数のＣＰＵからのアクセス状況を加味した管理方法であるが、共有メモリの仕組みを前提にしており、別のメモリ空間でデータを持ち合うキャッシュメモリのような使い方には応用できない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平５−０８１０３３号公報
【特許文献２】特開平４−２６０１４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
また複合機の設定情報の特徴として、同一機種でも、フィニッシャ等を含む機器構成や、インストールされているアプリケーションの種類、ライセンスによる機能アクティベートの有無等によってプログラムで利用される設定情報が異なる。またユーザの使い方によって、保持されている各種設定情報の中のよく使われる設定情報等が異なってくる。また複数のＣＰＵを備える構成では、どのアプリケーションをどのＣＰＵで起動するかが選択できるようになるといった特徴が挙げられる。
【０００９】
効率的でかつ最適な設定情報の管理を実現したい一方で、上記のように複合機の動作環境や使用者等によって、複合機の設定情報がどのＣＰＵでどのように利用されるかが全く異なってくる。このため、複数のＣＰＵによる設定情報のアクセスに関して、事前に設定情報の配置を最適化したり、プログラムを最適化しておくことが難しいという課題がある。
【００１０】
本発明の目的は、上記従来例の課題を解決することにある。
【００１１】
本発明の特徴は、複数のＣＰＵ間でデータをやり取りするＣＰＵ間通信を少なくし、キャッシュされているデータと、データベースのデータとを同期させる技術を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
データベースにアクセスできる第１ＣＰＵと、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースにアクセスする第２ＣＰＵとを有する情報処理装置であって、
前記第２ＣＰＵは、前記第１ＣＰＵとのＣＰＵ間通信により前記データベースから取得したデータを、前記第１ＣＰＵとの共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュし、
前記第１ＣＰＵは、アプリケーションからの前記データベースに記憶されたデータの取得要求に応答して、当該データの前記第１ＣＰＵに対応するアクセスフラグをオンにし、当該データの前記第２ＣＰＵに対応するアクセスフラグがオンであれば前記第２ＣＰＵに前記データにアクセスしたことを通知し、
前記第２ＣＰＵは、アプリケーションからのデータの取得要求に対して、当該データがキャッシュされていなければ前記第１ＣＰＵとのＣＰＵ間通信により取得した当該データの前記アクセスフラグに従って、当該データを前記共有データ或いは前記第２ＣＰＵの専用のデータとしてキャッシュし、
前記第２ＣＰＵは、前記第１ＣＰＵからの前記通知に応答して、前記データが前記第２ＣＰＵの専用のデータとしてキャッシュされていると、当該データを前記第１ＣＰＵとの共有データとしてキャッシュし、
前記第２ＣＰＵは、アプリケーションからデータの更新要求を受けた際に、当該データがキャッシュされていれば当該キャッシュされているデータを更新し、当該データが前記共有データにキャッシュされていれば、前記第１ＣＰＵに、前記データベースの前記データを更新するように通知することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数のＣＰＵ間でデータをやり取りするＣＰＵ間通信を少なくし、キャッシュされているデータと、データベースのデータとを同期させることができるという効果がある。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係る情報処理装置の一例である画像形成装置の構成を示すブロック図。
【図２】本実施形態に係る画像形成装置のソフトウェア構成を説明する図。
【図３】実施形態に係る設定管理部２０３，２０６の内部構成を説明する図。
【図４】実施形態１に係るマスタ設定データベースの設定データを説明する図。
【図５】実施形態１に係る主制御部のアプリケーションが設定管理部２０３に対して設定データの取得を要求した際の設定管理部２０３の処理を説明するフローチャート。
【図６】実施形態１に係るＣＰＵ１１７の設定管理部２０６の設定データの取得処理を説明するフローチャート。
【図７】実施形態１に係る主制御部のアプリケーションが設定管理部２０３に対して設定データの取得を要求した際の設定管理部２０３の処理を説明するフローチャート。
【図８】実施形態１に係る副制御部のアプリケーション、ジョブ制御部、画像処理部などが設定管理部に対して設定データの更新を指示した際の設定管理部処理を説明するフローチャート。
【図９】実施形態１に係る設定管理部２０６が主制御部から設定データの新規アクセス通知及び更新通知を受けた際の処理を説明するフローチャート。
【図１０】実施形態２に係るマスタ設定データベースの設定データを説明する図。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１６】
図１は、本発明の実施形態に係る情報処理装置の一例である画像形成装置の構成を示すブロック図である。
【００１７】
主制御部１００は、この画像形成装置の情報処理を司るメインコントローラである。また副制御部１０１は、この画像形成装置の画像処理を司るサブコントローラである。主制御部１００と副制御部１０１は、バスブリッジ１１６を介して接続されている。
【００１８】
以下、まず主制御部１００の構成を説明する。
【００１９】
ＣＰＵ（第１ＣＰＵ）１０８は、フラッシュＲＯＭ１１０或いはＨＤＤ（ハードディスクドライブ）１１１に記憶され、ＲＡＭ１０９に展開されたプログラムを実行して各種制御を行う。ＣＰＵ１０８は、システムバス１１５に接続された各デバイスを総括的に制御する。フラッシュＲＯＭ１１０或いはＨＤＤ１１１は、プログラムのみでなく、画像データやユーザが設定した設定データの記憶領域としても使われる。ＲＡＭ１０９は、ＣＰＵ１０８の主メモリ、ワークエリア等として機能する。操作部Ｉ／Ｆ１１２は、ＣＰＵ１０８の指示に従って、画像形成装置に備えられた表示パネル１０４に画像を表示する。また操作部Ｉ／Ｆ１１２は、操作ボタン及び／或いはタッチパネル１０３にも接続されている。この操作ボタン及び／或いはタッチパネル１０３は表示パネル１０４と一体になっており、オペレータへの指示を出力したり、オペレータからの入力を受け付ける。ネットワークインタフェースカード（ＮＩＣ）１１３は、他のネットワーク機器或いはファイルサーバ等とＬＡＮ１０２を介して双方向にデータをやりとりする。外部インタフェース（ＵＳＢ）１１４は、メモリメディアリーダ或いはＩＣカードリーダなどの外部装置を接続し、双方向にデータをやりとりする。
【００２０】
次に副制御部１０１の構成を説明する。
【００２１】
プリンタ１０６は、例えば電子写真方式或いはインクジェット方式などで画像を印刷する印刷部である。スキャナ１０５は、紙に印刷された画像を読み込むための画像読み取り部である。多くの場合、スキャナ１０５には、オプションとしてオートドキュメントフィーダ（不図示）が装着されており、複数枚の原稿を１枚ずつ自動的に読み込むことができる。プリンタ１０６及びスキャナ１０５は、デバイスインタフェース１２０を介してＣＰＵ（第２ＣＰＵ）１１７により制御される。ＣＰＵ１１７はシステムバス１２７に接続される各デバイスを総括的に制御する。スキャナ１０５から入力される画像信号は、スキャナ画像処理部１２１を介してＲＡＭ１１８に読み取り画像データとして入力されて保持される。メモリ画像処理部１２３は、ＲＡＭ１１８に記憶された画像データを処理してＲＡＭ１１８に格納する。この画像処理には、回転・変倍・色空間変換・グレースケール変換・合成・符号化・復号化等の処理が含まれる。ＣＰＵ１１７は、ＲＡＭ１１８に格納された画像データをメモリ画像処理部１２３で画像処理した後、バスブリッジ１１６を介して、主制御部１００のフラッシュＲＯＭ１１０或いはＨＤＤ１１１に保存できる。またＣＰＵ１１７は、ＣＰＵ１０８と通信することにより（即ちＣＰＵ間通信を行うことにより）、バスブリッジ１１６を介して、主制御部１００のフラッシュＲＯＭ１１０或いはＨＤＤ１１１に保存されている画像データをＲＡＭ１１８に読み出す。そしてプリンタ画像処理部１２２を経由してプリンタ１０６に出力して印刷できる。スキャナ画像処理部１２１及びプリンタ画像処理部１２２は、色空間変換、移動、色調整、濃度制御、遅延量制御を行う。ラスタイメージプロセッサ（ＲＩＰ）１１９は、ＲＡＭ１１８に記憶されたＰＤＬコードをビットマップイメージに展開してＲＡＭ１１８に記憶する。ＳＲＡＭ１２４は、ＣＰＵ１１７との間で不揮発データを高速に入出力する。モデム１２５は、公衆回線１０７に接続され、ファクス画像信号の入出力に伴う変復調を行う。
【００２２】
次に、図２を参照して、本実施形態に係る画像形成装置のソフトウェア構成を説明する。図２は、本実施形態に係る画像形成装置のソフトウェア構成を説明する図である。
【００２３】
ＵＩアプリケーション２００、ジョブアプリケーション２０１、ネットワークアプリケーション２０２、設定管理部（Ｃｏｎｆｉｇ  Ｍａｎａｇｅｒ）２０３は、実行時にＲＡＭ１０９に展開されＣＰＵ１０８によって実行される。また、ジョブ制御部（Ｊｏｂ  Ｃｏｎｔｒｏｌｅｒ）２０４、画像処理部（Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）２０５、設定管理部（Ｃｏｎｆｉｇ  Ｍａｎａｇｅｒ）２０６は、実行時にＲＡＭ１１８に展開されＣＰＵ１１７によって実行される。
【００２４】
ＵＩアプリケーション２００は、表示パネル１０４に描画するＵＩ画面を制御するモジュールである。ジョブアプリケーション２０１は、画像形成装置としての機能を提供するモジュールであり、コピー、ＰＤＬ、ＦＡＸ等の機能毎に存在する。ネットワークアプリケーション２０２は、ネットワークインターフェース１１３を介した他のネットワーク機器或いはファイルサーバ等とのネットワーク通信の制御を行うモジュールである。設定管理部２０３は、他のモジュールからの依頼に応じて、フラッシュＲＯＭ１１０又はＨＤＤ１１１に保存されている設定値データベースであるマスタ設定データベース２１０にアクセスする。そして、そこに記憶されている設定データを取得したり、変更するモジュールである。設定管理部２０３への処理の依頼元のモジュールとしては、ＵＩアプリケーション２００、ジョブアプリケーション２０１、ネットワークアプリケーション２０２、設定管理部２０６等が挙げられる。尚、設定管理部２０３の詳細な動作とマスタ設定データベース２１０の詳細については後述する。
【００２５】
次に副制御部１０１のソフトウェア構成を説明する。
【００２６】
ジョブ制御部２０４は、ジョブアプリケーション２０１が実行したジョブの制御を行うモジュールである。画像処理部２０５は、スキャナ画像処理部１２１、プリンタ画像処理部１２２、メモリ画像処理部１２３を制御し、ＲＡＭ１１８に保存されている画像データに対して画像処理を行うモジュールである。設定管理部２０６は、他のモジュールからの依頼に応じて、ＲＡＭ１１８の揮発ストレージにキャッシュされた設定データの取得、変更を行うモジュールである。設定管理部２０６への処理の依頼元のモジュールとしては、主制御部１００の設定管理部２０３、ジョブ制御部２０４、画像処理部２０５等が挙げられる。キャッシュデータには、共有設定（Ｃｏｍｍｏｎ  Ｃｏｎｆｉｇ）２１１とプロセッサ専用の設定（Ｐｒｏｃｅｓｓａｒｙ  Ｃｏｎｆｉｇ）２１２の２種類が存在する。
【００２７】
尚、設定管理部２０６の詳細な構成と２種類のキャッシュデータ２１１と２１２については後述する。
【００２８】
次に本実施形態に係る設定データの管理モジュールである設定管理部２０３及び設定管理部２０６の内部構成について図３を参照して説明する。
【００２９】
図３は、実施形態に係る設定管理部２０３及び設定管理部２０６の内部構成を説明する図である。
【００３０】
主制御部１００の設定管理部２０３は、ＣＰＵ１０８上で動作する３つのモジュールを有している。データベースアクセスメソッド（Ｄａｔａｂａｓｅ  ａｃｃｅｓｓ  ｍｅｔｈｏｄ）３０１は、実際の設定データを保持するマスタ設定データベース２１０に対して読み書きを行う。判定メソッド（Ｊｕｄｇｅｍｅｎｔ  ｍｅｔｈｏｄ）３０２は、ＣＰＵ１０８のアプリケーション又はＣＰＵ１１７の設定管理部２０６からの読み書きの指示を受けた際に、ＣＰＵ１１７に対して更新の通知を出すか否かを判断する。また同時に、ＣＰＵ１０８が管理するデータに対して読み書きを行うか否か等を判断してデータベースアクセスメソッド３０１或いは通知メソッド３０３に指示する。通知メソッド（Ｎｏｔｉｆｉｃａｔｉｏｎ  ｍｅｔｈｏｄ）３０３は、副制御部１０１のＣＰＵ１１７に対して更新通知を出す。
【００３１】
副制御部１０１のＣＰＵ１１７上で動作する設定管理部２０６も同様な構成であり、データベースアクセスメソッド３０４、判定メソッド３０５、及び通知メソッド３０６を有している。それぞれの動作は設定管理部２０３の場合とほぼ同じである。但し、ＣＰＵ１１７では、データベースアクセスメソッド３０４がアクセスするのはＣＰＵ１０８が管理するマスタ設定データベース２１０の実体ではなく、これをキャッシュしたメモリ上の共有設定２１１とプロセッサ専用の設定２１２になる。
【００３２】
次に実際の設定データの中身について図４を用いて説明する。
【００３３】
図４は、実施形態に係るマスタ設定データベース２１０の設定データを説明する図である。
【００３４】
マスタ設定データベース２１０は、いわゆるＫｅｙ−Ｖａｌｕｅのスキーマを持つデータベースである。このデータベース２１０は、各アプリケーションの動作仕様を決める設定データや、ネットワークの設定、その他の画像形成装置を動作させるために必要な設定データを一括して保持している。図４はそのデータベースの内部スキーマのイメージを示している。
【００３５】
このデータベース２１０には、少なくとも、キーの名前を一意に定めるキー名称（ＫｅｙＮａｍｅ）４０１と、そのキー名称４０１に紐づけられたデータ値（Ｖａｌｕｅ）４０２及びそのデータ長を示すサイズ４０３が設定されている。また補助情報として、データ型４０４の属性を持つ。更に、ＣＰＵ１０８（ＣＰＵ１）のモジュールからアクセスされたことを示すＣＰＵ１フラグ４０５、及びＣＰＵ１１７（ＣＰＵ２）のモジュールからアクセスされたことを示すＣＰＵ２フラグ４０６のフィールドを持つ。これらフラグの用途と使用方法については後述する。
【００３６】
またＣＰＵ１１７によりアクセスされるキャッシュデータの共有設定２１１とプロセッサ専用の設定２１２についても、Ｋｅｙ−Ｖａｌｕｅのスキーマで定義されたデータで保持されている。即ち、キー名称４０１、データ値４０２、サイズ４０３、データ型４０４のフィールドを持っている。但し、キャッシュデータでは、ＣＰＵ１フラグやＣＰＵ２フラグ等のアクセスフラグのフィールドは保持しない。
【００３７】
次に図５〜図９を参照して、本実施形態に係る設定管理部２０３，２０６の具体的な動作を説明する。
【００３８】
図５は、実施形態１に係る主制御部１００のアプリケーションが設定管理部２０３に対して設定データの取得（読み出し）を要求した際の設定管理部２０３の処理を説明するフローチャートである。ここでは、ＣＰＵ１０８のアプリケーション、ＵＩアプリケーション２００、ジョブアプリケーション２０１、ネットワークアプリケーション２０２等が設定管理部２０３に対して設定データの取得を要求した際の設定管理部２０３の処理を示している。尚、ここで、アプリケーションは、設定管理部２０３に対してキーを指定して、そのデータ値（Ｖａｌｕｅ）の取得を要求する。
【００３９】
アプリケーションから設定データの取得要求を受けた判定メソッド３０２は、まずＳ５０１で、ＣＰＵ１フラグが立っているかどうかを判定する。このＣＰＵ１フラグが立っているということは、以前に該当のＫｅｙのデータに関してアクセスされたことがあるという判断になる。Ｓ５０１で、ＣＰＵ１フラグが立っていればＳ５０５に進む。
【００４０】
一方、Ｓ５０１で、ＣＰＵ１フラグが立っていない場合は、該当のデータに対して初めてのアクセスであるためＳ５０２に進み、判定メソッド３０２は、データベースアクセスメソッド３０１に対してフラグの更新要求を出す。これによりデータベースアクセスメソッド３０１は、該当データのＣＰＵ１フラグを立ててＳ５０３に進む。Ｓ５０３では、判定メソッド３０２は、ＣＰＵ２フラグが立っているかどうかを判定する。このＣＰＵ２フラグが立っていなければ、ＣＰＵ１１７では該当の項目を参照していないことを意味するため、特にＣＰＵ１１７に対する通知を行わずにＳ５０５に進む。
【００４１】
一方、Ｓ５０３で、ＣＰＵ２フラグが立っていればＣＰＵ１１７が該当データを自分自身のプロセッサ専用の設定２１２として管理していることを意味している。しかし、ＣＰＵ１０８がアクセスを行ったことによりＣＰＵ１１７専用の設定ではなくなったので、共有設定のデータに移動させる必要がある。よって、この場合はＳ５０４に進み、判定メソッド３０２は、通知メソッド３０３に対して新規アクセス通知の発行指示を出す。これにより通知メソッド３０３は、ＣＰＵ１１７の設定管理部２０６に対して、該当データのアクセス通知を出す。
【００４２】
こうしてＳ５０５に進み、判定メソッド３０２は、データベースアクセスメソッド３０１に対してデータの取得要求を出し、データベースアクセスメソッド３０１は、該当のデータをマスタ設定データベース２１０より取得してアプリケーションに返す。
【００４３】
これにより今後、データの更新があった場合は、双方のＣＰＵ１０８，１１７の間で同期の処理を開始することになる。通知を受けた設定管理部２０６の動作については図９を参照して後述する。またデータ更新時の動作については図７及び図８のフローチャートを参照して後述する。
【００４４】
以上の処理により、ＣＰＵ１０８がアプリケーションの実行時、そのアプリケーションから設定データの取得要求を受けると、その要求に応答してＨＤＤ１１１に記憶されているマスタ設定データベース２１０からその設定データを取得できる。またこのとき、その設定データが副制御部１０１で使用されていると、主制御部１００のＣＰＵ１０８が、その設定データにアクセスしたことを副制御部１０１のＣＰＵ１１７に通知する。このときＣＰＵ１１７は、その設定データが共有設定２１１に入っていなければ、それを共有設定２１１に移動する。これにより今後、データの更新があった場合は、ＣＰＵ１０８，１１７の間で同期処理が行われる。
【００４５】
次に図６を参照して、ＣＰＵ１１７の設定管理部２０６による設定データの取得処理について説明する。
【００４６】
図６は、実施形態１に係るＣＰＵ１１７の設定管理部２０６による設定データの取得処理を説明するフローチャートである。
【００４７】
副制御部１０１のＣＰＵ１１７側には不揮発ストレージがないため設定管理部２０６は、必要なデータをＲＡＭ１１８にキャッシュして保存している。このキャッシュには共有設定２１１とプロセッサ専用の設定２１２の２種類がある。図６は、ＣＰＵ１１７のアプリケーション、ジョブ制御部２０４、画像処理部２０５などが設定管理部２０６に対して設定データの取得を指示した際の設定管理部２０６の処理を示している。
【００４８】
まずＳ６０１で、設定管理部２０６の判定メソッド３０５は、問い合わせられた該当のＫｅｙのデータが共有設定２１１とプロセッサ専用の設定２１２のいずれかのキャッシュに存在しているか否かを判定する。キャッシュに存在すると判定したときはＳ６０７に進み、判定メソッド３０５は、データベースアクセスメソッド３０４に対して、設定データの取得の指示を出す。これによりデータベースアクセスメソッド３０４は、キャッシュから該当のデータを取得しアプリケーションに返却する。すなわち、ＣＰＵ間通信を行わずに済み処理を高速化できる。
【００４９】
一方、Ｓ６０１で、キャッシュにヒットしなかった場合は、その設定データが初めてのアクセスか、或はキャッシュアウトしている状態のため、キャッシュにその設定データを追加する。Ｓ６０２〜Ｓ６０４の処理は、設定管理部２０６から主制御部１００の設定管理部２０３に対して設定データの取得及び更新の指示を出すことにより実行される。まずＳ６０２で、そのデータをＣＰＵ間通信でＣＰＵ１１７に伝えることにより、設定管理部２０３がマスタ設定データベース２１０より該当データを読み出し、ＣＰＵ１１７は、その設定データを取得する。次にＳ６０３に進み、ＣＰＵ１０８は、マスタ設定データベース２１０のＣＰＵ２フラグを立てる。
【００５０】
そしてＳ６０４に進み、該当データのＣＰＵ１フラグが立っているか否かを判定する。ここでＣＰＵ１フラグが立っていればＣＰＵ間での共有データになるためＳ６０５に進み、判定メソッド３０５は、取得した設定データをキャッシュの共有設定２１１に追加する。逆にＣＰＵ１フラグが立っていなければＳ６０６に進み、ＣＰＵ１１７の占有データになるため判定メソッド３０５は、その取得した設定データをキャッシュのプロセッサ専用の設定２１２に追加する。
【００５１】
こうしてＳ６０５或いはＳ６０６でキャッシュにデータを配置した後、判定メソッド３０５はデータベースアクセスメソッド３０４に対して設定データの取得指示を出す。そしてＳ６０７に進み、データベースアクセスメソッド３０４が、キャッシュから、その設定データを取得してアプリケーションに返却する。
【００５２】
この処理により、副制御部１０１のＣＰＵ１１７は、アプリケーションから設定データの取得を要求されると、それがキャッシュされていればキャッシュから取得し、キャッシュされていないときは、主制御部１００に要求してデータベース２１０から取得する。そして、その設定データが主制御部１００のＣＰＵ１０８からアクセスされているときは共有設定２１１に保持し、ＣＰＵ１０８からアクセスされていないときは、プロセッサ２１２に保持する。
【００５３】
次に図７を参照して、主制御部１００のＣＰＵ１０８による設定管理部２０３の設定データの更新処理について説明する。
【００５４】
図７は、主制御部１００のアプリケーションが設定管理部２０３に対して設定データの取得を要求した際の設定管理部２０３の処理を説明するフローチャートである。即ち、ＣＰＵ１０８のアプリケーション、ＵＩアプリケーション２００、ジョブアプリケーション２０１、ネットワークアプリケーション２０２などが設定管理部２０３に対して設定データの取得を要求した際の設定管理部２０３の処理を示している。ここではアプリケーションは、設定管理部２０３に対してＫｅｙとデータ値を指定し、データベースの更新を要求する。
【００５５】
アプリケーションから設定データの更新要求を受けた判定メソッド３０２は、Ｓ７０１で、その設定データのＣＰＵ１フラグが立っているかどうかを判定する。このフラグが立っているということは、以前、そのＫｅｙのデータに関してＣＰＵ１０８がアクセスしたことがあるという判断になるためＳ７０３に進む。一方、ＣＰＵ１フラグが立っていない場合は、そのデータに対して初めてアクセスを行うことを表しているためＳ７０２に進む。Ｓ７０２で、判定メソッド３０２は、データベースアクセスメソッド３０１に対してフラグの更新要求を出し、データベースアクセスメソッド３０１は該当データのＣＰＵ１フラグを立ててＳ７０３に進む。Ｓ７０３で判定メソッド３０２は、データベースアクセスメソッド３０１に対して該当のデータの更新指示を出し、データベースアクセスメソッド３０１はマスタ設定データベース２１０の該当データを更新する（書き換える）。
【００５６】
次にＳ７０４に進み、判定メソッド３０２は、そのデータのＣＰＵ２フラグが立っているかどうかを判定する。立っていなければＣＰＵ１の占有データ（すなわち副制御部１０側では現時点では参照されていないデータ）になるので特に何もせず処理を終了する。一方、ＣＰＵ２フラグが立っていればＳ７０５に進み、ＣＰＵ１１７でもそのデータを参照しているので、判定メソッド３０２は通知メソッド３０３に対して更新通知の発行指示を出す。これにより通知メソッド３０３は、ＣＰＵ１１７の設定管理部２０６に対して更新通知を出す。この更新通知には、更新された（書き換えられた）設定データも含んでいる。この更新通知を受けた後の設定管理部２０６の動作は、図９を参照して後述する。
【００５７】
これにより主制御部１００のアプリケーションから設定データの更新が指示されると、マスタ設定データベース２１０の該当データを更新するとともに、その設定データがＣＰＵ１１７でキャッシュされていれば、それを更新するように通知する。これにより、マスタ設定データベース２１０のデータの更新に伴って、そのデータをキャッシュしている副制御部１０１のＣＰＵ１１７でも、そのキャッシュしているデータを更新することができる。
【００５８】
図８は、実施形態１に係るＣＰＵ１１７側の設定管理部２０６の設定データの更新処理を説明するフローチャートである。ＣＰＵ１１７側には不揮発ストレージがないため、設定管理部２０６は、必要なデータをキャッシュして保存している。このキャッシュには、共有設定２１１とプロセッサ専用の設定２１２の２種類が存在している。図８は、ＣＰＵ１１７のアプリケーション、ジョブ制御部２０４、画像処理部２０５などが設定管理部２０６に対して設定データの更新を要求した際の設定管理部２０６の処理を説明するフローチャートである。
【００５９】
まずＳ８０１で、判定メソッド３０５は、問い合わせられた該当のＫｅｙのデータが共有設定２１１とプロセッサ専用の設定２１２のいずれかのキャッシュに存在しているか否かを判定する。ここでキャッシュ上に存在すると判定したときはＳ８０５に進み、判定メソッド３０５は、データベースアクセスメソッド３０４に対して更新指示を出す。これによりデータベースアクセスメソッド３０４が、キャッシュの該当のデータを更新する。次にＳ８０６に進み、判定メソッド３０５は、その更新したデータが共有設定２１１とプロセッサ専用の設定２１２のいずれに保持されているかを判断し、プロセッサ専用の設定２１２に保持されているデータであれば特に何もせず終了する。一方、共有設定２１１に保持されているデータであった場合はＳ８０９に進み、判定メソッド３０５は、通知メソッド３０６に対して更新通知の発行指示を設定管理部２０３に出すように要求する。これにより通知メソッド３０５は、ＣＰＵ１０８の設定管理部２０３に対して通知を出す。
【００６０】
一方、Ｓ８０１で、いずれのキャッシュにもヒットしなかった場合は、該当のデータが初めてのアクセスか、キャッシュアウトしている状態のためＳ８０２に進み、キャッシュにデータの追加を行う。Ｓ８０２〜Ｓ８０４の処理は、設定管理部２０６から設定管理部２０３に対してデータの取得及び更新の指示を出すことにより実行される。まずＳ８０２で、ＣＰＵ１０８は、マスタ設定データベース２１０より該当のデータを読み出し、それをバスブリッジ１１６を介してＣＰＵ１１７に送信することによりＣＰＵ１１７は、そのデータを取得する。次にＳ８０３に進み、ＣＰＵ１０８は、マスタ設定データベース２１０のＣＰＵ２フラグを立てる。そしてＳ８０４に進み、ＣＰＵ１１７は、該当データのＣＰＵ１フラグが立っているか否かを判定する。ここでＣＰＵ１フラグが立っていればＣＰＵ間での共有データになるためＳ８０７に進み、判定メソッド３０５は、取得してきた該当データを更新した上で共有設定２１１に追加する。逆にＣＰＵ１フラグが立っていなければ、ＣＰＵ１１７の占有データになるためＳ８０８に進み、判定メソッド３０５は、取得してきた該当データを更新した上でプロセッサ専用の設定２１２に追加する。
【００６１】
Ｓ８０７で、取得したデータの配置先が共有設定２１１のキャッシュになった場合は、判定メソッド３０５は、通知メソッド３０６に対して更新通知の発行指示を出す。これによりＳ８０９で、通知メソッド３０５は、主制御部１００のＣＰＵ１０８の設定管理部２０３に対して通知を出す。
【００６２】
これにより、副制御部１０１で、アプリケーションから設定データの更新が指示されると、その設定データがキャッシュされていれば更新し、かつその設定データが主制御部１００でも参照されていれば、その設定データの更新を主制御部１００に指示する。
【００６３】
一方、キャッシュされていない場合は、ＣＰＵ間通信によりその設定データをデータベース２１０から取得し、その設定データが主制御部１００でもアクセスされていれば共有設定としてキャッシュする。一方、主制御部１００が参照していないときは副制御部１０１専用の共有としてキャッシュする。これにより、副制御部１０１で設定データの更新が要求され、その設定データが主制御部１００でも参照されているときは、ＣＰＵ間で設定データの同期処理を行うことができる。
【００６４】
次に新規アクセス通知及び更新通知を受けた際の設定管理部２０６の動作について図９を用いて説明する。
【００６５】
図９は、実施形態１に係る設定管理部２０６が主制御部１００から新規アクセス通知或いは更新通知を受けた際の処理を説明するフローチャートである。
【００６６】
上記の説明で述べた通り、設定管理部２０６は、共有設定２１１とプロセッサ専用の設定２１２の２種類のキャッシュを保有している。主制御部１００の設定管理部２０３からの特定のデータに関する通知を受ける際は該当のデータはいずれかのキャッシュに存在している状態である。
【００６７】
まずＳ９０１で、設定管理部２０３からの通知を受けた判定メソッド３０５は、まず該当データが共有設定２１１に存在するか否かを判定する。共有設定２１１でない、即ち、プロセッサ専用の設定２１２に存在していた場合は、今まで占有していたデータをＣＰＵ１０８側でもアクセスすることになったという通知（Ｓ５０４，Ｓ７０５）を受けたことになる。このためＳ９０２で、判定メソッド３０５は、データベースアクセスメソッド３０４に対してデータ移動の指示を出す。そして該当データをプロセッサ専用の設定２１２から共有設定２１１に移動してＳ９０３に進む。一方、Ｓ９０１で、共有設定２１１のデータであればＳ９０３に進む。
【００６８】
Ｓ９０３で、通知の内容がデータの更新に関するもの（Ｓ７０５）かどうかを判定し、そうであればＳ９０４に進む。Ｓ９０４で、判定メソッド３０５は、データベースアクセスメソッド３０４に対して更新の指示を出し、共有設定２１１にキャッシュされている該当データを更新する。一方、通知の内容がデータに対する新規アクセスを告げるもの（Ｓ５０４）であれば、特に何もせずに処理を終了する。
【００６９】
この処理により、副制御部１０１においても、主制御部１００での設定データの更新に応じて、キャッシュされている設定データを更新することができる。またこの更新或いはアクセス通知は主制御部１００からの通知であるため、それまでその設定データを副制御部１０１だけが使用していた場合でも、主制御部１００との共有の設定データに変更することができる。
【００７０】
尚、図示しないが、逆に主制御部１００側の設定管理部２０３が更新通知（Ｓ８０９）を受けた場合は、その更新通知を受けた判定メソッド３０２がデータベースアクセスメソッド３０１に対して更新の指示を出す。これによりデータベースアクセスメソッド３０１が、マスタ設定データベース２１０のデータを更新するだけの動作となる。
【００７１】
尚、ＣＰＵ１１７側のキャッシュである共有設定２１１及びプロセッサ専用の設定２１２に関して、全てのデータを保持できるような潤沢なメモリを用意することでキャッシュアウトをなくすような実施形態も可能である。しかしながら、本実施形態のような画像形成装置では、メモリの容量が制限されていることが多い。その場合、キャッシュが一杯になった場合は、ＬＲＵ（ＬｅａｓｔＲｅｃｅｎｔｌｙＵｓｅｄ）等の一般的なキャッシュアルゴリズムにより、予め定義されたキャッシュの最大長を超えた場合は選択的にデータをキャッシュアウトさせる。またキャッシュアウトした場合には、マスタ設定データベース２１０のＣＰＵ２フラグをオフにすることで、以降のデータの同期処理を行わせなくなる。
【００７２】
このように動的に配置されたデータは、それまでの画像形成装置の利用状態によって決まってくることになる。
【００７３】
例えば、あるユーザがそれまで頻繁にコピー動作を行っていると、コピーに関する設定データにアクセスフラグが立ち、該当データがキャッシュに保持される。この状態のまま別のユーザが頻繁にファックス機能を使用する場合、コピー動作時の設定データをキャッシュに保持し続けることはあまり得策ではない。
【００７４】
またある新しいアプリケーションが新規にインストールされたり、ライセンスの導入に伴い、それまでになかった機能が起動されて新たな機能が使い始められると、それまでのフラグやキャッシュの状態を保持し続けることが得策ではなくなる。
【００７５】
このような場合は、フラグとキャッシュを一旦リセットし、再度、設定データの最適な配置を行うことが望ましい。このため、特定条件が発生した場合に、判定メソッド３０２によりフラグリセットの指示を出す。これにより、データベースアクセスメソッド３０１がデータベース２１０のフラグをリセットし、判定メソッド３０５がキャッシュの破棄の指示を出し、データベースアクセスメソッド３０４がキャッシュを破棄する。この特定条件としては、例えば、電源オフ、ユーザのログオフ、及び新規機能のアクティベートタイミング等が挙げられる。
【００７６】
また以上の説明では、プロセッサ専用の設定２１２のデータは、揮発メモリのキャッシュであり、マスタ設定データベース２１０に対して同期処理がなされていないため、電源がオフされるとそれまでの更新結果が消滅する。そのため判定メソッド３０５が、定期的に適当なタイミングでマスタ設定データベース２１０に対してバッチ処理による同期処理を行うようにしても良い。
【００７７】
以上説明したように本実施形態１によれば、２つのＣＰＵ間で利用する設定データを動的に分別することが可能となる。またこのように動的に配置することで、動作させるアプリケーションをどちらのＣＰＵで動作させることになっても、必要なデータについてだけ更新通知を出し合ってデータを同期させることができる。
【００７８】
［実施形態２］
次に本発明の実施形態２について説明する。実施形態２においても、前述の実施形態１と同様のハード構成及びソフト構成であり、図１〜図３で説明した構成までは同一である。
【００７９】
実施形態２では、図４で示したマスタ設定データベース２１０のテーブルスキーマの代わりに、図１０で示すテーブルスキーマを利用する。実施形態１の図４のテーブルスキーマでは、複数のＣＰＵからアクセスされたことを示すためにＣＰＵ１フラグ４０５とＣＰＵ２フラグ４０６を具備していたが、これの代替としてＣＰＵ１カウント１００５及びＣＰＵ２カウント１００６を具備する。
【００８０】
実施形態１では、一度でもアクセスされることでフラグを立て（オン）、それを基に該当ＣＰＵからのアクセスがあったかどうかを判断していた。これに対して実施形態２では、アクセスの回数をカウントし、ＣＰＵ１カウント１００５及びＣＰＵ２カウント１００６に保存するものとする。また実施形態１では、ＣＰＵ１１７で保持されるキャッシュデータの共有設定２１１とプロセッサ専用の設定２１２には、ＣＰＵ１フラグ４０５，４０６を持たせないとした。しかし実施形態２では、カウントデータの常時同期を避けるためにＣＰＵ１１７側のカウントをキャッシュにも保持する。
【００８１】
即ち、キャッシュされている共有設定２１１とプロセッサ専用の設定２１２は、Ｋｅｙ−Ｖａｌｕｅのスキーマで定義されたデータで保持する。そしてキー名称１００１、データ値１００２、サイズ１００３、データ型１００４のフィールドに加えＣＰＵ２カウント１００６のフィールドを持つものとする。
【００８２】
実施形態２では、図５〜９で説明したシーケンスに対し、「フラグが立っているか否か」の条件を「カウントが１以上か」という条件に置き換える。「フラグを立てる」処理の代わりに、「ＣＰＵカウントをカウントアップする」という動作を追加する。という２点が変更になる以外は、実施形態１と同じように動作することにより、最適なデータの配置と同期処理を提供できる。
【００８３】
このようにアクセスの有無を示す各ＣＰＵに対応するフラグから、各ＣＰＵのアクセス回数を計数するカウンタに変更することによって、アクセスの頻度情報を得ることができる。前述の実施形態１では、キャッシュがオーバーフローする際に、一般的なＬＲＵのロジックなどで古いデータを追い出すと説明した。しかし実施形態２のように、カウント値で管理することで、複数ＣＰＵ間でのアクセス頻度に大きな差があるデータを優先的に同期対象から外す等の処理を行うことも可能になる。
（他の実施形態）
前述の実施形態１，２では、２つのＣＰＵを使用する場合で説明したが、３つ以上のＣＰＵの場合でも、フラグやアクセスカウントのフィールドを増やすことで、同じように共有データの同期処理を行うことができる。
【００８４】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2013218580.tif 000003
【図２】
2013218580.tif 000004
【図３】
2013218580.tif 000005
【図４】
2013218580.tif 000006
【図５】
2013218580.tif 000007
【図６】
2013218580.tif 000008
【図７】
2013218580.tif 000009
【図８】
2013218580.tif 000010
【図９】
2013218580.tif 000011
【図１０】
2013218580.tif 000012