以下、本発明について実施形態をもって説明するが、本発明は、後述する実施形態に限定されるものではない。
図1は、本実施形態の画像処理装置の機能構成100を示す。本実施形態の画像処理装置110は、スキャナ機能、プリンタ機能、ファクシミリ機能、電子メール、FTP、HTTPなどを使用するファイル転送機能などを有するMFP(Multi-function Peripheral)として実装されている。画像処理装置110は、機能的な役割により、処理実行ブロック120と、管理ブロック130と、外部通信ブロック140といった3つの機能ブロックから構成される。図1に示す実施形態では、処理実行ブロック120は、スキャナ部122と、プリンタ部126とを含んでおり、スキャナ部122およびプリンタ部126は、ASIC124によりその処理の実行が管理されている。なお、図1では、スキャナ機能、プリンタ機能以外の機能部については省略して示しているが、本実施形態では、画像処理装置110は、ファクシミリ機能部、電子メール機能部、ファイル転送部などの各機能部を適宜含んで実装することができる。
管理ブロック130は、画像処理装置110の管理を実行するために、CPU134、画像処理部132、RAM136、ログ取得部137、および操作画面処理部139などを含んでいる。CPU134は、本実施形態で主制御手段を構成し、管理ブロック130の管理機能を提供するための制御部を提供し、オペレーティングシステム(以降、OSとして参照する。)として、UNIX(登録商標)、LINUX(登録商標)、WINDOWS(登録商標)200Xサーバ、Mac(登録商標)OSなどを採用することができる。また、画像処理装置110は、上述したOSの制御下で、アセンブラ、C、C++、Java(登録商標)、Java(登録商標)Script、PERL、RUBY、PYTHONなどのプログラム言語で記述されたプログラムを、その実行空間を提供するRAM136に読み込んで、CPU134がプログラムを実行することにより、画像処理装置110上に本実施形態の各管理機能手段を実現させている。
画像処理部132は、スキャナ部122が取得した画像、またはネットワーク150を通して外部から受信した画像データに対して画像処理を実行し、印刷出力や記憶装置160への格納などに適切なフォーマットとなるように画像処理を実行する。なお、画像処理部132が実行する画像処理は、フォーマット変換に限定されるものではなく、エッジ修正、ベクトル化、白黒2値化、画像圧縮のためのウェーブレット変換、離散DCT変換を含むことができる。また、画像処理部132は、その画像処理のためにRAMDAC(Random Access Memory Digital/Analog Converter)などを実装していてもよい。
ログ取得部137は、CPU134の制御下で外部からのデータ通信に関するログである通信ログを、後述するI/O制御部142内のバッファメモリから取得する手段である。ログ取得部137は、通信ログを取得する際に、画像処理装置110が省エネモードへ移行する時刻である省エネモード移行時刻またはログ取得部137がバッファメモリから通信ログを取得する時刻と、I/O制御部142が生成するカウンタ値と、当該カウンタ値が計数されたときのI/O制御部142の動作クロックレートとを使用して、通信ログの作成時刻を算出することができる。本実施形態では、I/O制御部142の動作クロックレートを制御するクロック制御部により動作クロックレートが変動するため、カウンタ値と、当該カウンタ値を計数したときの動作クロックレートとを用いて通信ログの作成時刻を算出する。これにより、I/O制御部142の動作クロックが変化した場合でも、正確な通信ログの作成時刻を算出することができる。
操作画面処理部139は、画像処理装置110の操作パネルに表示される操作画面を制御する機能手段である。操作画面処理部139は、記憶装置160に格納された操作画面を既定するファイル等を読み込んで、作成すべき通信ログを設定する通信ログ取得情報設定画面等の操作画面を操作パネルに表示する。また、操作画面処理部139は、ユーザが操作画面を介して選択した通信ログ取得情報を受領し、当該通信ログ取得情報を通信ログの設定ファイル等として記憶装置160に書込むと共に、I/O制御部142のバッファメモリに書込む。
リアルタイムクロック170は、CPU134の制御下で現在の時刻情報を計測および提供する手段であり、ICとして実装することができる。リアルタイムクロック170は、年月日を含む現在時刻を保持しており、画像処理装置110の電力消費量を最小にする省エネモードや電源OFF状態においても、自律的に現在時刻を計測し続ける機能を有する。
管理ブロック130は、画像処理装置110が実行するスキャナ処理、プリント処理、外部送受信処理などの全体の処理の実行を管理する他、画像処理装置110の省エネ管理を実行する。なお、省エネ管理とは、画像処理装置110の消費電力を制御するため、画像処理装置110を、最低限の電力消費レベルとする省エネモードと、各処理を実行する動作モードとの間で遷移させる処理である。動作モードは、CPU134に対して電力を供給するとともに定格クロックレートで機能させ、さらに処理を担当すべき機能部に対して電力供給されるモードである。一方、省エネモードは、CPU134、スキャナ部122、プリンタ部126などに対する電力供給を最小限とするか、または電力供給を完全に停止してしまうモードである。
画像処理装置110は、さらに外部通信ブロック140を含んでいる。外部通信ブロック140は、ネットワーク150を介して送受信されるデータを処理する機能手段であり、説明を明瞭にする目的でI/O制御部142を例示的に示している。
I/O制御部142は、本実施形態では、インタフェース制御手段を構成し、外部通信の管理を実行する他、外部からデータを受信した場合に、CPU134に代わり、データの解析を実行し、データ解析の結果に応じて、受信したデータが画像処理装置110の本体機能を使用して処理されるべきと判断した場合、またはI/O制御部142内のバッファメモリに格納された通信ログを記憶装置160に保存する必要があると判断した場合に、CPU134に対して割込を発生し、画像処理装置110を、省エネモードから動作モードへ起動させる処理を実行する。また、I/O制御部142は、CPU134への割込を発生させるために、外部から受信するデータを解析し、または通信ログを作成および保存すべく、RAM、ROM、バッファメモリ、通信制御部(PHY/MAC)、通信ログを作成するログ作成部、クロックパルスを計測して通信ログの作成時刻を特定するカウンタ値を生成する電子回路によって構成されるカウンタ、およびバッファメモリやRAMのメモリ使用量を監視するメモリ監視部など各種機能部を実装する。
図2は、本実施形態の画像処理装置110が省エネモードおよび動作モードにおいて外部から受信したデータのデータフローを示した図である。データフロー200が画像処理装置110の動作モード時のデータフローであり、データフロー210が、画像処理装置110の省エネモードでのデータフローである。画像処理装置110が動作モードにある場合、ネットワーク150を介して画像処理装置110が受信したデータはI/O制御部142によって取得され、受信したデータがCPU134の管理下で処理すべきデータであるとき、受信したデータは、CPU134が処理するためにI/O制御部142からCPU134に送られる。
図2に示すように、I/O制御部142は、CPU134へのデータフロー200,210を制御するために複数の機能部を含んでいる。I/O制御部142が含む機能部としては、ネットワークI/F、サブCPU、USBI/F、受信データのバッファメモリであるデータバッファ、DMAC(Direct Memory Access Controller)、割込みI/F、メモリ監視部、ログ作成部、カウンタなどが例示的に示されている。データフロー200,210では、画像処理装置110が動作モードまたは省エネモードにある場合、受信したデータは、ネットワークI/Fによって受け取られ、データバッファに一旦格納される。
ネットワークI/Fは、本実施形態で外部通信を管理する外部通信管理手段を提供し、CPU134に対し、CPU134が処理すべきデータを受領したことを通知する。当該通知を受領したCPU134は、DMA要求を発行し、DMACを介してデータバッファ内のデータを取得する。その後、画像処理装置110は、処理実行ブロック120の適切な機能処理部を呼出し、画像処理装置110が当該データに関連して実行すべき処理を開始する。
一方、画像処理装置110が省エネモードに退避している場合、本実施形態のI/O制御部142は、受信したデータの内容を判断し、CPU134の起動を最小限としながら、バッファメモリのオーバーフローによるデータ損失の防止、データ転送バスの利用効率の向上、またはデータ損失防止およびデータ転送バスの利用効率の両方を改善する。I/O制御部142は、データ転送効率を最適化させつつ、自己も省エネルギーで動作するように受信データのデータフロー210を制御する。より詳細には、画像処理装置110が省エネモードにある場合、ネットワーク150から受領したデータは、ネットワークI/Fによって受け取られ、ネットワークI/Fは、CPU134に通知を発行することなく、割込みI/Fを起動してサブCPUに対する起動割込みを発生させ、サブCPUを起動する。
I/O制御部142は、CPU134が省エネモードにある場合にCPU134が実行すべき処理を代行する代行処理手段を提供しており、ネットワークI/Fがデータを受信してサブCPUが起動されると、サブCPUは、データバッファに一旦格納されたデータを解析する。そして、そのデータ内容がCPU134の処理すべきデータ内容である場合、サブCPUは、割込みI/Fに通知して、CPU134に対する起動割込みを発行させ、CPU134を含む画像処理装置110を起動させる。そして、CPU134は、初期設定を終了すると、DMA要求を発行し、サブCPUを介さず、DMACを介したダイレクトメモリアクセス方式でデータバッファ内のデータを取得して、動作モード時と同様の処理を実行させる。
図3は、図2に示した本実施形態のI/O制御部142の詳細な機能ブロック300を示す。なお、図3は説明の便宜上、管理ブロック130の機能部についても示している。図3に示すように、本実施形態のI/O制御部142は、サブCPU310と、クロック制御部312と、RAM314と、データバッファ316とを含んで構成されている。I/O制御部142の各機能処理部は、内部バス328により相互接続されており、データや信号の送受信を可能としている。サブCPU310は、受信したデータが平文データに復号された後にその内容を解析して、受信したデータがCPU134の処理すべきデータであると判断した場合には、割込みI/F322に通知を発行し、CPU134に対する割込み要求を発行させる。
クロック制御部312は、本実施形態において、動作クロックレートを制御することにより、データ転送バスを有効利用させつつ、バッファメモリのオーバーフローによるデータの喪失を防止することにより、データ転送効率を最適化する。また、クロック制御部312は、復号速度および外部通信速度の変化に対応してネットワークI/F318に供給する動作クロックを変更し、I/O制御部142の省エネルギー化を可能とする。RAM314は、サブCPU310の処理を可能とする実行空間を提供するメモリとして機能する。
データバッファ316は、復号されたデータを、暗号文または平文にかかわらず、以後の処理が決定されるまで格納し、当該データは、CPU134が起動された後にCPU134によってDMA方式でアクセスされるか、またはサブCPU310によってアクセスされる。また、データバッファ316には、受信データの送信元である受信データ通信相手、受信データの通信プロトコル、外部とデータ通信を開始した時間である通信発生時間、通信処理の状態を示す通信状態などの通信ログ、カウンタ332が計数するカウンタ値、I/O制御部142のクロックジェネレータが生成する動作クロックレート、通信ログ取得情報設定画面を通じてユーザが指定した通信ログ取得情報などが保存される。データバッファ316は、受信データや復号データを格納する領域と、通信ログやカウンタ値、通信ログ取得情報を格納する領域とを分けて構成することができる。
I/O制御部142は、さらにネットワークI/F318と、USBI/F320と、割り込みI/F322と、バスブリッジ324とを含んでいる。ネットワークI/F318は、ネットワークコントローラ318aと、暗号処理コントローラ318bと、物理層レベルおよびMAC層の下位プロトコル処理を担当する通信制御手段である通信制御部(PHY/MAC)318cを含んでいる。ネットワークコントローラ318aは、ネットワーク150を介して受信したデータについてデータの配布先およびデータの処理先を判断して処理を実行するネットワーク制御手段である。また、暗号処理コントローラ318bは、通信制御部318cが受信したデータを受領し、データがIPsecによって暗号化されていると判断した場合、当該受信データを復号する暗号処理手段を提供する。
また、暗号処理コントローラ318bは、受信データがIPsecで暗号化されていないと判断した場合、処理を行わずにデータをそのままネットワークコントローラ318aに渡し、サブCPU310によるデータの解析を依頼する。なお、暗号処理コントローラ318bは、画像処理装置110が省エネモードに退避している場合にのみ復号処理を実行し、画像処理装置110が動作モードにある場合には、復号処理を行わずに、暗号化されたデータをネットワークコントローラ318aに送付する実装形式とすることができる。
ネットワークコントローラ318aおよび暗号処理コントローラ318bは、バッファメモリ316に対して、FIFO形式などにより書込みおよび読み出し処理を実行しており、暗号処理コントローラ318bは、復号後の平文データをバッファメモリ316に書込む。また、ネットワークコントローラ318aは、他のデバイスからの読取り要求に応答してバッファメモリ316から他のデバイスが要求する送付先へとデータを送付する。
一方、ネットワークI/F318には、クロック制御部312からのクロックパルスが駆動クロックとして入力され、駆動クロックにより、暗号処理コントローラ318bの動作速度が可変となる。クロック制御部312には、サブCPU310からのクロック制御信号が送付される。クロック制御部312は、ネットワークI/F318が管理する外部通信速度、セキュリティアソシエーションテーブル(以下、SAテーブルとして参照する。)などから取得されるDES、3DES、AESなど暗号方法の種類、鍵長などと、バッファメモリのメモリ利用度などによりサブCPU310が生成するクロック制御信号を受領して、バッファメモリ316のオーバーフローやアンダーフローを防止し、データの損失を防止し、同時にデータ転送バスの利用効率を損なわないように暗号処理コントローラ318bの動作速度を制御しながら、画像処理装置110の省エネモードにおける消費電力をさらに低減させている。
USBI/F320は、画像処理装置110の外部に接続されるUSBホストコントローラ(図示せず)からの信号を受領し、当該信号をサブCPU310に送付して処理を依頼する。割込みI/F322は、ネットワークI/F318がネットワーク150からデータを受領したことに応じて、サブCPU310に対して割込み要求を発行し、また、サブCPU310から通知を受領して、CPU134を起動するための割込み要求を発生させる。I/O制御部142は、PCIeなどのバスブリッジ324を介して、PCIeバス138を介してCPU134に対して割込み要求などを送付し、またCPU134によるデータの取得を可能としている。
I/O制御部142は、さらにメモリ監視部330と、カウンタ332と、ログ作成部334とを含んでいる。メモリ監視部330は、データバッファ316のメモリ使用量を監視する手段であり、データバッファ316に空き容量がない場合には、割り込みI/F322にその旨の通知を発行してCPU134を起動させ、通信ログを取得させる。これにより、画像処理装置110が外部からデータを受信した場合に、その受信データやその復号データ、通信ログ等をバッファメモリに格納することによって生じるメモリオーバーフローを未然に防止することができ、データ損失を回避することができる。
他の実施形態では、データバッファ316およびRAM314を統合して1のメモリとして構成することができ、この場合、メモリ監視部330は、この統合されたメモリを監視し、プログラムの実行に伴って変動するメモリ使用量を監視する。メモリ監視部330は、既定のメモリアドレスが割り振られたプログラム実行によって使用すべきメモリ領域うち、実際には使用されていないメモリ領域をそのメモリアドレスから判別し、当該未使用のメモリ領域をネットワークI/F318やログ作成部334に通知して、受信データや復号データ、通信ログ等のデータバッファ316に保存すべき情報を当該未使用のメモリ領域に保存する。これにより、より多くの通信ログ等のデータをバッファメモリに保存して、バッファメモリのオーバーフローを回避するとともに、CPU134の起動頻度を抑制して、省エネモードの画像処理装置が通常モードへ移行する頻度を低減し、省エネルギー化を実現することができる。
カウンタ332は、時刻情報を算出するために、I/O制御部142のクロックジェネレータが生成するクロックパルスを計数して、そのカウンタ値を提供する電子回路であり、他の機能手段の要求に応じて、当該要求を受領した時点でのカウンタ値を提供する。本実施形態では、画像処理装置110が省エネモードに移行する度にカウンタ332が初期化される。
ログ作成部334は、I/O制御部142が実行する処理に関する通信ログを作成する手段であり、データバッファ316に保存された通信ログ取得情報を参照して、作成すべき通信ログを判断し、作成した通信ログをデータバッファ316に格納する。また、ログ作成部334は、省エネモード移行時刻、カウンタ332が提供したカウンタ値、および当該カウンタ値を取得したときのクロックジェネレータが生成する動作クロックレートを用いて通信ログの作成時刻を算出し、通信ログとしてデータバッファ316に格納することができる。
図4は、本実施形態のサブCPU310が実行するクロック制御処理のフローチャートである。図4の処理は、ステップS400で、画像処理装置110が省エネモードに遷移した段階で開始する。ステップS401では、サブCPU310がネットワークI/F318に問合わせを発行し、バッファメモリのメモリ利用度を検査する。ステップS402では、バッファのメモリデータ量が下限しきい値未満であるかを判断する。下限しきい値未満である場合(yes)、データの保存の観点からは不都合は生じないものの、データ転送バスの利用効率が低下することが予測されるので、処理をステップS405に分岐させ、暗号処理コントローラ318bの動作クロックレートを増加させた後、処理をステップS401に戻し、再度バッファメモリの利用度を検査する。
一方、ステップS402で、バッファメモリのデータ量が下限しきい値以上の場合(no)、バッファメモリやデータ転送バスの利用効率には問題はないので、ステップS403で、バッファメモリのデータ量が上限しきい値を超えたか否かを判断する。ステップS403で、バッファメモリのデータ量が上限しきい値を超えた場合(yes)には、そのままのクロックレートで処理を継続するとバッファメモリのオーバーフローが予測されるので、ステップS404で暗号処理コントローラ318bの動作クロックレートを減少させ、処理をステップS401に戻し、バッファメモリの利用度を継続して検査する。
すなわち、ステップS403で、バッファメモリのデータ量が上限しきい値を超える場合が発生するのは、主として暗号処理コントローラ318bの書込み速度が、外部通信速度および暗号強度との関係で増加していることが要因である。本実施形態では、サブCPU310が暗号文の復号処理を担当することによってサブCPU310のオーバーヘッドが大きく増加し、この結果、バッファメモリのデータ量が上限しきい値を超えるのは、データバッファ316への読出し要求が遅延する場合を除き、ネットワークI/F318のオートネゴシエーションに伴う外部通信速度の増加が発生しているか、暗号処理コントローラ318bのデフォルト設定動作クロックレートが、暗号強度および読出しレートに比較して高すぎることに起因する。
このため、サブCPU310は、ステップS404で、当該外部通信速度および暗号強度に応じてデフォルトで設定された動作クロックレートを増加させるようにクロック制御部312を制御する。
一方、ステップS403で、バッファメモリのデータ量が上限しきい値以下である場合(no)には、依然としてデータ損失およびデータ転送バス利用効率の問題が生じていないので、ステップS406で、通信制御部318cのレジスタメモリなどを検査して、オートネゴシエーションによる外部通信速度の低下を判断する。ステップS406の判定で、外部通信速度がネットワーク帯域幅との関連で低下したと判断した場合(yes)、バッファメモリの利用効率が低下する可能性を減らすため、ステップS404に処理を分岐させて、暗号処理コントローラ318bの動作クロックレートを減少させ、処理をステップS401に戻し、バッファメモリの利用度を継続して検査する。また、ステップS406で、外部通信速度が低下しない場合には(no)、さらにステップS407で外部通信速度が増加したか否かを判断し、外部通信速度が増加しない場合には(no)、処理をステップS401に戻し、同一の動作クロックレートにおけるバッファメモリの利用度を継続して検査する。
一方、ステップS407で、外部通信速度が増加したと判断した場合には(yes)、バッファメモリの利用度には依然として余裕があるので、復号処理効率を向上させるべく処理をステップS405に分岐させて暗号処理コントローラ318bの動作クロックレートを増加させ、処理をステップS401に戻し、継続してバッファメモリの利用度を検査する。
図4の処理により、動作クロックレートを外部通信速度または暗号強度に適合させ、データ転送バスの利用性を損なわないようにしながら、I/F制御部142の低消費電力化を可能とする。
図5は、本実施形態で、本実施形態にI/O制御部142が実行する動作クロックレート制御処理のフローチャートである。図5の処理は、ステップS500で画像処理装置110が省エネモードに退避した段階で開始し、ステップS501で、ネットワークI/F318がデータを受信すると、ネットワークI/F318がデータを検査する。ステップS502では、データが暗号文であるか否かを判断し、暗号文でない場合には(no)、ステップS504に処理を分岐させ、クロック制御部312によるクロックレート制御下でネットワークコントローラ318aがバッファメモリに書込み処理を実行する。
一方、ステップS502で、データが暗号文であると判断された場合(yes)、ステップS503で、暗号処理コントローラ318bがクロック制御部312のクロックレート制御下で、データの復号を実行し、ステップS504で暗号処理コントローラ318bが復号データをバッファメモリに書込む。
ステップS505では、サブCPU310がバッファメモリからデータを読込んでバッファリングし、データの解析を行い、データが復帰要因か否かを検査する。ステップS506では、データ内容が復帰要因であるか否かの判断し、データが復帰要因であると判断した場合には(yes)、処理をステップS507に分岐させ、割込みI/F322に通知を発行し、管理ブロック130のCPU134に割込みを発生させ、CPU134を起動させ、CPU134に制御を渡してステップS509で処理を終了する。
一方、ステップS506で、復帰要因に該当するデータではないと判断した場合(no)、処理をステップS508に分岐させ、サブCPU310単独でデータの処理を実行させた後、処理をステップS509で処理を終了し、次回のネットワーク150を介したデータ受信に応答して処理が呼出されるまで待機する。
図6は、本実施形態でサブCPU310が、クロック制御部312を制御するために利用するクロック制御テーブル600の実施形態を示す。図6に示したクロック制御テーブル600は、サブCPU310のルックアップテーブルとして構成することができる。また、ネットワークI/F318にサブCPU310のクロック制御機能を一部分離実装する場合、ネットワークI/F318のルックアップテーブルとして実装することもできる。
いずれの実施形態であっても、クロック制御テーブル600は、外部通信速度、暗号強度、およびバッファ状態に関連して、電力消費を削減するためにクロックレートを制御する実施形態において使用される。クロックレートは、本実施形態では、外部通信速度および暗号強度の向上に対応してクロックアップされ、外部通信速度および暗号強度の低下に対応してクロックダウンされる。外部通信速度の増減は、ネットワーク帯域幅などの関係で、ネットワークI/F318のオートネゴシエーション機能によって外部的要因で決定され、暗号強度の増減は、使用する暗号方法の条件に応じて決定される。本実施形態では、これらの外部要因によって発生するバッファメモリの利用度を検査して、暗号処理コントローラ318bの動作クロックを制御する。
現在の外部通信速度は、ネットワークI/F318のPHYのレジスタメモリに登録されており、説明する実施形態では、サブCPU310は、データの割込み要求を受領した後、PHY318cに当該データ通信のビットレートを問合わせる。その後、サブCPU310は、クロック制御テーブル600のカラム610を参照し、次いで現在処理中のデータのSPI(Security Parameter Index)検索キーとして、暗号処理コントローラ318bなどが管理するSAテーブルを参照して、暗号方式および鍵長を判断する。暗号方式および鍵長が判断された後、図6のクロック制御テーブル600の外部通信速度、暗号方式および鍵長の指定が可能となる。
その後、サブCPU310は、ネットワークI/F318が管理するバッファメモリのデータ量を判断し、クロック制御テーブル600に登録されたレコードに該当する条件か否かを判断し、フィールド650に登録されたクロック制御データを取得して、クロックレートの制御を行う。なお、画像処理装置110が省エネモードに遷移している場合であって、ネットワーク150を介してデータの受信処理を実行していない場合、ネットワークI/F318は、デフォルト設定のクロックレートとして可変制御可能なクロックレベルのうち、最低レベルのクロックレベルを設定することができる。当該実施形態の場合、サブCPU310は、データ受信の通知を受領して、クロック制御テーブル600のレコードを参照し、暗号処理コントローラ318bを含むネットワークI/F318の動作クロックレートを動的に制御することができる。
図6のクロック制御テーブル600のフィールド650は、クロック制御部312が使用するクロック制御データctr0〜ctrn(nは、2mに対応する。)を登録する。図6に示す実施形態では、クロック制御データは、nビット使用するものとして示されており、例えば、動作クロックレートを4段階で制御する場合、クロック制御データは、2ビットとでき、16段階制御する場合、クロック制御データは、4ビットとすることができ、64段階制御する場合には、クロック制御データは、8ビットとすることができる。クロック制御データctr0〜ctrnは、サブCPU310のレジスタメモリに設定され、後述するクロック制御部312の発生する動作クロックを制御する選択信号とされる。
図7は、本実施形態のクロック制御部312の例示的な回路構成を示した図である。図7に示したクロック制御部312は、ネットワークI/F318を駆動しているネットワーククロックNetwork_CLKを、ネットワークI/F318から導出して入力として使用する。説明の便宜上、Network_CLKを生成するクロックジェネレータ710を示しているが、クロックジェネレータ710は、ネットワークI/F318の内部モジュールとしてもよく、また、本実施形態のクロック制御部312のモジュールとすることができ、適宜設定上の便宜および特定の適用形態に応じて選択することができる。
クロックパルスNetwork_CLKは、同期式カウンタ720のCLOCK入力に入力される。同期式カウンタ720の出力QA〜QDは、それぞれクロックパルスNetwork_CLKを(1/2)n(n=1、2、3、4)で分周したパルスを生成する。さらにクロックパルスNetwork_CLKは、第2の同期式カウンタ730のCLOCK入力に入力され、同期式カウンタ720のキャリーは、第2の同期式カウンタ730のENABLEに入力されていて、(1/2)m(m=5、6、7、8)の分周パルスを生成する。なお、特定の用途に応じて、さらに同期式カウンタを使用することができる。また、図7に示した実施例では、画像処理装置110が動作モードで動作する場合に対応し、ネットワーククロックNetwork_CLKも後述するマルチプレクサに入力されている。
ネットワーククロックNetwork_CLKおよび各同期式カウンタ720、730の出力パルスは、図7に示す実施形態では、16in1のマルチプレクサ740に入力されていて、制御信号crt0〜ctr3により出力Wが選択されている。なお、使用するマルチプレクサの入力ポート数については、必要とするクロックレベルに対応して適宜選択することができる。マルチプレクサ740の出力は、図7の実施形態ではインバータ750に入力された後、図3に示すように、暗号処理コントローラ318bの動作クロックとして再度ネットワークI/F318の少なくとも暗号処理コントローラ318bに戻されている。
図7に示す実施形態では、サブCPU310は、ネットワーク状態やデータの暗号強度などの変更を検出すると、図6に示したクロック制御テーブル600を参照し、クロック制御テーブル600のフィールド650に登録された値をそれぞれの制御信号としてレジスタにセットして、マルチプレクサ740を制御する。また、本実施形態で、データ受信待機中にI/O制御部142の消費電力を最低化させる場合には、ネットワークI/F318全体の動作クロックレートを最低化させておくことができる。
図7に示すように、回路ブロック760を追加し、インバータ750の出力を2in1のマルチプレクサ770の1のポートに入力するとともに、Network_CLKをマルチプレクサ770の他のポートに入力する。データ受信処理中の場合には、マルチプレクサ770はHレベルに設定される。図7に示す実施形態で、マルチプレクサ770に入力されるセレクト信号は、サブCPU310またはPHY/MAC318cから送付することができる。I/O制御部142は、データ受信期間中ではないと判断し省電力制御を行う場合、予め設定したタイマカウンタの満了時まで直前の動作クロックレートを保持し、その後にセレクト信号をLレベルに遷移させる。一方、データを受信した場合、セレクト信号をHに遷移させることで、直前の動作クロックレート環境にネットワークI/F318を復帰させることができ、当該画像処理装置110が設置されるネットワーク環境下で最も適切な動作クロックレート環境でネットワークI/F318を復帰させることが可能となる。
一方、さらに他の実施形態では、ネットワークI/F318全体の動作クロックレートを最低化させておくこともできる。この結果、データ受信待機中には、暗号処理コントローラに入力される動作クロックがPHY/MAC318cおよびネットワークコントローラ318aにも入力され、全体としてネットワークI/F318の動作クロックレートが低下し、消費電力の削減を可能としている。
なお、データ受信待機中に、ネットワークI/F318のいずれのモジュールを低動作クロックレートで起動するかについては、外部通信速度や画像処理装置110の省エネ要求に応じて適宜選択することができる。
以下、本実施形態について、クロック制御部312およびサブCPU310を使用した省エネルギー処理の機能について説明する。
好ましい実施形態では、ネットワークI/F318がデータを受信した場合、データ受信直前まで最低の動作クロックレートで機能していた暗号処理コントローラ318bは、割込み要求の発生により、まずネットワークI/F318の動作クロックレートで立ち上げられる。その後、ネットワークI/F318は、データの初期解析を実行し、ヘッダ情報などを使用してデータが暗号文であるか否かを検査する。ここで、ネットワークI/F318が、暗号アルゴリズムにDESが使用されているIPsecパケットを受領したものとする。
この段階では、暗号処理コントローラ318bは、サブCPU310が設定するデフォルト設定の動作クロックレートで駆動される。暗号処理コントローラ318bは、当該デフォルト設定の動作クロックレートでDESを復号していくが、外部通信速度が高い場合には、ネットワーククロックとは非同期で駆動されている低消費電力対応のサブCPU310は、バッファメモリからの読み出しレートが暗号処理コントローラの書込みレートに追従できなくなり、この結果、バッファメモリのデータ量が増加し、最終的にはバッファメモリの上限しきい値を超えるまでに達する。
この状態を放置すると、バッファオーバーフローが発生し、高付加価値の通信データが失われてしまう。そこで、サブCPU310は、暗号処理コントローラ318bに対して書込み禁止を指令し、図6のクロック制御テーブル600を参照し、現在のネットワーククロックレート、暗号方法、鍵長およびバッファメモリのメモリステータスを参照し、制御フラグを取得し、レジスタメモリに設定する。さらにサブCPU310は、設定されたレジスタメモリの値に対応してマルチプレクサ730を制御し、適切なクロックレートを選択して新たなレートの動作クロックを暗号処理コントローラへ供給し、書込み開始指令を発行する。当該書込みのレートは、直前の動作クロックレートよりも低いレートであり、バッファメモリのオーバーフローを回避することができる。
一方、受信したデータの暗号強度が異なる場合には以下の処理が行われる。暗号アルゴリズムが、例えば、連続して受信したデータ間で3DESからDESに切り替わった場合には、暗号処理に要するオーバーヘッドが低下するので、相対的に書込みレートが増加し、バッファメモリへのデータ蓄積速度が高まり、バッファメモリのデータ蓄積量がバッファメモリの上限しきい値にまで達したときに、サブCPU310がバッファメモリの状態を検出して現在よりも高い最適なクロックレートを設定し、暗号処理を続行する。また、暗号方法が同一であっても鍵長が異なる場合、例えば、暗号方法がAESであっても鍵長が128ビットか256ビットでは、復号処理に要するオーバーヘッドが異なり、鍵長の長い方が、書込みレートは低下する。
この結果、バッファメモリのデータ量が低くなり、データの復号が終了する前に当該データ量が下限しきい値未満となった場合、再度動作クロックレートの修正を行い、より高い動作クロックレートでの動作を開始する。反対に、鍵長が256ビットから128ビットにデータ間で変わる場合、同じASEの暗号方法であっても復号処理時間が相対的に短縮されるので、3DESからDESに切り替わった場合と同様に、書込みレートが増加し、この結果、動作クロックレートを増加することで対応することが可能となる。
また、ネットワークI/F318が使用する動作クロックは、通信レートによって変化し、例えば10Mbpsであれば2.5Mbps、100Mbpsであれば25MHz、ギガビット・イーサネット(登録商標)であれば125MHzである。本実施形態にしたがい、I/O制御部142の消費電力を低減するために、ネットワークI/F318が本来利用すべき動作クロックを本実施形態のクロック制御部312が生成し、図7の回路ブロック760を使用して分周して後の動作クロックをネットワークI/F318に供給することができる。この実施形態の場合、省エネルギーを達成しながら、受信したデータの処理を可能とすることができる。さらに本実施形態では、ネットワークI/F318の待機状態の動作クロック設定を、最低動作周波数にしておくことで、省エネモードにある画像処理装置110のI/O制御部142のデータ受信待機中の消費電力をより一層抑制することが可能となる。
図8および9は、本実施形態の画像処理装置110が省エネモードに移行し、外部からデータを受信したときに実行する処理のフローチャートであり、図8および9は、それぞれ管理ブロック130および外部通信ブロック140の処理を示している。図8の処理は、ステップS800で開始し、ステップS801で、CPU134が、DMACを介して画像処理装置110の省エネモード移行時刻をデータバッファ316に書込む。ステップS802では、CPU134が画像処理装置110を省エネモードに移行させる。
ステップS801でデータバッファ316に省エネモード移行時刻が書込まれると、データバッファ316はI/O制御部142のサブCPU310に省エネモード移行時刻が書込まれたことを通知し、図9のステップS900でサブCPU310はカウンタ332を起動してカウントアップを開始する。本実施形態では、サブCPU310は、カウンタ332を起動するときの動作クロックレートを通信ログとしてRAM314やバッファメモリ316等に保存する。本実施形態では、サブCPU310は、カウンタ332の起動時に当該カウンタを初期化するが、起動時にカウンタを初期化しない実施形態の場合、カウンタ起動時の動作クロックレートの他、カウンタ起動時のカウンタ値を通信ログとして保存することが好ましい。
ステップS901では、ネットワークI/F318がデータを受信したか否か判断する。ステップS901の判定でデータを受信したと判断した場合には(yes)、処理をステップS902に分岐させ、ステップS902でネットワークI/F318が受信データを検査する。一方、ステップS901の判定でデータを受信していないと判断した場合には(no)、ステップS901の処理を反復して受信データを待機する。なお、本実施形態では、ネットワークI/F318がステップS901の処理を反復して受信データを待機するが、他の実施形態では、ネットワークI/F318がH/Wが外部からのデータ受信の検知をトリガとして、ステップS902以降の処理を実行するようにしてもよい。
ステップS903では、ネットワークI/F318が、受信したデータが暗号文であるか否かを判断し、暗号文でない場合には(no)、ステップS906に処理を分岐させ、クロック制御部312によるクロックレート制御下でネットワークコントローラ318aが、バッファメモリの受信データを書込むべき領域にFIFO方式で受信データを書込む。一方、ステップS903で、受信したデータが暗号文であると判断された場合(yes)、ステップS904で、暗号処理コントローラ318bがクロック制御部312のクロックレート制御下で受信データの復号処理を実行し、バッファメモリの復号データを書込むべき領域にFIFO方式で復号データを書込む。
ステップS905では、ログ作成部334が、データバッファ316に保存された通信ログ取得情報に含まれるログ取得条件を参照して、通信ログを作成すべきか否か判断し、通信ログを作成すべきであると判断した場合には(yes)、処理をステップS907に分岐する。例えば、ログ取得条件が通信エラー時にのみ通信ログを取得する設定となっている場合、暗号処理コントローラ318bによる受信データの復号処理が失敗したとき、ログ作成部334は、通信ログを作成すべきであると判断する。
ステップS907では、ログ作成部334が、データバッファ316に保存されている省エネモード移行時刻およびカウンタ332起動時の動作クロックレートと、現在のカウンタ値とを用いてログ作成時刻を算出し、データバッファ316に書込まれた通信ログ取得情報に含まれるログ取得内容を参照して、データバッファ316に書込まれた受信データまたは復号データから通信ログとして保存すべきデータを判断し、データバッファ316の通信ログが保存されるべきメモリ領域に保存する。
ステップS908では、メモリ監視部330がデータバッファ316に受信データや通信ログ等を格納可能な空き領域があるか否か判断し、空き領域があると判断した場合には(yes)、処理をステップS901に戻し、ネットワーク150を介したデータ受信を待機する。一方、ステップS908の判定で空き領域が無いと判断した場合には(no)、処理をステップS909に分岐させる。本実施形態では、現在のバッファメモリの使用量が、許容可能なバッファメモリの使用量を示すしきい値を超えるか否かを判断し、または未使用のバッファメモリの最小アドレス値が、使用可能なバッファメモリのアドレス値を示すしきい値を超えるか否かを判断することにより、データバッファ316に空き領域があるか否か判断することができる。これらのしきい値は、バッファメモリに保存されるデータ量やバッファメモリサイズ等に応じて適宜変更することができる。
一方、ステップS905の判定で通信ログを作成すべきでないと判断した場合には(no)、処理をステップS910に分岐する。例えば、ログ取得条件が通信エラー時にのみ通信ログを取得する設定となっている場合、暗号処理コントローラ318bによる受信データの復号処理が成功したときには、ログ作成部334は通信ログを作成すべきでないと判断する。ステップS910では、サブCPU310がバッファメモリからデータを読込んで解析を行い、データが復帰要因か否かを検査する。ステップS911では、データ内容が管理ブロックのCPU134の復帰要因であるか否かの判断し、データが復帰要因であると判断した場合には(yes)、処理をステップS909に分岐させる。一方、ステップS911の判定で、復帰要因に該当するデータではないと判断した場合には(no)、処理をステップS912に分岐させ、ステップS912でサブCPU310が単独でデータの処理を実行する。ステップS913では、メモリ監視部330がデータバッファ316に受信データや通信ログ等を格納可能な空き領域があるか否か判断し、空き領域があると判断した場合には(yes)、処理をステップS901に戻し、ネットワーク150を介したデータの受信を待機する。一方、ステップS913の判定で空き領域が無いと判断した場合には(no)、処理をステップS909に分岐させる。ステップS909では、割込みI/F322に通知を発行し、CPU134に対して割込みを発生させて起動し、CPU134に制御を渡す。
次いで、図8のステップS803では、ログ取得部137が、割り込み要因に基づいてデータバッファ316から通信ログを取得すべきか否か判断する。すなわち、割り込み要因には、I/O制御部142で通信ログを作成したことを示す情報を含ませることができ、本実施形態では、これらの情報を使用して通信ログを取得すべきか否か判断することができる。この場合、通信ログが作成されたことを示すフラグ情報をログ作成部334がデータバッファ316に保存しておき、割り込みI/F322は、当該フラグ情報を参照することにより、通信ログが作成されたことを示す情報を含んだ割り込み要因を通知することができる。他の実施形態では、データバッファ316の通信ログが書込まれるべき領域に通信ログが書込まれているか否かを判断することにより、通信ログを取得すべきか否か判断することができる。
ステップS803の判定で通信ログを取得すべきであると判断された場合には(yes)、処理をステップS804に分岐させる。ステップS804では、ログ取得部137が、DMACを介してI/O制御部142のデータバッファ316から通信ログを取得して、当該通信ログを不揮発性記憶装置160に保存する。ステップS805では、ログ取得部137がI/O制御部142のデータバッファ316をクリアさせ、ステップS807で処理を終了する。一方、ステップS803の判定で通信ログを取得すべきでないと判断した場合には(no)、処理をステップS806に分岐させ、ステップS806でCPU134が受信データの内容に応じた処理を実行し、ステップS807で処理を終了する。
本実施形態では、I/O制御部142のログ作成部334がログ作成時刻を算出するが、他の実施形態では、管理ブロック130のログ取得部137がログ作成時刻を算出するように構成してもよい。この場合、CPU134は、省エネモード移行時に省エネモード移行時刻をデータバッファ316に書込まず、I/O制御部142のログ作成部334は、通信ログを作成すべきであると判断したときにカウンタ332を起動してカウントを開始させ、そのときの動作クロックレートをデータバッファ316に書込む。そして、ログ作成部334は、管理ブロック130のCPU134に制御を移行する直前に、カウンタ332のカウンタ値をデータバッファ316に書込む。管理ブロック130のCPU134が起動し、ログ取得部137がログを取得すべきと判断した場合、ログ取得部137は、データバッファ316に書込まれているカウンタ値および動作クロックレートと、現在時刻とを用いて、ログ作成時刻を算出する。例えば、CPU134に制御が移行する直前のカウンタ値が30,000、ログ取得時刻である現在時刻が9時00分00秒、動作クロックレートが1kHzであると仮定すると、カウンタ値(30,000)と動作クロックレート(1kHz)とを除算して得られた商を現在時刻(9時00分00秒)から減算した時刻である8時59分30秒が、ログ作成時刻となる。このように、ログ取得時刻を基準にして正確なログ作成時刻を算出することができる。
この実施形態では、通信ログが複数回に亘って作成される場合、ログ作成部334は、カウンタ始動時のカウンタ値および通信ログを作成するときのカウンタ値をデータバッファ316に保存することができる。例えば、2つの通信ログを作成して取得する場合、最初の通信ログのカウンタ値(0)、2回目の通信ログのカウンタ値(10,000)、および管理ブロック130のCPU134に制御が移行する直前のカウンタ値(30,000)がデータバッファ316に保存される。ログ作成部334は、データバッファ316に保存されたこれらのカウンタ値および動作クロックレートと、現在時刻を用いてログ作成時刻を算出することができる。例えば、現在時刻が9時00分00秒、動作クロックレートが1kHzであると仮定すると、上述した例では、最初の通信ログの作成時刻は8時59分30秒となり、2回目のログの作成時刻は8時59分40秒となる。したがって、通信ログが複数回に亘って作成される場合にも、正確な通信ログの作成時刻を算出することができる。
さらに、この実施形態では、クロック制御部312により動作クロックレートが変更された場合、ログ作成部334は、動作クロックレートが変更されたときのカウンタ値を通信ログとしてデータバッファ316に保存することができる。管理ブロック130のログ取得部137は、データバッファ316に保存されたカウンタ値および当該カウンタ値を取得したときの動作クロックレートと、ログ取得時刻である現在時刻を用いてログ作成時刻を算出する。これにより、動作クロックレートが変更された場合にも正確なログ作成時刻を算出することができる。
図10は、本実施形態の通信ログ取得情報設定画面1010を示す図である。通信ログ取得情報設定画面1010は、画像処理装置110の操作パネルに表示され、ユーザが通信ログの設定情報を指定するためのユーザインタフェースである。通信ログ取得情報設定画面1010は、通信ログの取得条件であるログ取得条件を設定するログ取得条件設定フィールド1020と、通信ログとして保存および取得すべき内容であるログ取得内容とを設定するログ取得内容設定フィールド1030とを含む。
ログ取得条件設定フィールド1020は、全ての通信ログを取得するよう指定するボタン1022と、通信処理がエラーとなったときの通信ログのみを取得するよう指定するボタン1024とを含む。ボタン1022は、I/O制御部142が実行した処理の全てのログを保存することを指定することができる。ボタン1024は、I/O制御部142が実行した処理のうち、エラーとなった処理のログのみを保存することを指定することができる。
ログ取得内容設定フィールド1030は、受信データの送信元である通信相手1032と、受信データの通信プロトコル1034と、外部と通信処理を開始した通信発生時間1036と、通信処理の状態を示す通信状態1038とを通信ログとして保存するか否かを指定することができる。通信相手1032は、受信データの送信元である通信相手を特定する情報であり、I/O制御部142のログ作成部334は、受信データに含まれるIPアドレスやMACアドレス等から判断することができる。通信プロトコル1034は、受信データの通信プロトコルであり、ログ作成部334は、受信データを構成するヘッダ長さやデータ形式、プロトコル番号、ポート番号等のプロトコル識別情報から通信プロトコルの種類を判断することができる。
通信発生時間1036は、I/O制御部142が外部からデータを受信したときの時刻であり、本実施形態では、ネットワークI/F318が、外部からデータを受信したときのカウンタ値をRAM等に保存しておき、ログ作成部334が、上述したログ作成時刻の算出方法と同様の方法により通信発生時刻を算出することができる。
通信状態1038は、通信処理に関連する処理、例えば、受信処理、復号処理、バッファメモリへの書込みまたは読込み処理、カウンタの計数処理等がエラーであるかまたは正常であるかを示す。本実施形態では、通信状態を通信ログとして保存するように設定されている場合、I/O制御部142内の各機能手段は、各機能手段が実行した処理の種類と処理結果とをRAM等に一時的に保存し、ログ作成部334は、バッファメモリに保存されている通信ログ取得情報の通信状態を参照して、通信状態を通信ログとして保存するか否か判断し、RAM等に保存された各機能手段が実行した処理の種類と処理結果とを通信ログとしてバッファメモリ316に保存する。
他の実施形態の通信ログ取得情報設定画面では、上述した通信ログ取得情報の他、受信データや復号データ等の通信データを通信ログとして保存するか否かを指定することができる。この実施形態では、ログ作成部334が、受信データや復号データが通信ログとしてバッファメモリ316に保存し、ログ取得部137が、当該受信データや復号データを通信ログとして記憶装置160に保存する。この場合、受信データや復号データは、ネットワークI/F318およびログ作成部334が重複してバッファメモリ316に保存するのではなく、メモリ資源節約のためにログ作成部334単独でバッファメモリ316に保存するのが好ましい。
本実施形態の上記機能は、アセンブラ、C++、Java(登録商標)などのレガシープログラミング言語および適宜オブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本発明のプログラムは、ハードディスク装置、CD−ROM、MO、フレキシブルディスク、EEPROM、EPROMなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
これまで本実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。