以下、図面を参照して本発明の実施形態について詳細に説明する。
<データ処理装置の概要>
図1は、本発明に係るデータ処理装置の一実施形態の構成例を示す図である。本実施形態のデータ処理装置3は、信号を送受信するためのバス(Bus;共有信号線)40を複数のデバイスで共有しつつ、一方のデバイスから他方のデバイスへデータを送受信することで所定のデータ処理を行なうものである。バス40は、メモリ用のバスであるメモリバスとI/Oデバイス用のバスであるI/Oバスとを含む。
ここで、本実施形態のデータ処理装置3は、当該データ処理装置3の全体を制御するコントローラ部31と、当該データ処理装置3内の他のデバイスや図示しない外部のI/O(入出力)デバイスとの間のインタフェース機能をなすI/Oインタフェース部35と、節電機能に関わる信号線制御部の一例である節電制御部36とが、バス40を共有するように構成されている。I/Oインタフェース部35としては、1つに限らず複数が設けられてよい。
コントローラ部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は、バス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/O_LSI156が他のバスデバイスにデータを転送することを禁止する機能を持っている。たとえば、データ処理装置3が節電状態のときにはバス40を使用状態に設定しておき、節電状態のときに所定のデバイスからデータを受信した際には、データ処理装置3を節電状態から復帰させ、この後、データ処理装置3が節電状態から復帰したときにバス40を使用状態から未使用状態に設定する機能を有している。
ここで、あるデバイスがバス40を使用中には、他のデバイスはそのバス40を使用できない。つまり、ある瞬間にバス40バスを使用できるのは1つのデバイスだけである。なお、“バス”は、コンピュータなどが利用する様々なデバイスの間で信号を送受信するために設けた信号線やそれに付随する回路の総称であり、データを格納する場所を示すアドレスバスと、実際に処理する情報を伝送するデータバスの何れをも含む。通常は16ビットや32ビットなど、一定幅のビット数の信号を並行して伝送する。また、バスの形態や目的により、幾つかに分類できるが、本実施形態においては、解決課題の観点から、たとえばCPU内でレジスタと演算器などを結ぶローカルバスは問題とせずに、CPU31aとメモリ部31bや各種インタフェースとを接続する、あるいはコンピュータに拡張カードを装着するための拡張バスなどに着目する。
節電制御部36は、I/Oデバイス(本例ではI/Oインタフェース部35)から発せられるデータ受信信号S3を監視するデータ転送要求監視部37と、データ処理装置3が節電状態のときにデータ転送要求監視部37がデータ受信信号S3を検知したときにデータ処理装置3を節電状態から復帰させる復帰処理部38とを有している。また、節電解除要求信号S1としての割込信号SMI用の出力端子SMIOと、節電解除通知信号S2用の入力端子S2Iを有する。
データ転送要求監視部37は、データ受信信号S3を検知すると、そのことを復帰処理部38に通知する。これを受けて、復帰処理部38は、節電解除トリガ検出部34aへの入力信号である節電解除要求信号S1(としての割込信号SMI)を出力端子SMIOから発する。つまり、節電制御部36は、外部のI/Oデバイスからのデータ転送要求に対応するデータ受信信号S3から節電解除トリガ検出部34aへの節電解除要求信号S1を作ることで、データ処理装置3の節電状態の解除を行なう。
また、復帰処理部38は、データ処理装置3が節電状態のときには、復帰処理部38単独でバス40を使用してデータ転送を行なうことでバス40を使用状態に設定する。また、復帰処理部38は、節電解除通知信号S2をコントローラ部31から入力端子S2Iで受け取ると、バス40を使用状態から未使用状態に設定する。
つまり、復帰処理部38は、バスマスタデバイスとターゲットデバイスの両機能を持つ、換言すれば、バスマスタデバイスとターゲットデバイスが同一のデバイスで構成されるものであり、バスマスタデバイスからターゲットデバイスへのバス40を介したデータアクセスを行なうことでバス40を使用状態に設定し、節電状態から解除されると、バスマスタデバイスからターゲットデバイスへのバス40を介したデータアクセスを中止することで、バス40を他のデバイスに開放する。
<データ処理装置の節電処理の概要>
図2は、図1に示したデータ処理装置3における節電処理手順の概要を示したフローチャートである。
通常状態中に所定の条件にてデータ処理装置3が節電モードへの移行指示がなされると、節電モードからの復帰に必要な最低限の機能部分やデータ破壊防止用の回路(たとえばDRAMのリフレッシュ回路など)など必要最低限の部分のみを動作させ、コントローラ部31だけでなく復帰処理部38を含むデータ処理装置3の大部分が節電状態に入る(S1)。
節電モードからの復帰に必要な最低限の機能部分としては、I/Oインタフェース部35における外部機器からのデータを受け付ける機能に関わる機能部分(データ受信部やデータ受信信号S3を生成する機能部分)や、節電制御部36や、節電解除トリガ検出部34aなどである。
処理装置3が節電中には、バスマスタデバイスからターゲットデバイスへのデータアクセスをバス40にて行なうことで(つまりバスアクセスにて)バス40を使用状態として、他のデバイスがバス40を使用してデータ転送を行なうことができないように設定する(S2)。復帰処理部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の使用権を与えられても、復帰処理部38によってバス40が使用されているので、バス40の使用状態が解除されるまではデータ転送ができない(S10−NO)。
復帰処理部38は、データ処理装置3が節電状態にあるときに、I/Oインタフェース部35が外部のI/O装置からデータ転送を要求されると(S5−YES)、そのことを示すデータ転送要求監視部37が検知したデータ受信信号S3に基づきコントローラ部31の節電解除トリガ検出部34aに節電解除要求信号S1を送る(S6)。コントローラ部31は、節電解除トリガ検出部34aにて節電解除要求信号S1を受け取ると、節電制御部36を節電状態から復帰させ通常状態に戻した後に、節電解除通知送信部34bにて節電解除通知信号S2を復帰処理部38に送る(S7)。
復帰処理部38は、節電解除要求信号S1に応答した節電解除通知信号S2を節電解除通知送信部34bから受け取ってから、節電制御部36を節電状態から復帰させ通常状態に戻す(S8)。また、復帰処理部38は、節電状態の解除が完全に完了すると、バス40を使用状態から未使用状態に設定する(バス40の使用状態を解除する)ことで、I/Oインタフェース部35にデータ転送を許諾する(S9)。
つまり、復帰処理部38は、I/Oインタフェース部35(つまり外部のI/Oデバイス)とメモリ部もしくはI/Oインタフェース部35やバス40を介したI/Oデバイス間でデータ転送を行なう前に、データ処理装置3のデータ転送に必要な箇所を、節電状態から所定の順で段階的に復帰させる。
I/Oインタフェース部35は、既にバス40の使用権を与えられているので、復帰処理部38によってバス40の使用状態が解除される(つまりバスがアイドル状態になる)と(S10−YES)、コントローラ部31のメモリなどへ、外部のI/O装置から受信したデータの転送を直ちに開始する(S11)。
以上のステップを踏むことで、データ処理装置3は安全に節電状態へと移行することが可能であると同時に、節電中に意図しないデータ転送がバス40上で行なわれることを防ぐことができる。結果として、データ処理装置3を安全に節電状態に入れ、また、必要に応じて安全に復帰させた後にデータ転送を開始することができる。
<データ処理システムの全体構成;PCI利用>
図3は、本発明に係る画像形成装置を備えたデータ処理システムの一実施形態の構成例を示す図である。本実施形態のデータ処理システム1は、本発明に係るデータ処理装置3を画像処理装置として備えた画像形成装置の一実施形態として、画像形成部300を有するプリンタの構成にしている。
図3では、CPUやメモリを利用してソフトウエア的に画像形成処理を行なう機能を持つ画像形成装置2を構成する、すなわちパーソナルコンピュータなどのコンピュータ(電子計算機)の機能を利用して画像形成処理をソフトウエア的に実現する場合のハードウエア構成の一例を示している。
データ処理装置3は、複数のデバイスで共有する信号線(図1のバス40に相当)として、PCI(Peripheral Component Interconnect )バスを利用した構成としている。ただし、これは一例であって、本発明に係るデータ処理装置は、PCIバス以外の共有信号線で構成されていてもよいし、プリンタに限らず、CPUなどの制御装置により制御されるあらゆる装置であってよく、様々なデータ処理装置を用いて、データ処理システムを構築することができる。
図示するように、本実施形態のデータ処理システム1は、データ処理装置3を含みプリンタとして構成された画像形成装置2と、他の外部装置5とが通信ネットワーク9により接続されて構成されている。外部装置5としては、たとえば、パーソナルコンピュータ(PC;Personal Computer)やその他の電子計算機で構成されたホスト装置が用いられる。図示した例では、2台のホスト装置5a,5bが通信ネットワーク9に接続されている状態を示しているが、その台数は2台に限らず、1台であってもよいし、3台以上であってもよい。
画像形成装置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とを備えている。
また内部コントローラ部100は、バス調停制御部140と、各機能部との間のインタフェース機能をなすインタフェース部(I/F部)150と、本実施形態の特徴部分である節電制御処理を行なう節電制御部160とを有する。
図1との対応では、CPU110、メインメモリ部120、キャッシュメモリ130、およびバス調停制御部140とで、コントローラ部31が構成される。また、インタフェース部150がI/Oインタフェース部35に対応する。また、節電制御部160が、節電制御部36に対応する。
メインメモリ部120としては、随時書込みおよび読出しが可能であるとともに揮発性の記憶部の一例であるRAMを用いている。特に本実施形態では、RAMの一態様であるDRAMとして、第1DRAM122および第2DRAM124の2つを用いている。
メインメモリ部120は、プログラム制御変数や各種処理のためのデータなどを格納する。また、メインメモリ部120は、所定のアプリケーションプログラムによって取得した電子ドキュメント(文字データのみに限らず画像データを含んでよい)や自装置で取得した画像データ、さらには外部から取得した電子データなどを一時的に格納する領域を含んでいる。
なお、図では図示を割愛しているが、記憶部として、RAM以外にも、制御プログラムやパラメータなどを格納する読出専用の不揮発性の記憶部であるROMが設けられる。
上記において“揮発性の記憶部”とは、データ処理装置3の電源がオフされた場合には、記憶内容を消滅してしまう形態の記憶部を意味する。一方、“不揮発性の記憶部”とは、データ処理装置3のメイン電源がオフされた場合でも、記憶内容を保持し続ける形態の記憶部を意味する。記憶内容を保持し続けることができるものであればよく、半導体製のメモリ素子自体が不揮発性を有するものに限らず、バックアップ電源を備えることで、揮発性のメモリ素子を“不揮発性”を呈するように構成するものであってもよい。また、半導体製のメモリ素子により構成することに限らず、磁気ディスクや光ディスクなどの媒体を利用して構成してもよい。たとえば、ハードディスク装置を不揮発性の記憶部として利用できる。
バス調停制御部140は、バス調停回路を用いてバス要求を調停するアーキテクチャを採用するために用いられており、一例として、バス調停を行なうバスアービタ142と、バスアービタ142とCPU110やメインメモリ部120などとの間に介在してデータの受け渡しを中継するバスブリッジ部144とを有している。
メインメモリ部120や図示を割愛したROMはメモリバス158にてバスブリッジ部144に接続され、インタフェース部150や節電制御部160は、I/Oバス159にてバスブリッジ部144に接続されている。メモリバス158およびI/Oバス159は、アドレスバスとデータバスとを含む。
なお、バスアービタ142は、本実施形態のように、バスブリッジ部144の外部に独立した回路として設ける場合もあるし、図示を割愛するが、バスブリッジ部144に内臓される場合もある。
また本実施形態では、CPU110およびメインメモリ部120の双方に節電機能が設けられるものとするが、これに限定されず、たとえば、CPU110のみに節電機能があってもよい。メインメモリ部120はメモリコントローラを含むメモリ装置を広く指し、メモリコントローラに節電機能を設けた場合にも、ここでいう節電機能付きのメモリに含まれる。なお、メモリコントローラは、メインメモリ部120内にあることに限らず、たとえばバスブリッジ部144に配されることもある。
インタフェース部150としては、画像形成部300などの画像機器とのインタフェースを司るビデオI/F部152と、外部のI/O装置(図ではホスト装置5aや通信ネットワーク9と接続されるその他の機器)とのインタフェースを司るI/O_ASIC(特定用途向けIC)154と、I/O_ASIC154では提供できていない新たなI/F_LSIである汎用I/O_LSI156とを有している。
なお、I/O_ASIC154と節電制御部160との間の汎用バス157、メインメモリ部120とバスブリッジ部144との間のメモリバス158、あるいはビデオI/F部152、I/O_ASIC154、および汎用I/O_LSI156とバスブリッジ部144との間のI/Oバス159もインタフェース部150に含まれるものと考えてもよい。
I/O_ASIC154は、たとえばインターネットなどのネットワークとの間の通信データの受け渡しを仲介するネットワークI/F部154a、シリアルデータの受け渡しを仲介するUSB(Universal Serial Bus)_I/F部154b、およびパラレルデータの受け渡しを仲介するパラレルI/F部154cの各インタフェース機能部を有する。
また、I/O_ASIC154は、各I/F部154a,154b,154cを介して外部のI/O装置(ホスト装置5aなど)からデータを受信したときに、CPU110に割込みを発生させて節電状態から復帰させる機能を持ち、CPU110が節電状態から完全に復帰してから所望のデータ転送を開始する。
汎用I/O_LSI156は、I/O_ASIC154が関知しない外部I/O装置とのインタフェースを司るもので、節電制御部160が存在しない場合において、これをPCI(Peripheral Component Interconnect )のI/Oバス159に直接接続した場合には、I/O_ASIC154を利用した節電復帰機能を有効に活用することができないので、結果的には、汎用I/O_LSI156を介してのデータ受信ができるように、CPU110を浅い節電モードにしか入れることしかできない。この問題を解決するために、本実施形態では、節電制御部160を設けている。
節電制御部160は、PCIマスタデバイスである第1節電制御部162と、PCIターゲットデバイスである第2節電制御部164とを有して構成されている。主に第2節電制御部164が、図1に示したデータ転送要求監視部37および復帰処理部38の機能を担うが、節電中にI/Oバス159使用状態にするのは、第1節電制御部162と第2節電制御部164との共同作業による。
インタフェース部150内の各I/F部152〜156や節電制御部160内の各節電制御部162,164などの各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/O_LSI156用であり、NREQ2,NGNT2はI/O_ASIC154用であり、NREQ3,NGNT3はビデオI/F部152用である。
また、本実施形態においては、SMI割込みを利用するI/O_ASIC154をも搭載した構成としており、I/O_ASIC154は、節電中にPCIバスの使用が必要な場合には割込信号NSMIを先に出す仕組みができているため、節電制御部160にI/O_ASIC154の割込信号NSMIを入力して内部状態との矛盾が発生しないようにしている。具体的には、I/O_ASIC154のNSMI端子と第2節電制御部164のNSMI入力端子(図ではNSMIIと記す)との間は、割込信号NSMIの受け渡しがある。また、第2節電制御部164のNSMI出力端子(図ではNSMIOと記す)とCPU110のNSMI端子との間では、割込信号NSMIの受け渡しがある。さらに、第2節電制御部164のNQAK端子とCPU110のNQAK端子との間では節電信号NQACKの受け渡しがある。
たとえば、 詳細は後述するが、I/O_ASIC154がホスト装置5aからデータを受信したら第2節電制御部164を介してCPU110にSMI割込みを行ない、CPU110に節電復帰動作を開始させて節電信号NQACKをネゲートしてスリープモードから完全に復帰させ、これに応じて汎用I/O_LSI156を介したI/Oバス159へのデータ転送を可能にする。
また、詳細は後述するが、本実施形態特有の機能として、節電制御部160は、節電(スリープ)モード中はI/Oバス159を使用状態(ビジー状態)としておく。この節電中のバス使用状態を作る方策として、バスマスタデバイスである第1節電制御部162からターゲットデバイスである第2節電制御部164へのデータアクセスを行なうことで実現する。なお、バスマスタデバイス(第1節電制御部162)とターゲットデバイス(第2節電制御部164)とは、本実施形態のように、独立したデバイスで構成されることに限らず、同一のデバイスで構成されていてもよい。同一のデバイスで構成すれば、よりコンパクトになる。
また、第2節電制御部164は、汎用I/O_LSI156とバスアービタ142との間の要求信号NREQ1を監視しており、汎用I/O_LSI156がホスト装置5bからデータを受信したら、第2節電制御部164を介してCPU110にSMI割込みを行なう。これにより、CPU110に節電復帰動作を開始させてスリープモードから完全に復帰させるともに、I/Oバス159のビジー状態を解除する。このとき、第1節電制御部162は、バスアービタ142にバス要求(要求信号NREQ0)を送り、バスアービタ142はこの要求信号NREQ0に対するバス許諾通知(許可信号NGNT1)を汎用I/O_LSI156に送るようにし、これに応じて汎用I/O_LSI156を介したI/Oバス159へのデータ転送ができるようにする(詳細は後述する)。
なお、本実施形態においては、節電モード移行中のバスパーキングを汎用I/O_LSI156以外にする。これは、I/O_ASIC154が対応できない外部I/O装置用のインタフェース部である汎用I/O_LSI156がパーキングデバイスである場合には、既にPCIバスが獲得できているために要求信号NREQを出力することなくデータ転送をしてもよいことがPCIの仕様で唄われており、結果として不具合を起こしてしまう問題を回避するためである。
このような構成において、プリンタとして構成された画像形成装置2は、リモートのホスト装置(パーソナルコンピュータ)5aとネットワークI/F部154aを介して接続され通信ネットワーク9から印刷ジョブを受け付ける。あるいはスタンドアローンのホスト装置5aにUSB_I/F部154bまたはパラレルI/F部154cを介して接続され、ホスト装置5aから印刷ジョブを受け付ける。あるいは、スタンドアローンのホスト装置5bに汎用I/O_LSI156を介して接続され、ホスト装置5bから印刷ジョブを受け付ける。
<節電中にデータ転送されることの問題説明>
図4および図5は、節電中にデータ転送されることの問題を説明する図である。ここで、図4は、節電制御部160を設けない場合における節電機能の問題点を説明する図である。また、図5は、図4における節電機能の問題を解決する一手法を説明する図である。
図3に示したデータ処理装置3において、消費電力を削減する一手法として、I/O_ASIC154や節電制御部160を設けることなく、図4(A)に示すように、CPU110やメインメモリ部120内のDRAM122,124をスリープモードやセルフリフレッシュモードなどといった回路素子に組み込まれた省エネ機能を使用する方法を採る。これは、省電力化の手法として一般的に知られた手法である。
一方、図4(B)に示すように、CPU110をスリープモードなどの深い節電状態(最も省エネ効果が高い状態)に入れた場合には、データバスが動作することだけでは節電を解除する条件とはならないため、結果として、メインメモリ部120内のDRAM122,124のセルフリフレッシュを解除せずにデータ書込みを実施してしまうことが起こり得る。この場合、データが破棄される現象や、キャッシュメモリ130がコヒーレンシ(一貫性)を維持するためのバススヌープ(Bus Snoop )を行なわないために、キャッシュメモリ130内データとDRAM122,124内のデータとの間に不整合が生じる現象が発生する。
この問題を回避するべく、本実施形態では、図5(A)に示すように、外部I/O装置とのインタフェースを司るI/O_ASIC154を設けることが考えられる。これは、外部I/O装置からデータを受信した際、データ転送を開始する前に割込みを発生する機能は、汎用にI/F部品にはないため、ASICなどのカスタマイズ部品を設計する必要があるためである。なお、このような仕組みにする際には、たとえば、特開2001−180083号公報や特開2001−337838号公報(特に前者)に記載の仕組みを利用するとよい。
図5(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は、I/O_ASIC154とCPU110との間の割込信号NSMIの受け渡しに介在して節電状態からの復帰に寄与するだけでなく、汎用I/O_LSI156を介して外部I/O装置からデータを受信した際の節電状態からの復帰に寄与する点に特徴を有している。
特に、本実施形態の節電制御部160は、節電状態にあるときにはデータバス(たとえば図3のI/Oバス159)を使用状態(ビジー状態)とすることで、外部装置5との間でのデータ転送を行なうことができないようにしておき、汎用I/O_LSI156が外部装置5からデータを受信すると、節電状態からの復帰動作を開始し、完全に復帰したときにデータバスの使用状態(ビジー状態)を解除することで、データ処理装置3内部のバスデバイスと外部装置5との間でのデータ転送を許可する点に特徴を有する。以下、この点を中心に、節電制御部160の機能について詳細に説明する。
<節電制御部の機能説明>
節電制御部160は、データ処理装置3が節電状態にあるときに、外部のI/Oデバイスがデータ転送要求を出した際、節電状態を完全に解除してからデータ転送を開始可能にすることで、汎用のI/F部品を用いても、深い節電状態から確実かつ安全に復帰し、かつその深い節電状態中にいきなりデータ転送されてしまうことを防止する。こうすることで、汎用部品を使用して、新しい機能を実現しつつカスタマイズ部品を使用した時と遜色ない低消費電力を実現しつつ、確実かつ安全な復帰を実現できるようにする。
具体的には、汎用部品が有するDMA機能用の信号線を使用してデータ転送の開始タイミングを検出して節電の復帰を行なうと同時に、この信号線を制御することで節電状態から復帰した後にデータ転送を開始することで問題を解決する。特に、先にも述べたが、節電状態にあるときにはデータバスを使用状態とすることで、節電状態中にいきなりデータ転送されてしまうことを防止する。
このため、内部コントローラ部100には、入力データの処理などを行なうCPU110と、データの蓄積などを担うメインメモリ部120と、データを外部と通信する機能を有するI/Oインタフェース回路(I/Oデバイス)としてのインタフェース部150を構成要素として備える。
そして、CPU110やメインメモリ部120などに節電機能を設けるとともに、節電制御部160にてその節電状態を制御するようにし、節電中にインタフェース部150が外部機器からデータを受信すると、インタフェース部150とメインメモリ部120間あるいはインタフェース部150内の各I/Oデバイス間でデータ転送を行なう前に、節電制御部160は、データ転送に必要な箇所の節電状態を解除する。
節電の解除は、典型的には、節電制御部160に設けられる節電解除トリガ検出機能への信号入力によって行なう。この節電解除トリガ検出機能への入力信号は、たとえばI/Oデバイスのデータ転送要求信号から作成する。また、節電制御部160は、節電中に汎用I/O_LSI156がデータ転送要求(要求信号NREQ)を出した際、節電状態が完全に解除されたことの通知をCPU110から受けてから汎用I/O_LSI156にデータ転送処理を許可するようにする。
一例としては、本実施形態では、先にも述べたが、汎用I/O_LSI156とバスアービタ142との間の要求信号NREQ1を第2節電制御部164にて監視することで節電解除トリガ検出機能を実現するとともに、第1節電制御部162と第2節電制御部164との間でのI/Oバス159を介したデータアクセスを止めることで、汎用I/O_LSI156によるI/Oバス159の使用を可能にする。
つまり、第2節電制御部164が、汎用I/O_LSI156からデータ転送要求(要求信号NREQ1)を受け取るデータ転送要求受信部と、CPU110あるいはメインメモリ部120が節電状態のときに汎用I/O_LSI156がデータ転送要求を受け取った際にCPU110に節電解除要求を行なうための割込要求(割込信号NSMI)を送る割込要求送信部と、CPU110から節電解除通知(節電信号NQACK)を受け取る節電解除通知受信部と、データバスの使用状態を制御するバス使用状態制御部の各機能を持ち、節電解除通知に応じて汎用I/O_LSI156にデータ転送を許諾することで、確実かつ安全な節電状態からの復帰を実現する。
こうすることで、インタフェース部150としては、I/O_ASIC154に限らず、通常の汎用のものとしての汎用I/O_LSI156を使用することで、新しい機能を実現できるようになる。それでいて、カスタマイズ部品としてのI/O_ASIC154を使用した時と遜色ない低消費電力を実現するとともに、節電状態(深い節電状態でも問題ない)を確実に解除してから、データ転送を安全に開始することができるようになる。
なお、本実施形態の内部コントローラ部100は、I/O_ASIC154をも備えている。このことにより、CPU110からの節電移行指示に伴って節電状態へ移行し、データ転送要求を受け取ったときにCPU110に節電解除要求を行なうための割込要求(割込信号NSMI)を送り、CPU110から節電解除通知(節電信号NQACK)を受け、これに応じてデータ転送を開始する機能も持っている。
<節電制御部の基本機能;構成の概要>
図6は、節電制御部160の基本的な作用を説明するために、図3に示したデータ処理装置3の各機能部の構成を組み替えて示した概念図である。
この概念図に示すデータ処理装置3は、図3におけるインタフェース部150の各PCIデバイスをI/Oデバイス部170に置き換えている。また、説明を簡単にするため、バス調停制御部140を取り外し、その代わりに、バス調停を行なう機能を持ちDMA転送を制御する制御部としてのDMAC180を設けている。
CPU110と、DRAM126を有するメインメモリ部120と、I/Oデバイス部170と、DMAC180とが、アドレスバス(Address Bus )191およびデータバス(Data Bus)192(纏めてバス190ともいう)を介して相互に接続されている。
また、CPU110と節電制御部160およびDMAC180との間には、バスマスタとなるデバイスがバスを使用中であることを示すビジー信号NBUSYの受け渡しがある。なお、このビジー信号NBUSYのポートはプルアップ抵抗114によりプルアップされている。
また、CPU110と節電制御部160との間には、CPU110が節電中であることを示すスリープ信号NSLEEPと割込信号NSMIの受け渡しがある。この構成では、CPU110は節電中であることを示すNSLEEP信号を節電制御部160に出力し、CPU110は節電制御部160からのSMI割込みによって節電状態から復帰するものとする。
また、I/Oデバイス部170と節電制御部160およびDMAC180の間にデータの要求信号DREQの受け渡しがある。また、I/Oデバイス部170とDMAC180の間にデータ転送の許可信号NDACKの受け渡しがある。この構成では、通常の使用において、DMAC180は要求信号DREQがアサートされると、アドレスバス191およびデータバス192の調停を行なう。DMAC180は、アドレスバス191およびデータバス192の使用権を得ると、予め設定されたアドレスをアドレスバス191に出力すると同時に、許可信号NDACKをアサートする。これを受けて、I/Oデバイス部170は、データバス192に対してデータを出力する。この際には、DMAC180は、I/Oデバイス部170からの出力データがメインメモリ部120のDRAM126に書き込まれるよう、DRAM制御信号をコントロールすることで、CPU110を介さないDMA転送を実現する。
<節電制御部の基本機能;作用の概要>
<節電モードへの遷移動作>
図7は、図3に示した構成(図6に示した構成でも同様である)における節電モードへの遷移を示すフローチャートである。先ず、システム全体が節電モードに移行する際には、図7に示すように、節電制御部160に対してI/O_ASIC154との間の汎用バス157経由でプリパワーセーブモードへの移行を指示する(S20)。具体的には、節電制御部160内に設けた図示しないレジスタへの設定を行なう。これと前後して、I/O_ASIC154を初めとする各デバイスに対して節電モードへの移行設定を行なう(S21)。これらの節電モード移行準備が整ったら最後にCPU110を節電モードへ移行する(S22)。このフローに従って設定を行なうと、CPU110の節電信号NQACKがHレベルからLレベルに遷移し、この遷移によってCPU110が節電モードへ移行したことを節電制御部160は検知することができる。
<システムの状態と信号の相関関係>
図8は、図6に示した構成におけるシステムの状態と信号の相関関係を示す図である。図示するように、たとえばCPU110がDRAM126へアクセスする際には、バス190が使用中であることを他のデバイスに知らしめるためにビジー信号NBUSYをアサートする。
たとえば、通常状態においてデータ転送がなければ、I/Oデバイス部170およびバス190はともにアイドル(Idle)状態にある。なお、アイドル状態とは、全てのバスマスタがバスアクセスを要求しない期間である。
ここで、I/Oデバイス部170が外部機器からデータを受信すると(t10)、受信データを転送するために、DMA転送要求信号である要求信号DREQをアサート(Hレベルに)する(t12)。DMAC180は、要求信号DREQを受け取ると、バス190の調停を行なうとともに、要求信号DREQに対して許可信号NDACK(Lレベル)を返す(t14)。
I/Oデバイス部170は、許可信号NDACKを受け取ると、ビジー信号NBUSYをアサート(Lレベルに)してバス190が他のデバイスに使用されないようにしてから、データ転送を開始する(t16)。この後、I/Oデバイス部170は、データ転送が完了すると、ビジー信号NBUSYをネゲート(Hレベルに)することで、バス190が他のデバイスで使用可能にする(t17)。これにより、I/Oデバイス部170およびバス190はともにアイドル(Idle)状態に戻る。このとき、I/Oデバイス部170は、DMA転送要求信号である要求信号DREQをネゲート(Lレベルに)し(t18)、これを受けて、DMAC180は、許可信号NDACKをネゲート(Hレベルに)する(t19)。
<節電状態への移行>
この後、システム全体を節電モードへ移行させる場合には、システム(ソフトウエア)は、先ず、節電移行処理において、ビジー信号NBUSYをアサートしバス190が他のデバイスに使用されないようにして(t20〜t24)、節電制御部160の状態をプリパワーセーブ(Pre-Power Save)モードに変更し(t22)、最後にCPU110を節電状態に変更する(t28)。
このとき、節電制御部160は、プリパワーセーブモードに移行すると(t22)、ビジー信号NBUSYをアサートし(t26)、バス190が他のデバイスに使用されないようにする。
CPU110が節電状態に入ると(t28)、スリープ信号NSLEEPがアサートされ、このスリープ信号NSLEEPが遷移することで、節電制御部160は、パワーセーブ(Power Save)モードへと移行する(t29)。節電制御部160は、パワーセーブモードへ移行しても、ビジー信号NBUSYをアサートした状態を維持することで、バス190が他のデバイスに使用されないようにする。
なお、節電状態に移行する際には、図示しないI/Oバスクロックを停止させ、コントローラ部31内の図示を割愛したDRAMなどへのデータ転送が行なわれないようにする。また、コントローラ部31内の図示を割愛したCPUが節電状態に入ったら、さらに、CPU内部の図示を割愛したPLL回路の動作を停止させる。PLL回路の動作が停止したら、CPUへのクロック供給自体も停止させることで、最も消費電力の少ない状態となり、システム全体が深い節電状態となる。
<節電状態からの復帰>
この後、節電中にI/Oデバイス部170がデータを受信すると(t30)、受信データを転送するために、要求信号DREQをアサート(Hレベルに)する(t32)。DMAC180は、要求信号DREQを受け取ると、バス190の調停を行なうとともに、要求信号DREQに対して許可信号NDACK(Lレベル)を返すが(t34)、一方でビジー信号NBUSYがアサートされているためデータ転送自体行なうことができず、ビジー信号NBUSYがネゲートされるのを待つこととなる。
一方、節電制御部160は、要求信号DREQを監視しており、この要求信号DREQがアサートされると、ウェークアップ(Wake Up )モードに移行し(t35)、CPU110に対して節電復帰を催すために、割込信号NSMIをアサート(Lレベルに)する(t35)。
CPU110は、割込信号NSMIがアサートされると、節電復帰処理を行なう(t37〜t39)。この節電復帰処理の一例としては、たとえば、節電中(CPU110をスリープモードにしたときなど)にCPU110内部のPLL回路を停止した場合、節電復帰時にはソフトウエア的な処理を開始する前に、PLLをリロックするなどのハードウエア的な処理がある。
節電復帰処理が完了するとき、CPU110は、スリープ信号NSLEEPをネゲートすると同時に、節電復帰のためのスイッチ(SW;SWwitch )処理を行なう(t39)。このCPU110が節電状態から復帰するときには、ソフトウエアおよびハードウエアを通常状態に戻すための(つまり節電復帰のための)処理を行なう。本例では、CPU110へのSMI割込みを発生させてSMIハンドラ内でソフトウエア的な節電復帰処理を行なう(t38;ソフトウエアの状態部のSMIハンドラを参照)。
一方、節電制御部160は、スリープ信号NSLEEPがネゲートされたことを検出して、ビジー信号NBUSYをネゲート(Hレベルに)して(t40)、通常状態に移行する(t41)。このとき、許可信号NDACKが既にアサートされている、つまりI/Oデバイス部170はDMAC180から転送許可(許可信号NDACK)を既に得ている。よって、I/Oデバイス部170は、ビジー信号NBUSYがネゲートされたら改めてビジー信号NBUSYをアサートして他のデバイスにバスが使用されることがないようにしてからデータ転送を開始する(t42)。
この後、I/Oデバイス部170は、データ転送が完了すると、ビジー信号NBUSYをネゲート(Hレベルに)することで、バス190が他のデバイスで使用可能にする(t47)。これにより、I/Oデバイス部170およびバス190はともにアイドル(Idle)状態に戻る。このとき、I/Oデバイス部170は、DMA転送要求信号である要求信号DREQをネゲート(Lレベルに)し(t48)、これを受けて、DMAC180は、許可信号NDACKをネゲート(Hレベルに)する(t49)。
<PCIインタフェースでの処理例>
次に、図3に示したようにPCIインタフェースを用いた場合における、具体的な節電処理について説明する。
<節電処理の問題点>
図9は、PCIインタフェースを用いた場合における節電処理の問題点を説明する図である。通常、1つのバスを複数のデバイスが共有して使用する場合、バスの使用権を獲得していないデバイスはその出力をハイインピーダンス(Hi−Z)状態として、バスの使用権を獲得したデバイス(マスタデバイス)およびそれに対して応答する必要があるデバイス(ターゲットデバイス)のみが信号線を駆動することで、バス信号の衝突を回避するようになっている。
従来のパーソナルコンピュータ内部のインタフェースであるISA(Industry Standard Architecture)バスなどでは、誰もバスを使用していないとき(アイドル状態)にはバス信号をドライブするデバイスがないことからハイインピーダンス状態となってしまい誤動作することを回避するため、プルアップもしくはプルダウン処理を行なっている。
一方、PCIバスにおいは、アイドル状態のときにも何れかのPCI接続デバイスに対してバス調停器(アービタ)がバス使用許可信号(許可信号NGNT)をアサートし、許可信号NGNTをアサートされたPCIデバイスはデータ転送の有無に関わらず必ずPCIバス信号をドライブするように求められている。
ここで、アービタに着目すると、何れのPCIデバイスからもバス使用権獲得要求(要求信号NREQ)がない状態であったとしても、何れか1つのPCIデバイスに対して許可信号NGNTをアサートする点に特徴がある。転送するデータがないにも関わらず許可信号NGNTをアサートされたPCIデバイスは、PCI制御信号を非アクティブ(データ転送を行なわない状態、かつ、PCI信号をドライブした状態)に、その他の信号(データ線等)をHレベルもしくはLレベルにする。
なお、PCI規格では、許可信号NGNTをアサートされていながらデータ転送を行なわない状態をバスパーキングと呼び、PCIバスを非アクティブ状態に駆動するPCIデバイスをパーキングデバイスと呼ぶ。また、バスアービタは、パーキングデバイス以外のPCIデバイスからPCIバス使用権獲得要求(要求信号NREQ)がない限り、パーキングデバイスへの許可信号NGNTを継続して出す仕様となっている。
ここで、パーキングデバイスとなっているPCIデバイスに着目すると、バスパーキング状態にあるときにデータ転送を行ないたい場合、既に許可信号NGNTがアサートされているために、直ちにデータ転送を始めてもよいことになっている。許可信号NGNTがネゲートされているときにデータ転送を行ないたい場合、先ず要求信号NREQを出し、許可信号NGNTがアサートされてからデータ転送を行なう、という手順と比較すると、パーキングデバイスがデータ転送を行なう場合には(既にバス獲得できているので)バス獲得を行なう必要がない分、早くデータ転送を開始できるというメリットがある。
たとえば、ネットワークからデータの受信を行なう場合、PCIバスを使用するのはネットワークI/Fデバイスとなる。1つの受信データをPCIバスを使用してDRAMに転送した後、一度PCIバスはアイドル状態となる。このとき、パーキングデバイスがネットワークI/Fデバイスであれば、次にネットワークからデータを受信したら、直ちにPCIバスを使用してDRAMにデータ転送を行なうことができる。通常、同じPCIデバイスが繰り返してPCIバスを使うことが多いことから、パーキングデバイスには最後にPCIバスを使用したデバイス(以下ラストデバイスという)を選択するよう、アービタを構成することが望ましい。
<問題点の具体例>
図9を参照して、具体的に説明する。ここで、図9(A)は、パーキングデバイスに特定のデバイスを選択した場合のPCIバス動作を示し、図9(B)は、パーキングデバイスにラストデバイスを選択した場合のPCIバス動作を示している。
PCIバスがアイドル状態のとき、パーキングデバイス以外のPCIデバイスがデータ転送をしたいとする。先ず、バスを使用したいデバイスが、要求信号NREQをアービタに出し許可信号NGNTを待つ動作(アービトレーション)が行なわれる。アービトレーションでバスを獲得すると、第1のデータ転送Aが行なわれ、バスがアイドルになる。
このとき、アービタの構成に因るが、図9(A)に示すように、ある決められた特定のPCIデバイスをパーキングデバイスにした場合、第2のデータ転送Bに先立ってアービトレーションが必要となる(Ta〜Tb)。
一方、図9(B)に示すように、パーキングデバイスにラストデバイスを選ぶようにアービタを構成した場合には、第2のデータ転送Bを開始する前のアイドル状態から既にPCIバスの使用権を獲得しているので、直ちにデータ転送を行なうことができるようになる。よって、前者(図9(A)の動作)に対して後者(図9(B)の動作)は、Ta〜Tb期間のアービトレーションが不要な分だけ高速なデータ転送が可能となる。
パーキングデバイスに何を選択するかは、アービタの構成で決まるのであるが、性能的な点からは、ラストデバイスをパーキングデバイスとするのが望ましいことが分かる。
しかしながら、図9(B)の動作に示したように、ラストデバイスをパーキングデバイスにすると、節電中にいきなりデータ転送が開始されてしまう虞れがある。すなわち、図9(B)に示す動作から分かるように、ラストデバイスをパーキングデバイスとした場合には、パーキングデバイスが外部からのデータ受信などによってデータ転送を開始したい場合には、アービトレーションなしにデータ転送が可能となる。
このことは、換言すると、アイドル中に許可信号NGNTを貰っていれば、要求信号NREQを出すこともなくデータ転送ができることを意味する。しかしながら、CPUやメモリが節電中(PCIはアイドル)に、PCIバス経由でメモリへのデータ転送が行なわれてしまった場合には、メモリへデータが書き込まれない、あるいは、メモリへの書き込みは正常に行なわれたとしてもCPU用のキャッシュメモリと不整合を起す、などの問題が発生する。
汎用のPCIデバイスを用いてこのような問題を回避する方法としては、たとえば、PCIデータ転送開始タイミングを検出する手段として要求信号NREQを利用すること、すなわち、PCIバスアービタへの要求信号NREQを制御することで、節電中にデータ転送が行なわれることを防止する方式を採用することが考えられるが、ラストデバイスをパーキングデバイスにすると、要求信号NREQが出ないため実現できないことになる。
これを回避する方法としては、たとえば、許可信号NGNTをマスクしている間は汎用I/O_I/F以外のデバイス(ブリッジ;Bridgeなど)に信号NGNTを与えてバスパーキングする、あるいはパーキングデバイスをCPUにするなど、節電解除が行なわれてからしかPCIバスを使用しないデバイスをパーキングデバイスとする方式を採ることが考えられる。
しかしながら、図9で説明した通り、同じPCIデバイスが連続してPCIバスを使用する場合においては、その都度、アービトレーションが入ってしまうために、バス転送性能が低下するという問題が避けられない。
そこで、本実施形態では、節電状態の制御の際に、バスの状態をも制御することで、ラストデバイスがパーキングデバイスであっても、節電中にデータ転送が行なわれることを確実に防止するとともに、同じPCIデバイスが連続してPCIバスを使用する場合に、アービトレーションなしにデータ転送ができる仕組みにする。以下、具体的に説明する。
<PCIデバイスにおける節電制御部の機能;作用の概要>
図10は、図3に示した構成におけるシステムの状態と信号の相関関係を示す図である。なお、ラストデバイスにしたときに従来であれば節電復帰が適切にできない点に着目して、以下の説明ではラストデバイスをパーキングデバイスとすることを前提とする。
基本的には、システムが通常の状態においては、汎用I/O_LSI156がデータを受信した場合には、要求信号NREQおよび許可信号NGNTを用いてI/Oバス159の使用権の獲得要求および許可を得た後に、I/Oバス159を使用してデータ転送を行なう。次に、システムが節電移行処理に入ると、システム全体を節電状態に入れるための各種処理が行なわれる。
一連の処理の中には、I/Oバス159上に接続された各種デバイスへの設定も含まれ得る。節電移行処理の最後に、節電制御部160に対して節電状態への移行設定を行なう。節電制御部160は節電状態への移行設定が行なわれると、I/Oバス159の使用権を獲得し、節電制御部160自身に対するデータアクセスを行なう動作を開始する。節電制御部160は、このアクセス時にはデータ転送完了応答(完了信号NTRDY=L)を返さない。これと並行して、スイッチ処理によって、CPU110を節電状態へ移行させる。
たとえば、通常状態においてデータ転送がなければ、I/Oデバイス部170およびバス190はともにアイドル(Idle)状態にある。ここで、I/Oデバイス部170は、外部機器からデータを受信すると(t50)、受信データを転送するために、要求信号NREQ1をアサート(Lレベルに)してバス要求をバスアービタ142に出す(t52〜t56)。バスアービタ142は、要求信号NREQ1を受け取ると、要求信号NREQ1に対して許可信号NGNT1(Lレベル)を返す(t54)。汎用I/O_LSI156は、バスアービタ142から許可信号NGNT1を受け取ると、I/Oバス159の使用権を獲得するフレーム信号NFRAMEをアサート(Lレベルに)してI/Oバス159が他のデバイスに使用されないようにしてから(t55〜t58)、データ転送を開始する(t57)。
このとき(t55〜t59)、汎用I/O_LSI156は、バスアービタ142に対して、デバイスの存在応答(デバイス選択信号NDEVSEL=L)や、I/Oバス159の使用を開始する開始信号NIRDY(=Lレベル)およびデータ転送完了応答(完了信号NTRDY=L)を規定時間内に返して、バスサイクルにウェイトを掛ける。完了信号NTRDYがネゲート(Hレベルに)なると、I/Oバス159の状態はアイドル状態になる。
<節電状態への移行>
この後、システム全体を節電モードへ移行させる場合には、I/O_ASIC154内の節電機能を有効にする、割込信号NSMI(CPU110を節電状態から復帰させるための割込み入力信号線)のみを有効にする、などシステム全体を節電状態に入れるための処理を行なう。
この処理において、CPU110は先ず、要求信号NCPUREQをアサート(Lレベルに)してバス要求をバスアービタ142に出す(t60)。バスアービタ142は、要求信号NCPUREQを受け取ると、要求信号NCPUREQに対して許可信号NGNT1をネゲート(Hレベルに)するとともに(t61)、許可信号NCPUGNTをアサート(Lレベルに)する(t62)ことで、I/Oバス159が他のデバイスに使用されないようにI/Oバス159をビジー状態にする(t63)。
この後、CPU110は、フレーム信号NFRAMEをアサート(Lレベルに)して、節電制御部160にデータ転送を行なって、第1節電制御部162内に設けられた図示しないパワーセーブレジスタに節電モードへの移行を指示する値を書き込み、節電制御部160の状態をプリパワーセーブモードに変更する(t64)。このとき(t63〜t64)、CPU110は、バスアービタ142に対して、デバイスの存在応答(デバイス選択信号NDEVSEL=L)や、I/Oバス159の使用を開始する開始信号NIRDY(=Lレベル)およびデータ転送完了応答(完了信号NTRDY=L)を規定時間内に返して、バスサイクルにウェイトを掛ける。完了信号NTRDYがネゲート(Hレベルに)なると、I/Oバス159の状態はアイドル状態になる。
第1節電制御部162は、パワーセーブレジスタへの節電モード移行指示の書込みが行なわれると、要求信号NREQ0をアサート(Lレベルに)して、I/Oバス159の使用要求をバスアービタ142に出す(t65)。バスアービタ142は、要求信号NREQ0を受け取ると、要求信号NREQ0に対して許可信号NCPUGNTをネゲート(Hレベルに)するとともに(t66)、許可信号NGNT0をアサート(Lレベルに)する(t67)ことで、I/Oバス159が他のデバイスに使用されないようにI/Oバス159をビジー状態にする(t68)。
ここで、バスアービタ142が許可信号NGNT0をアサートすると、第1節電制御部162は、フレーム信号NFRAMEをアサートして第2節電制御部164へのアクセスを行なう(t69)。このとき、第2節電制御部164は、第1節電制御部162からのアクセスに対してデバイスの存在応答(デバイス選択信号NDEVSEL=L)を行なうが、データ転送完了応答(完了信号NTRDY=L)を行なわないことで、第1節電制御部162から第2節電制御部164へのアクセスでI/Oバス159の状態をビジー状態に維持する(t70,t71以降)。つまり、節電モード期間中は、節電制御部160は、I/Oバス159を獲得したまま完了信号NTRDYを返さない状態を保持することにより、バスサイクルにウェイトを掛け続けているのと実質的に同じ動作を行なう。
また、バスアービタ142のパーキングデバイスにラストデバイス(本例では節電制御部160に相当する)が選ばれていれば、第1節電制御部162への許可信号NGNT0がアサートされたままになる。一方、節電移行処理の最後にCPU110が節電状態に入ると、CPU110は、節電信号NQACKをアサート(Lレベルに)する(t72)。
第2節電制御部164が節電信号NQACKのアサートを検知すると、節電制御部160はパワーセーブモードへと移行する(t73)。このとき、節電制御部160がパワーセーブモードへ移行しても、ビジー信号NBUSYをアサートした状態を維持することで、I/Oバス159が他のデバイスに使用されないようにする。
<節電状態からの復帰>
この節電モード状態において、汎用I/O_LSI156がデータを受信すると、I/Oバス159の使用権を獲得するために要求信号NREQ1をアサートするし、バスアービタ142は、この要求信号NREQ1に対して予め設定されたアービトレーションアルゴリズムに従ってバス使用権を与える。たとえば、I/Oデバイス部170は、節電モード中にデータを受信すると(t74)、通常状態と同様に、受信データを転送するために、要求信号NREQ1をアサート(Lレベルに)してバス要求をバスアービタ142に出す(t75)。
バスアービタ142は、要求信号NREQ1を受け取ると、許可信号NGNT0をネゲート(Hレベルに)にするとともに(t78)、通常状態と同様に許可信号NGNT1をアサート(Lレベルに)にする(t79)。しかしながら、このときI/Oバス159はビジー状態にあるため、汎用I/O_LSI156は、バスアービタ142から許可信号NGNT1を受け取っても、データ転送を開始できないので、I/Oバス159のビジー状態が解除されるのを待つこととなる。
一方、節電制御部160は、汎用I/O_LSI156が要求信号NREQ1をアサートしたことを検出すると、CPU110に対してSMI割込みを発生させ、CPU110を節電状態から復帰させる。CPU110は、節電から復帰すると、節電信号NQACKをネゲートする。節電制御部160は、節電移行処理時から継続していた自身に対するPCIアクセスに対して完了信号NTRDYを返すことでI/Oバス159の転送サイクルを正常に終了させる。
たとえば、第2節電制御部164は、汎用I/O_LSI156の要求信号NREQ1を監視しており、この要求信号NREQ1がアサートされると、ウェークアップ(Wake Up )モードに移行し(t76)、CPU110に対して節電復帰を催すために、割込信号NSMIをアサート(Lレベルに)する(t77)。
CPU110は、割込信号NSMIがアサートされると、節電復帰処理を行なう(t80〜t82)。CPU110は、節電復帰動作を開始し、完全に節電状態から復帰すると、節電信号NQACKをネゲートすると同時に、節電復帰のためのスイッチ(SW;SWwitch )処理を行なう(t82)。このCPU110が節電状態から復帰するときには、ソフトウエアおよびハードウエアを通常状態に戻すための(つまり節電復帰のための)処理を行なう。
本例でも、CPU110へのSMI割込みを発生させてSMIハンドラ内でソフトウエア的な節電復帰処理を行なう(t88;ソフトウエアの状態部のSMIハンドラを参照)。SMIハンドラ内でのソフトウエア的な節電復帰処理が完了すると、SMIハンドラ(ここでは第2節電制御部164)は、割込信号NSMIをネゲート(Hレベルに)する(t90)。これにより、節電制御部160は、ウェークアップモードから通常モードに移行する。
一方、第2節電制御部164は、節電信号NQACKがネゲートされたことを検出すると、第1節電制御部162から第2節電制御部164へのPCIバスアクセスに対して完了信号NTRDYを所定期間アサートすることで、節電中に継続していたバスビジー状態を解除する(t84〜t86)。
このとき、汎用I/O_LSI156は、バスアービタ142から転送許可(許可信号NGNT1)を既に得ているので、データ転送を直ぐに開始することができる。よって、汎用I/O_LSI156は、I/Oバス159のバスビジー状態が解除された後には、I/Oバス159の使用権を獲得するフレーム信号NFRAMEをアサート(Lレベルに)してI/Oバス159が他のデバイスに使用されないようにしてから(t92〜t94)、データ転送を開始する(t93)。
このとき(t92〜t95)、汎用I/O_LSI156は、バスアービタ142に対して、デバイスの存在応答(デバイス選択信号NDEVSEL=L)や、I/Oバス159の使用を開始する開始信号NIRDY(=Lレベル)およびデータ転送完了応答(完了信号NTRDY=L)を規定時間内に返して、バスサイクルにウェイトを掛ける。完了信号NTRDYがネゲート(Hレベルに)なると、I/Oバス159の状態はアイドル状態になる(t95)。
このような処理手順を踏むことで、PCIデバイスにおける節電制御において、アービタ(本例ではバスアービタ142)のパーキングデバイスをラストデバイスに設定することで、バス性能の低下を招くことなくデータ転送を実現することができる。加えて、節電状態から完全に復帰した後にデータ転送を開始するようにすることができ、システム状態が節電中に汎用I/O(本例では汎用I/O_LSI156)によりPCIバス転送が行なわれることを防ぐことができる。
つまり、節電状態におけるI/Oバス159に対するバス調停の結果として、節電状態ではバス利用権が汎用I/O_LSI156以外のPCIデバイス(特に本例ではラストデバイスである節電制御部160)に与えられ、節電状態から完全に復帰したときに汎用I/O_LSI156に与えられることで、節電状態から完全に復帰したときに初めてデータ転送が開始される。
以上の動作を行なうことで、汎用I/O_LSI156を使用しながら、システムを深い節電モードに移行していたとしても、システムが節電モードから復帰してから通常のPCIデータ転送を開始するため、従来懸念されていた不具合が発生しなくなる。
汎用I/O_LSIがパーキングデバイスである場合には、既にPCIバスが獲得できているために要求信号NREQを出力することなくデータ転送をしてもよいことがPCIの仕様で唄われており、従来であれば結果として不具合を起こしてしまう問題が起こるが、節電モード移行中のバスパーキングを汎用I/O_LSI以外にするとともに、その汎用I/O_LSI以外のもの(本例では節電制御部160)でバスを使用状態に設定することで、この問題を解消することができる。
加えて、パーキングデバイスにラストデバイスを選ぶようにアービタを構成することで、汎用I/O_LSI156は、データ転送(図補充¥1の第2のデータ転送B)を開始する前のアイドル状態から既にPCIバスの使用権を獲得しているので、アービトレーションなしに、直ちにデータ転送を行なうことができるようになる。
また、節電制御部160としては、要求信号NREQなどのデータ受信信号S3の監視やバスの使用状態の制御などの機能を新たに持てばよく、さほど大掛かりな回路構成を必要としないので、低価格で簡便な回路を追加することで、I/O_ASIC154などのカスタマイズ部品を使用した時と同等に高い省エネ効果を得ることができる。
<状態遷移図と真理値表>
図11は、図10に示した節電制御部160の動作状態の概要を説明する図であり、図11(A)は、図10に示した動作を行なう節電制御部160の状態遷移図、図11(B)は、節電制御動作時の入出力信号の真理値表である。
電源投入状態およびシステムが通常の動作状態にあるときには通常動作シーケンスにある。このとき、第2節電制御部164は、NSMI入力端子に入力されたI/O_ASIC154からの割込信号NSMIをそのままNSMO出力端子からCPU110に向けて出力する。これは、既存のI/O_ASIC154が節電状態から復帰する際に割込信号NSMIをアサートする仕組みが組み込まれているためである。
次に、節電制御部160に対して節電移行設定が行なわれると、プリパワーセーブシーケンスへと移行する。このとき、節電制御部160は、要求信号NREQをアサートしてI/Oバス159の獲得動作を行なう。節電制御部160は、I/Oバス159の使用権を獲得すると、自分自身(自デバイス)に対する読出しもしくは書込みのアクセスを行なう。このとき、節電制御部160は、読出しもしくは書込みの各アクセスに対して、デバイス選択信号NDEVSELのみをバスアービタ142に返し、完了信号NTRDYを返さない。こうすることで、I/Oバス159を使用中の状態(以下PCIアクセス状態ものいう)を保持することができる。
次に、CPU110が節電信号NQACKをアサートすると、節電制御部160は、パワーセーブシーケンスへと移行し、I/Oバス159は節電制御部160が獲得した状態を継続する。
次に、節電制御部160は、I/O_ASIC154がデータを受信したためにNSMI入力端子への割込信号NSMIがアサートされるか、または汎用I/O_LSI156がデータを受信したためにNREQ入力端子への要求信号NREQがアサートされると、ウェークアップシーケンスへと移行する。このシーケンスに進むと、節電制御部160は、割込信号NSMIをアサートして、NSMI出力端子からCPU110に伝えることで、CPU110を節電状態から復帰させる。これによってCPU110が節電状態から復帰すると、CPU110は節電信号NQACKをネゲートする。
節電制御部160は、節電信号NQACKのネゲートを検出すると、通常動作シーケンスへと移行すると同時に、完了信号NTRDYを返してプリパワーセーブから継続していたPCIアクセスを正常に終了させる。その結果、汎用I/O_LSI156は、システムが節電状態から完全に復帰した後にデータ転送を行なうことができる。
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で上記実施形態に多様な変更または改良を加えることができ、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれる。
また、上記の実施形態は、クレーム(請求項)にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。前述した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜の組合せにより種々の発明を抽出できる。実施形態に示される全構成要件から幾つかの構成要件が削除されても、効果が得られる限りにおいて、この幾つかの構成要件が削除された構成が発明として抽出され得る。
たとえば、上記実施形態においては、データ処理装置3が節電中には節電制御部160自身がI/Oバス159にアクセスを行なう、より具体的には第1節電制御部162と第2節電制御部164との間でI/Oバス159を使用してデータ転送(読出や書込み)を行なうことでバスサイクルをビジー状態にし、そのビジー状態の間は、他のデバイスがI/Oバス159を使用することができない構成として説明しているが、汎用I/O_LSI156を除くバスブリッジ部144を含むPCIデバイスが節電制御部160に対するPCIアクセスをI/Oバス159を使用して行なうことでも、同様にバスサイクルをビジー状態にすることができる。
また、上記実施形態においては、汎用I/O_インタフェースが1つ(汎用I/O_LSI156)しか接続されていないケースにのみ着目して説明しているが、同様な仕組みを拡張することで、複数の汎用I/O_インタフェースが接続されたシステムにおいても、容易な回路構成の変更によって対応することができる。
また、節電状態中や節電状態からの復帰時に、I/Oバス159を適切に制御する機能を節電制御部160にて実行していたが、このような動作を行なうものである限り、どのような構成を採用してもよい。たとえば、図示を割愛するが、プルアップもしくはプルダウンを適切に処理する方式や、バスホールド機能を有したバスバッファを用いる方式などを採ることもできる。
また、上記実施形態では、節電制御部160をバス調停制御部140とは別の構成要素(機能ブロック)として説明したが、PCIバスアービタとして機能するバス調停制御部140(特にバスアービタ142)に機能を付加し、その同一回路内にバス調停機能と節電機能とを実装する構成を採ることもできる。あるいは、I/O_ASIC154の中に節電制御部160の機能を実装する構成を採ることもできる。
また、PCIバスを使用したデータ転送はマスタデバイス(イニシエータともいう)とターゲットデバイスの2つのデバイス間で行なわれるものであるため、図3では、節電制御部160をマスタデバイスとして機能する第1節電制御部162とターゲットデバイスとして機能する第2節電制御部164とに分けて示したが、同様な動作は、図12に示す変形例のように、1つのデバイスでなる節電制御部160にても行なうことができる。
すなわち、図3では、PCIバスに慣れ親しんだ人に直感的に分かるように、イニシエータとターゲットを明確に区別しているが、図12に示す変形例のように、物理的に1つのデバイスで実現しても何ら問題がない。これは、節電中にI/Oバス159をビジー状態にするためには、
1)I/Oバス159の使用権を獲得する、
2)フレーム信号NFRAMEをアサートして、I/Oバス159の使用を開始する開始信号NIRDYおよびデバイス選択信号NDEVSELを規定時間内に返してバスサイクルにウェイトを掛ける、
というステップを踏めばよいことになるからである。
さらに、節電状態から復帰するイベント(上記実施形態ではCPU110からの節電信号NQACKがLからHに遷移)が発生したら、
4)完了信号NTRDYを返す、
という動作を行なうことで、I/Oバス159のビジー状態を解除することができる。
このとき、全ての信号はバス接続となっているので、信号をドライブするデバイスが唯一であればよいため、あえてイニシエータとターゲット(図@8では、第1節電制御部162と第2節電制御部164)に分ける必要はない。
また、上記実施形態では、データ処理装置3に画像処理を行なわせ画像形成部300にて画像を印刷用紙などに出力するプリンタを画像形成装置2の一例に説明したが、節電機能を有するCPUやDRAMなどを採用するデータ処理装置や画像形成装置であればどのようなものでもよい。
1…データ処理システム、2…画像形成装置、3…データ処理装置、5…外部装置、9…通信ネットワーク、31…コントローラ部、32…使用権制御部、34…節電解除処理部、34a…節電解除トリガ検出部、34b…節電解除通知送信部、35…I/Oインタフェース部、36…節電制御部、37…データ転送要求監視部、38…復帰処理部、100…内部コントローラ部、110…CPU、120…メインメモリ部、122,124,126…DRAM、140…バス調停制御部、142…バスアービタ、144…バスブリッジ部、150…インタフェース部、156…汎用I/O_LSI、158…メモリバス、159…I/Oバス、160…節電制御部、162…第1節電制御部、164…第2節電制御部、300…画像形成部