《実施形態1》
図1には本発明の実施形態1に係る半導体集積回路が例示される。半導体集積回路11は、特に制限されないが、単結晶シリコン等の1個の半導体基板に、相補型MOSトランジスタやバイポーラトランジスタ等を形成する半導体集積回路技術によって形成されている。
半導体集積回路11は、CPU(中央処理装置)101と、メモリ制御部102と、ルータ103と、電力・クロック制御ブリッジ104と、電力供給部105と、クロック供給部106と、IP(Intellectual Property)モジュールと称される機能モジュール(以下、IPと記す)107とを備えている。さらに、半導体集積回路11は、DMAC(Direct Memory Access Controller)108と、割込みコントローラ109等の各機能モジュールを備えている。また、半導体集積回路11には、メモリ12と、モード信号生成部13と、リセット信号生成部14と、電源15と、クロック信号生成部16等が接続される。
CPU101は、ルータ103及びメモリ制御部102を介してメモリ12にアクセスし、メモリ12に保持されているプログラムを実行することによって、半導体集積回路11内外の制御を行う。半導体集積回路11内部のアクセスは、スプリット方式で行われており、アクセスを要求する機能モジュールがアクセス要求信号を送信し、アクセス要求信号を受信した機能モジュールが、アクセスを要求した機能モジュールにアクセス応答信号を送信することにより、データ転送が可能となる。
メモリ制御部102は、ルータ103を介してCPU101、電力・クロック制御ブリッジ104、IP107及びDMAC108からのアクセス要求信号を受信し、このアクセス要求信号に基づいて、メモリ12に読出し処理又は書込み処理を行う。また、メモリ制御部102は、このアクセス要求信号に応じたアクセス応答信号を生成し、このアクセス応答信号をルータ103を介してCPU101、電力・クロック制御ブリッジ104、IP107及びDMAC108に送信する。ルータ103は、中継回路であって、CPU101、メモリ制御部102、電力・クロック制御ブリッジ104及びDMAC108が送受信するアクセス要求信号及びアクセス応答信号を中継する。
電力・クロック制御ブリッジ104は、IP107とルータ103の間のアクセス要求信号及びアクセス応答信号の中継を行うブリッジ回路であると共に、IP107への電力供給とクロック供給を制御する制御回路でもある。電力供給部105は、電源15から電力供給を受け、さらに、電力・クロック制御ブリッジ104からの指令に基づいて、IP107への電力供給を開始する。また、電力供給部105は、電力・クロック制御ブリッジ104からの指令とは無関係に、IP107以外の半導体集積回路11に含まれる図示を省略する各機能モジュールに電力を供給する機能も有する。
次に、電力・クロック制御ブリッジ104と電力供給部105の間で信号線を介して行われる通信について説明する。尚、本明細書中では、説明の便宜上、信号を活性状態に遷移させることを“アサート”、信号が活性状態であることを“アサート状態”といい、さらに、信号を不活性状態に遷移させることを“ディアサート”、信号が不活性状態であることを“ディアサート状態”という。例えば、機能モジュールAが機能モジュールBに電力供給を要求する信号(以下、電力供給要求信号とも記す)がアサート状態であれば、機能モジュールBは、機能モジュールAが電力供給を要求していると認識し、一方、ディアサート状態であれば、機能モジュールAが電力供給を要求していないと認識する。機能モジュールAは、電力供給を開始するときに電力供給要求信号をアサートし、電力供給を停止するときに電力供給要求信号をディアサートする。
電力・クロック制御ブリッジ104は、IP107への電力供給を行うときには電力供給部105に対する電力供給要求信号をアサート状態に保持し、IP107への電力供給を停止するときには電力供給要求信号をディアサート状態に保持する。
電力供給部105は、電力供給要求信号がアサート状態になったことを検知すると、IP107への電力供給を開始し、IP107に安定した電力が供給されるようになると、電力・クロック制御ブリッジ104に対する電力供給応答信号をアサートする。一方、電力供給部105は、電力供給要求信号がディアサート状態になったことを検知すると、IP107への電力供給を停止し、電力・クロック制御ブリッジ104に対する電力供給応答信号をディアサートする。
クロック供給部106は、クロック信号の供給を受け、さらに、電力・クロック制御ブリッジ104からの指令に基づいて、IP107へのクロック供給を開始する。また、クロック供給部106は、電力・クロック制御ブリッジ104からの指令とは無関係に、IP107以外の半導体集積回路11に含まれる各機能モジュールにクロックを供給する機能も有する。
次に、電力・クロック制御ブリッジ104とクロック供給部106の間で行われる通信について説明する。電力・クロック制御ブリッジ104は、IP107へのクロック供給を行うときにはクロック供給部106に対するクロック供給要求信号をアサート状態に保持し、IP107へのクロック供給を停止するときにはクロック供給要求信号をディアサート状態に保持する。
クロック供給部106は、クロック供給要求信号がアサート状態になったことを検知すると、IP107へのクロック供給を開始し、IP107に安定したクロックが供給されるようになると、電力・クロック制御ブリッジ104に対するクロック供給応答信号をアサートする。一方、クロック供給部106は、クロック供給要求信号がディアサート状態になったことを検知すると、IP107へのクロック供給を停止し、電力・クロック制御ブリッジ104に対するクロック供給応答信号をディアサートする。
IP107は、論理回路であって、電力供給及びクロック供給が開始されることにより動作する。IP107は、電力・クロック制御ブリッジ104からアクセス要求信号を受信して、このアクセス要求信号に応じた処理を実行し、電力・クロック制御ブリッジ104を介してCPU101やDMAC108にアクセス要求信号に応じたアクセス応答信号を送信する。また、IP107は、自らがアクセス要求信号元となり、電力・クロック制御ブリッジ104にアクセス要求信号を送信することによって、メモリ12等にアクセスする。さらに、IP107は、IP107内部の状態を信号線によって電力・クロック制御ブリッジ104に通知する機能を有する。
DMAC108は、電力・クロック制御ブリッジ104からDMA転送開始信号を取込み、この信号の変化を契機としてメモリ12から読込んだデータをIP107に送信するDMA転送を行う。割込みコントローラ109は、電力・クロック制御ブリッジ104からの割込み信号をCPU101に中継する。
次に、半導体集積回路11の外部に接続された各種デバイスについて説明する。メモリ12は、RAM(Random Access Memory)やROM(Read Only Memory)等のメモリである。モード信号生成部13は、モード信号を生成して電力・クロック制御ブリッジ104に供給する回路である。モード信号は、初期化完了時点におけるIP107の電力供給状態及びクロック供給状態を指定する信号である。リセット信号生成部14は、リセット信号を生成して電力・クロック制御ブリッジ104に供給する回路である。リセット信号は、半導体集積回路11内部の初期化を指令する信号である。リセット信号生成部14は、半導体集積回路11の使用を開始するときにリセット信号を一定期間アサートする。電源15は、電力供給部105に電力を供給する装置であって、この電力は電源線やグランド線等を含む電力線によって供給される。クロック信号生成部16は、水晶振動子等を用いた発振回路を含み、クロック信号を生成してクロック供給部106に供給する回路である。
次に、半導体集積回路11の初期化時におけるIP107の電力供給状態及びクロック供給状態の決定について説明する。半導体集積回路11の使用開始時には、リセット信号生成部14によってリセット信号が一定期間アサートされる。リセット信号による初期化時にIP107への電力供給やクロック供給が開始されるか否かは、モード信号の値に基づいて、電力・クロック制御ブリッジ104が決定する。電力・クロック制御ブリッジ104は、リセット信号がアサートされているときには、モード信号の値に基づいて電力供給要求信号とクロック供給要求信号の状態を決定する。
図2には、リセット信号がアサート時でのモード信号、電力供給要求信号及びクロック供給要求信号の関係が例示される。リセット信号アサート時にモード信号が“00”であれば、電力・クロック制御ブリッジ104は、電力供給要求信号とクロック供給信号を両方ともディアサート状態とする。これにより、IP107への電力供給及びクロック供給が停止される。モード信号が“01”であれば、電力・クロック制御ブリッジ104は、電力供給要求信号をアサート状態に、クロック供給要求信号をディアサート状態とする。これにより、IP107への電力供給が開始され、クロック供給が停止される。モード信号が“10”であれば、電力・クロック制御ブリッジ104は、電力供給要求信号をディアサート状態に、クロック供給要求信号をアサート状態とする。これにより、IP107への電力供給が停止され、クロック供給が開始される。モード信号が“11”であれば、電力・クロック制御ブリッジ104は、電力供給要求信号とクロック供給要求信号を両方ともアサート状態とする。これにより、IP107への電力供給及びクロック供給が開始される。一方、リセット信号のディアサート時には、電力・クロック制御ブリッジ104はモード信号を無視して、後述するIP107が出力する状態信号に基づいて電力供給要求信号及びクロック供給要求信号の状態を決定する(図20〜図23参照)。
従って、半導体集積回路11に図示を省略するリセット信号入力端子及びモード信号入力端子を設けることによって、初期化時におけるIP107の電力供給状態及びクロック供給状態を決定できる。
次に、初期化完了後のIP107への電力供給とクロック供給の制御について説明する。初期化完了後のIP107への電力供給とクロック供給の制御は、ルータ103からIP107へのアクセス要求信号を、電力・クロック制御ブリッジ104が監視した結果に基づいて行われる。
図3には、電力・クロック制御ブリッジ104の構成が例示される。電力・クロック制御ブリッジ104は、バスインタフェース301(以下、バスIF301と記す)と、電力供給要求信号生成部302と、クロック供給要求信号生成部303と、代理応答生成部304と、供給制御部305とを備えている。バスIF301は、ルータ103、IP107、代理応答生成部304及び供給制御部305の間でアクセスを中継する中継回路である。
図4には、バスIF301が中継するアクセスの流れが例示される。バスIF301が中継するアクセスは、図示のように、ターゲットアクセスとイニシエータアクセスに大別できる。ターゲットアクセスは、ルータ103からアクセス要求信号が送信され、このアクセス要求信号に応じたアクセス応答がルータ103に返される一連のアクセスである。イニシエータアクセスは、IP107からアクセス要求信号が送信され、このアクセス要求信号に応じたアクセス応答がIP107に返される一連のアクセスである。
まず、ターゲットアクセスの処理について説明する。ルータ103からアクセス要求信号を受信したバスIF301は、このアクセス要求信号に含まれるアドレスに基づいて、アクセス要求信号の転送先を判断し、アクセス要求信号をIP107、供給制御部305のいずれかに送信する。転送先がIP107と判断されたアクセス要求信号は、代理応答生成部304にも送信される。そして、バスIF301は、アクセス要求信号に応じたアクセス応答信号をIP107、供給制御部305及び代理応答生成部304のいずれかから受信し、このアクセス応答信号をルータ103に送信する。また、バスIF301は、後述する代理応答生成部304からのリトライ信号に基づいて、IP107にアクセス要求信号を再送信する機能を有する。再送信されたアクセス要求信号は、代理応答生成部304には送信されず、IP107にのみ送信される。
次に、イニシエータアクセスの処理について説明する。バスIF301は、IP107から受信したアクセス要求信号をルータ103に送信し、ルータ103から供給されるアクセス要求信号に応じたアクセス応答信号をIP107に送信する。
次に、供給制御部305について説明する。供給制御部305は、ルータ103からIP107へのアクセス要求信号の特徴を検出し、この検出結果に基づいて、バスIF301、電力供給要求信号生成部302、クロック供給信号生成部303及び代理応答生成部304に制御信号を出力する。アクセス要求信号には、アドレス、ライトデータ、アクセス属性等が含まれる。アクセス属性は、アクセスがリード(リードアクセスとも記す)であるかライト(ライトアクセスとも記す)であるかを示す情報である。供給制御部305は、ルータ103からIP107へのアクセス要求信号の特徴を保持するレジスタ群を有する。このレジスタ群には、ルータ103を介してCPU101等から値を書込んだり、読出したりできる。また、供給制御部305は、バスIF301からIP107へのアクセス要求信号を取込む。
供給制御部305は、図5に示すように各レジスタを有する。まず、電力供給開始の契機となるアクセス要求信号の特徴を保存するためのレジスタについて説明する。電力供給開始アドレスレジスタ(PSSAR)は、電力供給開始信号をアサートする契機となるアドレスを設定するためのレジスタである。電力供給開始アドレスイネーブルレジスタ(PSSAER)は、電力供給開始アドレスレジスタの値を参照するか否かを設定するためのレジスタである。電力供給開始ライトデータレジスタ(PSSWDR)は、電力供給開始信号をアサートする契機となるライトデータを設定するためのレジスタである。電力供給開始ライトデータイネーブルレジスタ(PSSWDER)は、電力供給開始ライトデータレジスタの値を参照するか否かを設定するためのレジスタである。電力供給開始アクセス属性レジスタ(PSSAAR)は、電力供給開始信号をアサートする契機となるアクセス属性を設定するためのレジスタである。電力供給開始アクセス属性イネーブルレジスタ(PSSAAER)は、電力供給開始アクセス属性レジスタの値を参照するか否かを設定するためのレジスタである。そして、電力供給開始イネーブルレジスタ(PSSER)は、電力供給開始信号をアサートするか否かを設定するためのレジスタである。
次に、電力供給停止の契機となるアクセス要求信号の特徴を保存するためのレジスタについて説明する。電力供給停止アドレスレジスタ(PSIAR)は、電力供給停止信号をアサートする契機となるアドレスを設定するためのレジスタである。電力供給停止アドレスイネーブルレジスタ(PSIAER)は、電力供給停止アドレスレジスタの値を参照するか否かを設定するためのレジスタである。電力供給停止ライトデータレジスタ(PSIWDR)は、電力供給停止信号をアサートする契機となるライトデータを設定するためのレジスタである。電力供給停止ライトデータイネーブルレジスタ(PSIWDER)は、電力供給停止ライトデータレジスタの値を参照するか否かを設定するためのレジスタである。電力供給停止アクセス属性レジスタ(PSIAAR)は、電力供給停止信号をアサートする契機となるアクセス属性を設定するためのレジスタである。電力供給停止アクセス属性イネーブルレジスタ(PSIAAER)は、電力供給停止アクセス属性レジスタの値を参照するか否かを設定するためのレジスタである。電力供給停止リードデータレジスタ(PSIRDR)は、電力供給停止信号をアサートする契機となるリードデータを設定するためのレジスタである。電力供給停止リードデータイネーブルレジスタ(PSIRDER)は、電力供給停止リードデータレジスタの値を参照するか否かを設定するためのレジスタである。そして、電力供給停止イネーブルレジスタ(PSIER)は、電力供給停止信号をアサートするか否かを設定するためのレジスタである。
次に、クロック供給開始の契機となるアクセス要求信号の特徴を保存するためのレジスタについて説明する。クロック供給開始アドレスレジスタ(CSSAR)は、クロック供給開始信号をアサートする契機となるアドレスを設定するためのレジスタである。クロック供給開始アドレスイネーブルレジスタ(CSSAER)は、クロック供給開始アドレスレジスタの値を参照するか否かを設定するためのレジスタである。クロック供給開始ライトデータレジスタ(CSSWDR)は、クロック供給開始信号をアサートする契機となるライトデータを設定するためのレジスタである。クロック供給開始ライトデータイネーブルレジスタ(CSSWDER)は、クロック供給開始ライトデータレジスタの値を参照するか否かを設定するためのレジスタである。クロック供給開始アクセス属性レジスタ(CSSAAR)は、クロック供給開始信号をアサートする契機となるアクセス属性を設定するためのレジスタである。クロック供給開始アクセス属性イネーブルレジスタ(CSSAAER)は、クロック供給開始アクセス属性レジスタの値を参照するか否かを設定するためのレジスタである。そして、クロック供給開始イネーブルレジスタ(CSSER)は、クロック供給開始信号をアサートするか否かを設定するためのレジスタである。
次に、クロック供給停止の契機となるアクセス要求信号の特徴を保存するためのレジスタについて説明する。クロック供給停止アドレスレジスタ(CSIAR)は、クロック供給停止信号をアサートする契機となるアドレスを設定するためのレジスタである。クロック供給停止アドレスイネーブルレジスタ(CSIAER)は、クロック供給停止アドレスレジスタの値を参照するか否かを設定するためのレジスタである。クロック供給停止ライトデータレジスタ(CSIWDR)は、クロック供給停止信号をアサートする契機となるライトデータを設定するためのレジスタである。クロック供給停止ライトデータイネーブルレジスタ(CSIWDER)は、クロック供給停止ライトデータレジスタの値を参照するか否かを設定するためのレジスタである。クロック供給停止アクセス属性レジスタ(CSIAAR)は、クロック供給停止信号をアサートする契機となるアクセス属性を設定するためのレジスタである。クロック供給停止アクセス属性イネーブルレジスタ(CSIAAER)は、クロック供給停止アクセス属性レジスタの値を参照するか否かを設定するためのレジスタである。クロック供給停止リードデータレジスタ(CSIRDR)は、クロック供給停止信号をアサートする契機となるリードデータを設定するためのレジスタである。クロック供給停止リードデータイネーブルレジスタ(CSIRDER)は、クロック供給停止リードデータレジスタの値を参照するか否かを設定するためのレジスタである。そして、クロック供給停止イネーブルレジスタ(CSIER)は、クロック供給停止信号をアサートするか否かを設定するためのレジスタである。
次に、供給制御部305による電力供給開始信号、電力供給停止信号、クロック供給開始信号、クロック供給停止信号の生成処理について説明する。まず、電力供給開始信号のアサートについて説明する。図6には電力供給開始信号生成回路が例示される。電力供給開始信号は、電力供給開始イネーブルレジスタが電力供給開始信号をアサートすることを示す値‘1’に設定されていて、さらに、以下の3条件が全て成立するときにアサートされる。
第1の条件は、電力供給開始アドレスイネーブルレジスタの値が、電力供給開始アドレスレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給開始アドレスレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるアドレスが一致することである。第2の条件は、電力供給開始ライトデータイネーブルレジスタの値が、電力供給開始ライトデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給開始ライトデータレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるライトデータが一致することである。第3の条件は、電力供給開始アクセス属性イネーブルレジスタの値が、電力供給開始アクセス属性レジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給開始アクセス属性レジスタの設定値とバスIF301から供給されるアクセス要求信号のアクセス属性が一致することである。
次に、電力供給停止信号のアサートについて説明する。図7には、電力供給停止信号生成回路が例示される。電力供給停止信号は、電力供給停止イネーブルレジスタが電力供給停止信号をアサートすることを示す値‘1’に設定されていて、さらに、以下の4条件が全て成立するときにアサートされる。
第1の条件は、電力供給停止アドレスイネーブルレジスタの値が、電力供給停止アドレスレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給停止アドレスレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるアドレスが一致することである。第2の条件は、電力供給停止ライトデータイネーブルレジスタの値が、電力供給停止ライトデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給停止ライトデータレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるライトデータが一致することである。第3の条件は、電力供給停止リードデータイネーブルレジスタの値が、電力供給停止リードデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給停止リードデータレジスタの設定値とIP107から供給されるアクセス応答信号に含まれるリードデータが一致することである。第4の条件は、電力供給停止アクセス属性イネーブルレジスタの値が、電力供給停止アクセス属性レジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給停止アクセス属性レジスタの設定値とバスIF301から供給されるアクセス要求信号のアクセス属性が一致することである。
次に、クロック供給開始信号のアサートについて説明する。図8にはクロック供給開始信号生成回路が例示される。クロック供給開始信号は、クロック供給開始イネーブルレジスタがクロック供給開始信号をアサートすることを示す値‘1’に設定されていて、さらに、以下の3条件が全て成立するときにアサートされる。
第1の条件は、クロック供給開始アドレスイネーブルレジスタの値が、クロック供給開始アドレスレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給開始アドレスレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるアドレスが一致することである。第2の条件は、クロック供給開始ライトデータイネーブルレジスタの値が、クロック供給開始ライトデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給開始ライトデータレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるライトデータが一致することである。第3の条件は、クロック供給開始アクセス属性イネーブルレジスタの値が、クロック供給開始アクセス属性レジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給開始アクセス属性レジスタの設定値とバスIF301から供給されるアクセス要求信号のアクセス属性が一致することである。
次に、クロック供給停止信号のアサートについて説明する。図9には、クロック供給停止信号生成回路が例示される。クロック供給停止信号は、クロック供給停止イネーブルレジスタがクロック供給停止信号をアサートすることを示す値‘1’に設定されていて、以下の4条件が全て成立するときにアサートされる。
第1の条件は、クロック供給停止アドレスイネーブルレジスタの値が、クロック供給停止アドレスレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給停止アドレスレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるアドレスが一致することである。第2の条件は、クロック供給停止ライトデータイネーブルレジスタの値が、クロック供給停止ライトデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給停止ライトデータレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるライトデータが一致することである。第3の条件は、クロック供給停止リードデータイネーブルレジスタの値が、クロック供給停止リードデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給停止リードデータレジスタの設定値とIP107から供給されるアクセス応答信号に含まれるリードデータが一致することである。第4の条件は、クロック供給停止アクセス属性イネーブルレジスタの値が、クロック供給停止アクセス属性レジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給停止アクセス属性レジスタの設定値とバスIF301から供給されるアクセス要求信号のアクセス属性が一致することである。
次に、電力供給要求信号生成部302について説明する。図10には、電力供給要求信号生成部302の状態遷移が例示される。尚、電力供給要求信号生成部302の状態を電力状態という。電力供給要求信号生成部302は、リセット信号によって初期化される。電力供給要求信号生成部302は、リセット信号がアサートされたときに、モード信号の値が“00”又は“10”であれば、電力状態は“電力供給OFF”となり、モード信号の値が“11”又は“01”であれば、電力状態は“電力供給ON”となる。また、電力供給要求信号生成部302は、リセット信号がディアサート状態であって、電力状態が“電力供給OFF”であるときに電力供給開始信号がアサートされると、電力状態は“電力供給ON”に遷移し、電力状態が“電力供給ON”であるときに電力供給停止信号がアサートされると、電力状態は“電力供給OFF”に遷移する。電力供給要求信号生成部302は、電力状態に応じて電力供給要求信号の出力値を決定し、例えば図11に示すように、電力状態が“電力供給ON”であれば電力供給要求信号をアサート状態に保持し、電力状態が“電力供給OFF”であれば電力供給要求信号をディアサート状態に保持する。
次に、クロック供給要求信号生成部303について説明する。図12には、クロック供給要求信号生成部303の状態遷移が例示される。尚、クロック供給要求信号生成部303の状態をクロック状態という。クロック供給要求信号生成部303は、リセット信号によって初期化される。クロック供給要求信号生成部303は、リセット信号がアサートされたとき、モード信号の値が“00”又は“01”であれば、クロック状態は“クロック供給OFF”となり、モード信号の値が“11”又は“10”であれば、クロック状態は“クロック供給ON”となる。また、クロック供給要求信号生成部303は、リセット信号がディアサート状態であって、クロック状態が“クロック供給OFF”であるときにクロック供給開始信号がアサートされると、クロック状態は“クロック供給ON”に遷移する。そして、クロック供給要求信号生成部303は、リセット信号がディアサート状態であって、クロック状態が“クロック供給ON”であるときにクロック供給停止信号がアサートされると、クロック状態は“クロック供給OFF”に遷移する。クロック供給要求信号生成部303は、クロック状態に応じてクロック供給要求信号の出力値を決定し、例えば図13に示すように、クロック状態が“クロック供給ON”であればクロック供給要求信号をアサート状態に保持し、クロック状態が“クロック供給OFF”であればクロック供給要求信号をディアサート状態に保持する。
次に、代理応答生成部304について説明する。IP107がバスIF301からのアクセス要求信号に応じてアクセス応答信号を送信するためには、IP107への電力供給及びクロック供給が開始されている必要がある。一方、アクセス要求信号を生成した機能モジュール、例えばCPU101は、アクセス要求信号に応じたアクセス応答信号を受信しなければ処理が完了せず、後続の処理を実行できないから、例えばハングアップ等の不具合を生じてしまう。そこで、代理応答生成部304は、IP107への電力供給及びクロック供給の制御によってハングアップが発生しないように、IP107に代わってアクセス応答信号(代理応答信号とも記す)をCPU101に送信する。
代理応答生成部304は、バスIF301からIP107へのアクセス要求信号を取込み、IP107へのアクセスを監視する。また、代理応答生成部304は、電力供給部105から電力供給応答信号を、クロック供給部106からクロック供給応答信号を、供給制御部305から電力供給開始信号及びクロック供給開始信号をそれぞれ取込み、図14に示す規則に従って代理応答信号を生成する。以下、各規則について説明する。
代理応答生成部304は、IP107がアクセス応答信号を送信可能であるとき、即ち、IP107への電力供給及びクロック供給が開始されているときには、代理応答信号を生成しない。そして、代理応答生成部304は、IP107がアクセス応答信号を送信不能であるとき、即ち、IP107への電力供給とクロック供給のいずれか又は両方が停止されているときには、代理応答信号を生成する。
また、代理応答生成部304は、IP107がアクセス応答信号不能状態からアクセス応答信号可能状態に遷移すると判断するときには、IP107がアクセス応答信号可能状態に遷移した後にリトライ信号をアサートして、バスIF301にアクセス応答信号可能状態に遷移したIP107に対してアクセスを再送信させる。
即ち、代理応答生成部304は、IP107への電力供給が停止され、クロック供給が開始されているときに、電力供給開始信号がアサートされたときには、電力供給応答信号がアサートされた後にリトライ信号をアサートする。また、代理応答生成部304は、IP107への電力供給が開始され、クロック供給が停止されているときに、クロック供給開始信号がアサートされたときには、クロック供給応答信号がアサートされた後にリトライ信号をアサートする。さらに、代理応答生成部304は、IP107への電力供給及びクロック供給が停止されているときに、電力供給開始信号とクロック供給開始信号が両方アサートされたときには、電力供給応答信号とクロック供給応答信号が両方ともアサートされた後にリトライ信号をアサートする。
以下、電力・クロック制御ブリッジ104が、IP107への電力供給とクロック供給の少なくとも一方を制御するときの動作について説明する。ここでは、一例として、IP107が半導体集積回路11に接続された表示デバイスに対して表示データを出力する表示コントローラである場合について説明する。
図15には、IP107の制御レジスタ一覧が例示されている。IP107の制御レジスタには、画像アドレスレジスタ(IAR)と、画像水平サイズレジスタ(IHSR)と、画像垂直サイズレジスタ(IPSR)と、表示制御レジスタ(ICR)と、表示状態レジスタ(ISR)とがある。IP107によって表示処理を行うときには、まず、メモリ12に被表示データを格納しておく。そして、画像アドレスレジスタには被表示データが格納されたアドレスを設定する。また、画像水平サイズレジスタには被表示画像の水平方向のサイズを設定する。さらに、画像垂直サイズレジスタには被表示画像の垂直方向のサイズを設定する。その上で、表示制御レジスタに‘1’を設定する。表示制御レジスタに‘1’を設定されたIP107は、電力・クロック制御ブリッジ104、ルータ103及びメモリ制御部102を介してメモリ12から被表示データを読込む。そして、IP107は、読込まれたデータを画像水平サイズレジスタ及び画像垂直サイズレジスタによって指定されたフォーマットで、半導体集積回路11の外部に出力する。IP107は一画面分の処理が完了次第、自動的に次の画面の表示処理に移行する。また、IP107は、表示処理を行っているときには表示状態レジスタを‘1’に設定する。IP107による表示処理を停止するためには、表示制御レジスタに‘0’を書込む。表示制御レジスタに‘0’を書込まれたIP107は、1画面分の表示を完了させた後に表示処理を停止し、表示状態レジスタの値を‘0’に更新する。
図16には、画像表示処理を行うときのIP107に対するレジスタアクセスの手順が例示されている。ここでは、CPU101がソフトウェアを実行することによって、IP107に対するレジスタアクセスを行う。
まず、表示制御レジスタに‘1’を設定する前に、画像アドレスレジスタ、画像水平サイズレジスタ及び画像垂直サイズレジスタの設定を行う(S1)。ステップS1では、これらの3つのレジスタの設定順はIP107の動作に影響を与えないので、設定順は任意とする。次に、表示制御レジスタに‘1’を設定する(S2)。ステップS2において、IP107は表示処理を開始し、表示状態レジスタの値を‘1’に更新する。このステップS2の状態では、IP107は、表示処理を実行し続けることになる。
次に、表示処理を終了させるためには、表示制御レジスタに‘0’を設定する(S3)。ステップS3では、IP107は、現在処理中の画面の表示処理が完了するまで表示処理を継続し、この現在の画面の表示処理が完了したら表示処理を停止し、表示状態レジスタの値を‘0’に更新する。次に、IP107が表示処理を終了したか否かを確認するために表示状態レジスタ値を読込み(S4)、読込んだ値が‘0’であるか否かが判定され(S5)、‘0’が読込まれるまで繰り返し読込み処理が行われる。
ここで、上記したレジスタアクセスを行うソフトウェアに変更を加えずに、IP107への電力供給とクロック供給の少なくとも一方を制御するためには、ソフトウェアがCPU101によって実行される前に、供給制御部305の各レジスタ(図5参照)に、図17〜図19に示す値を設定すればよい。
図17には、IP107への電力供給の制御を行うための各レジスタの設定値が例示されている。ここでは、IP107への電力供給が停止され、クロック供給が開始されているとする(図14参照)。以下、図17に例示された各レジスタの設定値について具体的に説明する。電力供給開始アドレスイネーブルレジスタと電力供給開始ライトデータイネーブルレジスタには、それぞれ電力供給開始アドレスレジスタと電力供給開始ライトデータレジスタの設定値を参照しないことを示す値を設定する。そして、電力供給開始アクセス属性レジスタには、ライトアクセスを示す値を設定する。
このため、供給制御部305は、IP107に対する全てのライトアクセスを契機として電力供給開始信号をアサートする。これにより、供給制御部305は、IP107を制御するソフトウェアが、図16に示したステップS1を実行したことを検出して、IP107への電力供給を開始することができる。また、代理応答生成部304は、電力供給開始信号のアサートと同時にリトライ信号をアサートし、IP107への電力供給が停止されていたときにIP107へ送信されたアクセス要求信号を、IP107への電力供給が開始された後にバスIF301から再送信させる。このため、IP107へのアクセス要求信号は、電力供給及びクロック供給が開始されて動作状態となったIP107へ送信されることになり、IP107への電力供給を停止しても、IP107にアクセス要求信号を確実に受信させることができる。さらに、代理応答生成部304は、ステップS1の最初のアクセス要求信号に応じて代理応答信号を送信するので、CPU101は、後続のアクセス要求信号を実行することができる。
一般的に、電力供給を開始してからIP等の機能モジュールに安定した電力が供給されて、機能モジュールが動作可能になるためには、例えばCPUのクロック周期に比べて長い時間がかかる。このため、仮にアクセス応答信号の送信を機能モジュールが動作可能になった後に行うとすれば、アクセス要求信号を送信したCPUは、長時間のアクセス応答信号待ちで処理が滞ってしまい、処理性能が低下してしまう。これに対して、本実施形態では、代理応答生成部304がIP107への電力供給が安定するのを待つことなく、代理応答信号を送信するので、アクセス要求信号を送信したCPU101の処理性能は低下することがない。
一方、IP107への電力供給を停止する場合には、電力供給停止アドレスレジスタ、電力供給停止リードデータレジスタ及び電力供給停止アクセス属性レジスタには、IP107の表示状態レジスタのアドレスを示す“FF001010”、‘0’、リードアクセスを示す値‘1’をそれぞれ設定する。そして、電力供給停止ライトデータイネーブルレジスタには、電力供給停止ライトデータレジスタの値を参照しない値‘0’を設定する。このため、供給制御部305は、“FF001010”をリードし、その結果、表示処理を実行していないことを示す‘0’であることを検出して、電力供給停止信号をアサートする。従って、供給制御部305は、IP107を制御するソフトウェアが、図16に示したステップS5の条件分岐が“Yes”となったときに電力供給を停止できる。
図18には、IP107へのクロック供給の制御を行うための各レジスタの設定値が例示されている。ここでは、IP107への電力供給が開始され、クロック供給が停止されているとする(図14参照)。供給制御部305は、各レジスタの値を図18に示すように設定することにより、IP107へのレジスタライトによってIP107へのクロック供給を開始できる。また、供給制御部305は、IP107の表示状態レジスタを示すアドレス“FF001010”をリードし、その結果、表示処理を実行していないことを示す‘0’であることを検出して、クロック供給停止信号をアサートする。従って、供給制御部305は、IP107が表示処理を行っていないときにクロック供給を停止できる。
図19には、IP107への電力供給とクロック供給の制御を行うための各レジスタの設定値が例示されている。ここでは、IP107への電力供給及びクロック供給が開始されている場合と、電力供給及びクロック供給が停止されている場合とがある(図14参照)。供給制御部305は、各レジスタの値を図19に示すように設定することにより、IP107へのレジスタライトによってIP107への電力供給及びクロック供給を開始できる。また、供給制御部305は、IP107の表示状態レジスタを示すアドレス“FF001010”をリードし、その結果、表示処理を実行していないことを示す‘0’であることを検出して、電力供給停止信号及びクロック供給停止信号をアサートする。従って、供給制御部305は、IP107が表示処理を行っていないときに電力供給及びクロック供給を停止できる。
次に、供給制御部305によるアクセス要求信号の監視結果ではなく、IP107が出力する状態信号に基づいて、電力供給及びクロック供給を制御する方法について説明する。
この方法を実行する場合には、供給制御部305は、図20に示す各レジスタを有する。状態信号アサート時電力供給開始信号設定レジスタ(SAPSSSR)には、状態信号がアサートしたときの電力供給開始信号の出力値が設定される。状態信号アサート時電力供給停止信号設定レジスタ(SAPSISR)には、状態信号がアサートしたときの電力供給停止信号の出力値が設定される。状態信号アサート時クロック供給開始設定レジスタ(SACSSSR)には、状態信号がアサートしたときのクロック供給開始信号の出力値が設定される。状態信号アサート時クロック供給停止信号設定レジスタ(SACSISR)には、状態信号がアサートしたときのクロック供給停止信号の出力値が設定される。状態信号ディアサート時電力供給開始信号設定レジスタ(SDPSSSR)には、状態信号がディアサートしたときの電力供給開始信号の出力値が設定される。状態信号ディアサート時電力供給停止信号設定レジスタ(SDPSISR)には、状態信号がディアサートしたときの電力供給停止信号の出力値が設定される。状態信号ディアサート時クロック供給開始設定レジスタ(SDCSSSR)には、状態信号がディアサートしたときのクロック供給開始信号の出力値が設定される。状態信号ディアサート時クロック供給停止信号設定レジスタ(SDCSISR)には、状態信号がディアサートしたときのクロック供給停止信号の出力値が設定される。
図21には、IP107の状態信号に基づいて電力供給の開始及び停止を行うための各レジスタの設定値が例示されている。供給制御部305は、各レジスタの値を図21のように設定することにより、IP107から出力される状態信号がアサートされたときにIP107への電力供給を開始でき、状態信号がディアサートされたときにIP107への電力供給を停止できる。図22には、IP107の状態信号に基づいてクロック供給の開始及び停止を行うための各レジスタの設定値が例示されている。供給制御部305は、各レジスタの値を図22のように設定することにより、IP107から出力される状態信号がアサートされたときにIP107へのクロック供給を開始でき、状態信号がディアサートされたときにIP107へのクロック供給を停止できる。図23には、IP107の状態信号に基づいて電力供給及びクロック供給の停止を行うための各レジスタの設定値が例示されている。供給制御部305は、各レジスタの値を図23のように設定することにより、IP107から出力される状態信号がアサートされたときに、電力供給及びクロック供給を停止できる。ここで、電力供給及びクロック供給の開始については、図5に示した電力供給開始信号やクロック供給開始信号の契機とするアクセス要求信号の特徴を保存するためのレジスタを用いて行うようにしてもよい。これにより、電力供給及びクロック供給の停止のみを状態信号に基づいて行い、電力供給及びクロック供給の開始をアクセス要求信号の監視結果に基づいて行うことができる。さらに、IP107から出力される状態信号に限らず、適宜の割込み信号を用いて、この割込み信号の変化を検出することにより、IP107への電力供給及びクロック供給の制御を行うようにしてもよい。
このように、アクセス要求信号の監視結果ではなく、状態信号や割込み信号に基づいて電力供給及びクロック供給の制御を行う利点は、ソフトウェアを介在させることなく、IP107を動作又は停止できる点にある。例えば、IP107のように、外部からのアクセスに応答するだけでなく自律的にメモリ12等にアクセスを行って動作する機能モジュールでは、IP107にアクセスするためのソフトウェアが不要となる。このため、IP107を動作させるために、CPU101等のIP制御用機能モジュールを動作させる必要がなく、半導体集積回路11全体の消費電力を低減でき、さらに、処理性能を向上させることができる。
以上のように、電力供給及びクロック供給の制御は、IP107へのアクセス要求信号や電力・クロック制御ブリッジ104に供給される信号の変化を契機として行われるので、図16に示したソフトウェア制御には修正を加える必要がない。また、供給制御部305の各レジスタへの設定は、半導体集積回路11の初期化を完了した後であって、IP107へのアクセスを実行する前であれば、適宜行ってよく、さらに、IP107の表示処理を何回起動又は停止したとしても1回行うだけでよいから、ソフトウェア開発コストの増加を抑えることができる。
また、電力・クロック制御ブリッジ104は、IP107への電力供給とクロック供給の少なくとも一方が停止され、IP107がアクセス応答信号を送信できないときには、IP107に代わって代理応答信号を送信するので、CPU101がハングアップ等の不具合を生じない。そして、電力・クロック制御ブリッジ104は、IP107とCPU101間のデータ転送を維持した状態で、IP107への電力供給とクロック供給の両方を停止することができるから、半導体集積回路11の内部のデータ転送を破綻させることなく、動作時の消費電力だけでなく非動作時のリーク電力も低減できる。さらにまた、IP107への電力供給とクロック供給の制御はIP107の外部で行われるので、IP107自体には電力供給とクロック供給の制御のために修正を加える必要がない。そのため、IP107が、修正が不可能又は困難な既存の開発品や外部からの導入品であっても、IP107への電力供給とクロック供給の制御を行う技術を半導体集積回路11に搭載可能である。
《実施形態2》
本発明の実施形態2に係る半導体集積回路は、上記した実施形態1に係る半導体集積回路11と比べると、代理応答生成部304と供給制御部305の機能等が異なる。以下、各実施形態2〜7では、上記した実施形態1と同一機能等を有する部分には同一符号を付し、機能等が異なる部分には符号の末尾にアルファベットを付して区別すると共に、説明が重複する部分については適宜省略した。実施形態2に係る供給制御部305Aは、供給制御部305と比べると、電力供給開始アクセス属性レジスタ、電力供給開始アクセス属性イネーブルレジスタ、クロック供給開始アクセス属性レジスタ及びクロック供給開始アクセス属性イネーブルレジスタが除かれている点が異なる。この理由は、実施形態2に係る電力・クロック制御ブリッジ104は、IP107への全てのリードアクセスに対して、実施形態2に係る代理応答生成部304Aが生成する代理応答信号ではなく、IP107が生成する正規のアクセス応答信号を送信するからである。
以下、供給制御部305Aによる電力供給開始信号、クロック供給開始信号の生成処理について説明する。尚、電力供給停止信号、クロック供給停止信号の生成処理は実施形態1と同一である。まず、電力供給開始信号のアサートについて説明する。図24には、電力供給開始信号生成回路が例示される。電力供給開始信号は、電力供給開始イネーブルレジスタが電力供給開始信号をアサートすることを示す値‘1’に設定されていて、さらに、IP107へのアクセスがリードアクセスであるか、又は、以下の2条件が全て成立するときにアサートされる。
第1の条件は、電力供給開始アドレスイネーブルレジスタの値が、電力供給開始アドレスレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給開始アドレスレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるアドレスが一致することである。第2の条件は、電力供給開始ライトデータイネーブルレジスタの値が、電力供給開始ライトデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、電力供給開始ライトデータレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるライトデータが一致することである。
次に、クロック供給開始信号のアサートについて説明する。図25には、クロック供給開始信号生成回路が例示される。クロック供給開始信号は、クロック供給開始イネーブルレジスタがクロック供給開始信号をアサートすることを示す値‘1’に設定されていて、さらに、IP107へのアクセスがリードアクセスであるか、又は、以下の2条件が全て成立するときにアサートされる。
第1の条件は、クロック供給開始アドレスイネーブルレジスタの値が、クロック供給開始アドレスレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給開始アドレスレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるアドレスが一致することである。第2の条件は、クロック供給開始ライトデータイネーブルレジスタの値が、クロック供給開始ライトデータレジスタの設定値を参照しないことを示す値‘0’であるか、又は、クロック供給開始ライトデータレジスタの設定値とバスIF301から供給されるアクセス要求信号に含まれるライトデータが一致することである。
また、代理応答生成部304Aは、バスIF301からアクセス属性信号を取込み、バスIF301がIP107へ送信しているアクセス要求信号がリードアクセスであるかライトアクセスであるかを判別し、図26の規則に従って代理応答信号を生成する。代理応答生成部304Aは、アクセスがリードアクセスであれば、IP107への電力供給及びクロック供給の開始又は停止とは無関係に、IP107へのアクセス要求信号に応じた代理応答信号を生成せず、リトライ信号のアサートも行わない。そして、供給制御部305Aは、代理応答生成部304Aが代理応答信号の送信を停止した後に、IP107への電力供給及びクロック供給を開始する。一方、代理応答生成部304Aは、アクセスがライトアクセスであれば、代理応答生成部304と同様に動作する。
即ち、代理応答生成部304Aは、アクセス応答信号に正確なリードデータを付加できない状態にあるIP107に対して、アクセス要求信号が送信された場合には、代理応答信号の生成やリトライ信号のアサートを行わない。従って、実施形態2に係る半導体集積回路では、全てのリードアクセスに対して、正確なリードデータが付加された正規のアクセス応答信号をIP107から送信することができる。
《実施形態3》
本発明の実施形態3に係る半導体集積回路11Aは、半導体集積回路11と比べると、図27に示すように、複数のCPU101A,101Bが配置され、DMAC108及び割込みコントローラ109が除かれた点が異なり、そのため、電力・クロック制御ブリッジ104Aの機能等が異なる。ここでは、各CPU101A,101Bがそれぞれ複数のプロセスを時分割等の手法によって並列実行し、特定のCPUが実行する特定のプロセスのみがIP107への電力供給とクロック供給の制御を行う場合について説明する。
CPU101A,101Bは、ルータ103及びメモリ制御部102を介してメモリ32にアクセスし、このメモリに格納されているプログラムを実行することによって、半導体集積回路11A内外の制御を行う。CPU101A,101Bは、ルータ103を介して電力・クロック制御ブリッジ104A及びIP107にアクセス要求信号を送信するときに、アクセス要求信号がCPU101A,101Bのいずれから送信されたかを電力・クロック制御ブリッジ104Aが識別できるように、それぞれのマスタIDをアクセス要求信号に付加する。ここでは、CPU101AのマスタIDを‘0’、CPU101BのマスタIDを‘1’とする。また、CPU101A,101Bは、アクセス要求信号を送信するときに、アクセス要求信号を送信するプロセスのプロセスIDを電力・クロック制御ブリッジ104Aが識別できるように、プロセスIDをアクセス要求信号に付加する。ルータ103は、CPU101A,101Bからのアクセス要求信号を電力・クロック制御ブリッジ104Aに中継するときに、CPU101A,101Bが出力するマスタID及びプロセスIDを同時に送信する。
次に、半導体集積回路11Aの初期化完了後のIP107への電力供給とクロック供給の制御について説明する。初期化完了後のIP107への電力供給及びクロック供給の制御は、ルータ103からIP107へのアクセス要求信号を、電力・クロック制御ブリッジ104Aが監視した結果に基づいて行われる。アクセス要求信号には、アドレス、ライトデータ、アクセス属性だけでなく、マスタID、プロセスIDが含まれる。
電力・クロック制御ブリッジ104Aは、電力・クロック制御ブリッジ104と比べると、例えば、バスIF301からIP107へのアクセス要求信号を取込む供給制御部305Bに含まれるレジスタの種類が異なる。具体的には、実施形態3に係る供給制御部305Bは、供給制御部305に比べると、マスタIDレジスタ(MIDR)、マスタIDイネーブルレジスタ(MIDER)、プロセスIDレジスタ(PIDR)及びプロセスIDイネーブルレジスタ(PIDER)が含まれる点が異なる。マスタIDレジスタは、電力・クロック制御ブリッジ104Aの電力・クロック制御を行う機能モジュールのマスタIDを保存するためのレジスタであり、ルータ103を介してCPU101A,101Bから読み書き可能である。マスタIDイネーブルレジスタは、このマスタIDレジスタの値を参照するか否かを設定するためのレジスタである。プロセスIDレジスタは、電力・クロック制御ブリッジ104Aの電力・クロック制御を行うソフトウェアのプロセスIDを保存するためのレジスタであり、ルータ103を介してCPU101A,101Bから読み書き可能である。プロセスIDイネーブルレジスタは、このプロセスIDレジスタの値を参照するか否かを設定するためのレジスタである。
次に、供給制御部305Bによる電力供給開始信号、電力供給停止信号、クロック供給開始信号、クロック供給停止信号の生成処理について説明する。まず、電力供給開始信号のアサートについて説明する。図28には、電力供給開始信号生成回路が例示されるが、この回路は、図6に示す電力供給開始信号生成回路と比べると、供給制御部305Bに4つのレジスタが追加されたことにより、2条件が追加された点が異なる。即ち、電力供給開始信号は、電力供給開始イネーブルレジスタが電力供給開始信号をアサートすることを示す値‘1’に設定されていて、さらに、5条件が全て成立するときにアサートされる。第1〜3の条件は、図6において記載した条件と同一である。
第4の条件(以下、追加条件1とも記す)は、マスタIDイネーブルレジスタの値が、マスタIDレジスタの設定値を参照しないことを示す値‘0’であるか、又は、マスタIDレジスタの値とバスIF301から供給されるマスタIDの値が一致することである。第5の条件(以下、追加条件2とも記す)は、プロセスIDイネーブルレジスタの値が、プロセスIDレジスタの設定値を参照しないことを示す値‘0’であるか、又は、プロセスIDレジスタの値とバスIF301から供給されるプロセスIDの値が一致することである。
次に、電力供給停止信号のアサートについて説明する。図29には、電力供給停止信号生成回路が例示されるが、この回路は、図7に示す電力供給停止信号生成回路と比べると、2条件が追加された点が異なる。即ち、電力供給停止信号は、電力供給停止イネーブルレジスタが電力供給停止信号をアサートすることを示す値‘1’に設定されていて、さらに、6条件が全て成立するときにアサートされる。第1〜4の条件は、図7において記載した条件と同一である。また、第5の条件は、図28での追加条件1と同一であり、第6の条件は、追加条件2と同一である。
次に、クロック供給開始信号のアサートについて説明する。図30には、クロック供給開始信号生成回路が例示されるが、この回路は、図8に示すクロック供給開始信号生成回路と比べると、2条件が追加された点が異なる。即ち、クロック供給開始信号は、クロック供給開始イネーブルレジスタがクロック供給開始信号をアサートすることを示す値‘1’に設定されていて、さらに、5条件が全て成立するときにアサートされる。第1〜3の条件は、図8において記載した条件と同一である。また、第4の条件は、上記した追加条件1と同一であり、第5の条件は、追加条件2と同一である。
次に、クロック供給停止信号のアサートについて説明する。図31には、クロック供給停止信号生成回路が例示されるが、この回路は、図9に示すクロック供給停止信号生成回路と比べると、2条件が追加された点が異なる。即ち、クロック供給停止信号は、クロック供給停止イネーブルレジスタがクロック供給停止信号をアサートすることを示す値‘1’に設定されていて、さらに、6条件が全て成立するときにアサートされる。第1〜4の条件は、図9において記載した条件と同一である。また、第5の条件は、上記した追加条件1と同一であり、第6の条件は、追加条件2と同一である。
以下、電力・クロック制御ブリッジ104Aが、IP107への電力供給とクロック供給の少なくとも一方を制御するときの動作について説明する。ここでは、CPU101A上で実行されるプロセスIDが“80”であるプロセスのみがIP107による表示処理を制御し、CPU101B上で実行されるプロセスや、プロセスIDが“80”以外であるプロセスはIP107による表示処理の制御を許可されていないものとする。
まず、IP107への電力供給を制御する場合について説明する。ここでは、IP107への電力供給が停止され、クロック供給が開始されているとする。この場合には、マスタIDイネーブルレジスタ、マスタIDレジスタ、プロセスIDイネーブルレジスタ及びプロセスIDレジスタに、図32に示す値を設定すればよい。また、供給制御部105Bに含まれる、マスタIDイネーブルレジスタ、マスタIDレジスタ、プロセスIDイネーブルレジスタ及びプロセスIDレジスタ以外のレジスタには、図17に示した設定値をそれぞれ設定する。
以下、図32に例示された各レジスタの設定値について具体的に説明する。マスタIDイネーブルレジスタには、マスタIDレジスタの設定値を参照することを示す値‘1’を設定する。マスタIDレジスタの設定値が‘0’であるので、マスタIDとして‘0’を出力するCPU101Aからのアクセス要求信号のみが電力供給の制御に使用されることになる。同様に、プロセスIDイネーブルレジスタには、プロセスIDレジスタの設定値を参照することを示す値‘1’を設定する。プロセスIDレジスタ設定値が“80”であるので、プロセスIDとして“80”を出力するプロセスによるアクセス要求信号のみが電力供給の制御に使用されることになる。従って、CPU101A上で実行されるプロセスIDが“80”のプロセスによって送信されたアクセス要求信号に基づいて、電力供給の制御が実行される。
ここで、上記処理を図16に示したレジスタアクセスの手順に対応させて説明する。供給制御部305Bは、CPU101A上で実行されるプロセスIDが“80”であるプロセスが、ステップS1を実行したことを検出して、IP107への電力供給を開始することができる。また、供給制御部305BがIP107への電力供給を停止する動作は、実施形態1と略同様であって、例えば、CPU101A上で実行されるプロセスIDが“80”であるプロセスがステップS5を実行し、このステップS5の条件分岐が“Yes”となったときに電力供給を停止できる。
また、供給制御部305Bに含まれるレジスタに、図32に示した値と図18に示した値を設定してもよい。この場合には、供給制御部305Bは、CPU101A上で実行されるプロセスIDが“80”であるプロセスによって実行されたIP107へのレジスタライトによって、IP107へのクロック供給を開始できる。そして、供給制御部305Bは、IP107の表示状態レジスタを示すアドレス“FF001010”をリードし、その結果、表示処理を実行していないことを示す‘0’であることを検出して、クロック供給停止信号をアサートする。従って、供給制御部305Bは、IP107が表示処理を行っていないときにクロック供給を停止できる。
さらに、供給制御部305Bに含まれるレジスタ、図32に示した値と図19に示した値を設定してもよい。この場合には、供給制御部305Bは、CPU101A上で実行されるプロセスIDが“80”であるプロセスによって実行されたIP107へのレジスタライトによって、IP107への電力供給及びクロックの供給を開始できる。そして、供給制御部305Bは、IP107の表示状態レジスタを示すアドレス“FF001010”をリードし、その結果、表示処理を実行していないことを示す‘0’であることを検出して、電力供給停止信号及びクロック供給停止信号をアサートする。従って、供給制御部305Bは、IP107が表示処理を行っていないときに電力供給及びクロック供給を停止できる。
次に、CPU101B上で実行されるプロセスやプロセスIDが“80”以外のプロセスがIP107にアクセス要求信号を送信したときの電力・クロック制御ブリッジ104Aの動作を説明する。
供給制御部305Bは、CPU101B上で実行されるプロセスや、プロセスIDが“80”以外のプロセス送信したアクセス要求信号に対しては、電力供給開始信号、電力供給停止信号、クロック供給開始信号、クロック供給停止信号をアサートしない。
このとき、実施形態3に係る代理応答生成部は、図14の規則に従い、IP107への電力供給及びクロック供給が開始されているときには、代理応答信号をバスIF301に送信せず、IP107への電力供給とクロック供給のいずれか又は両方が停止されているときには、代理応答信号をバスIF301に送信する。尚、ここでの代理応答生成部は、電力供給開始信号及びクロック供給開始信号がアサートされないので、リトライ信号をアサートしない。
即ち、IP107への電力供給とクロック供給のいずれか又は両方が停止され、IP107がアクセス応答信号を送信できないときには、IP107に代わって、電力・クロック制御ブリッジ104Aが代理応答信号を送信する。このとき、電力・クロック制御ブリッジ104Aは、この代理応答信号を、アクセス要求信号を送信したCPU101A,101Bのいずれかに正しく送信するので、CPU101A,101B等の機能モジュールの処理が滞ることがない。
従って、半導体集積回路11Aでは、電力供給及びクロック供給の制御の対象とするアクセスを、特定のCPUで実行される特定のプロセスによって実行されたものに限定できるので、ソフトウェアの不具合やコンピュータウィルス等によるプロセスによって、IP107への電力供給やクロック供給が不所望に開始又は停止されることがない。
《実施形態4》
本発明の実施形態4に係る半導体集積回路は、実施形態3に係る半導体集積回路11Aに比べると、複数のCPU101A,101B(以下、第1のマスタ、第2のマスタとも記す)が、IP107への電力供給とクロック供給の制御を行う点が異なる。また、バスIF301からIP107へのアクセス要求信号を取込む供給制御部305C以外の構成は、半導体集積回路11Aと同様としてもよい。このアクセス要求信号には、アドレス、ライトデータ、アクセス属性だけでなく、マスタIDが含まれる。
供給制御部305Cは、図33に示すように各レジスタを有する。尚、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタ、クロック供給開始イネーブルレジスタ及びクロック供給停止イネーブルレジスタは、図5において記載したレジスタと同様である。マスタIDレジスタA(MIDRA)には、IP107への電力供給とクロック供給の制御を行う第1のマスタのマスタIDが保存される。マスタID電力ステータスレジスタA(MIDPSRA)には、第1のマスタによって電力供給がなされているか否かを示す情報が保存される。マスタIDクロックステータスレジスタA(MIDCSRA)には、第1のマスタによってクロック供給がなされているか否かを示す情報が保存される。マスタIDレジスタB(MIDRB)には、IP107への電力供給とクロック供給の制御を行う第2のマスタのマスタIDが保存される。マスタID電力ステータスレジスタB(MIDPSRB)には、第2のマスタによって電力供給がなされているか否かを示す情報が保存される。マスタIDクロックステータスレジスタB(MIDCSRB)には、第2のマスタによってクロック供給がなされているか否かを示す情報が保存される。尚、ここでは、マスタがIP107にライトアクセスを行ってから、IP107にリードアクセスを行うまでの期間を、マスタによるIP107の使用期間といい、マスタがIP107に電力供給及びクロック供給を開始している期間とする。
供給制御部305Cは、これらの各レジスタを以下のように設定する。マスタID電力ステータスレジスタAには、マスタIDレジスタAに設定された第1のマスタがIP107にライトアクセスを行ったときには、第1のマスタによって電力供給が開始されていることを示す値が設定される。また、マスタID電力ステータスレジスタAには、第1のマスタがIP107にリードアクセスを行ったときには、第1のマスタによって電力供給が停止されていることを示す値が設定される。マスタID電力ステータスレジスタBには、マスタIDレジスタBに設定された第2のマスタがIP107にライトアクセスを行ったときには、第2のマスタによって電力供給が開始されていることを示す値が設定される。また、マスタID電力ステータスレジスタBには、第2のマスタがIP107にリードアクセスを行ったときには、第2のマスタによって電力供給が停止されていることを示す値が設定される。マスタIDクロックステータスレジスタAには、マスタIDレジスタAに設定された第1のマスタがIP107にライトアクセスを行ったときには、第1のマスタによってクロック供給が開始されていることを示す値が設定される。また、マスタIDクロックステータスレジスタAには、第1のマスタがIP107にリードアクセスを行ったときには、第1のマスタによってクロック供給が停止されていることを示す値が設定される。マスタIDクロックステータスレジスタBには、マスタIDレジスタBに設定された第2のマスタがIP107にライトアクセスを行ったときには、第2のマスタによってクロック供給が開始されていることを示す値が設定される。また、マスタIDクロックステータスレジスタBには、第2のマスタがIP107にリードアクセスを行ったときには、第2のマスタによってクロック供給が停止されていることを示す値が設定される。
次に、供給制御部305Cによる電力供給開始信号、電力供給停止信号、クロック供給開始信号、クロック供給停止信号の生成処理について説明する。まず、電力供給開始信号のアサートについて説明する。図34には、電力供給開始信号生成回路が例示される。電力供給開始信号は、電力供給開始イネーブルレジスタが電力供給開始信号をアサートすることを示す値‘1’に設定されていて、マスタIDレジスタA又はマスタIDレジスタBに設定されたマスタがIP107にライトアクセスを行ったときにアサートされる。
次に、電力供給停止信号のアサートについて説明する。図35には、電力供給停止信号生成回路が例示される。電力供給停止信号は、電力供給停止イネーブルレジスタが電力供給停止信号をアサートすることを示す値‘1’に設定されていて、さらに、以下の2条件のうちのいずれかが成立したときにアサートされる。
第1の条件は、マスタID電力ステータスレジスタBに設定されたマスタによって電力供給がなされていない旨を示す情報が格納されているときに、マスタIDレジスタAに設定されたマスタがリードアクセスを行うことである。第2の条件は、マスタID電力ステータスレジスタAに設定されたマスタによって電力供給がなされていない旨を示す情報が格納されているときに、マスタIDレジスタBに設定されたマスタがリードアクセスを行うことである。
次に、クロック供給開始信号のアサートについて説明する。図36には、クロック供給開始信号生成回路が例示される。クロック供給開始信号は、クロック供給開始イネーブルレジスタがクロック供給開始信号をアサートすることを示す値‘1’に設定されていて、マスタIDレジスタA又はマスタIDレジスタBに設定されたマスタがIP307にライトアクセスを行ったときにアサートされる。
次に、クロック供給停止信号のアサートについて説明する。図37には、クロック供給停止信号生成回路が例示される。クロック供給停止信号は、クロック供給停止イネーブルレジスタがクロック供給停止信号をアサートすることを示す値‘1’に設定されていて、以下の2条件のうちのいずれかが成立したときにアサートされる。
第1の条件は、マスタIDクロックステータスレジスタBに設定されたマスタによってクロック供給がなされていない旨を示す情報が格納されているときに、マスタIDレジスタAに設定されたマスタがリードアクセスを行うことである。第2の条件は、マスタIDクロックステータスレジスタAに設定されたマスタによってクロック供給がなされていない旨を示す情報が格納されているときに、マスタIDレジスタBに設定されたマスタがリードアクセスを行うことである。
以下、供給制御部305Cの動作をレジスタ設定値に基づいて説明する。まず、クロック供給の制御を行わず、電力供給の制御を行う場合、即ち、供給制御部305Cが、IP107へのクロック供給を常に開始し、電力供給を開始又は停止する動作について説明する。まず、初期化完了直後に、IP107への電力供給を停止し、クロック供給を開始するために、図2に示すモード信号を“10”とする。供給制御部305Cは、初期化時にモード信号を参照して、マスタID電力ステータスレジスタA及びマスタID電力ステータスレジスタBには、電力供給を行っていない旨を示す‘0’を設定し、マスタIDクロックステータスレジスタA及びマスタIDクロックステータスレジスタBには、クロック供給を行っている旨を示す‘1’を設定する。
また、供給制御部305Cの各レジスタには、クロック供給の制御を行わず、電力供給の制御を行うために、図38に示す値をそれぞれ設定する。即ち、電力供給開始イネーブルレジスタには、電力供給開始信号をアサートすることを示す値‘1’を設定する。電力供給停止イネーブルレジスタには、電力供給停止信号をアサートすることを示す値‘1’を設定する。クロック供給開始イネーブルレジスタには、クロック供給開始信号をアサートしないことを示す値を設定する。クロック供給停止イネーブルレジスタには、クロック供給停止信号をアサートしないことを示す値を設定する。マスタIDレジスタAには、CPU101Aを示す値‘0’を設定する。マスタIDレジスタBには、CPU101Bを示す値‘1’を設定する。
この場合には、電力供給開始信号は、CPU101A又はCPU101BがIP107にライトアクセスを行ったときにアサートされる。電力供給停止信号は、CPU101Bによって電力供給が停止され、CPU101Aがリードアクセスを行ったとき、又は、CPU101Aによって電力供給が停止され、CPU101Bがリードアクセスを行ったときにアサートされる。また、クロック供給開始信号及びクロック供給停止信号は、クロック供給開始イネーブルレジスタ、クロック供給停止イネーブルレジスタの設定値が各信号をアサートしないようにそれぞれ設定されているので、アサートされない。
次に、電力供給の制御を行わず、クロック供給の制御を行う場合、即ち、供給制御部305Cが、IP107への電力供給を常に開始し、クロック供給を開始又は停止する動作について説明する。まず、初期化完了直後に、IP107へのクロック供給を停止し、電力供給を開始するために、モード信号を“01”とする。供給制御部305Cは、初期化時にモード信号を参照して、マスタID電力ステータスレジスタA及びマスタID電力ステータスレジスタBには、電力供給を行っている旨を示す‘1’を設定し、マスタIDクロックステータスレジスタA及びマスタIDクロックステータスレジスタBには、クロック供給を行っていない旨を示す‘0’を設定する。
また、供給制御部305Cの各レジスタには、電力供給の制御を行わず、クロック供給の制御を行うために、図39に示す値をそれぞれ設定する。即ち、電力供給開始イネーブルレジスタには、電力供給開始信号をアサートしないことを示す値‘0’を設定する。電力供給停止イネーブルレジスタには、電力供給停止信号をアサートしないことを示す値‘0’を設定する。クロック供給開始イネーブルレジスタには、クロック供給開始信号をアサートすることを示す値‘1’を設定する。クロック供給停止イネーブルレジスタには、クロック供給停止信号をアサートすることを示す値‘1’を設定する。マスタIDレジスタAには、CPU101Aを示す値‘0’を設定する。マスタIDレジスタBには、CPU101Bを示す値‘1’を設定する。
この場合には、クロック供給開始信号は、CPU101A又はCPU101BがIP107にライトアクセスを行ったときにアサートされる。クロック供給停止信号は、CPU101Bによってクロック供給が停止され、CPU101Aがリードアクセスを行ったとき、又は、CPU101Aによってクロック供給が停止され、CPU101Bがリードアクセスを行ったときにアサートされる。また、電力供給開始信号及び電力供給停止信号は、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタの設定値が各信号をアサートしないようにそれぞれ設定されているので、アサートされない。
次に、電力供給及びクロック供給の制御を行う場合、即ち、供給制御部305Cが、IP107への電力供給及びクロック供給を開始又は停止する動作について説明する。まず、初期化完了直後に、IP107への電力供給及びクロック供給を停止するために、モード信号を“00”とする。供給制御部305Cは、初期化時にモード信号を参照して、マスタID電力ステータスレジスタA及びマスタID電力ステータスレジスタBには、電力供給を行っていない旨を示す‘0’を設定し、マスタIDクロックステータスレジスタA及びマスタIDクロックステータスレジスタBには、クロック供給を行っていない旨を示す‘0’を設定する。
また、供給制御部305Cの各レジスタには、電力供給及びクロック供給の制御を行うために、図40に示す値を設定する。即ち、電力供給開始イネーブルレジスタには、電力供給開始信号をアサートすることを示す値‘1’を設定する。電力供給停止イネーブルレジスタには、電力供給停止信号をアサートすることを示す値‘1’を設定する。クロック供給開始イネーブルレジスタには、クロック供給開始信号をアサートすることを示す値‘1’を設定する。クロック供給停止イネーブルレジスタには、クロック供給停止信号をアサートすることを示す値‘1’を設定する。マスタIDレジスタAには、CPU101Aを示す値‘0’を設定する。マスタIDレジスタBには、CPU101Bを示す値‘1’を設定する。
この場合には、電力供給開始信号及びクロック供給開始信号は、CPU101A又はCPU101BがIP107にライトアクセスを行ったときにアサートされる。また、電力供給停止信号は、CPU101Bによって電力供給が停止され、CPU101Aがリードアクセスを行ったとき、又は、CPU101Aによって電力供給が停止され、CPU101Bがリードアクセスを行ったときにアサートされる。クロック供給停止信号は、CPU101Bによってクロック供給が停止され、CPU101Aがリードアクセスを行ったとき、又は、CPU101Aによってクロック供給が停止され、CPU101Bがリードアクセスを行ったときにアサートされる。
従って、実施形態4に係る半導体集積回路では、複数のCPU101A,101Bが並列的にIP107を制御するときに、CPU101A,101BのうちいずれかがIP107を動作させるときにはIP107への電力供給を開始し、CPU101A,101BのいずれもIP107を動作させないときにはIP107への電力供給を停止できる。一般的に、複数のCPUが1つのIPを制御する場合において、あるCPUから、他のCPUがIPを使用しているか否かを判定することは困難であり、そのため、通常、IPへの電力供給は常時行われる。これに対して、実施形態4に係る半導体集積回路は、複数のCPU101A,101Bが1つのIP107を制御する場合であっても、IP107への電力供給を必要最小限の期間だけ行うので、常時電力を供給する従来方式に比べて消費電力を低減できる。
《実施形態5》
本発明の実施形態5に係る半導体集積回路は、実施形態4に係る半導体集積回路と比べると、CPUが複数のプロセス(以下、第1のプロセス、第2のプロセスとも記す)を実行するときに、複数のプロセスが、IP107への電力供給とクロック供給の制御を行う点が異なる。また、バスIF301からIP107へのアクセス要求信号を取込む供給制御部305D以外の構成は、半導体集積回路11Aと同様としてもよい。このアクセス要求信号には、アドレス、ライトデータ、アクセス属性だけなく、プロセスIDが含まれる。
供給制御部305Dは、図41に示すように各レジスタを有する。尚、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタ、クロック供給開始イネーブルレジスタ及びクロック供給停止イネーブルレジスタは、図5において記載したレジスタと同様である。プロセスIDレジスタA(PIDRA)には、IP107への電力・クロック供給制御を行う第1のプロセスのプロセスIDが保存される。プロセスID電力ステータスレジスタA(PIDPSRA)には、この第1のプロセスによって電力供給がなされているか否かを示す情報が保存される。プロセスIDクロックステータスレジスタA(PIDCSRA)には、この第1のプロセスによってクロック供給がなされているか否かを示す情報が保存される。プロセスIDレジスタB(PIDRB)には、IP107への電力・クロック供給制御を行う第2のプロセスのプロセスIDが保存される。プロセスID電力ステータスレジスタB(PIDPSRB)には、この第2のプロセスによって電力供給がなされているか否かを示す情報が保存される。プロセスIDクロックステータスレジスタB(PIDCSRB)には、この第2のプロセスによってクロック供給がなされているか否かを示す情報が保存される。尚、ここでは、プロセスがIP107にライトアクセスを行ってから、IP107にリードアクセスを行うまでの期間を、プロセスによるIP107の使用期間といい、プロセスがIP107に電力供給及びクロック供給を開始している期間とする。
供給制御部305Dは、これらの各レジスタを以下のように設定する。プロセスID電力ステータスレジスタAには、プロセスIDレジスタAに設定された第1のプロセスがIP107にライトアクセスを行ったときに、第1のプロセスによって電力供給が開始されていることを示す値が設定される。また、プロセスID電力ステータスレジスタAには、第1のプロセスがIP107にリードアクセスを行ったときに、第1のプロセスによって電力供給が停止されていることを示す値が設定される。プロセスID電力ステータスレジスタBには、プロセスIDレジスタBに設定された第2のプロセスがIP107にライトアクセスを行ったときに、第2のプロセスによって電力供給が開始されていることを示す値が設定される。また、プロセスID電力ステータスレジスタBには、第2のプロセスがIP107にリードアクセスを行ったときに、第2のプロセスによって電力供給が停止されていることを示す値が設定される。プロセスIDクロックステータスレジスタAには、プロセスIDレジスタAに設定された第1のプロセスがIP107にライトアクセスを行ったときに、第1のプロセスによってクロック供給が開始されていることを示す値が設定される。また、プロセスIDクロックステータスレジスタAには、第1のプロセスがIP107にリードアクセスを行ったときに、第1のプロセスによってクロック供給が停止されていることを示す値が設定される。プロセスIDクロックステータスレジスタBには、プロセスIDレジスタBに設定された第2のプロセスがIP107にライトアクセスを行ったときに、第2のプロセスによってクロック供給が開始されていることを示す値が設定される。また、プロセスIDクロックステータスレジスタBには、第2のプロセスがIP107にリードアクセスを行ったときに、第2のプロセスによってクロック供給が停止されていることを示す値が設定される。
次に、供給制御部305Dによる電力供給開始信号、電力供給停止信号、クロック供給開始信号、クロック供給停止信号の生成処理について説明する。まず、電力供給開始信号のアサートについて説明する。図42には、電力供給開始信号生成回路が例示される。この電力供給開始信号生成回路は、図34に示す電力供給開始信号生成回路と比べると、マスタIDの代わりにプロセスIDを設定する点が異なる。そして、電力供給開始信号のアサートについては、図34に対応する説明において、マスタIDレジスタA,BをプロセスIDレジスタに置き換えたものと同様である。
次に、電力供給停止信号のアサートについて説明する。図43には、電力供給停止信号生成回路が例示される。この電力供給停止信号生成回路は、図35に示す電力供給停止信号生成回路と比べると、マスタIDの代わりにプロセスIDを設定する点が異なる。そして、電力供給停止信号のアサートについては、図35に対応する説明において、マスタIDレジスタA,B及びマスタID電力ステータスレジスタA,Bを、プロセスIDレジスタA,B及びプロセスID電力ステータスレジスタA,Bに置き換えたものと同様である。
次に、クロック供給開始信号のアサートについて説明する。図44には、クロック供給開始信号生成回路が例示される。クロック供給開始信号生成回路は、図36に示すクロック供給開始信号生成回路と比べると、マスタIDの代わりにプロセスIDを設定する点が異なる。そして、クロック供給開始信号のアサートについては、図36に対応する説明において、マスタIDレジスタA,BをプロセスIDレジスタに置き換えたものと同様である。
次に、クロック供給停止信号のアサートについて説明する。図45には、クロック供給停止信号生成回路が例示される。クロック供給停止信号生成回路は、図37に示すクロック供給停止信号生成回路と比べると、マスタIDの代わりにプロセスIDを設定する点が異なる。そして、クロック供給停止信号のアサートについては、図37に対応する説明において、マスタIDレジスタA,B及びマスタIDクロックステータスレジスタA,Bを、プロセスIDレジスタA,B及びプロセスIDクロックステータスレジスタA,Bに置き換えたものと同様である。
以下、供給制御部305Dの動作をレジスタ設定値に基づいて説明する。まず、クロック供給の制御を行わず、電力供給の制御を行う場合、即ち、供給制御部305Dが、IP107へのクロック供給を常に開始し、電力供給を開始又は停止する動作について説明する。まず、初期化完了直後に、IP107への電力供給を停止し、クロック供給を開始するために、モード信号を“10”とする。供給制御部305Dは、初期化時にモード信号を参照して、プロセスID電力ステータスレジスタA及びプロセスID電力ステータスレジスタBには、電力供給を行っていない旨を示す‘0’を設定する。さらに、供給制御部305Dは、プロセスIDクロックステータスレジスタA及びプロセスIDクロックステータスレジスタBには、クロック供給を行っている旨を示す‘1’を設定する。
また、供給制御部305Dの各レジスタには、クロック供給の制御を行わず、電力供給の制御を行うために、図46に示す値をそれぞれ設定する。これらの各レジスタのうち、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタ、クロック供給開始イネーブルレジスタ、クロック供給停止イネーブルレジスタの設定値については、図38に示す設定値と同様である。また、プロセスIDレジスタAには、プロセスAを示す値“80”を設定する。プロセスIDレジスタBには、プロセスBを示す値“FF”を設定する。
この場合には、電力供給開始信号は、プロセスIDが“80”又は“FF”であるプロセスがIP107にライトアクセスを行ったときにアサートされる。電力供給停止信号は、プロセスBによって電力供給が停止され、プロセスAがリードアクセスを行ったとき、又は、プロセスAによって電力供給が停止され、プロセスBがリードアクセスを行ったときにアサートされる。また、クロック供給開始信号及びクロック供給停止信号は、クロック供給開始イネーブルレジスタ、クロック供給停止イネーブルレジスタの設定値が各信号をアサートしないようにそれぞれ設定されているので、アサートされない。
次に、電力供給の制御を行わず、クロック供給の制御を行う場合、即ち、供給制御部305Dが、IP107への電力供給を常に開始し、クロック供給を開始又は停止する動作について説明する。まず、初期化完了直後に、IP107へのクロック供給を停止し、電力供給を開始するために、モード信号を“01”とする。供給制御部305Dは、初期化時にモード信号を参照して、プロセスID電力ステータスレジスタA及びプロセスID電力ステータスレジスタBには、電力供給を行っている旨を示す‘1’を設定する。さらに、供給制御部305Dは、プロセスIDクロックステータスレジスタA及びプロセスIDクロックステータスレジスタBには、クロック供給を行っていない旨を示す‘0’を設定する。
また、供給制御部305Dの各レジスタには、電力供給の制御を行わず、クロック供給の制御を行うために、図47に示す値をそれぞれ設定する。これらの各レジスタのうち、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタ、クロック供給開始イネーブルレジスタ、クロック供給停止イネーブルレジスタの設定値については、図39に示す設定値と同様である。また、プロセスIDレジスタA,Bについては、図46に示す値と同様である。
この場合には、クロック供給開始信号は、プロセスIDが“80”又は“FF”であるプロセスがIP107にライトアクセスを行ったときにアサートされる。クロック供給停止信号は、プロセスBによってクロック供給が停止され、プロセスAがリードアクセスを行ったとき、又は、プロセスAによってクロック供給が停止され、プロセスBがリードアクセスを行ったときにアサートされる。また、電力供給開始信号及び電力供給停止信号は、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタの設定値が各信号をアサートしないようにそれぞれ設定されているので、アサートされない。
次に、電力供給及びクロック供給の制御を行う場合、即ち、供給制御部305Dが、IP107への電力供給及びクロック供給を開始又は停止する動作について説明する。まず、初期化完了直後に、IP107への電力供給及びクロック供給を停止するために、モード信号を“00”とする。供給制御部305Dは、初期化時にモード信号を参照して、プロセスID電力ステータスレジスタA及びプロセスID電力ステータスレジスタBには、電力供給を行っていない旨を示す‘0’を設定する。さらに、供給制御部305Dは、プロセスIDクロックステータスレジスタA及びプロセスIDクロックステータスレジスタBには、クロック供給を行っていない旨を示す‘0’を設定する。
また、供給制御部305Dの各レジスタには、電力供給及びクロック供給の制御を行うために、図48に示す値を設定する。これらの各レジスタのうち、電力供給開始イネーブルレジスタ、電力供給停止イネーブルレジスタ、クロック供給開始イネーブルレジスタ、クロック供給停止イネーブルレジスタの設定値については、図40に示す設定値と同様である。また、プロセスIDレジスタA,Bについては、図46に示す値と同様である。
この場合には、電力供給開始信号及びクロック供給開始信号は、プロセスIDが“80”又は“FF”であるプロセスがIP107にライトアクセスを行ったときにアサートされる。また、電力供給停止信号は、プロセスBによって電力供給が停止され、プロセスAがリードアクセスを行ったとき、又は、プロセスAによって電力供給が停止され、プロセスBがリードアクセスを行ったときにアサートされる。クロック供給停止信号は、プロセスBによってクロック供給が停止され、プロセスAがリードアクセスを行ったとき、又は、プロセスBによってクロック供給が停止され、プロセスAがリードアクセスを行ったときにアサートされる。
従って、実施形態5に係る半導体集積回路では、複数のプロセスA,Bが並列的にIP107を制御するときに、プロセスA,BのうちいずれかがIP107を動作させるときにはIP107への電力供給を開始し、プロセスA,BのいずれもIP107を動作させないときにはIP107への電力供給を停止できる。一般的に、複数のプロセスが1つのIPを制御する場合において、あるプロセスから、他のプロセスがIPを使用しているか否かを判定することは困難であり、そのため、通常、IPへの電力供給は常時行われる。これに対して、実施形態5に係る半導体集積回路は、複数のプロセスA,Bが1つのIP107を制御する場合であっても、IP107への電力供給を必要最小限の期間だけ行うので、常時電力を供給する従来方式に比べて消費電力を低減できる。
《実施形態6》
本発明の実施形態6に係る半導体集積回路は、IP107への電力供給とクロック供給を開始したときに、単純化されたソフトウェア処理によって、IP107を電力供給状態とクロック供給状態にするものであって、上記した半導体集積回路11と比べると、電力・クロック制御ブリッジ104Bの機能等が異なる。電力・クロック制御ブリッジ104Bは、電力・クロック制御ブリッジ104と比べると、図49に示すようにブリッジDMAC306が追加された点が異なる。
図50には、バスIF301が中継するアクセスの流れが例示されている。このアクセスは、図4に示すアクセスと比べると、ターゲットアクセスの処理は同様であり、イニシエータアクセスの処理の処理が異なる。具体的には、バスIF301は、IP107又はブリッジDMAC306から受信したアクセス要求信号をルータ103に送信し、ルータ103から供給されるアクセス要求信号に応じたアクセス応答信号をIP107とブリッジMAC306に送信する。
ブリッジDMAC306は、バスIF301、ルータ103、メモリ制御部102を介してメモリ12からデータを読込み、このデータをIP107に書込むDMACである。ブリッジDMAC306は、DMA開始信号がアサートされた後に、電力供給応答信号又はクロック供給応答信号がディアサート状態からアサート状態に遷移したことを検出して、メモリ12からIP107へのデータ転送を行う。
以下、電力・クロック制御ブリッジ104Bが、IP107への電力供給とクロック供給の制御を行うときの一連の処理について説明する。まず、供給制御部305Eは、各レジスタの値を図51に示すように設定する。この場合には、電力供給開始アドレスイネーブルレジスタ及び電力供給開始ライトデータイネーブルレジスタが有効を示す値となる。このため、供給制御部305Eは、IP107の表示制御レジスタを示すアドレス“FF00100C”に‘1’を書込むライトアクセスが発生したことを契機として、電力供給開始信号とDMA開始信号をアサートする。ブリッジDMAC306は、DMA開始信号がアサートされたので、電力供給応答信号又はクロック供給応答信号がアサートされるまで待機する。そして、ブリッジDMAC306は、電力供給応答信号がアサートされたことを契機として、DMA転送を行い、メモリ12に格納されているデータをIP107に転送する。
図52には、メモリ12に格納される被DMAデータが例示される。被DMAデータは、ライトデータとライトアドレスが1組となっている。ブリッジDMAC306は、IP107にライトアクセスを実行するとき、メモリ12から読出されたアドレスをIP107へのアドレスとし、メモリ12から読出されたライトデータをIP107へのライトデータとする。
また、IP107への電力供給の停止については、供給制御部305Eは、IP107の表示状態レジスタを示すアドレス“FF001010”をリードし、その結果、表示処理を実行していないことを示す‘0’であることを検出し、電力供給停止信号をアサートする。従って、供給制御部305Eは、IP107が表示処理を行っていないときに電力供給を停止できる。
さらに、IP107へのクロック供給の開始又は停止については、供給制御部305Eは、各レジスタの値を、上記した図51に示す設定値に代えて、図53に示す設定値、即ち、クロック供給の開始又は停止に関するレジスタの設定値とすればよい。この場合には、供給制御部305Eは、IP107の表示状態レジスタを示すアドレス“FF001010”に‘1’を書込むライトアクセスが発生したことを契機として、クロック供給開始信号とDMA開始信号をアサートする。ブリッジDMAC306は、DMA開始信号がアサートされたので、電力供給応答信号又はクロック供給応答信号がアサートされるまで待機する。そして、ブリッジDMAC306は、クロック供給応答信号がアサートされたことを契機として、DMA転送を行い、メモリ12に格納されているデータをIP107に転送する。
以上のように、電力供給及びクロック供給の制御は、開始と停止のいずれも供給制御部305Eの各レジスタではなく、IP107のレジスタへのアクセスを契機として行われる。また、供給制御部305Eの各レジスタへの設定は、半導体集積回路の初期化を完了した後であって、IP107の表示処理を実行する前であれば、適宜行ってもよく、さらに、IP107の表示処理を何回起動又は停止したとしても1回行うだけでよいから、ソフトウェア開発コストの増加を抑えることができる。そして、ブリッジDMAC306は、IP107のレジスタ設定を代行するので、CPU101はレジスタライトを1回行うだけでよく、消費電力を低減できる。
《実施形態7》
図54には、本発明の実施形態7に係る半導体集積回路が例示される。半導体集積回路11Bは、一組のモード信号によって複数のIPへの電力供給及びクロック供給を制御するものであって、半導体集積回路11Aと比べると、1つのCPU101と、複数のIP107A,107Bとを配置した点が異なる。
IP107A,107Bは、論理回路であって、電力供給及びクロック供給が開始されることにより動作する。IP107A,107Bは、電力・クロック制御ブリッジ104Cからアクセス要求信号を受信して、このアクセス要求信号に応じた処理を実行し、電力・クロック制御ブリッジ104Cを介してCPU101にアクセス要求信号に応じたアクセス応答信号を送信する。また、IP107A,107Bは、自らがアクセス要求信号元となり、電力・クロック制御ブリッジ104Cにアクセス要求信号を送信することによって、メモリ12等にアクセスする。さらに、IP107A,107Bは、IP107A,107B内部の状態を信号線によって電力・クロック制御ブリッジ104Cに通知する機能を有する。
次に、半導体集積回路11Bの初期化時におけるIP107A,107Bの電力供給状態及びクロック供給状態の決定について説明する。半導体集積回路11Bの使用開始時には、リセット信号生成部14によってリセット信号が一定期間アサートされる。リセットによる初期化時にIPA107A及びIPB107Bへの電力供給やクロック供給を開始されるか否かは、モード信号の値に基づいて、電力・クロック制御ブリッジ104Cが決定する。電力・クロック制御ブリッジ104Cは、リセット信号がアサートされているときには、モード信号の値に基づいて電力供給要求信号A,B、クロック供給要求信号A,Bの出力値を決定する。
図55には、リセット信号がアサート時でのモード信号、電力供給要求信号A,B及びクロック供給要求信号A,Bの関係が例示される。リセット信号アサート時にモード信号が“00”であれば、電力・クロック制御ブリッジ104Cは、電力供給要求信号A,B、クロック供給要求信号A,Bを全てディアサート状態とする。これにより、IP107A,107Bへの電力供給及びクロック供給が停止される。モード信号が“01”であれば、電力・クロック制御ブリッジ104Cは、電力供給要求信号A,Bをアサート状態、クロック供給要求信号A,Bをディアサート状態とする。これにより、IP107A,107Bへの電力供給が開始され、クロック供給が停止される。モード信号が“10”であれば、電力・クロック制御ブリッジ104Cは、電力供給要求信号A,Bをディアサート状態、クロック供給信号A,Bをアサート状態とする。これにより、IP107A,107Bへの電力供給が停止され、クロック供給が開始される。モード信号が“11”であれば、電力・クロック制御ブリッジ104Cは、電力供給要求信号A,B及びクロック供給信号A,Bを全てアサート状態とする。これにより、IPA107A,107Bへの電力供給及びクロック供給が開始される。一方、リセット信号がディアサート状態であるときには、電力・クロック制御ブリッジ104Cは、モード信号を無視して、IP107A,107Bが出力する状態信号に基づいて、電力供給要求信号A,B、クロック供給要求信号A,Bの値を決定する(図20〜図23参照)。
従って、実施形態7に係る半導体集積回路11Bでは、2ビットのモード信号を設定すると共に、図示を省略する一組のモード信号入力端子を設けることによって、複数のIP107A,107Bの初期化時における電力供給状態及びクロック供給状態を決定できるから、低コスト化を図ることができる。
以上、本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、実施形態6に係る半導体集積回路では、IP107へのデータ転送を電力・クロック制御ブリッジ104に含まれるブリッジDMAC306で行うとしたが、これに限らず、DMAC108やCPU101で行ってもよい。DMAC108でデータ転送を行う場合には、DMA開始信号をDMAC108に供給すればよい。また、CPU101でデータ転送を行う場合には、DMA開始信号を割込みコントローラ109に接続し、割込みコントローラ109から割込み要求の通知を受信したCPU101がIP107へのデータ転送を行うプログラムを実行できるように半導体集積回路11を構成すればよい。