以下、図面を参照して本発明の実施形態について詳細に説明する。
<データ処理装置の概要>
図1は、本発明に係るデータ処理装置の一実施形態の構成例を示す図である。本実施形態のデータ処理装置3は、信号を送受信するためのバス(Bus;共有信号線)40を複数のデバイスで共有しつつ、一方のデバイスから他方のデバイスへデータを送受信することで所定のデータ処理を行なうものである。
バス40は、バスブリッジ部90を境に分離された外部バス40aと内部バス40bとでなる。何れも、アドレスバスとデータバスの双方を含む。なお、外部バス40aは、I/Oデバイス用のバスであるI/Oバスが典型例であり、また内部バス40bは、CPUと接続されるCPUバスやメモリ用のバスであるメモリバスが典型例である。
なお、図のように、バスブリッジ部90などの分離手段を設けて外部バス40aと内部バス40bとを分離することに限らず、システム構成によっては、バスブリッジ部90を設けることなく、外部バス40aと内部バス40bとを共通にする場合もある。また、バスブリッジ部90を設けて外部バス40aと内部バス40bとを分離する場合、独立した外部クロックOUT_CLKと内部クロックINT_CLKで外部バス40aと内部バス40bとを独立(分離)して駆動することもできるし、外部クロックOUT_CLKと内部クロックINT_CLKの双方を兼ねる共通したバスクロックBus_CLKで駆動することで各バス40a,40bに接続されたバスデバイスを同一の周波数で同期させて動作させることにより、実質的に外部バス40aと内部バス40bとを共通にすることもできる。
ここで、本実施形態のデータ処理装置3は、当該データ処理装置3の全体を制御するコントローラ部31と、当該データ処理装置3内の他のデバイスや図示しない外部のI/O(入出力)デバイスとの間のインタフェース機能をなすI/Oインタフェース部35と、節電機能に関わる信号線制御部の一例である節電制御部36とが、バス40を共有するように構成されている。I/Oインタフェース部35としては、1つに限らず複数が設けられてよい。また、データ処理装置3は、種々のクロック信号を発生する信号発生部50を備えている。
なお、本願明細書においては、データ線やアドレス線がバス40に接続される回路構成要素をバス構成要素(バスデバイスともいう)といい、バス40を含むバス構成要素でなる装置全体をバス回路と称する。バス構成要素としては、典型的には、外部のI/O装置との間に介在してインタフェース機能をなすI/Oインタフェース部35や、バスを分離するバスブリッジ部90などがあるが、これらに限るものではなく、本実施形態では節電制御部36もバス構成要素となり得る。
I/Oインタフェース部35には少なくとも出力クロックOUT_CLKの一例であるバスクロックI/OBus_CLKが信号発生部50から入力され、I/O装置(周辺装置)用の外部バス40aは、クロック同期で構成されるものとする。必要に応じてバスクロック以外にもインタフェースクロックI/F_CLKが信号発生部50から入力されてもよい。クロック同期型バス上で、種々の周辺装置あるいはその駆動回路などに対してバスマスタ転送方式によりデータ入出力を行なうことで、CPUが転送を制御するいわゆるプログラマブルI/O方式に比してCPUに対する負荷が小さくて済むという利点が得られる。
ここで、本実施形態のI/Oインタフェース部35は、少なくとも、節電中であっても、他のデバイス(典型例としては外部のI/O装置)からのデータを受信したときに、そのことを示すデータ受信信号S3を出力可能なものとする。このためには、詳細は後述するが、I/Oインタフェース部35単独で外部バス40aとデータ受信部とが分離された構造を採るか、もしくは、バスブリッジ部90などを利用して、外部バス40aと内部バス40bとを分離する構造を採る。
コントローラ部31は、たとえば、CPU(Central Processing Unit ;中央演算制御装置)31aや、ROM(Read Only Memory)およびDRAM(Dynamic RAM )を含むRAM(Random Access Memory)を有するメモリ部31bや、DMAC(Direct Memory Access Controller )31cを有する。CPU31aは、種々のクロック信号を生成するPLL(Phase Locked Loop ;位相同期)回路31dを内蔵している。コントローラ部31には、内部クロックINT_CLKの一例であって、コントローラ部31を動作させるためのCPUクロックCPU_CLKが信号発生部50から入力される。
なお、CPU31a自体は同期型バスに適応したインタフェースを持たない。このため、バスブリッジ部90は、CPU31aと同期型バス間の変換を行なう機能を持つ。
また、コントローラ部31は、バス40の使用要求を受けてバス要求を調停する、つまりバス40の使用権を制御する使用権制御部32を有する。使用権制御部32は、I/Oインタフェース部35からのデータ受信信号S3やその他のデバイス(節電制御部36やDMACを含む)からのデータ受信信号を受け付けると、複数のデバイスでの競合使用が起きないようにバス調停を行なって、何れか1つのデバイスのみにバス40の使用権を示すバス使用許可信号S4を送る。
なお、データ受信信号S3は、I/Oインタフェース部35が節電中に転送すべきデータを受け付けたことを示すものであればよく、たとえば、データ受信をトリガとしてデータ転送要求信号REQを生成してもよいし、データ受信をトリガとして送出データがあることを示すデータ有効信号DV(Data Valid)を生成してもよい。
本実施形態では、データ処理装置3が節電状態のときにI/Oインタフェース部35が外部のI/O装置からデータを受信した際の節電状態からの復帰とデータ転送の開始に着目して、図では、データ受信信号S3やバス使用許可信号S4を、I/Oインタフェース部35についてのみ示す。
また、コントローラ部31は、複数のデバイス間で使用される1つの資源(リソース)であるバス40を使用したいという要求が複数存在する場合に、それらを調停してそれぞれの要求を満たしていくアービトレーション(Arbitration )処理を行なうバス調停部(バスアービタ)や、バス40やその他の信号のインタフェース機能をなすブリッジ部などが設けられることもある。本構成例では、先にも説明したように、使用権制御部32が、バス調停部の機能を担当することになる。なお、DMAC31cがバス調停部の機能を担当してもよい。
また、コントローラ部31は、節電状態からの復帰処理を行なう節電解除処理部34を有する。節電解除処理部34は、先ず、節電モードからの復帰指示を示す節電解除要求信号(節電解除トリガ)S1を受け付ける節電解除トリガ検出部34aを有する。節電解除要求の一例としては、SMI(System Management Interrupt )割込みが用いられ、コントローラ部31には、節電解除要求信号S1としての割込信号SMI用の入力端子SMIIを有する。また、節電解除処理部34は、節電解除トリガ検出部34aが受信した節電解除要求に応答した節電解除通知信号S2を発する節電解除通知送信部34bを有する。節電解除通知信号S2としては、たとえばスリープ信号や節電信号(あるいは節電解除信号)が用いられ、コントローラ部31には、その節電解除通知信号S2用の出力端子S2Oを有する。使用権制御部32や節電解除処理部34は、たとえば、CPU31aが、それら機能を担当するように構成するのがよい。
節電制御部36は、装置が節電状態(節電モードへの移行段階から完全に復帰するまでを含む)のときには、複数のバスデバイスが共用するバス40を使用して、バスデバイスの一例である汎用I/F_LSI156が他のバスデバイスにデータを転送することを禁止する機能を持っている。たとえば、CPU110と協働して、もしくは単独で、データ処理装置3が節電状態のときにはバス40を使用不可能状態に設定しておき、節電状態のときに所定のデバイスからデータを受信した際には、データ処理装置3を節電状態から復帰させ、この後、データ処理装置3が節電状態から復帰したときにバス40を使用不可能状態から使用可能状態に設定する機能を有している。
使用不可能状態に設定する手法として、本実施形態では、外部クロックOUT_CLKを停止する手法や、外部クロックOUT_CLKを停止させない場合には外部バス40aをI/Oインタフェース部35以外のデバイスにて使用状態に設定する手法を採る。この点については、後で詳述する。
ここで、あるデバイスがバス40を使用中には、他のデバイスはそのバス40を使用できない。つまり、ある瞬間にバス40バスを使用できるのは1つのデバイスだけである。なお、“バス”は、コンピュータなどが利用する様々なデバイスの間で信号を送受信するために設けた信号線やそれに付随する回路の総称であり、データを格納する場所を示すアドレスバスと、実際に処理する情報を伝送するデータバスの何れをも含む。通常は16ビットや32ビットなど、一定幅のビット数の信号を並行して伝送する。また、バスの形態や目的により、幾つかに分類できるが、本実施形態においては、解決課題の観点から、たとえばCPU内でレジスタと演算器などを結ぶローカルバスは問題とせずに、CPU31aとメモリ部31bや各種インタフェースとを接続する、あるいはコンピュータに拡張カードを装着するための拡張バスなどの外部バス40aや内部バス40bに着目する。
節電制御部36は、I/Oデバイス(本例ではI/Oインタフェース部35)から発せられるデータ受信信号S3を監視するデータ転送要求監視部37と、データ処理装置3が節電状態のときにデータ転送要求監視部37がデータ受信信号S3を検知したときにデータ処理装置3を節電状態から復帰させる復帰処理部38とを有している。また、節電解除要求信号S1としての割込信号SMI用の出力端子SMIOと、節電解除通知信号S2用の入力端子S2Iを有する。
また、節電制御部36は、本実施形態の特徴部分として、節電時に不要なデバイスへのクロック入力を停止させるもしくは周波数を低下させるクロック制御部39を有している。クロック制御部39は、たとえば、外部クロックOUT_CLKや内部クロックINT_CLKを制御する。なお、I/Oインタフェース部35用のインタフェースクロックI/F_CLKについては、節電中も含めて定常状態を維持する。本構成において、クロック制御部39は、外部クロックOUT_CLK(特にI/Oバスクロック)や内部クロックINT_CLKをオン/オフするもしくはその周波数を変更する制御指示S5を信号発生部50に出す。
データ転送要求監視部37は、データ受信信号S3を検知すると、そのことを復帰処理部38に通知する。これを受けて、復帰処理部38は、節電解除トリガ検出部34aへの入力信号である節電解除要求信号S1(としての割込信号SMI)を出力端子SMIOから発する。つまり、節電制御部36は、外部のI/Oデバイスからのデータ転送要求に対応するデータ受信信号S3から節電解除トリガ検出部34aへの節電解除要求信号S1を作ることで、データ処理装置3の節電状態の解除を行なう。
また、復帰処理部38は、データ処理装置3が節電状態のときには、復帰処理部38単独で、もしくはI/Oインタフェース部35以外のデバイスと協働して、バス40(特に外部バス40a)をI/Oインタフェース部35が使用できないように設定する。また、復帰処理部38は、節電解除通知信号S2をコントローラ部31から入力端子S2Iで受け取ると、復帰処理部38単独で、もしくはI/Oインタフェース部35以外のデバイスと協働して、I/Oインタフェース部35がバス40を使用できる状態に設定する。
<データ処理装置の節電処理の概要>
図2は、図1に示したデータ処理装置3における節電処理手順の概要を示したフローチャートである。なおここでは、節電制御中(節電状態への移行から通常状態への復帰までを含む)における、I/Oインタフェース部35に対する外部バス40aの使用可否の設定を、復帰処理部38が行なうものとして説明する。
通常状態中に所定の条件にてデータ処理装置3が節電モードへの移行指示がなされると、節電モードからの復帰に必要な最低限の機能部分やデータ破壊防止用の回路(たとえばDRAMのリフレッシュ回路など)など必要最低限の部分のみを動作させ、コントローラ部31だけでなく復帰処理部38を含むデータ処理装置3の大部分が節電状態に入る(S1)。
節電モードからの復帰に必要な最低限の機能部分としては、I/Oインタフェース部35における外部機器からのデータを受け付ける機能に関わる機能部分(データ受信部やデータ受信信号S3を生成する機能部分)や、節電制御部36や、節電解除トリガ検出部34aなどである。
この節電モードのとき、クロック制御部39は、コントローラ部31やI/Oインタフェース部35に供給されるクロック信号の停止もしくは周波数低下の制御指示を出すとともに、節電モード中はI/Oインタフェース部35がバス40を使用してデータ転送ができないようにする(S2)。たとえば、I/Oバス40b用のバスクロック供給を停止させることでDRAMなどへのデータ転送が行なわれないようにし(つまり節電中のデータ転送を禁止し)、CPU31aが節電状態に入った後にはCPU31d内部のPLL回路31dを停止させるとともにCPUクロック供給を停止させる。ただし、I/Oインタフェース部35がインタフェースクロックを使用する場合には、節電状態でもインタフェースクロック供給は継続させておく。こうすることで、データ処理装置3は、最も消費電力の少ない節電状態となる。
なお、節電制御部36は、節電中にクロック信号の周波数を低下させる場合、所定の手法によりバス40を使用状態として、他のデバイスがバス40を使用してデータ転送を行なうことができないように設定する。たとえば、節電制御部36の復帰処理部38は、データ処理装置3が節電中には、バスマスタデバイスからターゲットデバイスへのデータアクセスをバス40にて行なうことで(つまりバスアクセスにて)バス40を使用状態として、他のデバイスがバス40を使用してデータ転送を行なうことができないように設定してもよい。
復帰処理部38は、I/Oインタフェース部35が外部のI/O装置からデータ転送を要求されたことを示すデータ受信信号S3を、データ転送要求監視部37が検知するまで待機する(S5−NO)。
I/Oインタフェース部35は、データ処理装置3が節電中に、外部のI/O装置からデータを受信すると(S3−YES)、データ受信信号S3をコントローラ部31の使用権制御部32に送る(S4)。これを受けて、コントローラ部31の使用権制御部32は、I/Oインタフェース部35に対して、バス使用許可信号S4を送ることでバス40の使用権を与える(S4)。I/Oインタフェース部35は、バス40の使用権を与えられても、まだバス40を使用してのデータ転送を禁止する状態に設定されているので、バス40を使用可能とされる(禁止状態が解除される)まではデータ転送ができない(S10−NO)。
復帰処理部38は、データ処理装置3が節電状態にあるときに、I/Oインタフェース部35が外部のI/O装置からデータ転送を要求されると(S5−YES)、そのことを示すデータ転送要求監視部37が検知したデータ受信信号S3に基づき、先ず、クロック制御部39にてCPU31a内部のPLL回路31dを起動させる(S6)。PLL回路が安定になる頃、復帰処理部38は、コントローラ部31の節電解除トリガ検出部34aに節電解除要求信号S1を送る(S7)。コントローラ部31は、節電解除トリガ検出部34aにて節電解除要求信号S1を受け取ると、節電制御部36を節電状態から復帰させ通常状態に戻した後に、節電解除通知送信部34bにて節電解除通知信号S2を復帰処理部38に送る(S8)。
復帰処理部38は、節電解除要求信号S1に応答した節電解除通知信号S2を節電解除通知送信部34bから受け取ってから、節電制御部36を節電状態から復帰させ通常状態に戻す。また、節電状態の解除が完全に完了すると、クロック制御部39はI/Oバス40b用のバスクロックやCPUクロックを通常の供給状態へと戻させる制御指示を信号発生部50に発する(S9)。これを受けて、信号発生部50は、I/Oバス40b用のバスクロックやCPUクロックを通常状態へと戻す(S10)。なお、節電中にバス40を使用状態に設定したときには、復帰処理部38は、節電状態の解除が完全に完了すると、バス40を使用状態から未使用状態に設定する(バス40の使用状態を解除する)ことで、I/Oインタフェース部35にバス40の使用許可を与える。
つまり、節電制御部36は、I/Oインタフェース部35(つまり外部のI/Oデバイス)とメモリ部もしくはI/Oインタフェース部35やバス40を介したI/Oデバイス間でデータ転送を行なう前に、データ処理装置3のデータ転送に必要な箇所を節電状態から所定の順で段階的に復帰させる。
I/Oインタフェース部35は、既にバス40の使用権を与えられており、クロック制御部39によってバスクロックやCPUクロックが通常状態に戻され、バス40を使用してのデータ転送が可能になると(S10−YES)、コントローラ部31のメモリなどへ、外部のI/O装置から受信したデータの転送を直ちに開始する(S11)。これにより、データ処理装置3は、通常の動作状態へと完全に復帰する。
以上のステップを踏むことで、データ処理装置3は非常に深い節電状態へと移行することが可能であると同時に、節電中に意図しないデータ転送がバス40上で行なわれることを防ぐことができる。結果として、データ処理装置3を安全に節電状態に入れ、また、必要に応じて安全に復帰させた後にデータ転送を開始することができる。
<データ処理システムの全体構成;第1実施形態>
図3および図4は、本発明に係る画像形成装置を備えたデータ処理システムの第1実施形態の構成例を示す図である。図4は、その基本構成を示すものであり、図4は、変形例を説明する図である。
この第1実施形態のデータ処理システム1は、本発明に係るデータ処理装置3を画像処理装置として備えた画像形成装置の一実施形態として、画像形成部300を有するプリンタの構成にしている。
図3では、CPUやメモリを利用してソフトウエア的に画像形成処理を行なう機能を持つ画像形成装置2を構成する、すなわちパーソナルコンピュータなどのコンピュータ(電子計算機)の機能を利用して画像形成処理をソフトウエア的に実現する場合のハードウエア構成の一例を示している。
ここで、第1実施形態のデータ処理装置3は、汎用I/F_LSI156用のクロック信号であるI/Oバスクロックが停止されている状態において、複数のデバイスで共有する信号線(図1のバス40に相当)を介したデータ転送用のデータを受信すると、送信データの有効性を示すデータ有効信号DVが出力される形態の汎用I/F_LSI156を使用することを前提とする。
図示するように、本実施形態のデータ処理システム1は、データ処理装置3を含みプリンタとして構成された画像形成装置2と、他の外部装置5とが通信ネットワーク9により接続されて構成されている。外部装置5としては、たとえば、パーソナルコンピュータ(PC;Personal Computer)やその他の電子計算機で構成されたホスト装置が用いられる。
画像形成装置2は、内部コントローラ部100を主要部とするデータ処理装置3と、処理済みの画像を所定の出力媒体(たとえば印刷用紙)に出力する画像形成部300とを備えている。
図示を割愛するが、たとえば、スキャナ装置などの画像読取部をも設けることで、画像形成装置2を複写装置として構成することもできる。また、図示を割愛するが、カスタマーインタフェースをなす機能部としての指示入力部と、操作時のガイダンス画面や処理結果などの所定の情報をカスタマーに提示する表示出力部とが設けられる。
内部コントローラ部100は、パーソナルコンピュータなどの電子計算機と同様の構成にしている。画像形成部300に、画像形成処理を行なわせるに当たって、電子計算機の仕組みを利用することで、その機能を実現するプログラムコードに基づき電子計算機を用いてソフトウエア的に画像形成処理機能を実現することができるようになる。ソフトウエアにより画像形成処理機能を実行させる仕組みとすることで、ハードウエアの変更を伴うことなく、処理手順などを容易に変更できる利点を享受できるようになる。
電子計算機に一連の画像形成処理機能をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ(組込マイコンなど)、あるいは、CPU、論理回路、記憶装置などの機能を1つのチップ上に搭載して所望のシステムを実現するSOC(System On a Chip:システムオンチップ)、または、各種のプログラムをインストールすることで各種の機能を実行することが可能な汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
記録媒体は、コンピュータのハードウエア資源に備えられている読取装置に対して、プログラムの記述内容に応じて、磁気、光、電気などのエネルギの変化状態を引き起こして、それに対応する信号の形式で、読取装置にプログラムの記述内容を伝達できるものである。
たとえば、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクFDを含む)、光ディスク(CD−ROM(Compact Disc-Read Only Memory )、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc )を含む)、または半導体メモリなどよりなるパッケージメディア(可搬型の記憶媒体)により構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROMやハードディスクなどで構成されてもよい。
また、ソフトウエアを構成するプログラムは、記録媒体を介して提供されることに限らず、有線あるいは無線などの通信網を介して提供されてもよい。
たとえば、画像形成処理機能を実現するソフトウエアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、ハードウエア処理回路にて構成する場合と同様の効果は達成される。この場合、記憶媒体から読み出されたプログラムコード自体が画像形成処理機能を実現する。
また、コンピュータが読み出したプログラムコードを実行することで、画像形成処理を行なう機能が実現されるだけでなく、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(Operating Systems ;基本ソフト)などが実際の処理の一部または全部を行ない、その処理により画像形成処理を行なう機能が実現される場合であってもよい。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によって画像形成処理を行なう機能が実現される場合であってもよい。
なお、画像形成処理を行なう機能を実現するプログラムコードを記述したファイルとしてプログラムが提供されるが、この場合、一括のプログラムファイルとして提供されることに限らず、コンピュータで構成されるシステムのハードウエア構成に応じて、個別のプログラムモジュールとして提供されてもよい。
内部コントローラ部100は、演算制御機能の中心を司るものであってシステム全体の制御を行なうCPU110と、データを記憶するメインメモリ部120と、メインメモリ部120からCPU110へのデータの読み込みを高速化するためのキャッシュメモリ(Cache Memory)130とを備えている。CPU110は、PLL回路112を内蔵している。
また内部コントローラ部100は、バス調停制御部140と、各機能部との間のインタフェース機能をなすインタフェース部(I/F部)150と、本実施形態の特徴部分である節電制御処理を行なう節電制御部160とを有する。
図1との対応では、CPU110、メインメモリ部120やROM128、キャッシュメモリ130、およびバス調停制御部140とで、コントローラ部31が構成される。また、インタフェース部150がI/Oインタフェース部35に対応する。また、節電制御部160が、節電制御部36に対応する。
なお、メモリバス158上には、記憶部として、RAM以外にも、制御プログラムやパラメータなどを格納する読出専用の不揮発性の記憶部であるROM128が設けられている。
メインメモリ部120としては、随時書込みおよび読出しが可能であるとともに揮発性の記憶部の一例であるRAMを用いている。特に本実施形態では、RAMの一態様であるDRAM126を用いている。
メインメモリ部120は、プログラム制御変数や各種処理のためのデータなどを格納する。また、メインメモリ部120は、所定のアプリケーションプログラムによって取得した電子ドキュメント(文字データのみに限らず画像データを含んでよい)や自装置で取得した画像データ、さらには外部から取得した電子データなどを一時的に格納する領域を含んでいる。
上記において“揮発性の記憶部”とは、データ処理装置3の電源がオフされた場合には、記憶内容を消滅してしまう形態の記憶部を意味する。一方、“不揮発性の記憶部”とは、データ処理装置3のメイン電源がオフされた場合でも、記憶内容を保持し続ける形態の記憶部を意味する。記憶内容を保持し続けることができるものであればよく、半導体製のメモリ素子自体が不揮発性を有するものに限らず、バックアップ電源を備えることで、揮発性のメモリ素子を“不揮発性”を呈するように構成するものであってもよい。また、半導体製のメモリ素子により構成することに限らず、磁気ディスクや光ディスクなどの媒体を利用して構成してもよい。たとえば、ハードディスク装置を不揮発性の記憶部として利用できる。
バス調停制御部140は、バス調停回路を用いてバス要求を調停するアーキテクチャを採用するために用いられており、一例として、バス調停を行なう機能を持ちDMA転送を制御する制御部としてのDMAC143と、DMAC143とCPU110やメインメモリ部120などとの間に介在してデータの受け渡しを中継するバスブリッジ部144とを有している。
メインメモリ部120やROM128はメモリバス158にてバスブリッジ部144に接続され、インタフェース部150や節電制御部160は、I/Oバス159にてバスブリッジ部144に接続されている。メモリバス158およびI/Oバス159は、アドレスバスとデータバスとを含む。
なお、DMAC143は、本実施形態のように、バスブリッジ部144の外部に独立した回路として設ける場合もあるし、図示を割愛するが、バスブリッジ部144に内臓される場合もある。
また、本実施形態では、CPU110およびメインメモリ部120の双方に節電機能が設けられるものとするが、これに限定されず、たとえば、CPU110のみに節電機能があってもよい。メインメモリ部120はメモリコントローラを含むメモリ装置を広く指し、メモリコントローラに節電機能を設けた場合にも、ここでいう節電機能付きのメモリに含まれる。なお、メモリコントローラは、メインメモリ部120内にあることに限らず、たとえばバスブリッジ部144に配されることもある。
インタフェース部150としては、画像形成部300などの画像機器とのインタフェースを司るビデオI/F部152と、汎用I/F_LSI156とを備えている。図示した例では、3つの汎用I/F_LSI156a,156b,156cに1台のホスト装置5が接続されている状態を示しているが、その台数は1台に限らず、2台以上であってもよい。また、インタフェース部150内には、図示した他に、外部のI/O装置とのインタフェースを司るI/O_ASIC(特定用途向けIC)を設けてもよい(後述する図5や図6を参照)。
このような構成において、プリンタとして構成された画像形成装置2は、スタンドアローンのホスト装置5に汎用I/F_LSI156を介して接続され、ホスト装置5から印刷ジョブを受け付ける。
汎用I/F_LSI156は、I/O_ASICが関知しない外部I/O装置とのインタフェースを司るもので、節電制御部160が存在しない場合において、これをI/Oバス159に直接接続した場合には、I/O_ASICを利用した節電復帰機能を有効に活用することができないので、結果的には、汎用I/F_LSI156を介してのデータ受信ができるように、CPU110を浅い節電モードにしか入れることしかできない。この問題を解決するために、本実施形態では、節電制御部160を設けている。
節電制御部160は、図1に示したデータ転送要求監視部37および復帰処理部38の機能を持つ第1節電制御部162と、図1に示したクロック制御部39の機能を持つ第2節電制御部164とを有して構成されている。
第2節電制御部164は、バスクロックや汎用I/F_LSI156用のクロックをオン/オフ制御するためのクロック制御信号CCNT1,CCNT2を発するクロック制御信号発生部165と、クロック制御信号CCNT1,CCNT2に基づき各部へのクロック供給を切り替えるクロック切替部166と、ORゲート167を有している。クロック切替部166には、図示を割愛した基準クロック発生器からの基準クロックCLK0がクロック入端子CLKに供給されるようになっている。
汎用I/F_LSI156a,156b,156cからは、データ受信信号S3相当のデータ受信信号DVa,DVb,DVcがORゲート167に供給され、その論理和出力がクロック制御信号発生部165のデータ受信信号入力端子DVに入力されるようになっている。
クロック切替部166は、一方の入力端子にクロック制御信号CCNT1が入力され他方の入力端子に図示を割愛した基準クロック発生器からの基準クロックCLK0が供給されるANDゲート402と、一方の入力端子にクロック制御信号CCNT2が入力され他方の入力端子に基準クロックCLK0が供給されるANDゲート404とを有する。ANDゲート402の論理積出力であるクロック信号CLK1は内部コントローラ部100のクロック入力端子CLKに、PLL回路112用などのクロック信号(以下CPUクロックともいう)として供給される。図示を割愛するが、ビデオI/F部152にも、バスクロックが図示を割愛した基準クロック発生器から常時供給されるようになっている。
また、クロック切替部166は、ANDゲート402の論理積出力を各汎用I/F_LSI156a,156b,156cに分配して供給するバッファ406を有する。このバッファ406は、ANDゲート404の論理積出力である汎用I/F_LSI156用のクロック信号CLK2を、分配時に遅延差が生じないように供給するために設けられたゼロディレイバッファである。本例では、遅延差がないバッファアンプを3つ内蔵しており、各バッファアンプ406(それぞれに参照子a,b,cを付して示す)から出力されるクロック信号(I/Oバスクロック)CLK2a,CLK2b,CLK2cは、対応する汎用I/F_LSI156a,156b,156cのクロック入力端子CLKに入力される。クロック信号CLK2は、周波数および位相が、クロック信号CLK1の周波数および位相と同じであってよい。
なお、図4(A)に示すように、ANDゲート402は、クロック制御信号発生部165からのクロック制御信号CCNT1の元でCPUクロックCPU_CLKのCPU110への供給をオン/オフ制御する第1クロックバッファ部622として機能する。また、ANDゲート404およびバッファ406は、クロック制御信号発生部165からのクロック制御信号CCNT2の元でバスクロックBus_CLKの汎用I/F_LSI156への供給をオン/オフ制御する第2クロックバッファ部624として機能する。なお、各クロックバッファ部622,624は、バッファ622a,624aそのものと、スイッチ622b,624bとで構成されていると見ることができる。
なお、第1節電制御部162と第2節電制御部164のクロック制御信号発生部165とで、パワーマネージメント制御部168を構成してもよい。全体としては、I/Oバス159は、クロック同期のバスで構成され、パワーマネージメント制御部168によってI/Oバスクロックのオン/オフを制御するようにする。
また、データ処理装置3は、CPU110と、DRAM126を有するメインメモリ部120およびROM128とが、メモリバス158上に接続されている。また、インタフェース部150と節電制御部160とがI/Oバス159上に接続されている。I/Oバス159は、バスブリッジ部144を介してCPU110やDMAC143などに接続される。なお、CPU110を介さないDMA転送のためには、メモリバス158もバスブリッジ部144を介してCPU110に接続されるようにするのがよい。
また、CPU110と節電制御部160の第1節電制御部162との間には、CPU110が節電中であることを示すスリープ信号NSLEEPと割込信号NSMIと、PLL回路112の状態を設定する制御信号(PLL_CFG信号)の受け渡しがある。この構成では、CPU110は節電中であることを示すNSLEEP信号を節電制御部160に出力し、CPU110は節電制御部160からのSMI割込みによって節電状態から復帰するものとする。また、節電制御部160からのPLL_CFG信号によってCPU110内部のPLL回路112の状態が切り替えられる。
また、DMAC143、インタフェース部150、および節電制御部160の間にデータの要求信号DREQの受け渡しがある。また、DMAC143とインタフェース部150との間にデータ転送の許可信号NDACKの受け渡しがある。この構成では、通常の使用において、DMAC143は要求信号DREQがアサートされると、メモリバス158およびI/Oバス159の調停を行なう。DMAC143は、各バス158,159の使用権を得ると、予め設定されたアドレスをアドレスバスに出力すると同時に、許可信号NDACKをアサートして、インタフェース部150からデータバスに対してデータを出力させる。この際、DMAC143は、インタフェース部150からの出力データがメインメモリ部120のDRAM126に書き込まれるよう、DRAM制御信号をコントロールすることで、CPU110を介さないDMA転送を実現する。
<節電中にデータ転送されることの問題説明>
図5および図6は、節電中にデータ転送されることの問題を説明する図である。ここで、図5は、節電制御部160を設けない場合における節電機能の問題点を説明する図である。また、図6は、図5における節電機能の問題を解決する一手法を説明する図である。
なお、ここでは、データ処理装置3は、複数のデバイスで共有する信号線(図1のバス40に相当)として、PCI(Peripheral Component Interconnect )バスを利用した構成で説明する。ただし、これは一例であって、データ処理装置3は、PCIバス以外の共有信号線で構成されていてもよい。
図3に示したデータ処理装置3において、消費電力を削減する一手法として、節電制御部160を設けることなく、図5(A)に示すように、CPU110やメインメモリ部120内のDRAM126をスリープモードやセルフリフレッシュモードなどといった回路素子に組み込まれた省エネ機能を使用する方法を採る。これは、省電力化の手法として一般的に知られた手法である。
一方、図5(B)に示すように、CPU110をスリープモードなどの深い節電状態(最も省エネ効果が高い状態)に入れた場合には、データバスが動作することだけでは節電を解除する条件とはならないため、結果として、メインメモリ部120内のDRAM122,124のセルフリフレッシュを解除せずにデータ書込みを実施してしまうことが起こり得る。この場合、データが破棄される現象や、キャッシュメモリ130がコヒーレンシ(一貫性)を維持するためのバススヌープ(Bus Snoop )を行なわないために、キャッシュメモリ130内データとDRAM122,124内のデータとの間に不整合が生じる現象が発生する。
この問題を回避する一手法として、図6(A)に示すように、外部I/O装置とのインタフェースを司るI/O_ASIC154を設けることが考えられる。これは、外部I/O装置からデータを受信した際、データ転送を開始する前に割込みを発生する機能は、汎用にI/F部品にはないため、ASICなどのカスタマイズ部品を設計する必要があるためである。なお、このような仕組みにする際には、たとえば、特開2001−180083号公報や特開2001−337838号公報(特に前者)に記載の仕組みを利用するとよい。
図6(B)は、この場合の節電モード移行と復帰動作の処理手順の一例を示している。図示するように、通常モード時にはCPU110をフルパワーにしておき、節電モード設定がされると、CPU110をスリープ状態とする節電状態に移行するとともに、I/O_ASIC154は節電モードに移行する。
I/O_ASIC154は、節電モード中に、ホスト装置5aからデータを受信したらCPU110にSMI割込みを掛け、CPU110をスリープモードからフルパワー状態に復帰させ、I/O_ASIC154との間で節電復帰処理を行なう。
これにより、I/O_ASIC154が、通常モードになると、メインメモリ部120(DRAM122,124)との間でのDMA(Direct Memory Access)転送を開始可能にする。これに応じてホスト装置5aはI/O_ASIC154を介してI/Oバス159にデータを転送することでCPU110へのデータ転送が可能になる。
しかしながら、パーソナルコンピュータのインターフェイスに見られる通り、新しいインターフェイスが短期間に出てくるために、I/O_ASIC154などのカスタマイズ部品の作り替えが短期間に発生してしまうことがある。この場合、カスタマイズ部品の作り替えのための投資額が嵩むという問題がある。
一方で、投資額を抑制した場合には、I/O_ASIC154を使用しなければよいのであるが、その場合、汎用のI/F部品を使用せざるを得ず、先に指摘した通り、汎用のI/F部品には、データを受信した際、データ転送を開始する前に割込みを発生する機能を持たない。このため、結果的には、汎用のI/F部品を使用した場合でも、CPU110が節電状態にあるときに外部I/O装置を始めとする他のデバイスから確実にデータを受信できるように、あまり深い節電状態に入れることができない、という問題が生じる。
この問題を回避するべく、本実施形態では、図3に示したように、節電制御部160を設けている。この節電制御部160は、CPU110への割込信号NSMIの受け渡しに介在して節電状態からの復帰に寄与するだけでなく、汎用I/F_LSI156を介して外部装置5からデータを受信した際の節電状態からの復帰に寄与する点に特徴を有している。
特に、本実施形態の節電制御部160は、節電状態にあるときにはI/Oバス159へのバスクロックを停止するとともに、CPU110へのクロック供給を停止させることで深い節電状態に設定するし、また汎用I/F_LSI156が外部装置5からデータを受信すると、CPU110へのクロック供給を再開するなど節電状態からの復帰動作を開始し、完全に復帰したときに、I/Oバス159へバスクロックを供給することで、汎用I/F_LSI156を介し、データ処理装置3内部のバスデバイスと外部装置5との間でのデータ転送を許可する点に特徴を有する。以下、この点を中心に、節電制御部160の機能について詳細に説明する。
<節電制御部の機能説明>
節電制御部160は、データ処理装置3が節電状態にあるときに、外部のI/Oデバイスがデータ転送要求を出した際、節電状態を完全に解除してからデータ転送を開始可能にすることで、汎用のI/F部品を用いても、深い節電状態から確実かつ安全に復帰し、かつその深い節電状態中にいきなりデータ転送されてしまうことを防止する。こうすることで、汎用部品を使用して、新しい機能を実現しつつカスタマイズ部品を使用した時と遜色ない低消費電力を実現しつつ、確実かつ安全な復帰を実現できるようにする。
具体的には、汎用部品が有するDMA機能用の信号線を使用してデータ転送の開始タイミングを検出して節電の復帰を行なう。特に、先にも述べたが、節電状態にあるときにはI/Oバス159用のバスクロックを停止させることで、節電状態中にいきなりデータ転送されてしまうことを防止する。
このため、内部コントローラ部100には、入力データの処理などを行なうCPU110と、データの蓄積などを担うメインメモリ部120と、データを外部と通信する機能を有するI/Oインタフェース回路(I/Oデバイス)としてのインタフェース部150を構成要素として備える。
そして、CPU110やメインメモリ部120などに節電機能を設けるとともに、節電制御部160にてその節電状態を制御するようにし、節電中にインタフェース部150が外部機器からデータを受信すると、インタフェース部150とメインメモリ部120間あるいはインタフェース部150内の各I/Oデバイス間でデータ転送を行なう前に、節電制御部160は、データ転送に必要な箇所の節電状態を解除する。
節電の解除は、典型的には、節電制御部160に設けられる節電解除トリガ検出機能への信号入力によって行なう。この節電解除トリガ検出機能への入力信号は、たとえばI/Oデバイスのデータ転送要求信号から作成する。また、節電制御部160は、節電中に汎用I/F_LSI156がデータ転送要求(本例では要求信号DREQ)を出した際、節電状態が完全に解除されたことの通知をCPU110から受けてから汎用I/F_LSI156にデータ転送処理を許可するようにする。
一例としては、本実施形態では、先にも述べたが、汎用I/F_LSI156とDMAC143との間の要求信号DREQを節電制御部160にて監視することで節電解除トリガ検出機能を実現するとともに、節電状態にあるときにはバスクロックを停止させておき、節電状態から完全に復帰したときにバスクロックを回復させることで、汎用I/F_LSI156によるI/Oバス159の使用を可能にする。節電解除通知に応じてバスクロックの供給を制御して、汎用I/F_LSI156にデータ転送を許諾するようにし、これにより、確実かつ安全な節電状態からの復帰を実現する。
こうすることで、インタフェース部150としては、I/O_ASIC154に限らず、通常の汎用のものとしての汎用I/F_LSI156を使用することで、新しい機能を実現できるようになる。それでいて、カスタマイズ部品としてのI/O_ASIC154を使用した時と遜色ない低消費電力を実現するとともに、節電状態(深い節電状態でも問題ない)を確実に解除してから、データ転送を安全に開始することができるようになる。
なお、図3に示した構成における内部コントローラ部100は、図6に示したI/O_ASIC154を備えていないが、このI/O_ASIC154を設けることで、CPU110からの節電移行指示に伴って節電状態へ移行し、データ転送要求を受け取ったときにCPU110に節電解除要求を行なうための割込要求(割込信号NSMI)を送り、CPU110から節電解除通知を受け、これに応じてデータ転送を開始する機能も備えるようにすることができる。
<システムの状態と信号の相関関係>
図7は、図3に示した構成におけるシステムの状態と信号の相関関係を示す図である。基本的には、システムが通常の状態においては、汎用I/F_LSI156がデータを受信していなければ、汎用I/F_LSI156およびバス158,159はともにアイドル(Idle)状態にある。なお、アイドル状態とは、全てのバスマスタがバスアクセスを要求しない期間である。また、汎用I/F_LSI156は、通常状態においてデータを受信した場合には、I/Oバス159の使用権の獲得要求および許可を得た後に、I/Oバス159を使用してデータ転送を行なう。次に、システムが節電移行処理に入ると、システム全体を節電状態に入れるための各種処理が行なわれる。
たとえば、通常状態においてデータ転送がなければ、インタフェース部150およびバス158,159はともにアイドル(Idle)状態にある。また、このときには、パワーマネージメント制御部168は、I/Oバス159用のバスクロック(I/Oバスクロック)がインタフェース部150に供給されたままとなるように、クロック制御信号CCNT1,CCNT2をともにアサート(Hレベルに)しておく。これは、通常状態では、何時でも即時にデータ転送を開始できるようにするためである。
<節電状態への移行>
この後、システム全体を節電モードへ移行させる場合には、割込信号NSMI(CPU110を節電状態から復帰させるための割込み入力信号線)のみを有効にする、などシステム全体を節電状態に入れるための処理を行なう。
この処理においては、先ずパワーマネージメント制御部168は、節電制御部160内に設けられた図示しないパワーセーブレジスタに節電モードへの移行を指示する値を書き込み、節電制御部160の状態をプリパワーセーブモード1に変更する(t10)。この後、クロック制御信号CCNT2をネゲート(Lレベルに)することで、ANDゲート404やバッファ406を介した汎用I/F_LSI156へのI/Oバスクロック供給を停止させることで汎用I/F_LSI156を通常状態から停止状態に移行させることで、汎用I/F_LSI156を介してDRAM126などへのデータ転送が行なわれないようにする(t12)。
また、パワーマネージメント制御部168は、I/Oバスクロックを停止させた後には、節電制御部160の状態をプリパワーセーブモード2に変更し(t14)、CPU110を節電状態へと変更させる(t16)。この頃には、DRAM126は、保持データの消失を防止するべく、セルフリフレッシュモードに移行する。
パワーマネージメント制御部168は、CPU110が節電状態に入ったことをスリープ信号NSLEEPを監視して検知すると、節電制御部160の状態をプリパワーセーブモード3に変更し(t20)、PLL_CFG信号を制御してPLL回路112を動作モードからバイパスモードに移行させることで(t22)、CPU110内部のPLL回路112の動作を停止させる(t24)。
パワーマネージメント制御部168は、PLL回路112の動作が停止する頃に節電制御部160の状態をパワーセーブモードに変更し(t26)、クロック制御信号CCNT1をネゲート(Lレベルに)することで、ANDゲート402を介したPLL回路112へのCPUクロック供給やCPUクロックに基づくDRAM126へのメモリクロックなどを停止させる(t28)。これにより、データ処理装置3は、最も消費電力の少ない節電状態(深い節電状態)となる。
<節電状態からの復帰>
この節電モード状態において、汎用I/F_LSI156がデータを受信すると、I/Oバス159の使用権を獲得するために要求信号をアサートするし、DMAC143は、この要求信号に対して予め設定されたアービトレーションアルゴリズムに従ってバス使用権を与える。
たとえば、汎用I/F_LSI156が節電モード中にデータを受信すると(t30)、データ処理装置3は節電復帰処理を行なう。たとえば、送出データがあることを示すデータ有効信号DVの出力レベルがLレベルからHレベルに変わり(t32)、パワーマネージメント制御部168は、このデータ有効信号DVの変化をトリガにして、データ処理装置3の全体を節電状態から通常状態に復帰させる。
パワーマネージメント制御部168は、節電復帰処理においては先ず、データ有効信号DVがLレベルからHレベルに変わると(t32)、節電制御部160の状態をウェークアップモード1に変更し(t34)、CPU110のPLL回路112を動作モード設定に変更すると同時にCPU110などへのクロック入力を再開する。
たとえば、パワーマネージメント制御部168は、PLL_CFG信号を制御してPLL回路112をバイパスモードから動作モードに移行させることで(t36)、CPU110内部のPLL回路112の動作を開始させる。これにより、CPU110は先ず、PLL回路112がリロック動作を開始する(t38)。また、このとき同時に、パワーマネージメント制御部168は、クロック制御信号CCNT1をアサート(Hレベルに)することで、ANDゲート402を介したPLL回路112へのCPUクロック供給やCPUクロックに基づくDRAM126へのメモリクロックなどの供給を再開させる(t38)。
また、パワーマネージメント制御部168は、PLL回路112の動作が安定するまで待った後、CPU110に対してSMI割込みを発生させてCPU110を節電状態から復帰させる。CPU110は、節電から復帰すると、スリープ信号NSLEEPをネゲートする。これを受けて、パワーマネージメント制御部168は、I/Oバスクロックを汎用I/F_LSI156に供給することでI/Oバス159を通常状態に戻す。
たとえば、PLL回路112の動作が安定してCPU110がリロック動作状態からPLL回路112が動作した状態での節電状態に移行する頃に、パワーマネージメント制御部168は、節電制御部160の状態をウェークアップモード2に変更し(t40)、CPU110に対して節電復帰を催すために、割込信号NSMIをアサート(Lレベルに)する(t42)。
CPU110は、割込信号NSMIがアサートされると(t44)、節電状態から通常状態に復帰し、スリープ信号NSLEEPをネゲートすると同時に、節電復帰のためのスイッチ(SW;SWitch )処理を行なう(t46)。このCPU110が節電状態から復帰するときには、ソフトウエアおよびハードウエアを通常状態に戻すための(つまり節電復帰のための)処理を行なう。本例でも、CPU110へのSMI割込みを発生させてSMIハンドラ内でソフトウエア的な節電復帰処理を行なう。またこの頃には、DRAM126は、保持データの消失を防止するためのセルフリフレッシュモードから通常状態に戻る。また、DMAC143は、汎用I/F_LSI156に、I/Oバス159の使用権を与えておく。
SMIハンドラ内でのソフトウエア的な節電復帰処理が完了すると、パワーマネージメント制御部168は、節電制御部160の状態をウェークアップモード3に変更し(t50)、割込信号NSMIをネゲート(Hレベルに)する(t52)。また、パワーマネージメント制御部168は、割込信号NSMIをネゲートする(t52)のとほぼ同時に、クロック制御信号CCNT2をアサート(Hレベルに)する(t54)。
これにより、ANDゲート404やバッファ406を介した汎用I/F_LSI156へのI/Oバスクロック供給が開始され、汎用I/F_LSI156が停止状態から通常状態に移行する。この結果、汎用I/F_LSI156を介してDRAM126などへのデータ転送が開始され、データ処理装置3の全体が通常の動作状態へと復帰する(t58)。受信データがなくデータ有効信号DVがLレベルに遷移すると、汎用I/O_LSI156はデータ転送を終了させアイドル状態に移行する(t59)。
このような処理手順を踏むことで、節電制御において、節電状態から完全に復帰した後にデータ転送を安全に開始するようにすることができ、システム状態が節電中に汎用I/O(本例では汎用I/F_LSI156)によりバス転送が行なわれることを防ぐことができる。結果として、システムを安全に節電状態に入れ、また必要に応じて安全に復帰させることができる。
つまり、汎用I/F_LSI156を使用しながらI/Oバスクロックをオン/オフ制御することで、システムを非常に深い節電モードに移行していたとしても、システムが節電モードから完全に復帰してから通常のデータ転送を開始するため、従来懸念されていた不具合が発生しなくなる。
加えて、汎用I/F_LSI156は、データ転送を開始する前のデータ受信から既にバスの使用権を獲得しているので、I/Oバスクロックが供給されると直ちにデータ転送を行なうことができるようになる。
また、節電制御部160としては、データ有効信号DVなどのデータ受信信号S3の監視やクロックのオン/オフ制御などの機能を新たに持てばよく、さほど大掛かりな回路構成を必要としないので、低価格で簡便な回路を追加することで、I/O_ASIC154などのカスタマイズ部品を使用した時と同等に高い省エネ効果を得ることができる。
<状態遷移図と真理値表>
図8は、図7に示した節電制御部160の動作状態の概要を説明する図である。ここで、図8(A)は図7に示した動作を行なう節電制御部160の状態遷移図、図8(B)は節電制御動作時の入出力信号の真理値表である。
電源投入状態およびシステムが通常の動作状態にあるときには通常動作シーケンスにある。次に、節電制御部160に対して節電移行設定が行なわれると、プリパワーセーブシーケンス1へと移行する。このとき節電制御部160は、クロック制御信号CCNT2をネゲート(Lレベルに)してI/Oバス159用のバスクロックBus_CLKを停止させてプリパワーセーブシーケンス2へと移行する。こうすることで、汎用I/F_LSI156は、実質的に節電モードに入り、I/Oバス159が停止状態となり、外部のI/O装置からデータを受信しても、それをI/Oバス159に転送することができない。
次に、CPU110がスリープ信号NSLEEPをアサートすると、節電制御部160は、プリパワーセーブシーケンス3へと移行し、PLL_CFG信号を制御してPLL回路112を動作モードからバイパスモードに移行させた後にパワーセーブシーケンスへと移行する。
パワーセーブシーケンスへと移行すると、節電制御部160は、クロック制御信号CCNT1をネゲート(Lレベルに)してCPUクロックの供給を停止させることで、データ処理装置3の全体を深い節電状態に移行させる。
次に、節電制御部160は、汎用I/F_LSI156がデータを受信したためにデータ有効信号DVがLレベルからHレベルに変わると、ウェークアップシーケンス1へと移行する。このシーケンスに進むと、節電制御部160は、クロック制御信号CCNT1をアサート(Hレベルに)してCPUクロックの供給を再開させることでCPU110を復帰させ、ウェークアップシーケンス2へ移行する。また、PLL_CFG信号を制御してPLL回路112をバイパスモードから動作モードに移行させることで、PLLをロックさせる。
ウェークアップシーケンス2へ移行すると、節電制御部160は、割込信号NSMIをアサートして、PLL回路112を含むCPU110の全体を節電状態から復帰させる。これにより、CPU110はスリープ信号NSLEEPをネゲート(Hレベルに)し、これを受けて節電制御部160は、ウェークアップシーケンス3へと移行する。
節電制御部160は、スリープ信号NSLEEPのネゲートを検出すると、割込信号NSMIをネゲート(Hレベルに)して通常動作シーケンスへと移行すると同時に、クロック制御信号CCNT2をアサート(Hレベルに)してプリパワーセーブ1から継続していたバスクロックBus_CLKの停止状態を解除する。その結果、データ処理装置3の全体が通常状態に戻る。汎用I/F_LSI156は、システムが節電状態から完全に復帰した後にデータ転送を行なうことができる。
なお、図3に示した構成では、3つの汎用I/F_LSI156a,156b,156cの内の何れか1つがデータを受信すると、全ての汎用I/F_LSI156a,156b,156cに一斉にI/Oバスクロック(=CLK2)が供給される形態であるが、このことは必須ではない。
たとえば、図4(B)に示すように、クロック切替部166内のバッファ406をANDゲート407a,407b,407cを有するバッファ407に置き換えて、クロック信号CLK2a,CLK2b,CLK2cを独立にオン/オフ制御可能に構成してもよい。
ANDゲート407a,407b,407cは、各一方の入力端子にはANDゲート404の論理積出力であるクロック信号CLK2が共通に入力され、他方の入力端子には対応する汎用I/F_LSI156a,156b,156cからデータ受信信号DVa,DVb,DVcが入力されるようにする。この場合、ANDゲート407a,407b,407cは、ゼロディレイバッファとして機能するとともに、データ受信信号DVa,DVb,DVcでクロック信号CLK2a,CLK2b,CLK2cの出力をオン/オフ制御するスイッチとしても機能する。
このような構成とすれば、節電制御部160は、節電中はほぼ全てのデバイスへのクロック供給を停止させつつ、復帰処理時には、受信したデータの転送に関わるデバイスに対してのクロック供給のみを再開させることができる。
すなわち、節電モード時には、3つの汎用I/F_LSI156a,156b,156cの全てについてクロック信号CLK2の供給を停止することで節電状態にするが、3つの汎用I/F_LSI156a,156b,156cの内の何れか1つが節電中にデータを受信すると、対応する汎用I/F_LSI156a,156b,156cの何れか1つのみに対応するクロック信号(CLK2a,CLK2b,CLK2cの何れか1つ)を供給することで、その対応するもののみを節電状態から復帰させるが、残りの動作不要なデバイスに関してはクロック供給を停止させたままにすることで節電状態に維持させることができ、効率のよい節電制御ができる。
つまり、全てのバスデバイスへのクロック供給を停止させて節電状態にしつつ、節電中のデータ受信時には、バスサイクルに必要なバスデバイスのみについてクロック供給を再開することで節電状態から復帰させるが、バスサイクルに必要なバスデバイス以外についてはクロック停止状態を維持することにより効果的な節電が可能になる。
バスに接続された全てのデバイスについてクロック信号を一斉に停止して節電状態に移行させるが、データ受信に必要な箇所は動作可能にしておくので、全てのデバイスについて一斉に節電状態に移行させても、従来のように装置の処理性能やレスポンスに影響を与えることがなく、また、節電中にデータを受信したら必要最低限のデバイスのみを起動すれることができ、無駄な電力消費を極力回避することができる。
また、全てのバスマスタがバスアクセスを要求しない期間(アイドル期間)が少ない場合でも、個々のデバイスについて独立してクロックの供給と停止を制御することで節電を実施できるので、効果的な節電効果を期待することができる。
<データ処理システムの全体構成;PCI利用の第2実施形態>
図9は、本発明に係る画像形成装置を備えたデータ処理システムの第2実施形態の構成例を示す図である。この第2実施形態のデータ処理システム1は、データ処理装置3が、PCIバスを利用した構成としている。なお、図では、ビデオI/F部152を割愛して示している。
図3に示した第1実施形態の構成では、汎用I/F_LSI156用のI/Oバスクロックが停止されている状態において、データ受信などをトリガとした送信データの有効性を示すデータ有効信号DVが出ることを想定したが、たとえばPCIバスインタフェースのようにI/Oバスクロックを停止してしまうと、データ有無を示すデータ受信信号S3を出力することができないものもある。図9に示す第2実施形態の構成は、この問題を解消する一構成例を示している。
第1実施形態との大きな相違点として、データ処理装置3は、図示を割愛した基準クロック発生器からの基準クロックCLK0に基づき、所定周波数のクロック信号をCPU110や汎用I/F_LSI156などに供給する周波数変換部500を新たに備えている。図示を割愛するが、周波数変換部500内には、CPUクロック系統とI/Oバス系統とに関して、独立に周波数を変更可能な周波数変換部が設けられている。そして、たとえばクロック信号CLK1がCPUクロックとしてCPU110に供給され、またクロック信号CLK2a,CLK2b,CLK2cがPCIクロック(=I/Oバスクロック)として、対応する汎用I/F_LSI156a,156b,156cにそれぞれ独立に供給される。
節電制御部160は、ORゲート167の入力側にインバータ169(図では参照子a,b,cを付した3つ)を有しており、PCI用の汎用I/F_LSI156a,156b,156cからは、データ受信信号S3相当の要求信号NREQがインバータ169を介してORゲート167に供給され、その論理和出力がクロック制御信号発生部165のデータ受信信号入力端子DVに入力されるようになっている。
第2節電制御部164は、クロック切替部166を備えていない。パワーマネージメント制御部168を構成する第2節電制御部164のクロック制御信号発生部165は、周波数変換部500から出力されるクロック信号の周波数を制御するクロック制御信号CCNTを制御出力端子CNTから周波数変換部500の制御入力端子CNTに供給する。
バス調停制御部140内には、DMACの機能を持つバスアービタ142を設けている。インタフェース部150内の各I/F部152,156や節電制御部160内の各節電制御部162,164などの各PCIデバイスは、PCI規格のI/Oバス159と接続されている。
バスアービタ142と、インタフェース部150内の各I/F部152,156や第1節電制御部162などの各PCIデバイスとの間では、要求信号NREQと許可信号NGNTの受け渡しがある。たとえば、バス調停制御部140のバスアービタ142は、各PCIデバイスからの要求信号NREQを対応するNREQ入力端子(図中に0〜3の参照子を付して示す)で受け、対応するNGNT出力端子(図中に0〜3の参照子を付して示す)から、唯一のデバイスにのみ許可信号NGNTを与える。PCIデバイスは許可信号NGNTを受け取った場合にのみI/Oバス159の使用権を得、I/Oバス159を使用することが可能となる。なお、NREQ0,NGNT0は第1節電制御部162用であり、NREQ1,NGNT1は汎用I/F_LSI156a用であり、NREQ2,NGNT2は汎用I/F_LSI156b用であり、NREQ3,NGNT3は汎用I/F_LSI156c用である。
なお本実施形態においては、第1実施形態とは異なり、節電モード移行中のバスパーキングを汎用I/F_LSI156以外にする必要がある。これは、本実施形態では、節電状態でも外部クロックOUT_CLK(および内部クロックINT_CLKの何れも)を停止させずに、低周波数のクロックを供給するので、外部I/O装置用のインタフェース部である汎用I/F_LSI156がパーキングデバイスである場合には、既にPCIバスが獲得できているために要求信号NREQを出力することなくデータ転送をしてもよいことがPCIの仕様で唄われており、結果として不具合を起こしてしまう問題を回避するためである。
<PCIデバイスにおける節電制御部の機能;作用の概要>
図10は、図9に示した第2実施形態の構成におけるシステムの状態と信号の相関関係を示す図である。基本的には、システムが通常の状態においては、汎用I/F_LSI156がデータを受信した場合には、要求信号NREQおよび許可信号NGNTを用いてI/Oバス159の使用権の獲得要求および許可を得た後に、I/Oバス159を使用してデータ転送を行なう。次に、システムが節電移行処理に入ると、システム全体を節電状態に入れるための各種処理が行なわれる。
一連の処理の中には、I/Oバス159上に接続された各種デバイスへの設定も含まれ得る。節電移行処理の最後に、節電制御部160に対して節電状態への移行設定を行なう。節電制御部160は節電状態への移行設定が行なわれると、I/Oバス159の使用権を獲得するが、転送データ有効応答(データ有効信号NTRDY=L)を返さないでI/Oバス159を使用状態に維持する。これと並行して、スイッチ処理によって、CPU110を節電状態へ移行させる。
たとえば、通常状態においてデータ転送がなければ、インタフェース部150の汎用I/F_LSI156やメモリバス158およびI/Oバス159はともにアイドル(Idle)状態にある。
<節電状態への移行>
この後、システム全体を節電モードへ移行させる場合には、割込信号NSMI(CPU110を節電状態から復帰させるための割込み入力信号線)のみを有効にするなどシステム全体を節電状態に入れるための処理を行なう。
この処理において、CPU110は先ず、要求信号NCPUREQをアサート(Lレベルに)してバス要求をバスアービタ142に出す。バスアービタ142は、要求信号NCPUREQを受け取ると、許可信号NCPUGNTをアサート(Lレベルに)する。このとき、I/Oバス159が他のデバイスに使用されないように、PCIバス転送禁止処理を行なう(t60)。
この後、CPU110は、フレーム信号NFRAMEを所定期間だけアサート(Lレベルに)して(t62)、節電制御部160にデータ転送を行なって、第1節電制御部162内に設けられた図示しないパワーセーブレジスタに節電モードへの移行を指示する値を書き込み、節電制御部160やCPU110自体を節電状態に移行させる(t64)。たとえば、CPU110は先ず、節電移行処理に入ると、スリープ信号NSLEEPをアサート(Lレベルに)する。
このとき、汎用I/F_LSI156以外のバスデバイス(バス構成要素)は、汎用I/F_LSI156がI/Oバス159を使用できないように設定する。たとえばCPU110もしくはパワーマネージメント制御部168は、デバイスの存在応答(デバイス選択信号NDEVSEL=L)やI/Oバス159の使用を開始する開始信号NIRDY(=Lレベル)を返すが(t68)、転送データ有効応答(データ有効信号NTRDY=L)を行なわないことで、I/Oバス159の状態をビジー状態に維持する。
つまり、節電モード期間中は、CPU110もしくは節電制御部160は、I/Oバス159を獲得したままデータ有効信号NTRDYを返さない状態を保持することにより、バスサイクルにウェイトを掛け続けているのと実質的に同じ動作を行なう。こうすることで、汎用I/F_LSI156にとっては、I/Oバス159が実質的に停止状態となり、外部のI/O装置からデータを受信しても、それをI/Oバス159に転送することができない。
また、節電制御部160は、CPU110が節電モードに入ったら、周波数変換部500からの出力周波数を低下させる処理を行なう。たとえば、パワーマネージメント制御部168は、CPU110が節電以降処理に入ったことをスリープ信号NSLEEPを監視して検知すると、クロック制御信号CCNTを制御することで、周波数変換部500に対して、通常時より低いクロック信号CLK1,CLK2を出力させる(t66)。周波数の変更が終了して、始めて節電移行処理が完了し、データ処理装置3の全体は節電状態へと移行する(t69)。
この状態では、汎用I/F_LSI156に供給されるクロック信号CLK2(PCIバスクロック)が通常時より低周波数になるので、汎用I/F_LSI156は、実質的に節電モードに入る。
なお、CPU110内のPLL回路112は入力周波数(クロック信号CLK1の周波数)に応じたロックレンジを持ち、PLL設定によってこれらのレンジが切り替え可能となっている場合がある。したがって、周波数変換部500によるクロック信号CLK1の周波数変更処理時に、ロックレンジを跨ってクロック信号CLK1の周波数を変更する場合には、パワーマネージメント制御部168は、PLL_CFG信号をPLL回路112に供給することで、周波数変更の途中でPLL設定を変更する。
なお、汎用I/F_LSI156用のI/OバスクロックであるPCIバスクロック(本例ではクロック信号CLK2)のみを通常時よりも低い周波数にさせ、CPUクロック(本例ではクロック信号CLK1)は第1実施形態と同様に停止させることで、深い節電状態にするようにしてもよい。
<節電状態からの復帰>
節電モード状態においては、CPUクロックやPCIクロックの周波数が通常時よりは低下されているので、CPUや汎用I/F_LSI156における消費電力を削減することができる。また、PCIクロックの周波数が通常時よりは低下されているものの、汎用I/F_LSI156は動作が可能であり、節電モード状態中にデータを外部機器から受信すると、PCIバスを獲得するための要求信号NREQをアサートすることができる。そこで、節電状態において汎用I/F_LSI156がデータを受信することで発せられる要求信号NREQをトリガとして、バスアービタ142は、予め設定されたアービトレーションアルゴリズムに従ってバス使用権を与える。
たとえば、インタフェース部150内の何れかの汎用I/F_LSI156が節電モード中にデータを受信すると(t70)、その汎用I/F_LSI156は、通常状態と同様に、受信データを転送するために、要求信号NREQ1をアサート(Lレベルに)してバス要求をバスアービタ142に出す(t72)。バスアービタ142は、要求信号NREQを受け取ると、許可信号NGNTをアサート(Lレベルに)する(t78)。しかしながら、このときデータ有効信号NTRDYがHレベルにありI/Oバス159はビジー状態にあるため、汎用I/F_LSI156は、バスアービタ142から許可信号NGNTを受け取っても、データ転送を開始できないので、I/Oバス159のビジー状態が解除されるのを待つこととなる。
なお、本実施形態では、節電中にデータを受信した汎用I/F_LSI156が要求信号NREQ1をアサートする動作(t72)や、それを受けてバスアービタ142が許可信号NGNTをアサートする動作(t78)は、CPU110に供給されるバスクロックであるPCIクロックPCI_CLK(=CLK1,CLK2)に同期して行なわれ、休眠状態でもクロック同期型バス回路における基本的な動作を維持することができる点を特徴としている。
一方、節電制御部160は、汎用I/F_LSI156が要求信号NREQをアサートしたことを検出すると、クロック制御信号CCNTを制御することで、周波数変換部500に対して周波数を元に戻す処理を行なう。たとえば、パワーマネージメント制御部168は、汎用I/F_LSI156がデータを受信したことを要求信号NREQを監視して検知すると、クロック制御信号CCNTを制御することで、周波数変換部500に対して、PCIクロックPCI_CLK(=クロック信号CLK1,CLK2)の周波数を元に戻させる(t74,t76)。
なおこのとき、周波数を低下させるときと同様に、周波数変換部500によるクロック信号CLK1の周波数変更処理時に、ロックレンジを跨ってクロック信号CLK1の周波数を変更する場合には、パワーマネージメント制御部168は、PLL_CFG信号をPLL回路112に供給することで、周波数変更の途中でPLL設定を適宜変更する。
周波数変換部500による周波数変更処理が完了し、PLL回路112が安定する頃に、パワーマネージメント制御部168は、CPU110に対してSMI割込みを発生させ、CPU110を節電状態から復帰させる(t80)。CPU110は、節電から復帰すると、スリープ信号NSLEEPをネゲートする。
CPU110が節電状態から復帰したら、I/Oバス159の転送を許可することで、データ処理装置3を通常状態へと復帰させることが可能となる。たとえば、CPU110や節電制御部160は、節電移行処理時から継続していたデバイス選択信号NDEVSELや開始信号NIRDYのLレベルをともにHレベルにするとともに、データ有効信号NTRDY=Lを所定期間だけ返すことで、I/Oバス159の転送サイクルを正常に終了させる(t82〜t84)。これにより、I/Oバス159は、バスビジー状態が解除され、アイドル状態となる。
このとき、汎用I/F_LSI156は、バスアービタ142から転送許可(許可信号NGNT)を既に得ているので、データ転送を直ぐに開始することができる。よって、汎用I/F_LSI156は、I/Oバス159のバスビジー状態が解除された後には、I/Oバス159の使用権を獲得するフレーム信号NFRAMEをアサート(Lレベルに)してI/Oバス159が他のデバイスに使用されないようにしてから(t92)、データ転送を開始する(t93)。
このとき(t92〜t95)、汎用I/F_LSI156は、バスアービタ142に対して、デバイスの存在応答(デバイス選択信号NDEVSEL=L)や、I/Oバス159の使用を開始する開始信号NIRDY(=Lレベル)および転送データ有効応答(データ有効信号NTRDY=L)を規定時間内に返して、バスサイクルにウェイトを掛ける。データ有効信号NTRDYがネゲート(Hレベルに)なると、I/Oバス159の状態はアイドル状態になる。
このような処理手順を踏むことで、PCIデバイスにおける節電制御において、CPUクロックやI/Oバスクロックを停止させずに通常時よりも低下させることで、バス性能の低下を招くことなくデータ転送を実現することができる。加えて、節電状態から完全に復帰した後にデータ転送を開始するようにすることができ、システム状態が節電中に汎用I/O(本例では汎用I/F_LSI156)によりPCIバス転送が行なわれることを防ぐことができる。
つまり、節電状態におけるI/Oバス159に対するバス調停の結果として、節電状態ではバス利用権が汎用I/F_LSI156以外のPCIデバイス(特に本例ではラストデバイスである節電制御部160)に与えられ、節電状態から完全に復帰したときに汎用I/F_LSI156に与えられることで、節電状態から完全に復帰したときに初めてデータ転送が開始される。
このように、節電中は少なくともPCIクロックを通常時よりも低い周波数にすることで、PCI用の汎用I/F_LSI156を使用しながら、システムを節電モードに移行していたとしても、システムが節電モードから復帰してから通常のPCIデータ転送を開始するため、従来懸念されていた不具合が発生しなくなる。
また、節電制御部160や周波数変換部500としては、要求信号NREQなどのデータ受信信号S3の監視やPCIクロック周波数の制御などの機能を新たに持てばよく、さほど大掛かりな回路構成を必要としないので、低価格で簡便な回路を追加することで、I/O_ASIC154などのカスタマイズ部品を使用した時と同等に高い省エネ効果を得ることができる。
なお、図9(A)に示した構成では、3つの汎用I/F_LSI156a,156b,156cの内の何れか1つがデータを受信すると、全ての汎用I/F_LSI156a,156b,156cについて、一斉にPCIクロック(=CLK2)が通常の周波数に戻る形態であるが、このことは必須ではない。
たとえば、図9(B)に示すように、周波数変換部500内に、独立に周波数を変更可能な周波数変換部502a,502b,502c,502dを設ける。周波数変換部502a,502b,502cはI/Oバス系統用で、周波数変換部502dはCPUクロック系統用である。
また、周波数変換部500内には、周波数変換部502a,502b,502cを独立に周波数変更可能にするべく、汎用I/F_LSI156a,156b,156cからの要求信号NREQa,NREQb,NREQcに基づき周波数を変更すべきデバイスを特定する判定部506と、ANDゲート507a,507b,507cを有するANDゲート部507を設ける。ANDゲート507a,507b,507cの各論理積出力は、対応する周波数変換部502a,502b,502cの制御端子CNTに入力される。
ANDゲート507a,507b,507cは、各一方の入力端子には節電制御部160からのクロック制御信号CCNTが共通に入力され、他方の入力端子には判定部506からの対応するデータ受信信号DETa,DETb,DETcが入力されるようにする。
判定部506は、要求信号NREQa,NREQb,NREQcを監視することで、汎用I/F_LSI156a,156b,156cの何れがデータを受信したかを判定し、データ受信信号DETa,DETb,DETcのうち、対応するもののみをHレベルにする。この場合、ANDゲート507a,507b,507cは、要求信号NREQa,NREQb,NREQcに基づきクロック信号CLK2a,CLK2b,CLK2cの周波数を変化させるスイッチとして機能する。
ANDゲート507a,507b,507cの各論理積出力は、対応する周波数変換部502a,502b,502cの制御入力端子に入力される。各周波数変換部502a,502b,502cは、制御入力端子がHレベルのときには通常周波数のCLK2a,CLK2b,CLK2cを出力するが、制御入力端子がLレベルのときにはクロック信号CLK2a,CLK2b,CLK2cの周波数を通常時よりも低くする。
なお、節電制御部160からのクロック制御信号CCNTが周波数変換部502dの制御入力端子に入力される。周波数変換部502dは、制御入力端子がHレベルのときには通常周波数のCLK1を出力するが、制御入力端子がLレベルのときにはクロック信号CLK1の周波数を通常時よりも低くする。
このような構成とすれば、節電制御部160は、節電中はほぼ全てのデバイスへ供給されるクロックの周波数を低くさせ、復帰処理時には、受信したデータの転送に関わるデバイスに対してのみ、クロックの周波数を元に戻させることができる。
すなわち、節電モード時には、3つの汎用I/F_LSI156a,156b,156cの全てについてクロック信号CLK2を低周波数にすることで節電状態にするが、3つの汎用I/F_LSI156a,156b,156cの内の何れか1つが節電中にデータを受信すると、対応する汎用I/F_LSI156a,156b,156cのみに関して対応するPCIクロック(CLK2a,CLK2b,CLK2cの何れか1つ)の周波数を通常の周波数に戻すことで、その対応するもののみを節電状態から復帰させ、残りを低周波数で動作する節電状態に維持させることができ、効率のよい節電制御ができる。
つまり、全てのバスデバイスへのクロック信号を低周波数にして節電状態にしつつ、節電中のデータ受信時には、バスサイクルに必要なバスデバイスのみについてクロック周波数を通常の周波数に戻すことで節電状態から復帰させるが、バスサイクルに必要なバスデバイス以外についてはクロック周波数を低周波数に維持することにより効果的な節電が可能になる。
バスに接続された全てのデバイスについてクロック信号を一斉に低周波数にして節電状態に移行させるので、データ受信に必要な箇所は低周波数で動作可能であり、全てのデバイスについて一斉に節電状態に移行させても、従来のように装置の処理性能やレスポンスに影響を与えることがなく、また、節電中にデータを受信したら必要最低限のデバイスのみを通常の周波数で動作するようにすればよく、無駄な電力消費を極力回避することができる。
また、全てのバスマスタがバスアクセスを要求しない期間(アイドル期間)が少ない場合でも、個々のデバイスについて独立してクロック周波数の高低を制御することで節電を実施できるので、効果的な節電効果を期待することができる。
以上説明したように、節電制御(節電状態への移行から通常状態への復帰までを含む)における外部バス40aの状態をクロック供給により制御する具体的な手法について、上記第1実施形態では外部バス40aと内部バス40bを段階的に停止させて節電状態へ移行させ、節電状態中にデータを受信したら段階的に復帰させる手法を説明し、また、上記第2実施形態では、外部バス40aと内部バス40bを低周波数にして節電状態へ移行させ、節電状態中にデータを受信したら段階的に復帰させる手法を説明した。
しかしながら、節電制御(節電状態への移行から通常状態への復帰までを含む)における外部バス40aの状態をクロック供給により制御する手法は、上述した2つの実施形態のものに限らない。
たとえば、第1実施形態に対する変形例として、外部バス40aについては常時クロックを供給し、内部バス40bについてのみ段階的に停止させて節電状態へ移行させ、節電状態中にデータを受信したら段階的に復帰させる手法を採ることもできる。また、第2実施形態に対する変形例として、先にも述べたが、外部バス40aについては低周波数にして節電状態へ移行させ節電状態中にデータを受信したら段階的に復帰させるが、内部バス40bについては、段階的に停止させて深い節電状態へ移行させ、節電状態中にデータを受信したら段階的に復帰させる手法を採ることもできる。
本実施形態においては、図1を用いて説明した基本事項から分かるように、データ処理装置3に備えられるバス40との間のデータインタフェース部(図1のI/Oインタフェース部35や第1および第2実施形態の汎用I/F_LSI156)が節電中に他のデバイス(典型例としては外部のI/O装置)からデータを受信したときに、そのことを示すデータ受信信号S3を出力可能な状態で、できるだけデータ処理装置3の消費電力を少なくするようにクロック信号の供給を制御すればよい。
換言すれば、CPU110や汎用I/F_LSI156などのバスデバイスを節電状態にする際にデータ受信を判定できるようにしておけばよく、その限りにおいて、CPU110や汎用I/F_LSI156などのバスデバイスへのクロック供給を停止させることで、装置のほぼ全体の機能を休眠状態に移行させて消費電力の低減を図ればよい。また、節電中にデータを受信したら停止させていた部分を復帰させることで、装置の処理性能やレスポンスに影響を与えることがないようにすればよい。
また、全てのバスデバイスを一斉に節電状態に移行させるが、復帰の際には、全てのバスデバイスを一斉に節電状態から復帰させることは必須ではなく、データ転送に必要なデバイスのみを起動すればよい。もちろん、データ転送に必要なデバイスのみを起動させておけばよいので、全てのバスデバイスを一斉に節電状態に移行させることも必須ではなく、装置の使用中に必要に応じて節電状態への移行と復帰とを制御すればよい。このように、各バスデバイスについて、装置の使用に必要な箇所だけを起動させるようにすることで、無駄な電力消費を効果的に回避することができる。
特開平11−328111号公報に記載の仕組みとの対応では、バスサイクルに必要なバスデバイス以外のクロックを制御することにより効果的な節電が可能であるということにおいては類似する点があるが、クロック制御は、オン/オフ制御だけでなく周波数制御も含む点で異なる。加えて、バスデバイスのデータ転送に必要な箇所を動作させておくことで、バスに接続された全てのデバイスを一斉に節電モードに移行させておいても、データ受信を契機として装置を安全に復帰させることができ、データ転送に不都合が生じないようにする点においては決定的に異なる。
さらに付言すれば、特開平11−328111号公報に記載の仕組みでは、各バスデバイス(バスユニット)に独立してバスクロックの供給と停止を可能にすることが必須であるが、本実施形態の仕組みでは、そのことは必須ではない。
また、特開平11−328111号公報に記載の仕組みでは、バスサイクルに必要な少なくとも2つのデバイスに関しては節電状態にすることができず、節電状態にすることができるのはバスサイクルに関係のないデバイスに限られ、全てのデバイスを一斉に節電状態にすることを回避している。これにより、バスおよびバスに接続されたデバイスを一斉に節電モードに移行させた場合に生じ得る処理性能やレスポンスの低下を防止している。一例として、バスマスタとなる確率が高いデバイスに常時クロックを供給しておく。
これに対して、本実施形態の仕組みでは、データ受信に必要な箇所を所定の仕組み(バスクロックの供給に限定されない)によって動作させておくようにしたので、バスおよびバスに接続されたデバイスを一斉に節電モードに移行させた場合でも、不都合なく節電状態から復帰させてデータ転送を開始することができるので、全てのデバイスを一斉に節電状態にすることを回避することは必須ではなく、むしろ、全てのデバイスを同時に節電状態にすることで、消費電力の一層の低減を図ることができる。
次に、バスクロック制御の手法について、詳細に説明する。なお、以下では、節電状態への移行から通常状態への復帰までを含む節電制御において、インタフェース部が節電中に他のデバイスからデータを受信したことを判定でき、その判定結果(データ受信信号S3)を復帰制御機能部(節電制御部36や節電制御部160やCPU110など)にインタフェース部の外部に出力可能にする点と、外部バス40aや内部バス40bへのクロック供給を制御することで低消費電力化を図る点について、特にデータインタフェース部(図1のI/Oインタフェース部35や第1および第2実施形態の汎用I/F_LSI156)に着目して詳細に説明する。
<バスクロック制御の詳細;第1例>
図11は、上記実施形態において使用される汎用I/F_LSI156の第1の構成例と、それを制御するデータ処理装置3の第1例の仕組みを説明する図である。この第1の構成例は、汎用I/F_LSI156が、インタフェースクロックI/F_CLKとバスクロックBus_CLKの供給を受け、これら2つのクロックCLKを使用して、汎用I/F_LSI156の全体が動作する場合に対処する点に特徴を有する。汎用I/F_LSI156にバスクロックBus_CLKの供給がなくても節電中に他のデバイスからデータを受信したことを示すデータ受信信号を出力可能にするべくインタフェースクロックI/F_CLKを使用するという点においては、特に、第1実施形態への適用に好適なものである。
具体的には、第1の構成例の汎用I/F_LSI156は、入力されるインタフェースクロックI/F_CLKに同期して動作する外部I/F処理部610と、外部I/F処理部610から出力されたデータを先入れ先出し方式(First In First Out)にて出力するFIFO部612とを備えている。FIFO部612は、詳細にはFIFO612aそのものとエンプティフラグ出力部612bとで構成されている。FIFO部612のエンプティフラグ出力部612bは、FIFO612aにデータ入力があるときにはデータ有効信号DVとして使用されるエンプティフラグNEF(Empty Flag)をHレベルにする。
また汎用I/F_LSI156は、FIFO612aから出力されたデータをバスクロックBus_CLKに同期してI/Oバス619(バス40やI/Oバス159に相当)に向けて出力するバスI/F部614を備えている。つまり、I/Oバス619は、汎用I/F_LSI156内のバスI/F部614がバスクロックBus_CLK入力に同期して動作するクロック同期型の構成となっている。
このような構成の汎用I/O_LSI156は、データを受信するとともにデータ受信信号S3(=データ有効信号DV)を他のデバイス(節電制御部160やDMAC143,バスアービタ142など)に通知する受信機能部が外部I/F処理部610とFIFO部612とで構成され、受信したデータをI/Oバス619を使用して受信先のデバイス(たとえばDRAM126)に送信する送信機能部がバスI/F部614で構成される。そして、受信機能部と送信機能部とが、それぞれ異なるクロックで動作可能に構成されている。節電制御部160は、送信機能部であるバスI/F部614へのクロック供給を停止させることで汎用I/O_LSI156を節電状態にするとともに、受信機能部である外部I/F処理部610とFIFO部612をインタフェースクロックI/F_CLKに基づき常時動作可能にさせておく。
そして、図示しない外部のI/O装置からデータが入力されると、外部I/F処理部610は、インタフェースクロックI/F_CLKを使用して(たとえば同期して)、所定のデータ受信処理を行ない、処理済みのデータをFIFO部612に渡す。
FIFO部612は、FIFO612a内にデータがないときにはエンプティフラグNEFがLレベルとなっているが、何らかのデータが外部I/F処理部610から供給されてFIFO612aにある間はエンプティフラグNEFがHレベルとなる。エンプティフラグ出力部612bは、このエンプティフラグNEFをデータ有効信号DVとして外部に出す。
これにより、汎用I/F_LSI156は、バスクロックBus_CLKの供給がバスI/F部614になくても、インタフェースクロックI/F_CLKの供給により外部I/F処理部610が動作することができるようになっているので、節電中でも外部的に受信データの有無を判定することができる。
つまり、第1の構成例の汎用I/F_LSI156は、FIFO部612を境にして、I/Oバス159と外部I/F処理部610の動作クロックが分離されていることを特徴としている。換言すれば、この構成例では、汎用I/F_LSI156は、CPU110と接続されるI/Oバス619(外部バス40aおよび内部バス40bの双方を含む)用のバスクロックBus_CLKとは独立して、データ受信を判定することができ、その判定結果に基づきCPU110側を節電状態から復帰させてCPU110側にデータ転送要求を発することができる。
バスクロックBus_CLKを仮に停止させたとしても、外部のI/O装置からのデータ入力動作は影響を受けず、またデータを受信したことを示すデータ有効信号DVを汎用I/F_LSI156の外部に通知することができる。この構成であれば、節電モード中にI/Oバス619に接続されるデバイスである汎用I/F_LSI156へのバスクロックBus_CLKの供給を停止することで汎用I/F_LSI156における省電力化が実現でき、またデータ受信をトリガとして省電力モードから復帰させることもできる。節電中にCPU110用のバスクロックであるCPUクロックをも停止させると、装置全体を深い節電状態にすることができ、さらなる低消費電力化を図ることができる。
<バスクロック制御の詳細;第2例>
図12は、本実施形態において使用される汎用I/F_LSI156の第2の構成例と、それを制御するデータ処理装置3の第2例の仕組みを説明する図である。この第2の構成例は、汎用I/F_LSI156が、インタフェースクロックI/F_CLKを使用せずにバスクロックBus_CLKのみを使用してその全体が動作する場合や、バスクロックBus_CLKに同期してデータ有効信号DVを出力する場合に対処する点に特徴を有する。
具体的には、第2の構成例の汎用I/F_LSI156は、バスクロックBus_CLKに同期して動作する外部I/F処理部610とFIFO部612とを備えている。なお、FIFO部612のエンプティフラグ出力部612bにもバスクロックBus_CLKを供給する構成とすれば、エンプティフラグ出力部612bは、データ有効信号DVとして使用されるエンプティフラグNEFをバスクロックBus_CLKに同期して出力する形態となる。
このような構成の汎用I/O_LSI156は、データを受信するとともにデータ受信信号S3(=データ有効信号DV)を他のデバイス(節電制御部160やDMAC143,バスアービタ142など)に通知する受信機能部が外部I/F処理部610とFIFO部612とで構成され、受信したデータをI/Oバス619を使用して受信先のデバイス(たとえばDRAM126)に送信する送信機能部がバスI/F部614で構成される点では、第1の構成例と同じである。第1の構成例との違いは、受信機能部と送信機能部とが、同じクロックで動作可能に構成されていることにある。
この場合、図示しない外部のI/O装置からデータが入力されると、外部I/F処理部610は、バスクロックBus_CLKを使用して(たとえば同期して)、所定のデータ受信処理を行ない、処理済みのデータをFIFO部612に渡す。
また、このような第2の構成例の汎用I/F_LSI156を使用する場合には、データ処理装置3は、バスブリッジ部144にてI/Oバス619を外部I/Oバス619a(外部バス40aに相当)と内部I/Oバス619b(内部バス40bに相当)とに分離する構成にする。内部I/Oバス619bには、CPU110やメインメモリ部120(つまりDRAM126)やROM128が接続される。バスブリッジ部144は、外部クロックOUT_CLK用のバスクロック入力端子Bus_CLKと、内部クロックINT_CLK用のCPUクロック入力端子CPU_CLKとを持ち、その内部で、外部I/Oバス619aと内部I/Oバス619bとの動作クロックが分離されていることを特徴としている。
ここで、節電制御部160は、節電中のデータ受信に寄与しない内部I/Oバス619bに接続される不要な各デバイス(CPU110、メインメモリ部120、ROM128など)へのクロック供給を停止させることでデータ処理装置3を節電状態にするとともに、汎用I/O_LSI156の受信機能部(外部I/F処理部610およびFIFO部612)と送信機能部(バスI/F部614)とにはバスクロックを常時供給することで常時動作可能にさせておく。
具体的には、図4(A)に示したと同様に、節電制御部160は、各クロックバッファ部622,624を制御するようにする。具体的には、クロック制御信号発生部165からのクロック制御信号CCNT1の元で第1クロックバッファ部622を制御することで、節電中にはCPU110やバスブリッジ部144の各CPUクロック入力端子CPU_CLKへの内部クロックINT_CLK(具体的にはCPUクロックCPU_CLK)の供給をオフさせる。
一方、クロック制御信号発生部165からのクロック制御信号CCNT2の元で第2クロックバッファ部624を制御することで、節電中および通常状態の何れにおいても、汎用I/F_LSI156やバスブリッジ部144の各バスクロック入力端子Bus_CLKへ外部クロックOUT_CLK(具体的にはバスクロックBus_CLK)が供給されるように制御する。
このように、バスブリッジ部144から汎用I/F_LSI156まではクロックを常時供給する一方、節電中にはクロックを停止することが可能なデバイスをバスブリッジ部144の汎用I/F_LSI156とは反対側に設けることで、CPU110などを節電モードに入れる際に、その節電モード中は、CPU110などの不要なデバイスへのクロック入力を停止させることができ、図11に示した第1の構成例と概ね同様な効果を得ることができる。
すなわち、汎用I/F_LSI156は、内部I/Oバス619b用のクロックとは独立してデータ受信を判定することができ、その判定結果に基づきCPU110側を節電状態から復帰させてCPU110側にデータ転送要求を発することができる。また、内部クロックINT_CLKで動作するデバイスについてクロック供給を仮に停止させたとしても、汎用I/F_LSI156における外部のI/O装置からのデータ受信動作は影響を受けず、またデータを受信したことを示すデータ受信信号S3相当のデータ有効信号DVを汎用I/F_LSI156の外部に通知することができる。
なお、バスクロックBus_CLKが汎用I/F_LSI156とバスブリッジ部144へ常時供給されるようにするので、第2クロックバッファ部624は、事実上、クロック制御信号CCNTで制御されるスイッチ624bは不要である。また、少なくとも汎用I/F_LSI156にバスクロックBus_CLKが常時供給されていればよく、節電中は、バスブリッジ部144へのバスクロックBus_CLKの供給は必ずしも必要ではない。
また、図12に示した第2の構成例は、汎用I/F_LSI156が、インタフェースクロックI/F_CLKを使用せずにバスクロックBus_CLKのみを使用してその全体が動作する場合や、バスクロックBus_CLKに同期してデータ有効信号DVを出力する場合に対処する場合の一構成例を示したに過ぎず、上記で説明したと同様に、内部I/Oバス619bと外部I/Oバス619aの動作クロックを分離した制御が可能である限り、様々な態様の回路を採用することができる。
<バスクロック制御の詳細;第3例>
図13は、本実施形態において使用される汎用I/F_LSI156の第2の構成例と、それを制御するデータ処理装置3の第3例の仕組みを説明する図である。この第3例の仕組みは、汎用I/F_LSI156がバスクロックのみで内部回路も動作している場合に、節電時には動作クロック周波数を下げることで汎用I/F_LSI156内部の動作を止めることなく消費電力を低減するもので、上述した第2実施形態の手法を簡易に示したものである。
図示するように、この第3例の仕組みでは、周波数を変更可能な周波数変換部502とバッファ504とを有する周波数変換部500を設けている。周波数変換部502は、源発振クロックである基準クロックCLK0が入力され、節電制御部160からのクロック制御信号CCNTの制御の元で、出力クロックの周波数(バス周波数という)を変更する。すなわち、バスクロック発生器に周波数変換部500を使用することで、バス周波数を可変とし、周波数の決定や制御は、省エネ制御回路の機能を持った節電制御部160で行なう構成としている。通常動作時には源発振クロックをそのままバスクロックとしてCPU110や汎用I/F_LSI156に供給し、省エネ時には周波数変換部500で周波数を下げることで、消費電力の低減を実現する仕組みとする。
このような第3例の仕組みは、第1例の仕組みとの対応においては、節電中にクロックを停止する(つまり周波数をゼロとする)のか、それとも停止させないものの、通常時よりも低い周波数にするのかの違いがあるが、CPU110や汎用I/F_LSI156などを節電モードに入れる際に、その節電モード中は、CPU110などの不要なデバイスへのクロック入力を通常時とは異なる状態にすることができ、図11に示した第1の構成例に比べて消費電力が増えるものの、概ね同様な効果を得ることができる。
また、汎用I/F_LSI156の動作形態に拘わらず適用でき、汎用性に富む構成である。すなわち、汎用I/F_LSI156が、インタフェースクロックI/F_CLKを使用せずにバスクロックBus_CLKのみを使用してその全体が動作する場合や、バスクロックBus_CLKに同期してデータ有効信号DVを出力する場合に限らず、インタフェースクロックI/F_CLKとバスクロックBus_CLKの供給を受け、これら2つのクロックCLKを使用して、汎用I/F_LSI156の全体が動作する場合にも対処することができる。
低周波数ではあるもの、汎用I/F_LSI156と内部の回路(たとえばCPU110やメインメモリ部120など)を確実に動作させておくことができ、バスおよびバスに接続されたデバイスを低周波数動作に切り替えることで、一斉に節電モードに移行させて、装置のほぼ全体の機能を実質的な休眠状態に移行させても、クロック同期型バス回路における基本的な動作を維持できる。
汎用I/F_LSI156は、休眠状態のときにデータを受信すると、CPU110に供給されるバスクロックに同期してデータ転送を要求することができ、休眠状態でもクロック同期型バス回路における基本的な動作を維持するので、装置の処理性能やレスポンスに与える影響は、休眠状態のときに一旦バス回路を停止状態にする第1の仕組みよりも少なくなり、装置の使用中に必要に応じて節電や復帰を自由かつ容易かつ極めて安全に行なうことができる。
<周波数変換部の構成例>
図14および図15は、バスクロック周波数を可変とする周波数変換部502の構成例を説明する図である。周波数変換部502の具体的な実現方法としては、VCO(Voltage Controlled Oscillator ;電圧制御発振器)を用いて周波数を制御する第1の方法や、PLLを用いて源発振周波数に対して数倍高い周波数に上げた後に分周器を用いて離散的ではあるものの細かい周波数制御を可能とする第2の方法や、分周器を用いてバスクロックを1/2,1/4,1/8、…,1/N倍する第3の方法などを採用することができる。これら第1〜第3の方法は、換言すると、連続して出力されるクロック波形の周波数を変換する、つまり、周波数そのものの周期を変更する方法である。これに対して、周波数変換部502から、上記の連続したクロック波形を繰り返し出力するのではなく不連続なクロックを出力する第4の方法を採用することもできる。
たとえば、図14(A)は第1の方法の構成例であり、節電制御部160はDA変換器522に出力電圧設定値をデジタルデータで入力し、そのアナログ出力電圧VcをVCO524の電圧制御端子に供給している。
また、図14(B)は第2の方法の構成例であり、PLL532に基準クロックCLK0を供給して、基準クロックCLK0の数倍(図では8倍)の周波数のクロック信号CLKhighをPLL532から出力させ、クロック信号CLKhighを分周器534で所定の(図では16ビット)精度で分周する構成としている。分周器534には、出力周波数を設定するための分周数の制御信号を節電制御部160から入力する。
また、図14(C)は第3の方法の構成例であり、分周器534には、出力周波数を設定するための分周数の制御信号を節電制御部160から入力し、分周器534に供給される基準クロックCLK0を所定の(図では16ビット)精度で分周する。
これに対して、図15は、第4の方法を説明するものである。ここで、図15(A)は回路構成例であり、図15(B)は第4の方法の原理を説明するタイミングチャートであり、図15(C)は図15(A)の構成における具体的な動作を示すタイミングチャートである。
図15(A)に示すように、第4の方法を実現する周波数変換部502は、出力クロックの周期分をカウントするクロック周期カウンタ542と、クロック周期カウンタ542に対してクロック周期に対応するデータを設定するクロック周期レジスタ544とを備えている。また周波数変換部502は、出力クロックの1周期内に存在するクロック数を設定するための出力クロック数カウンタ546と、出力クロック数カウンタ546に対して1周期内に存在するクロック数に対応するデータを設定する出力クロック数レジスタ548とを備えている。
クロック周期カウンタ542および出力クロック数カウンタ546はともに、同期ロード(Load)型のダウンカウンタであり、また、出力クロック数カウンタ546は“0”までカウントダウンしたらボローパルス出力NBorrow をアサートした状態でカウント動作を停止し、ロード入力端子NLoad がアサートされたときに出力クロック数カウンタ546に新たにカウント値がロードされると同時にボローパルス出力NBorrow がネゲートされるものとする。
クロック周期カウンタ542および出力クロック数カウンタ546のクロック入力端子CKに基準クロックCLK0を供給する。また、クロック周期カウンタ542のボローパルス出力NBorrow を、自身と出力クロック数カウンタ546の各ロード入力端子NLoad に供給する。
また、周波数変換部502は、ANDゲート550を備えており、その一方の入力端子には基準クロックCLK0を入力し、他方の入力端子には出力クロック数カウンタ546のボローパルス出力NBorrow を入力するようにしている。ANDゲート550の出力が、出力クロックとして使用される。
ここで、バスクロック周波数を可変とする第4の手法は、換言すれば、周波数そのものの周期を変更する第1〜第3の方法とは異なり、クロック出力期間と停止期間を設けることで、入力クロックの平均出力周波数を変更する方法ということができる。たとえば、図15(B)に示す例では、入力クロックに対して4クロックはそのまま出力し、4クロックは出力を停止する、というサイクルを繰り返している。一定の規則の下で間欠的にクロックパルスを出力するが、全体としては、入力8クロックに対して4クロックを出力するので、実質的には、入力クロックを1/2の周波数に落としているのと等価となる。
このような図15(B)に記載のクロック出力を、図15(A)に記載の周波数変換部502で得るためには、先ずクロック周期レジスタ544に、“クロック出力と停止期間の繰返し周期(本例では8)−1”である“7”をセットする。また、8クロック周期中の出力クロック数である“4”を出力クロック数レジスタ548に設定する。
出力クロック数カウンタ546は“0”までカウントダウンしたらボローパルス出力NBorrow をアサートした状態でカウント動作を停止し、ロード入力端子NLoad がアサートされたときに出力クロック数カウンタ546に新たにカウント値がロードされると同時にボローパルス出力NBorrow がネゲートされる。このとき、出力クロック数レジスタ548にクロック周期レジスタ544の設定値以上の値が設定されると、常にクロックが出力されることになる。
より具体的には、図15(C)に示すように、クロック周期カウンタ542が“0”になるとボローパルス出力NBorrow がアサートされる。このボローパルス出力NBorrow は、クロック周期カウンタ542および出力クロック数カウンタ546のロード入力端子NLoad に接続されていて、なおかつ、両ダウンカウンタ542,546は、同期ロード型であるので、ボローパルス出力NBorrow がアサートされた次のクロックに同期してクロック周期カウンタ542には“7”が、出力クロック数カウンタ546には“4”がロードされると同時に、両ボローパルス出力NBorrow がともにネゲートされる。
出力クロック数カウンタ546のボローパルス出力NBorrow と基準クロックCLK0がANDゲート550に入力されており、ANDゲート550によって両者の論理積が取られるので、ボローパルス出力NBorrow がネゲートされている間は基準クロックCLK0がそのまま出力される。基準クロックCLK0が入力されると双方のダウンカウンタ542,546はカウントダウンをして行き、出力クロック数カウンタ546が“0”になるとボローパルス出力NBorrow をアサートすると同時にカウント動作を停止する。これによって、ANDゲート550の一方の入力がLレベルとなるため、基準クロックCLK0の出力は停止する。
一方、クロック周期カウンタ542はまだダウンカウントを継続しているので、基準クロックCLK0が入力される都度、カウントダウンを行ない、“0”になるとボローパルス出力NBorrow をアサートして最初に戻る動作を行なう。
これによって、基準クロックCLK0の8クロック分を1周期として、入力される基準クロックCLK0の連続した4クロックは出力、その後の連続した4クロックは出力を停止する、と言う間欠的にクロックパルスを出力するサイクルを繰り返すことができる。
図14(A),(B)に示した第1の方法や第2の手法を実現する回路では、細かな出力周波数設定を行なうことができるものの、VCO524やPLL532といったアナログ回路が必要であり、デジタルデータを取り扱うデータ処理装置3への適用に際しては、その多くをデジタル回路で構成するのがよく、不向きである。
これに対して図14(C)に示した第3の手法を実現する回路では、デジタル回路のみで構成することができるので、容易に実現でき、かつ、デジタルデータを取り扱うデータ処理装置3への適用に都合がよいが、選択できる周波数が粗いという欠点を持っている。
これに対して、図15(A)に示した第4の手法を実現する回路では、第3の手法を実現する回路よりも回路規模が大きくなるもの、デジタル回路のみで構成することができるので、容易に実現できる。加えて、クロック周期カウンタ542と出力クロック数カウンタ546の設定値によって源発振周波数(前例では基準クロックCLK0)に対して、“出力クロック数カウンタ546の設定値÷クロック周期カウンタ542の設定値”倍の周波数を設定することができ、設定できる周波数の自由度が非常に高い。
1…データ処理システム、2…画像形成装置、3…データ処理装置、5…外部装置、9…通信ネットワーク、31…コントローラ部、32…使用権制御部、34…節電解除処理部、34a…節電解除トリガ検出部、34b…節電解除通知送信部、35…I/Oインタフェース部、36…節電制御部、37…データ転送要求監視部、38…復帰処理部、39…クロック制御部、40…バス、40a…外部バス、40b…内部バス、50…信号発生部、90…バスブリッジ部、100…内部コントローラ部、110…CPU、112…PLL回路、120…メインメモリ部、122,124,126…DRAM、140…バス調停制御部、142…バスアービタ、143…DMAC、144…バスブリッジ部、150…インタフェース部、152…ビデオI/F部、156…汎用I/F_LSI、158…メモリバス、159…I/Oバス、160…節電制御部、162…第1節電制御部、164…第2節電制御部、165…クロック制御信号発生部、166…クロック切替部、168…パワーマネージメント制御部、300…画像形成部、500…周波数変換部