(57)【要約】【課題】半導体集積回路装置の内部状態を保存するために、バッテリバックアップされた外部メモリが必要となる。【解決手段】半導体集積回路装置は、内部論理回路部と第１メモリと第２メモリと制御回路部とを具備する。内部論理回路部は、回路の正常性を試験するスキャンチェーンを備える。第１メモリは、内部論理回路部によりアクセスされる。第２メモリは、第１メモリに格納されるデータの有効性を示すバリッドビットを第１メモリに関連付けて格納する。制御回路部は、スキャンチェーンに保持される内部状態データを第１メモリに格納し、第１メモリに格納された内部状態データをスキャンチェーンに再設定する。内部状態データが第１メモリに格納された後、第１メモリ及び第２メモリの電源供給を継続しながら内部論理回路部の電源供給を停止し、内部論理回路部の電源供給が再開されたとき、第１メモリに格納された内部状態データをスキャンチェーンに再設定する。【選択図】図２
2007232588.tif 000002
【特許請求の範囲】
【請求項１】
回路の正常性を試験するスキャンチェーンを備える内部論理回路部と、
前記内部論理回路部によりアクセスされる第１メモリと、
前記第１メモリに格納されるデータの有効性を示すバリッドビットを前記第１メモリに関連付けて格納する第２メモリと、
前記スキャンチェーンに保持される内部状態データを前記第１メモリに格納し、前記第１メモリに格納された前記内部状態データを前記スキャンチェーンに再設定する制御回路部と
を具備する
半導体集積回路装置。
【請求項２】
前記スキャンチェーンに保持される前記内部状態データを前記第１メモリに格納した後、前記第１メモリ及び前記第２メモリの電源供給を継続しながら前記内部論理回路部の電源供給を停止し、
前記内部論理回路部の電源供給を再開したとき、前記第１メモリに格納された前記内部状態データを前記スキャンチェーンに再設定する
請求項１に記載の半導体集積回路装置。
【請求項３】
前記制御回路部は、前記第１メモリの所定のアドレスから連続する領域に前記内部状態データを格納し、前記連続する領域に関連付けられる無効を示す前記バリッドビットを前記第２メモリに格納し、
前記第１メモリの所定のアドレスから連続する領域に格納される前記内部状態データを前記スキャンチェーンに再設定する
請求項１または請求項２に記載の半導体集積回路装置。
【請求項４】
前記制御回路部は、前記第２メモリに格納される前記バリッドビットが無効を示すか否かを判定するスキャンイネーブル生成部を備え、
前記スキャンイネーブル生成部が無効を示すと判定した前記バリッドビットに関連付けられる前記第１メモリの領域に前記内部状態データを格納する
請求項１または請求項２に記載の半導体集積回路装置。
【請求項５】
前記内部状態データを格納するために選択される前記バリッドビットが無効を示す前記第１メモリの領域が不足するとき、
前記第１メモリの第１領域に含まれる前記バリッドビットが無効を示す領域と、前記第１メモリの第２領域の全域とに前記内部状態データを格納し、前記内部状態データが格納された前記第１メモリの領域に関連付けられる無効を示す前記バリッドビットを前記第２メモリに格納する
請求項４に記載の半導体集積回路装置。
【請求項６】
前記第１領域と前記第２領域とは連続し、
前記第１領域に含まれる前記バリッドビットが無効を示す領域のサイズに基づいて、前記第１領域と前記第２領域の境界を示す前記第２領域の先頭アドレスを動的に決定する
請求項４または請求項５に記載の半導体集積回路装置。
【請求項７】
前記第２領域と前記第１領域とは連続し、
前記第１領域及び前記第２領域に含まれる前記バリッドビットが無効を示す領域のサイズに基づいて、前記第２領域の最終アドレスが決定される
請求項４から請求項６のいずれかに記載の半導体集積回路装置。
【請求項８】
前記第２メモリに格納される無効を示す前記バリッドビットに関連付けられる前記第１メモリの領域に格納されるデータを前記内部状態データとして前記スキャンチェーンに再設定する
請求項４から請求項７のいずれかに記載の半導体集積回路装置。
【請求項９】
前記第１メモリは、低速メモリのアクセスを削減するために設けられるキャッシュメモリである
請求項１から請求項８のいずれかに記載の半導体集積回路装置。
【請求項１０】
回路の正常性を試験するスキャンチェーンを備える内部論理回路部と、
前記内部論理回路部によりアクセスされる第１メモリと、
前記第１メモリに格納されるデータの有効性を示すバリッドビットを前記第１メモリに関連付けて格納する第２メモリと
を具備する半導体集積回路装置の制御方法であって、
前記スキャンチェーンに保持される内部状態データを前記第１メモリに格納する退避ステップと、
前記第１メモリに格納された前記内部状態データを前記スキャンチェーンに再設定する回復ステップと
を具備する
半導体集積回路装置の制御方法。
【請求項１１】
前記退避ステップで前記内部状態データを前記第１メモリに格納した後、前記第１メモリ及び前記第２メモリの電源供給を継続しながら前記内部論理回路部の電源供給を停止する供給停止ステップと、
前記内部論理回路部の電源供給を再開する供給再開ステップと
をさらに具備し、
前記供給再開ステップ直後に前記回復ステップにより前記内部状態データを前記スキャンチェーンに再設定する
請求項１０に記載の半導体集積回路装置の制御方法。
【請求項１２】
前記退避ステップは、前記第１メモリの所定のアドレスから連続する領域に前記内部状態データを格納し、前記連続する領域に関連付けられる無効を示す前記バリッドビットを前記第２メモリに格納し、
前記回復ステップは、前記第１メモリの所定のアドレスから連続する領域に格納される前記内部状態データを前記スキャンチェーンに再設定する
請求項１０または請求項１１に記載の半導体集積回路装置の制御方法。
【請求項１３】
前記退避ステップは、前記第２メモリに格納される前記バリッドビットが無効を示すか否かを判定する退避判定ステップを備え、
前記退避判定ステップで無効を示すと判定された前記バリッドビットに関連付けられる前記第１メモリの領域を選択して前記内部状態データを格納する
請求項１０または請求項１１に記載の半導体集積回路装置の制御方法。
【請求項１４】
前記内部状態データを格納するために選択される前記バリッドビットが無効を示す前記第１メモリの領域が不足するとき、
前記退避ステップは、前記第１メモリの第１領域に含まれる前記バリッドビットが無効を示す領域と、前記第１メモリの第２領域の全域とに前記内部状態データを格納し、前記内部状態データが格納された前記第１メモリの領域に関連付けられる無効を示す前記バリッドビットを前記第２メモリに格納する
請求項１３に記載の半導体集積回路装置の制御方法。
【請求項１５】
前記第１領域と前記第２領域とは連続し、
前記第１領域に含まれる前記バリッドビットが無効を示す領域のサイズに基づいて、前記第１領域と前記第２領域の境界を示す前記第２領域の先頭アドレスを動的に決定する
請求項１３または請求項１４に記載の半導体集積回路装置の制御方法。
【請求項１６】
前記第２領域と前記第１領域とは連続し、
前記第１領域及び前記第２領域に含まれる前記バリッドビットが無効を示す領域のサイズに基づいて、前記第２領域の最終アドレスが決定される
請求項１３から請求項１５のいずれかに記載の半導体集積回路装置。
【請求項１７】
前記第２メモリに格納される無効を示す前記バリッドビットに関連付けられる前記第１メモリの領域に格納されるデータを前記内部状態データとして前記スキャンチェーンに再設定する
請求項１３から請求項１６のいずれかに記載の半導体集積回路装置の制御方法。
【請求項１８】
前記第１メモリは、低速メモリのアクセスを削減するために設けられるキャッシュメモリである
請求項１３から請求項１７のいずれかに記載の半導体集積回路装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置及びその制御方法に関し、特に、内部状態を示すデータを退避回復する回路を備える半導体集積回路装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、スタンバイ機能やレジューム機能等の低消費電力モードを備えた半導体集積回路が注目されている。通常、半導体集積回路は、電源供給が停止されると不揮発性メモリを除いてその内部状態は消去されるため、電源供給を再開した時、回路の電源供給を停止する直前の状態から回路動作を再開させるためには、内部状態を保存しなくてはならない。
【０００３】
例えば、特開平６−５２０７０号公報によれば、レジスタに保持された内部状態データを電源供給停止時に外部メモリに退避させ、保持する集積回路が開示されている。この集積回路は、複数のレジスタとデータ退避部とデータ復帰部とを具備する。複数のレジスタは、スキャンチェーンを形成するように接続される。データ退避部は、外部信号に応答し、データ退避モード時に、複数のレジスタにスキャンチェーンを形成させ、形成されたスキャンチェーンを介して各レジスタの保持データを外部に読み出す。このとき、データ退避部は、内部状態データを所定のビット幅のデータに直列／並列変換し、データ入出力部を通じてデータ保護用メモリに格納する。データ復帰部は、外部信号に応答し、データ復帰モード時に、複数のレジスタにスキャンチェーンを形成させ、形成されたスキャンチェーンを介して退避していたデータをもとのレジスタに復帰させる。このとき、データ復帰部は、データ保護用メモリから内部状態データを読出してデータ入出力手段から入力し、所定のビット幅のデータを直列の内部状態データに変換してスキャンチェーンを通じて復帰する。
【０００４】
【特許文献１】特開平６−５２０７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のように、半導体集積回路装置の内部状態を保存するために、バッテリバックアップされた外部メモリが必要となる。
【課題を解決するための手段】
【０００６】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００７】
本発明の観点では、半導体集積回路装置は、内部論理回路部（９０）と、第１メモリ（１２）と、第２メモリ（２２）と、制御回路部（５０、５１）とを具備する。内部論理回路部（９０）は、回路の正常性を試験するスキャンチェーン（３００〜３３１）を備える。第１メモリ（１２）は、内部論理回路部（９０）によりアクセスされる。第２メモリ（２２）は、第１メモリ（１２）に格納されるデータの有効性を示すバリッドビットを第１メモリ（１２）に関連付けて格納する。制御回路部（５０、５１）は、スキャンチェーン（３００〜３３１）に保持される内部状態データを第１メモリ（１２）に格納し、第１メモリ（１２）に格納された内部状態データをスキャンチェーン（３００〜３３１）に再設定する。
【０００８】
内部状態データが第１メモリ（１２）に格納された後、第１メモリ（１２）及び第２メモリ（２２）の電源供給を継続しながら内部論理回路部（９０）の電源供給を停止し、内部論理回路部（９０）の電源供給が再開されたとき、第１メモリ（１２）に格納された内部状態データをスキャンチェーン（３００〜３３１）に再設定する。
【０００９】
本発明の他の観点では、制御方法は、回路の正常性を試験するスキャンチェーン（３００〜３３１）を備える内部論理回路部（９０）と、内部論理回路部（９０）によりアクセスされる第１メモリ（１２）と、第１メモリ（１２）に格納されるデータの有効性を示すバリッドビットを第１メモリ（１２）に関連付けて格納する第２メモリ（２２）とを具備する半導体集積回路装置の制御方法である。半導体集積回路装置の制御方法は、退避ステップと、回復ステップとを具備する。退避ステップは、スキャンチェーン（３００〜３３１）に保持される内部状態データを第１メモリ（１２）に格納する。回復ステップは、第１メモリ（１２）に格納された内部状態データをスキャンチェーン（３００〜３３１）に再設定する。
【００１０】
半導体集積回路装置の制御方法は、供給停止ステップと、供給再開ステップとをさらに具備する。供給停止ステップは、退避ステップで内部状態データを第１メモリ（１２）に格納した後、第１メモリ（１２）及び第２メモリ（２２）の電源供給を継続しながら内部論理回路部（９０）の電源供給を停止する。供給再開ステップは、内部論理回路部（９０）の電源供給を再開する。この供給再開ステップ直後に、回復ステップにより内部状態データをスキャンチェーンに再設定する。
【発明の効果】
【００１１】
本発明によれば、外部メモリを設けなくても半導体集積回路装置の内部状態を保存する内部メモリを設けることができる。内部メモリを利用することにより、追加回路を削減できる。また、本発明によれば、電源供給の中断から復帰する際に、内部メモリに保存されたデータをフリップフロップに再設定することができ、電源中断から復帰する速度を高速化することができる。
【発明を実施するための最良の形態】
【００１２】
（第１の実施の形態）
図を参照して本発明の第１の実施の形態が説明される。図１は、第１の実施の形態を説明するために、半導体集積回路装置に内蔵されるスキャンチェーンとキャッシュメモリ及びバリッドビットメモリとを模式的に示した図である。半導体集積回路装置は、キャッシュメモリ１０と、キャッシュメモリ１０に記憶されるデータの有効性を示すバリッドビットを格納するバリッドビットメモリ２０と、半導体集積回路装置の内部状態データを保持するスキャンフリップフロップ群とを備える。キャッシュメモリ１０は、（Ｎ＋１）ワード×（Ｌ＋１）ビット／ワードのメモリである。キャッシュメモリ１０の各ワードに格納されるデータの有効性を示すバリッドビットは、バリッドビットメモリ２０に格納される。ここでは、バリッドビットは、キャッシュメモリ１０の１ワードに対して１ビットを割り当てられる。従って、バリッドビットメモリ２０は、（Ｎ＋１）ビットの情報を格納する。
【００１３】
半導体集積回路装置の内部状態を示すデータは、スキャンフリップフロップに保持されている。スキャンフリップフロップは、内部状態データの退避時にスキャンチェーン３０、３１、…、３Ｌを形成し、スキャンチェーン３０、３１、…、３Ｌを介して保持する内部状態データをそれぞれシリアルに出力する。また、回復時において、スキャンチェーン３０、３１、…、３Ｌを介してスキャンフリップフロップは退避された内部状態データを再設定する。スキャンチェーン３０、３１、…、３Ｌはシリアル入出力であるから、同期するクロックに従って順に内部状態データの入出力を行う。従って、出力時は、出力ノードに接続されるスキャンフリップフロップ群４０（格納されるデータをＣＨ０とする）からスキャンフリップフロップ群４１（ＣＨ１）、スキャンフリップフロップ群４２（ＣＨ２）の順にスキャンフリップフロップ群４Ｍ（ＣＨＭ）まで（Ｌ＋１）ビットのデータが並列に並んで出力される。
【００１４】
当初、バリッドビットメモリ２０は、バリッドビットメモリの内容２０−１に示されるように、アドレス０、２、…、ｎ、…、Ｎのデータが“有効（＝１）”であることを示し、アドレス１、３、…のデータが“無効（＝０）”であることを示している。スキャンチェーンの出力データが格納されたメモリは、それまでに格納されていたデータが消えてしまうため、バリッドビットは“無効（＝０）”となる。本実施の形態では、スキャンチェーン３０、３１、…、３Ｌの出力ノードから出力されるスキャンデータをキャッシュメモリ１０の先頭から順に格納する。従って、スキャンチェーン３０、３１、…、３Ｌの長さ分（Ｍ＋１）のキャッシュメモリ１０の内容がスキャンチェーンの出力データになる。そのアドレスをｎとすると、対応するバリッドビットメモリ２０の内容２０−２は、アドレスｎまで全てのバリッドビットデータが“無効（＝０）”になる。
【００１５】
即ち、スキャンチェーン３０、３１、…、３Ｌからシリアルに出力されるデータをそれぞれＰ０、Ｐ１、…、ＰＬとすると、図１に示されるように、キャッシュメモリ１０のアドレス０のメモリのビット０にデータＰ０ＣＨ０が格納され、アドレス３のメモリのビット１にデータＰ１ＣＨ３が格納される。アドレスｎには、スキャンフリップフロップ群４ＭのデータＣＨＭが格納され、アドレス（ｎ＋１）以降は、キャッシュメモリ１０の元のデータがそのまま残る。例えば、アドレスＮには、データＤ０Ｎ、Ｄ１Ｎ、…、ＤＬＮが変更されずに格納されている。
【００１６】
キャッシュメモリ１０に格納された内部状態データは、回復時、キャッシュメモリ１０の先頭から読み出し、順にスキャンチェーン３０、３１、…、３Ｌに供給し、スキャンチェーン内をシフトさせる。回復時のデータは、スキャンフリップフロップ群４Ｍ側から供給され、（Ｍ＋１）個のデータがスキャンチェーン３０、３１、…、３Ｌに供給されると、最初に読み出されたデータＰ０ＣＨ０〜ＰＬＣＨ０が、スキャンフリップフロップ群４０に再設定されることになる。
【００１７】
図２は、第１の実施の形態に係る半導体集積回路装置の構成を示すブロック図である。半導体集積回路装置は、内部論理回路部９０、キャッシュメモリ１２、バリッドビットメモリ２２、選択回路８１、８２、８３、論理和回路８７、制御回路部５０、スキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５を具備する。内部論理回路部９０とスキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５とは、通常動作時において、例えばＣＰＵ（中央演算処理ユニット）として動作する回路である。以下、この内部論理回路部９０とスキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５とによる回路をＣＰＵとして説明する。内部論理回路部９０は、ＣＰＵをなす回路の組み合せ回路部分であり、スキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５から出力される信号を入力して論理演算する。内部論理回路部９０は、論理演算した結果をスキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５に出力し、内部状態として保持する。従って、通常動作において、内部論理回路部９０は、キャッシュメモリ１２に対してデータ入力信号ＹＣＤＩ、アドレス信号ＹＣＡＤ、チップセレクト信号ＹＣＣＳ、ライトイネーブル信号ＹＣＷＥを与えてアクセスし、データ出力信号ＣＤＯによりデータを読み出す。同時に、内部論理回路部９０は、バリッドビットメモリ２２に対してデータ入力信号ＹＶＤＩ、アドレス信号ＹＶＡＤ、チップセレクト信号ＹＶＣＳ、ライトイネーブル信号ＹＶＷＥを与えてアクセスし、データ出力信号ＶＤＯによりデータを読み出す。
【００１８】
回路動作の正常性をテストするスキャンテスト時、スキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５は、スキャンチェーン３００〜３３１を形成する。入力ポートの各々からシリアルのテストデータであるスキャン入力信号ＳＩ−０〜３１が入力される。出力ポートからテスト結果であるシリアルのスキャン出力信号ＳＯ−０〜３１が出力される。
【００１９】
本発明では、このスキャンチェーンを利用して、半導体集積回路装置の内部状態を示すデータは退避及び回復される。そのため、選択回路８１、８２、８３は、通常のデータ及びテストデータと、半導体集積回路装置の内部状態データとを切り替える。選択回路８１は、バリッドビットメモリ２２に入力されるアドレス信号ＶＡＤ、入力データ信号ＶＤＩ、チップセレクトおよびライトイネーブルなどメモリ制御用信号ＶＣＳ／ＶＷＥを切り替える。選択回路８２は、キャッシュメモリ１２に入力されるアドレス信号ＣＡＤ、入力データ信号ＣＤＩ、チップセレクトおよびライトイネーブルなどメモリ制御用信号ＣＣＳ／ＣＷＥを切り替える。選択回路８３は、スキャンチェーン３００〜３３１に入力されるシリアル信号を切り替える。スキャンチェーン３００〜３３１は、外部から入力されるスキャンテストデータ、或いは、キャッシュメモリ１２に格納されている内部状態データを取り込む。そのため、選択回路８３は、スキャン入力信号ＳＩ−０〜３１とキャッシュメモリ１２の出力信号ＣＤＯとを切り替えてスキャンチェーン３００〜３３１のシリアル入力として供給する。
【００２０】
論理和回路８７は、スキャンテスト時のスキャンチェーンのシフト動作を指示する外部のスキャンイネーブル信号ＳＫＥと、制御回路部５０が生成する保護用スキャンイネーブル信号ＰＳＥとの論理和をとって各スキャンフリップフロップに供給し、各スキャンフリップフロップをスキャンチェーン動作（シフト動作）させる。
【００２１】
キャッシュメモリ１２は、内部論理回路部９０及びスキャンフリップフロップＦ０−０〜２５５、…、Ｆ３１−０〜２５５によるＣＰＵからアクセスされる。キャッシュメモリ１２は、外部のメインメモリへのアクセスを削減して処理を高速化するために設けられた高速のメモリである。その内容が有効であるか無効であるかを示すバリッドビットが、バリッドビットメモリ２２に格納されている。
【００２２】
キャッシュメモリ１２とバリッドビットメモリ２２との対応関係は、図３に示される。キャッシュメモリ１２は、ＣＰＵからワード単位でアクセスされ、ここでは１ワード３２ビットで構成される。外部とのインタフェースは、１ライン単位で行われる。ここでは１ラインは８ワードで構成される。この１ライン毎に、バリッドビットが付与される。従って、バリッドビットメモリ２２が１ビット／ワード構成のメモリであれば、図３に示されるように、４０９６ワードのキャッシュメモリ１２に対して、５１２ワード（ビット）のバリッドビットメモリ２２が必要となる。
【００２３】
キャッシュメモリ１２及びバリッドビットメモリ２２は、他の回路とは別の電源系Ｖｍにより電源が供給される。従って、ＣＰＵの内部状態を示すデータがスキャンチェーン３００〜３３１を介してキャッシュメモリ１２に退避された後、電源系Ｖｍのみ供給し、他の回路部の電源供給を停止することにより、半導体集積回路装置の消費電力を低減することが可能となる。
【００２４】
制御回路部５０は、状態フラグ生成部５４、スキャンイネーブル生成部５５、バリッドデータ生成部５６、カウント部５２、メモリ制御信号生成部５８を備える。退避動作を指示する退避モード信号ＳＭＤと、回復動作を指示する回復モード信号ＲＭＤが制御回路部５０に入力され、制御回路部５０は、それぞれの動作モードに応じた制御信号を各部に供給する。クロックＣＬＫは、詳細を図示されないが各部に供給され、制御回路部５０は、クロックＣＬＫに同期して動作する。
【００２５】
状態フラグ生成部５４は、退避モード信号ＳＭＤ及び回復モード信号ＲＭＤに基づいて、データ保護状態フラグＰＦＬを生成する。データ保護状態フラグＰＦＬは、選択回路８１、８２、８３に供給され、キャッシュメモリ１２、バリッドビットメモリ２２、スキャンチェーン３００〜３３１に供給される各信号を切り替える。
【００２６】
スキャンイネーブル生成部５５は、スキャンチェーン３００〜３３１のシフト動作を有効にする保護用スキャンイネーブル信号ＰＳＥを生成する。保護用スキャンイネーブル信号ＰＳＥは、論理和回路８７を介してスキャンフリップフロップＦ０−０〜２５５、…、Ｆ３１−０〜２５５に供給され、アクティブのときクロックＣＬＫに同期してスキャンチェーン３００〜３３１がシフト動作する。保護用スキャンイネーブル信号ＰＳＥは、退避動作開始とともにアクティブになるが、回復動作時は、キャッシュメモリ１２から読み出されるデータが１クロック遅延するため、回復動作開始から１クロック遅れてアクティブになる。全てのデータが退避或いは回復すると、スキャンイネーブル信号はインアクティブになって不要なシフトを防止する。
【００２７】
バリッドデータ生成部５６は、バリッドビットメモリ２２に書き込むバリッドデータ信号ＸＶＤＩを生成する。バリッドデータ信号ＸＶＤＩは、選択回路８１を介してバリッドビットメモリ入力データ信号ＶＤＩになる。従って、内部状態データの退避・回復動作時、バリッドビットメモリ入力データ信号ＶＤＩは、バリッドデータ生成部５６が生成するバリッドデータ信号ＸＶＤＩとなる。本実施の形態では、バリッドデータ生成部５６は、キャッシュメモリ１２のデータが“無効”であることを示す“０”データのみ供給する。
【００２８】
カウント部５２は、クロックＣＬＫに基づいて計数するカウンタを備え、キャッシュメモリ１２のアドレス信号ＸＣＡＤ、バリッドビットメモリ２２のアドレス信号ＸＶＡＤを生成する。カウンタは、キャッシュメモリ１２が４０９６ワードのメモリの場合、１２ビットでアドレスを示すことが可能となり、このうち上位９ビットがバリッドビットメモリ２２のアドレスを示す。本実施の形態の場合、アドレスに対応するメモリに順に内部状態データが格納されるため、このカウンタのカウンタ値ＣＮＴは、スキャンチェーンの退避したデータの数に対応する。従って、そのカウント値ＣＮＴによって、退避・回復のスキャンチェーンの終端が判明するため、カウント部５２は終端を検出して各部に通知する。カウント値ＣＮＴを各部に通知してもよい。
【００２９】
メモリ制御信号生成部５８は、キャッシュメモリ１２、バリッドビットメモリ２２が選択されたことを示すチップセレクト信号ＸＣＣＳ、ＸＶＣＳ、それぞれのメモリのデータの書き込み／読み出し状態を指示するライトイネーブル信号ＸＣＷＥ、ＸＶＷＥを生成する。チップセレクト信号ＸＣＣＳとライトイネーブル信号ＸＣＷＥは、選択回路８２を介してキャッシュメモリ１２にチップセレクト信号ＣＣＳとライトイネーブル信号ＣＷＥとして供給される。チップセレクト信号ＸＶＣＳとライトイネーブル信号ＸＶＷＥは、選択回路８１を介してバリッドビットメモリ２２にチップセレクト信号ＶＣＳとライトイネーブル信号ＶＷＥとして供給される。従って、内部状態データの退避・回復動作時、各メモリに入力されるチップセレクト信号ＣＣＳ、ＶＣＳ、ライトイネーブル信号ＣＷＥ、ＶＷＥは、メモリ制御信号生成部５８が生成するチップセレクト信号ＸＣＣＳ、ＸＶＣＳ、ライトイネーブル信号ＸＣＷＥ、ＸＶＷＥとなる。
【００３０】
退避時、スキャンチェーン３００〜３３１のデータは、キャッシュメモリ１２の先頭から順次書き込まれるため、ライトイネーブル信号ＣＷＥ、ＶＷＥは、常時書き込み状態（ｗｒｉｔｅ）を示す。回復時、キャッシュメモリ１２から内部状態データを読み出すのみであるため、ライトイネーブル信号ＣＷＥ、ＶＷＥは、常時読み出し状態（ｒｅａｄ）を示す。キャッシュメモリ１２のチップセレクト信号ＣＣＳは、退避動作或いは回復動作中のみアクティブになるが、バリッドビットメモリ２２のチップセレクト信号ＶＣＳは、回復動作では、バリッドビットメモリ２２をアクセスしないため、退避動作中のみアクティブになる。
【００３１】
次に、図４を参照して、内部状態を示すデータをキャッシュメモリ２２に退避する退避動作を説明する。図４（ａ）は、クロックＣＬＫを示し、各周期に符号が付されている。回路は、このクロックＣＬＫに同期して動作するため、この符号を用いてタイミングの説明をする。従って、クロックｔ１は、クロックＣＬＫのｔ１の周期を示すものとする。
【００３２】
外部から入力される退避動作の指示を示す退避モード信号ＳＭＤがアクティブになると（図４（ｂ））、退避動作が開始され、データ保護状態フラグＰＦＬ及び保護用スキャンイネーブル信号ＰＳＥがアクティブになる。データ保護状態フラグＰＦＬは、以降、退避動作が終了するまでアクティブ状態を継続し、選択回路８１〜８３を退避動作側に切り替えた状態にする（図４（ｃ））。保護用スキャンイネーブル信号ＰＳＥは、スキャンチェーン３００〜３３１が全ての内部状態を示すデータを出力するクロックｔ９まで、スキャンチェーン３００〜３３１がシフト動作するようにアクティブ状態を継続する（図４（ｄ））。
【００３３】
これに伴って、期間ｔ１において、キャッシュメモリ１２のチップセレクト信号ＣＣＳ及びバリッドビットメモリ２２のチップセレクト信号ＶＣＳはアクティブになり（図４（ｆ）（ｊ））、それぞれのメモリのライトイネーブル信号ＣＷＥ、ＶＷＥは書き込み状態を示す（図４（ｇ）（ｋ））。これにより、キャッシュメモリ１２とバリッドビットメモリ２２は、スキャンチェーン３００〜３３１から出力される内部状態を示すデータを格納し、バリッドビットを“無効”にすることが可能になる。また、カウント部５２に備わるカウンタのカウント値ＣＮＴは “０”を示し（図４（ｈ））、キャッシュメモリ１２のアドレス信号ＣＡＤ、バリッドビットメモリ２２のアドレス信号ＶＡＤは、共に“０”を示している（図４（ｈ）（ｌ））。従って、キャッシュメモリ１２のアドレス０には、スキャンチェーン３００〜３３１の最初のデータＣＨ０、即ち、スキャンフリップフロップＦ０−０〜Ｆ３１−０に格納されている内部状態を示すデータが設定され（図４（ｉ））、バリッドビットメモリ２２のアドレス０には、“無効”を示す“０”が書き込まれる。
【００３４】
クロックｔ２になると、カウント値ＣＮＴが“１”にカウントアップされる（図４（ｅ））。従って、キャッシュメモリ１２のアドレスＣＡＤは“１”になるが（図４（ｈ））、バリッドビットメモリ２２のアドレスＶＡＤは変化しない（図４（ｌ））。保護用スキャンイネーブル信号ＰＳＥがアクティブであるから、スキャンチェーン３００〜３３１は、クロックＣＬＫの立ち上がり毎にシフト動作して内部状態を示すデータをスキャンフリップフロップＦ０−０〜Ｆ３１−０側に移動する。従って、クロックｔ２では、データＣＨ１がキャッシュメモリ１２に与えられる（図４（ｉ））。クロックｔ４まで、クロック毎にスキャンチェーン３００〜３３１はシフト動作を繰り返し、順にキャッシュメモリ１２に内部状態を示すデータが書き込まれる。クロックｔ４において、カウント値ＣＮＴは“７”となり、キャッシュメモリ１２の１ライン分のデータが書き込まれたことになる。
【００３５】
クロックｔ５になると、カウント値ＣＮＴは“８”になり（図４（ｅ））、バリッドビットメモリ２２のアドレスが“１”になる（図４（ｌ））。バリッドビットメモリ２２のアドレス“１”に“無効”を示すデータ“０”が書き込まれ、キャッシュメモリ１２のアドレス“８”にスキャンチェーンのＣＨ８のデータが書き込まれる（図４（ｉ））。このように、クロック毎にキャッシュメモリ１２のアドレスＣＡＤが更新され、スキャンチェーン３００〜３３１のデータが順にキャッシュメモリ１２に格納されていく。
【００３６】
クロックｔ８においてデータＣＨ２５４がキャッシュメモリ１２に書き込まれ、クロックｔ９においてスキャンチェーン３００〜３３１の最後のデータ、即ちスキャンフリップフロップＦ０−２５５〜Ｆ３１−２５５に格納されていたデータＣＨ２５５がキャッシュメモリ１２に書き込まれる。全ての内部状態を示すデータがキャッシュメモリ１２に退避されたので、クロックｔ１０において、保護用スキャンイネーブル信号ＰＳＥがインアクティブになり、キャッシュメモリ１２及びバリッドビットメモリ２２のチップセレクトＣＣＳ及びＶＣＳがインアクティブになる（図４（ｄ）（ｆ）（ｊ））。
【００３７】
このように、スキャンフリップフロップＦ０−０〜２５５、…、Ｆ３１−０〜２５５に格納されていた内部状態を示すデータは、キャッシュメモリ１２に全て退避され、保持されることになる。キャッシュメモリ１２とバリッドビットメモリ２２との電源供給を継続することにより、ＣＰＵの電源供給を停止してもＣＰＵの内部状態は維持されることになる。
【００３８】
次に、図５を参照して、キャッシュメモリ１２に格納されたＣＰＵの内部状態データを元のスキャンフリップフロップに再設定する回復動作を説明する。図５（ａ）は、クロックＣＬＫを示し、各周期に符号が付される。回復動作は、このクロックＣＬＫに同期しているため、この符号を用いてタイミングの説明がなされる。
【００３９】
外部から回復動作の指示を示す回復モード信号ＲＭＤが入力されると（図５（ｂ））、回復動作が開始され、データ保護状態フラグＰＦＬがアクティブになる（図５（ｃ））。データ保護状態フラグＰＦＬは、以降、回復動作が終了するまでアクティブ状態を継続し、選択回路８１〜８３を回復動作側に切り替えた状態にする。キャッシュメモリ１２から読み出されるデータが、アドレス供給から１クロック遅延して出力されるため、保護用スキャンイネーブル信号ＰＳＥは、データ保護状態フラグＰＦＬに対して１クロック遅延したクロックｔ２においてアクティブになる。保護用スキャンイネーブル信号ＰＳＥは、キャッシュメモリ１２から全ての内部状態を示すデータが出力されて元のスキャンチェーン３００〜３３１に再設定されるクロックｔ１０まで、スキャンチェーン３００〜３３１がシフト動作するようにアクティブ状態を継続する（図５（ｄ））。
【００４０】
カウント部５２のカウンタは、データ保護状態フラグＰＦＬがアクティブになるとともにカウント開始し、クロックｔ１では初期値“０”を示す。このカウンタは、クロックＣＬＫの立ち上がりに同期してカウントアップし、スキャンチェーン３００〜３３１の長さを示す“２５５”までカウントする（図５（ｅ））。カウント値ＣＮＴは、キャッシュメモリ１２にアドレスＣＡＤとして与えられ、アドレスＣＡＤは、クロックＣＬＫの立ち上がりに同期して歩進される（図５（ｈ））。カウント値ＣＮＴの上位５ビットがバリッドビットメモリ２２にアドレス信号ＶＡＤとして与えられるが、回復動作時、バリッドビットメモリ２２はアクセスされないため、アドレス信号ＶＡＤは使用されない（図５（ｌ））。
【００４１】
キャッシュメモリ１２のライトイネーブル信号ＣＷＥは読み出し動作を指示する（図５（ｇ））。従って、キャッシュメモリ１２は、クロックｔ１において指示されたアドレス“０”のデータＣＨ０を、クロックｔ２において出力信号ＣＤＯに出力し、スキャンチェーン３００〜３３１に供給する（図５（ｉ））。スキャンチェーン３３０〜３３１は、クロックＣＬＫの立ち上がりに同期してスキャンフリップフロップＦ０−２５５〜Ｆ３１−２５５からスキャンフリップフロップＦ０−０〜Ｆ３１−０に向けてシフトする。データＣＨ０は、スキャンフリップフロップＦ０−２５５〜Ｆ３１−２５５に入力され、クロックｔ３にスキャンフリップフロップＦ０−２５４〜Ｆ３１−２５４に移動する。内部状態データは、クロック毎にキャッシュメモリ１２から読み出されてスキャンフリップフロップＦ０−２５５〜Ｆ３１−２５５に入力され、スキャンチェーン３００〜３３１の中を移動していく。
【００４２】
クロックｔ９において、カウント値ＣＮＴは“２５５”を示し（図５（ｅ））、キャッシュメモリ１２のアドレスＣＡＤは、退避データを格納した最後のアドレス“２５５”になる（図５（ｈ））。このアドレスに対応するデータＣＨ２５５は、クロックｔ１０においてキャッシュメモリ１２から出力される（図５（ｉ））。スキャンチェーン３００〜３３１は、最後のシフトを行い、これによってスキャンフリップフロップＦ０−２５５〜Ｆ３１−２５５にデータＣＨ２５５が再設定されて、回復動作が終了する。ここでは、内部状態データが退避されるキャッシュメモリ１２のアドレスを“０”から“２５５”としたが、カウンタの初期値を設定することにより、任意のアドレスから開始することができる。
【００４３】
このように、ＣＰＵの内部状態を示すデータは、キャッシュメモリ１２に退避され、元のスキャンフリップフロップに再設定される。従って、ＣＰＵが待機状態となって、内部状態退避後にＣＰＵ部分の電源供給が停止されても、動作再開時には、高速に動作復帰が行われる。また、キャッシュメモリ１２のうち、内部状態データが書き込まれなかった部分は、退避以前の状態が保持されているため、復帰後の動作も待機前と同程度であることが期待できる。キャッシュメモリ１２を使用するため、内部状態データを保持するメモリを別に備える必要もない。
【００４４】
（第２の実施の形態）
図を参照して本発明の第２の実施の形態が説明される。図６は、第２の実施の形態を説明するために半導体集積回路装置に内蔵されるスキャンチェーンとキャッシュメモリ及びバリッドビットメモリとを模式的に示した図である。半導体集積回路装置は、キャッシュメモリ１０と、キャッシュメモリ１０に記憶されるデータの有効性を示すバリッドビットを格納するバリッドビットメモリ２０と、半導体集積回路装置の内部状態データを保持するスキャンフリップフロップ群とを備える。キャッシュメモリ１０は、（Ｎ＋１）ワード×（Ｌ＋１）ビット／ワードのメモリである。キャッシュメモリ１０の各ワードに格納されるデータの有効性を示すバリッドビットは、バリッドビットメモリ２０に格納される。ここでは、バリッドビットは、キャッシュメモリ１０の１ワードに対して１ビットを割り当てられる。従って、バリッドビットメモリ２０は、（Ｎ＋１）ビットの情報を格納する。
【００４５】
半導体集積回路装置の内部状態を示すデータは、スキャンフリップフロップに保持されている。スキャンフリップフロップは、内部状態データの退避時にスキャンチェーン３０、３１、…、３Ｌを形成し、スキャンチェーン３０、３１、…、３Ｌを介して保持する内部状態データをそれぞれシリアルに出力する。また、回復時において、スキャンフリップフロップは、スキャンチェーン３０、３１、…、３Ｌを介して退避された内部状態データを再設定する。スキャンチェーン３０、３１、…、３Ｌはシリアル入出力であるから、同期するクロックに従って順に内部状態データの入出力を行う。従って、出力時は、出力ノードに接続されるスキャンフリップフロップ群４０（格納されるデータをＣＨ０とする）からスキャンフリップフロップ群４１（ＣＨ１）、スキャンフリップフロップ群４２（ＣＨ２）の順にスキャンフリップフロップ群４Ｍ（ＣＨＭ）まで（Ｌ＋１）ビットのデータが並列に並んで出力される。
【００４６】
当初、バリッドビットメモリ２０は、バリッドビットメモリの内容２０−３に示されるように、アドレス１、…、ｘ−１、ｘ、…、ｎ、…、Ｎのデータが“有効（＝１）”であることを示し、アドレス０、２、３、…のデータが“無効（＝０）”であることを示している。第２の実施の形態では、このうち、キャッシュメモリ１０の内容が“無効”である無効データ領域に内部状態データを格納する。従って、キャッシュメモリのアドレス０、２、３、…に内部状態データを格納することになる。全ての内部状態データがこのアドレス０、２、３、…の空き領域に格納できれば良いが、空き領域だけでは不足する場合がある。キャッシュメモリの空き領域が少ない場合、不足分は、内容が“有効”である所定の領域に内部状態データを格納し、その領域のバリッドビットを“無効”にすることにより補う。
【００４７】
図６では、アドレス（ｘ−１）までの無効データ領域では内部状態データを格納しきれず、アドレスｘからアドレスｎまでの領域に残りの内部状態データを格納し、バリッドビットを“無効（＝０）”に書き換える。従って、バリッドビットメモリ２０は、メモリの内容２０−４に示すように、アドレスｘ〜ｎまで“０”が格納され、これに関連付けられるキャッシュメモリ１０のアドレスｘ〜ｎに内部状態データＰ０ＣＨｍ−ＰＬＣＨｍから内部状態データＰ０ＣＨＭ−ＰＬＣＨＭが格納される。また、バリッドビットが１であるアドレス１にデータＤ０１、Ｄ１１、…、ＤＬ１、アドレスｘ−１にデータＤ０ｘ−１、Ｄ１ｘ−１、…、ＤＬｘ−１、アドレスＮにデータＤ０Ｎ、Ｄ１Ｎ、…、ＤＬＮが変更されずに格納されている。
【００４８】
内部状態データは、バリッドビットが“無効”を示しているキャッシュメモリの領域に格納されたことになる。従って、回復する場合、バリッドビットが“無効”を示すキャッシュメモリ１０のデータを順にスキャンチェーン３０、３１、…、３Ｌに供給し、スキャンチェーン内をシフトさせることにより元のスキャンフリップフロップに再設定することができる。即ち、キャッシュメモリ１０から読み出された内部状態データは、スキャンフリップフロップ群４Ｍ側から供給されてスキャンチェーン内をシフトし、（Ｍ＋１）個のデータが供給されると、最初に読み出されたデータＰ０ＣＨ０〜ＰＬＣＨ０がスキャンフリップフロップ群４０に再設定されることになる。
【００４９】
図７は、第２の実施の形態に係る半導体集積回路装置の構成を示すブロック図である。図２に示される半導体集積回路装置とほぼ同じ構成であるが、バリッドビットを判定するためにバリッドビットメモリ２２の出力が制御回路部５１に供給され、制御回路部５１は、バリッドビットの判定、内部状態データの個数のカウントなどが追加されている。
【００５０】
半導体集積回路装置は、内部論理回路部９０、キャッシュメモリ１２、バリッドビットメモリ２２、選択回路８１、８２、８３、論理和回路８７、制御回路部５１、スキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５を具備する。内部論理回路部９０とスキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５とは、通常動作時において、例えばＣＰＵとして動作する回路である。以下、この内部論理回路部９０とスキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５とによる回路をＣＰＵとして説明する。回路動作の正常性をテストするスキャンテスト時、スキャンフリップフロップＦ０−０〜２５５、…、３１−０〜２５５は、スキャンチェーン３００〜３３１を形成する。入力ポートの各々からシリアルのテストデータであるスキャン入力信号ＳＩ−０〜３１が入力される。出力ポートからテスト結果であるシリアルのスキャン出力信号ＳＯ−０〜３１が出力される。
【００５１】
本発明では、このスキャンチェーンを利用して、半導体集積回路装置の内部状態を示すデータを退避及び回復される。そのため、選択回路８１、８２、８３は、通常のデータ及びテストデータと、半導体集積回路装置の内部状態データとを切り替える。選択回路８１は、バリッドビットメモリ２２に入力されるアドレス信号ＶＡＤ、入力データ信号ＶＤＩ、チップセレクトおよびライトイネーブルなどメモリ制御用信号ＶＣＳ／ＶＷＥを切り替える。選択回路８２は、キャッシュメモリ１２に入力されるアドレス信号ＣＡＤ、入力データ信号ＣＤＩ、チップセレクトおよびライトイネーブルなどメモリ制御用信号ＣＣＳ／ＣＷＥを切り替える。選択回路８３は、スキャンチェーン３００〜３３１に入力されるシリアル信号を切り替える。スキャンチェーン３００〜３３１は、外部から入力されるスキャンテストデータ、或いは、キャッシュメモリ１２に格納されている内部状態データを取り込む。そのため、選択回路８３は、スキャン入力信号ＳＩ−０〜３１とキャッシュメモリ１２の出力信号ＣＤＯとを切り替えてスキャンチェーン３００〜３３１のシリアル入力として供給する。
【００５２】
論理和回路８７は、スキャンテスト時のスキャンチェーンのシフト動作を指示する外部のスキャンイネーブル信号ＳＫＥと、制御回路部５１が生成する保護用スキャンイネーブル信号ＰＳＥとの論理和をとって各スキャンフリップフロップに供給し、各スキャンフリップフロップをスキャンチェーン動作（シフト動作）させる。
【００５３】
キャッシュメモリ１２は、内部論理回路部９０及びスキャンフリップフロップＦ０−０〜２５５、…、Ｆ３１−０〜２５５によるＣＰＵからアクセスされる。キャッシュメモリ１２は、外部のメインメモリへのアクセスを削減して処理を高速化するために設けられた高速のメモリである。その内容が有効であるか無効であるかを示すバリッドビットが、バリッドビットメモリ２２に格納されている。キャッシュメモリ１２とバリッドビットメモリ２２との対応関係は、第１の実施の形態において説明されたように、図３に示され、ここでは、説明は省略される。
【００５４】
キャッシュメモリ１２及びバリッドビットメモリ２２は、他の回路とは別の電源系Ｖｍにより電源が供給される。従って、ＣＰＵの内部状態を示すデータがスキャンチェーン３００〜３３１を介してキャッシュメモリ１２に退避された後、電源系Ｖｍのみ供給し、他の回路部の電源供給を停止することにより、半導体集積回路装置の消費電力を低減することが可能となる。
【００５５】
制御回路部５１は、状態フラグ生成部５４、カウント部５３、スキャンイネーブル生成部５７、バリッドデータ生成部５６、メモリ制御信号生成部５８を備える。退避動作を指示する退避モード信号ＳＭＤと、回復動作を指示する回復モード信号ＲＭＤが制御回路部５１に入力され、制御回路部５１は、それぞれの動作モードに応じた制御信号を各部に供給する。クロックＣＬＫは、詳細を図示されないが各部に供給され、制御回路５０は、クロックＣＬＫに同期して動作する。
【００５６】
状態フラグ生成部５４は、退避モード信号ＳＭＤ及び回復モード信号ＲＭＤに基づいて、データ保護状態フラグＰＦＬを生成する。データ保護状態フラグＰＦＬは、選択回路８１、８２、８３に供給され、キャッシュメモリ１２、バリッドビットメモリ２２、スキャンチェーン３００〜３３１に供給される各信号を切り替える。
【００５７】
カウント部５３は、クロックＣＬＫの周期数を計数する第１カウンタと、退避・回復した内部状態データの個数を計数する第２カウンタと、バリッドビットが有効を示すキャッシュメモリ１２に書き込み始めるアドレスを計数する第３カウンタとを備える。キャッシュメモリ１２が４０９６ワードのメモリの場合、１２ビットでアドレスを示すことができる。従って、第１カウンタは、１２ビットのカウンタであり、このうち上位９ビットがバリッドビットメモリ２２のアドレスを示す。バリッドビットメモリ２２からバリッドビットデータを読み出し、その内容を判定してからキャッシュメモリ１２に書き込み或いは読み出し動作が行われるため、キャッシュメモリ１２のアドレスは、第１カウンタのカウント値を２クロック遅延させてキャッシュメモリ１２に供給する。従って、バリッドビットメモリ２２のアドレスの更新タイミングは、キャッシュメモリ１２のアドレスの更新タイミングより２クロック早い。この第１カウンタのカウント値ＣＮＴが制御回路部５１のベースとなる。
【００５８】
第２カウンタは、内部状態データがキャッシュメモリ１２に書き込まれたとき、或いは、キャッシュメモリ１２から内部状態データが読み出されたときカウントアップされ、カウント値ＣＣＮＴは、スキャンチェーン３００〜３３１のシフト回数を示す。このカウント値により内部状態データの退避・回復動作の終了が判定される。
【００５９】
第３カウンタは、キャッシュメモリ１２の所定のアドレスまでに内部状態データを全て格納するために、バリッドビットが“有効”を示す領域に内部状態データを書き込まなければならない最初のアドレスを示すカウンタである。書き込むか否かの判定は、バリッドビット毎に行われ、カウント値ＭＣＮＴは、バリッドビットメモリ２２のアドレスを示す。第３カウンタの初期値は、所定のアドレスからスキャンチェーン３００〜３３１の長さを差し引いた値が設定される。バリッドビットを判定してキャッシュメモリ１２に内部データが書き込まれることが決定される毎に第３カウンタはカウントアップされる。例えば、キャッシュメモリ１２の１０２３番地以下に、２５６ワードの長さを有するスキャンチェーンのデータを格納するためには、７６８番地から１０２３番地までの領域を確保しておけばよい。バリッドビットメモリ２２のアドレスは、キャッシュメモリ１２の８ワード単位であるから、７６８／８＝９６が第３カウンタの初期値になる。第３カウンタの値ＭＣＮＴが、バリッドビットメモリ２２のアドレスと一致するとき、その位置に対応するキャッシュメモリ１２には内部状態データが格納される。キャッシュメモリ１２の７６８番地までの領域においてバリッドビットが“無効”を示し、内部状態データが書き込むことができた場合には、第３カウンタはカウントアップされ、確保された領域は狭まる。従って、バリッドビットが“無効”を示す無効データ領域が１０２３番地までに２５６ワードあれば、バリッドビットが“有効”を示す有効データ領域に内部状態データが書き込まれることはない。
【００６０】
スキャンイネーブル生成部５７は、スキャンチェーン３００〜３３１のシフト動作を有効にする保護用スキャンイネーブル信号ＰＳＥを生成する。スキャンイネーブル生成部５７にはバリッドビットメモリ２２からバリッドビットデータＶＤＯが供給される。保護用スキャンイネーブル信号ＰＳＥは、スキャンフリップフロップＦ０−０〜２５５、…、Ｆ３１−０〜２５５に供給され、アクティブのとき、スキャンチェーン３００〜３３１がクロックＣＬＫに同期してシフト動作する。内部状態データは、キャッシュメモリ１２のバリッドビットが“無効”を示す無効データ領域に格納されるため、その時だけスキャンチェーン３００〜３３１はシフト動作を行う。
【００６１】
従って、スキャンイネーブル生成部５７は、退避動作時、バリッドビットメモリ２２から読み出されたバリッドビットの有効／無効を判定する。バリッドビットが“無効”を示す時に、保護用スキャンイネーブル信号ＰＳＥをアクティブにしてスキャンチェーン３００〜３３１をシフト動作させる。回復動作時、スキャンイネーブル生成部５７は、バリッドビットメモリ２２から読み出されたバリッドビットの有効／無効を判定し、バリッドビットが“無効”を示す時に、保護用スキャンイネーブル信号ＰＳＥをアクティブにしてスキャンチェーン３００〜３３１をシフト動作させる。バリッドビットが“有効”を示している場合、キャッシュメモリから読み出したデータは、内部状態データではないため、スキャンチェーン３００〜３３１に入力されない。従って、回復動作時の保護用スキャンイネーブル信号ＰＳＥは、バリッドビットの読み出し開始から２クロック遅延して、アクティブ或いはインアクティブを示す。全てのデータが退避或いは回復すると、保護用スキャンイネーブル信号ＰＳＥはインアクティブになって不要なシフトを防止する。
【００６２】
バリッドデータ生成部５６は、バリッドビットメモリ２２に書き込むバリッドデータ信号ＸＶＤＩを生成する。本実施の形態では、バリッドデータ生成部５６は、キャッシュメモリ１２のデータが“無効”であることを示す“０”データのみ供給することになる。バリッドデータ信号ＸＶＤＩは、選択回路８１を介してバリッドビットメモリ入力データ信号ＶＤＩになる。従って、内部状態データの退避・回復動作時、バリッドビットメモリ入力データ信号ＶＤＩは、バリッドデータ生成部５６が生成するバリッドデータ信号ＸＶＤＩになる。
【００６３】
メモリ制御信号生成部５８は、キャッシュメモリ１２、バリッドビットメモリ２２が選択されたことを示すチップセレクト信号ＸＣＣＳ、ＸＶＣＳ、それぞれのメモリのデータの書き込み／読み出し状態を指示するライトイネーブル信号ＸＣＷＥ、ＸＶＷＥを生成する。チップセレクト信号ＸＣＣＳとライトイネーブル信号ＸＣＷＥは、選択回路８２を介してキャッシュメモリ１２にチップセレクト信号ＣＣＳとライトイネーブル信号ＣＷＥとして供給される。チップセレクト信号ＸＶＣＳとライトイネーブル信号ＸＶＷＥは、選択回路８１を介してバリッドビットメモリ２２にチップセレクト信号ＶＣＳとライトイネーブル信号ＶＷＥとして供給される。従って、内部状態データの退避・回復動作時、各メモリに入力されるチップセレクト信号ＣＣＳ、ＶＣＳ、ライトイネーブル信号ＣＷＥ、ＶＷＥは、メモリ制御信号生成部５８が生成するチップセレクト信号ＸＣＣＳ、ＸＶＣＳ、ライトイネーブル信号ＸＣＷＥ、ＸＶＷＥとなる。
【００６４】
退避時、スキャンチェーン３００〜３３１のデータは、バリッドビットの状態に応じてキャッシュメモリ１２の指定領域に書き込まれるため、ライトイネーブル信号ＣＷＥ、ＶＷＥは、適宜読み出し状態（ｒｅａｄ）、書き込み状態（ｗｒｉｔｅ）を示す。キャッシュメモリ１２のチップセレクト信号ＣＣＳは、退避動作においてデータ書き込み時のみアクティブになり、回復動作ではデータ読み出し時のみアクティブになるように制御される。バリッドビットメモリ２２のチップセレクト信号ＶＣＳは、データの読み出し及び書き込みの時にアクティブとなるように制御される。
【００６５】
次に、図８、図９を参照して、内部状態を示すデータをキャッシュメモリ２２に格納する退避動作を説明する。図８（ａ）、図９（ａ）は、クロックＣＬＫを示し、各周期に符号が付されている。回路は、このクロックＣＬＫに同期して動作するため、この符号を用いてタイミングの説明をする。
【００６６】
外部から入力される退避動作の指示を示す退避モード信号ＳＭＤがアクティブになると（図８（ｂ））、退避動作が開始され、データ保護状態フラグＰＦＬがアクティブになる。データ保護状態フラグＰＦＬは、以降、退避動作が終了するまでアクティブ状態を継続し、選択回路８１〜８３を退避動作側に切り替えた状態にする（図８（ｃ））。
【００６７】
退避動作が開始されると、カウント部５３の第１カウンタは、計数を開始する。クロックｔ１において、第１カウンタのカウント値ＣＮＴは、初期値である“０”を示し（図８（ｅ））、第３カウンタのカウント値ＭＣＮＴは、初期値“９６”を示す（図８（ｆ））。カウント値ＭＣＮＴは、前述のように、キャッシュメモリ１２の１０２４番地未満の領域に全ての内部状態データを格納するために“９６”に設定される。クロックｔ１では、バリッドビットメモリ２２からバリッドビットデータが読み出される。そのため、バリッドビットメモリ２２のアドレス信号ＶＡＤは、カウント値ＣＮＴの上位９ビットが示す“０”を示し（図８（ｍ））、ライトイネーブル信号ＶＷＥは読み出し状態“ｒｅａｄ”を示し（図８（ｉ））、チップセレクト信号ＶＣＳがアクティブになる（図８（ｋ））。アドレスＶＡＤ＝０に格納されるバリッドビットがクロックｔ２において読み出される（図８（ｏ））。バリッドビットが“０（＝無効）”であるから、キャッシュメモリ１２のアドレスＣＡＤが“０”〜“７”の８ワードの領域は、内部状態データを格納可能であると判断される。従って、クロックｔ３以降のキャッシュメモリ１２への内部状態データ書き込みの準備がなされる。
【００６８】
クロックｔ３では、キャッシュメモリ１２に内部状態データの書き込みが開始される。キャッシュメモリ１２のチップセレクト信号ＣＳＳがアクティブになり（図８（ｇ））、ライトイネーブル信号ＣＷＥが書き込み状態“ｗｒｉｔｅ”を示す（図８（ｈ））。キャッシュメモリ１２のアドレスＣＡＤは、カウント値ＣＮＴが２クロック遅延して出力され、クロックｔ３において“０”を示す（図８（ｉ））。保護用スキャンイネーブル信号ＰＳＥがアクティブになり（図８（ｄ））、キャッシュメモリ１２にスキャンチェーン３００〜３３１の最初のデータＣＨ０が入力され（図８（ｊ））、書き込まれる。キャッシュメモリ１２に内部状態データが書き込まれるため、カウント部５３の第３カウンタがカウントアップされ、カウント値ＭＣＮＴが“９７”になる（図８（ｆ））。
【００６９】
クロックｔ４では、カウント値ＣＮＴが“３”、キャッシュメモリ１２のアドレスＣＡＤが“１”になる（図８（ｅ）（ｉ））。保護用スキャンイネーブル信号ＰＳＥがアクティブであるからスキャンチェーン３００〜３３１がシフト動作をしてキャッシュメモリ１２に内部状態データＣＨ１が入力され、書き込まれる（図８（ｊ））。キャッシュメモリ１２に対して、この動作がクロックｔ８まで繰り返される。
【００７０】
キャッシュメモリ１２への内部状態データ格納が行われたため、クロックｔ６において、バリッドビットメモリ２２にバリッドビット“無効”の書き込みが行われる。バリッドビットメモリ２２のチップセレクト信号ＶＣＳはアクティブになり（図８（ｋ））、ライトイネーブル信号ＶＷＥは“ｗｒｉｔｅ”を示す（図８（ｌ））。バリッドビットメモリ２２にバリッドビットデータＶＤＩとして“０”が入力される（図８（ｎ））。クロックｔ６までバリッドビットメモリ２２のアドレスＶＡＤは“０”である（図８（ｍ））。この動作は、バリッドビットメモリ２２の書き込み動作を統一するために行われ、バリッドビットが“０”の時には、省略されてもよい。
【００７１】
クロックｔ７になると、カウント値ＣＮＴは“８”にカウントアップされ（図８（ｅ））、バリッドビットメモリ２２のアドレスＶＡＤは“１”になる（図８（ｍ））。チップセレクト信号ＶＣＳはアクティブのままであり（図８（ｋ））、ライトイネーブル信号ＶＷＥは“ｒｅａｄ”になる（図８（ｌ））。
【００７２】
クロックｔ８において、バリッドビットメモリ２２からバリッドビットが読み出される（図８（ｏ））。アドレスＶＡＤ＝１のバリッドビットは、“１（＝有効）”であるから、対応するキャッシュメモリ１２にデータを格納するか否かは、アドレスＶＡＤとカウント値ＭＣＮＴの比較結果により決定される。このとき、アドレスＶＡＤ＝１（図８（ｍ））、カウント値ＭＣＮＴ＝９７（図８（ｆ））であるから、キャッシュメモリ１２に内部状態データの格納は行われない。従って、クロックｔ９において、キャッシュメモリ１２のライトイネーブル信号ＣＷＥは、“ｒｅａｄ”になり（図８（ｈ））、チップセレクト信号ＣＣＳはインアクティブになる。また、スキャンチェーン３００〜３３１のシフトを止めるため、保護用スキャンイネーブル信号ＰＳＥは、インアクティブになる（図８（ｄ））。キャッシュメモリ１２にデータの書き込みがない場合は、この状態で、次のバリッドビット判定までカウント値ＣＮＴが更新される。
【００７３】
クロックｔ１１において、バリッドビットが読み出され、判定される。クロックｔ１１では、カウント値ＣＮＴは、“１６”を示し（図８（ｅ））、バリッドビットメモリ２２のアドレス信号ＶＡＤは、“２”を示す（図８（ｍ））。チップセレクト信号ＶＣＳがアクティブになり（図８（ｋ））、クロックｔ１２においてバリッドビットメモリ２２から“０”が出力される（図８（ｏ））。キャッシュメモリ１２のアドレスＣＡＤが“１６”から“２３”までの８ワードに内部状態データが格納できるため、クロックｔ１３において、キャッシュメモリ１２のチップセレクト信号ＣＣＳがアクティブに（図８（ｇ））、ライトイネーブル信号ＣＷＥが“ｗｒｉｔｅ”状態になる（図８（ｈ））。キャッシュメモリ１２には、スキャンチェーンのデータＣＨ８が書き込まれる（図８（ｊ））。同時に、カウント値ＭＣＮＴが歩進され、“９８”を示す（図８（ｆ））。
【００７４】
このように、バリッドビットが“０”であるキャッシュメモリ１２の領域に内部状態データが順次格納されていく。内部状態データが書き込まれる毎にカウント値ＭＣＮＴが歩進されるが、バリッドビットが“１”の場合には、カウント値ＭＣＮＴは歩進されないため、カウント値ＭＣＮＴとバリッドビットメモリ２２のアドレスＶＡＤとの差が徐々に少なくなる。図９に、この差がほぼ無くなった時点からの動作が示される。
【００７５】
クロックｔ２１において、カウント値ＣＮＴは“８８８”を示し（図９（ｅ））、バリッドビットメモリ２２のアドレス信号ＶＡＤは“１１１”を示してバリッドビットメモリ２２からバリッドビットが読み出される（図９（ｍ））。カウント値ＭＣＮＴは“１１２”を示している（図９（ｆ））。クロックｔ２２において、バリッドビットデータ“１”が出力され、キャッシュメモリ１２のアドレス８８８番地から８９５番地まではデータが保持される。
【００７６】
クロックｔ２５において、次のバリッドビットが読み出される。クロックｔ２５では、カウント値ＣＮＴは“８９６”を示し（図９（ｅ））、バリッドビットメモリ２２のアドレス信号ＶＡＤは“１１２”を示している（図９（ｍ））。クロックｔ２６において、バリッドビットメモリ２２から出力されたバリッドビットは、“１”を示すが（図９（ｏ））、アドレスＶＡＤ（１１２）とカウント値ＭＣＮＴ（１１２）が一致するため、キャッシュメモリ１２に内部状態データが書き込まなければならないと判断される。従って、クロックｔ２７からｔ３１の８クロックにわたってキャッシュメモリ１２に内部状態データの書き込みが行われる。これに伴って、カウント値ＭＣＮＴは、歩進されて“１１３”を示す。書き込み動作は上述と同じようになされるが、クロックｔ３０で行われるバリッドビットメモリ２２へのバリッドビットデータ“０”書き込みは（図９（ｌ）（ｎ））、必ず実行されなければならない。これによってバリッドビットが“１”から“０”に変更され、キャッシュメモリ１２の元の内容が破棄されて内部状態データが書き込まれたことが示されることになる。
【００７７】
クロックｔ２５以降では、バリッドビットメモリ２２のアドレスＶＡＤは、カウント値ＭＣＮＴと同じ値を示すようになるため、スキャンチェーン３００〜３３１のデータが全てキャッシュメモリ１２に退避されるまでバリッドビットの状態に関係なくキャッシュメモリ１２への書き込みが行われる。クロックｔ３５において、スキャンチェーン３００〜３３１の最後のデータＣＨ２５５がキャッシュメモリ１２に書き込まれると、保護用スキャンイネーブル信号ＰＳＥは、インアクティブになり（図９（ｄ））、一連の退避動作が終了する。
【００７８】
このように、キャッシュメモリ１２の所定のアドレスまでの領域に内部状態データを書き込むことができる。所定のアドレスをキャッシュメモリ１２の最終アドレスとすると、キャッシュメモリ１２の全領域の無効データ領域が内部状態データの書き込み対象領域となる。書き込み対象領域が不足する場合、最終アドレスに近い領域が書き込み対象領域になる。また、本実施の形態で示されたように、ある領域のみキャッシュメモリ１２の内容を破棄し、それ以外の領域の内容を保持するようにして内部状態データを退避することもできる。
【００７９】
次に、図１０、図１１を参照して、キャッシュメモリ１２に退避されたＣＰＵの内部状態データを元のスキャンフリップフロップに再設定する回復動作を説明する。図１０及び図１１の（ａ）は、クロックＣＬＫを示し、各周期に符号が付される。回復動作は、このクロックＣＬＫに同期しているため、この符号を用いてタイミングの説明がなされる。
【００８０】
外部から回復動作の指示を示す回復モード信号ＲＭＤが入力されると（図１０（ｂ））、回復動作が開始され、データ保護状態フラグＰＦＬがアクティブになる（図１０（ｃ））。データ保護状態フラグＰＦＬは、以降、回復動作が終了するまでアクティブ状態を継続し、選択回路８１〜８３を回復動作側に切り替えた状態にする。
【００８１】
回復動作開始とともにカウント部５３の第１カウンタは、計数を開始する。クロックｔ１において、第１カウンタのカウント値ＣＮＴは、初期値である“０”を示し（図１０（ｅ））、第２カウンタのカウント値ＣＣＮＴは、初期値“０”を示す（図１０（ｆ））。カウント値ＣＮＴは、各メモリのアドレスの生成に使用され、上位９ビットがバリッドビットメモリ２２のアドレスＶＡＤに対応し、２クロック遅延させたカウント値ＣＮＴがキャッシュメモリ１２のアドレスＣＡＤに対応する。カウント値ＣＣＮＴは、読み出したデータ数のカウントに使用される。
【００８２】
クロックｔ１において、まずバリッドビットメモリ２２の読み出しが開始される。バリッドビットメモリ２２のチップセレクト信号ＶＣＳがアクティブになり（図１０（ｋ））、ライトイネーブル信号ＶＷＥが読み出し状態“ｒｅａｄ”を示す（図１０（ｌ））。アドレスＶＡＤ＝“０”のバリッドビットデータは、クロックｔ２に出力される。
【００８３】
クロックｔ２において、バリッドビットメモリ２２から出力されたバリッドビットに基づいて、キャッシュメモリ１２に格納される内部状態データの読み出しが判定される。ここでは、バリッドビットデータ“０”が出力され（図１０（ｎ））、関連付けられる領域には内部状態データが格納されていると判定される。従って、クロックｔ３からキャッシュメモリ１２の読み出しと、スキャンチェーン３００〜３３１のシフト動作が開始される。
【００８４】
クロックｔ３において、キャッシュメモリ１２のチップセレクト信号ＣＳＳがアクティブになり（図１０（ｇ））、ライトイネーブル信号ＣＷＥは読み出し状態 “ｒｅａｄ” を示す。アドレスＣＡＤは“０”を示し（図１０（ｉ））、そのデータは、クロックｔ４に出力される。従って、保護用スキャンイネーブル信号ＰＳＥは、クロックｔ４からアクティブになり、８ワード分のデータをシフトした後のクロックｔ９までアクティブ状態を継続する。
【００８５】
クロックｔ４において、内部状態データの最初のデータＣＨ０がキャッシュメモリ１２から出力され（図１０（ｊ））、スキャンチェーン３００〜３３１に供給される。内部状態データの読み出し毎にカウント部５３の第２カウントが歩進され、カウント値ＣＣＮＴは“１”になる。このように、バリッドビットに対応する８ワード分の内部状態データが順次キャッシュメモリ１２から読み出され、スキャンチェーン内をシフトされる。
【００８６】
クロックｔ７において、バリッドビットメモリ２２のアドレスＶＡＤが“１”、チップセレクトＶＣＳがアクティブになり（図１０（ｍ）（ｋ））、次のバリッドビットが読み出される。クロックｔ８において、バリッドビットメモリ２２からバリッドビットデータ“１”が出力され（図１０（ｎ））、対応するキャッシュメモリ１２の領域には内部状態データが格納されていないと判定される。従って、クロックｔ９においてキャッシュメモリ１２のチップセレクト信号ＣＣＳはインアクティブになり（図１０（ｇ））、クロックｔ１０において、保護用スキャンイネーブル信号ＰＳＥがインアクティブになる（図１０（ｄ））。
【００８７】
このように、回復動作は、バリッドビットメモリ２２からバリッドビットデータを読み出し、“無効”を示すバリッドビットに関連付けられるキャッシュメモリ２２の領域から内部状態データを読み出し、スキャンチェーン３００〜３３１に供給する。スキャンチェーン３００〜３３１は、シフト動作を行い、データを移動させる。回復動作は、スキャンチェーン３００〜３３１に内部状態データが全て再設定されるまで、これを繰り返す。
【００８８】
図１１に示されるように、バリッドビットメモリ２２のアドレスＶＡＤ“１１１”には、バリッドビットデータ“１”が格納されているため、キャッシュメモリ１２のアドレスＣＡＤ“８８８”から“８９５”までの８ワードの領域のデータは、読み飛ばされる（図１１（ｉ）（ｊ））。バリッドビットメモリ２２のアドレスＶＡＤ“１１２”以降は、前述のように、キャッシュメモリ１２のアドレスＣＡＤが“１０２３”までに内容状態データを格納するために、バリッドビットメモリ２２には“０”が格納されている（図１１（ｎ））。従って、クロックｔ２５において、バリッドビットメモリ２２のアドレスＶＡＤ“１１２”のデータが読み出された以降は、キャッシュメモリ１２のアドレスの順に内部状態データが読み出され、連続的にスキャンチェーン３００〜３３１に供給される。
【００８９】
クロックｔ３１にカウント値ＣＮＴが“１０２４”になり、バリッドビットメモリ２２のアドレスＶＡＤが“１２８”になる。このバリッドビットには、キャッシュメモリ１２のアドレスＣＡＤ“１０２４”から８ワードの領域が対応する。クロックｔ３２において、キャッシュメモリ１２のアドレスＣＡＤが“１０２３”を示し（図１１（ｉ））、クロックｔ３３において内部状態データＣＨ２５５がスキャンチェーン３００〜３３１に供給される（図１１（ｊ））。カウントＣＣＮＴは“２５６”になり（図１１（ｆ））、保護用スキャンイネーブル信号ＰＳＥはインアクティブになり、スキャンチェーン３００〜３３１のスキャン動作が停止する（図１１（ｄ））。
【００９０】
このようにして、キャッシュメモリ１２に退避された２５６ワードの内部状態データは、元のスキャンフリップフロップに再設定される。ここでは、キャッシュメモリ１２の読み出し状態をチップセレクト信号ＣＣＳにより制御したが、常時読み出し状態にしてスキャンチェーン３００〜３３１のシフトのみで制御することもできる。
【００９１】
（第３の実施の形態）
第２の実施の形態では、内部状態データを退避するとき、バリッドビットが“０”即ちキャッシュメモリ１２に格納されるデータが“無効”である無効データ領域が不足する場合に小さいアドレスの有効データ領域を“有効”のまま残す例が示された。第３の実施の形態では、無効データ領域が不足する場合に、小さいアドレスの有効データ領域から内部状態データが格納される例が示される。
【００９２】
第３の実施の形態に係る半導体集積回路装置の構成は、第２の実施の形態に係る半導体集積回路装置の構成とほぼ同じであるため、詳細な説明を省略する。本実施の形態のカウント部５３は、さらに第４カウンタを有する点が異なる。第４カウンタは、ダウンカウンタであり、不足する領域を計数し、そのカウント値をＤＣＮＴとする。ここでは、バリッドビット数で計数するため、キャッシュメモリのワード数はその８倍となる。第４カウンタは、初期値として、内部状態データ数を格納するキャッシュメモリ１２のワード数の８分の１（端数切り上げ）が設定される。ここでは、２５６ワードの内部状態データを格納するため、“３２”が初期値となる。
【００９３】
内部状態データの退避は、図１２に示されるように、内部状態データの退避に先立つ不足領域を計数する動作から開始される。退避モード信号ＳＭＤがアクティブになると（図１２（ｂ））、データ保護状態フラグＰＦＬがアクティブになる（図１２（ｃ））。データ保護状態フラグＰＦＬは、以降、回復動作が終了するまでアクティブ状態を継続し、選択回路８１〜８３を回復動作側に切り替えた状態にする。
【００９４】
バリッドビットメモリ２２に格納されるバリッドビットをカウントするため、第１カウンタは、下位３ビットは“０”のまま上位９ビットのみ動作し、“０”から“４０８８”までカウントする（図１２（ｅ））。従って、バリッドビットメモリ２２のアドレスＶＡＤは、クロック毎に上昇し、“０”から“５１１”まで変化する（図１２（ｍ））。チップセレクト信号ＶＣＳはアクティブに設定され（図１２（ｋ））、ライトイネーブル信号ＶＷＥは読み出し状態“ｒｅａｄ”を示している（図１２（ｌ））。バリッドビットメモリ２２は、クロックｔ２から格納するバリッドビットデータを順に出力する（図１２（ｏ））。バリッドビットメモリ２２の出力ＶＤＯが“０”であることを検出するたびに、カウント値ＤＣＮＴはカウントダウンされる（図１２（ｆ））。ここでは、アドレスＶＡＤが、“０”、“２”、…、“５０９”のバリッドビットが“無効”を示し（図１２（ｍ）（ｏ））、クロックｔ３、ｔ５、…、ｔ９においてカウント値ＤＣＮＴがカウントダウンされる。従って、クロックｔ１０において、カウント値ＤＣＮＴは“２０”になっている（図１２（ｆ））。これは、２０ワード分の無効データ領域が不足していることを示している。内部状態データを退避する場合、有効データ領域のうち２０ワード分は、内部状態データが上書きされて無効データ領域に変更される。
【００９５】
不足領域の計数が終了すると、図１３に示されるように、内部状態データの退避動作が開始される。各メモリの読み出し／書き込みのタイミングは、第２の実施の形態と同じであるが、不足分の内部状態データを有効データ領域に書き込む開始時期が異なる。
【００９６】
クロックｔ１１において、カウント値ＣＮＴが“０”を示し（図１３（ｅ））、チップセレクト信号ＶＣＳがアクティブになり（図１３（ｋ））、ライトイネーブル信号ＶＷＥが読み出し状態（ｒｅａｄ）を示す（図１３（ｌ））。バリッドビットメモリ２２は、クロックｔ１２において、アドレスＶＡＤ“０”のバリッドビットデータ“０”を出力する（図１３（ｏ））。
【００９７】
バリッドビットデータが“０”であるから、キャッシュメモリ１２に内部状態データが格納される。クロックｔ１３において、キャッシュメモリ１２のチップセレクト信号ＣＣＳがアクティブになり（図１３（ｇ））、ライトイネーブル信号ＣＷＥが書き込み状態（ｗｒｉｔｅ）を示す（図１３（ｈ））。スキャンチェーン３００〜３３１から出力される内部状態データＣＨ０がキャッシュメモリ１２のアドレスＣＡＤ“０”に書き込まれる（図１３（ｉ）（ｊ））。その後クロックｔ１８まで、キャッシュメモリ１２には、アドレスＣＡＤが“７”になるまで内部状態データが順に書き込まれる。クロックｔ１６において、バリッドビットメモリ２２に無効を示すデータ“０”が書き込まれることは、第２の実施の形態において説明されたように、キャッシュメモリ１２の書き込み動作を統一するためである。
【００９８】
クロックｔ１７において、バリッドビットメモリ２２のアドレスＶＡＤ“１”のデータが読み出される（図１３（ｌ）（ｍ））。バリッドビットメモリ２２の出力信号ＶＤＯは、クロックｔ１８において、有効データ領域であることを示す“１”になる。このとき、カウント値ＤＣＮＴは“２０”であるため（図１３（ｆ））、この有効データ領域にも内部状態データが書き込まれることになる。従って、クロック１９において、カウント値ＤＣＮＴは、カウントダウンされ、“１９”になる（図１３（ｆ））。同時に、キャッシュメモリ１２には、内部状態データＣＨ８がアドレスＣＡＤ“８”に格納される。
【００９９】
従って、カウント値ＤＣＮＴが“０”になるまで、有効データ領域にも内部状態データが書き込まれ、カウント値ＤＣＮＴがカウントダウンされる。即ち、カウント値ＤＣＮＴが“０”になるまで、連続してキャッシュメモリ１２に内部状態データが格納され、有効データ領域は無効データ領域に変更される。
【０１００】
図１４は、退避動作の終了間際を示す図である。カウント値ＤＣＮＴは、“０”になり、無効データ領域にのみ内部状態データが格納されている。クロックｔ３１において、カウント値ＣＮＴが“４０７２”を示し（図１４（ｅ））、バリッドビットメモリ２２のアドレスＶＡＤ“５０９”に格納されるバリッドビットが読み出される（図１４（ｋ）（ｌ）（ｍ））。バリッドビットメモリ２２の出力ＶＤＯは、“０”を示し（図１４（ｏ））、このバリッドビットに対応するキャッシュメモリ１２の領域に内部状態データが書き込まれる。クロックｔ３３からクロックｔ３８において、アドレスＣＡＤが“４０７２”から“４０８０”まで、内部状態データＣＨ２４８〜ＣＨ２５５が、キャッシュメモリ１２に書き込まれる（図１４（ｇ）（ｈ）（ｉ）（ｊ））。
【０１０１】
クロックｔ３６、ｔ４１においてアドレスＶＡＤ“５１０”、“５１１”のバリッドビットデータがそれぞれ読み出される（図１４（ｋ）（ｌ）（ｍ））。アドレスＶＡＤ“５１０”、“５１１”のバリッドビットデータは、“１”であり、カウント値ＤＣＮＴが“０”であるから、内部状態データのキャッシュメモリ１２への書き込みは行われない。
【０１０２】
クロックｔ４５において、キャッシュメモリ１２の最終アドレス“４０９５”が出力され（図１４（ｉ））、その後、データ保護状態フラグＰＦＬがインアクティブになって退避動作が終了する（図１４（ｃ））。なお、クロックｔ３８において、内部状態データＣＨ２５５がキャッシュメモリ１２に書き込まれている。従って、退避された内部状態データの数をカウントしていると、クロックｔ３８で退避動作を終了することも可能である。
【０１０３】
スキャンフリップフロップへの内部状態データの再設定は、第２の実施の形態と同様に、キャッシュメモリ１２の無効データ領域を順に読み出し、スキャンチェーン３００〜３３１に供給すればよい。
【０１０４】
このように、キャッシュメモリ１２の空き領域（無効データ領域）に内部状態データを格納し、空き領域が不足する場合に、キャッシュメモリ１２の先頭側の有効データ領域を無効データ領域に変更して内部状態データを格納することができる。無効データ領域に内部状態データを格納することにより、キャッシュメモリの本来のデータを残すことが可能になり、内部状態データの回復後の動作も退避前とほぼ同じにすることができる。
【０１０５】
また、第２の実施の形態と第３の実施の形態に示した動作を組み合せることも可能であり、キャッシュメモリの任意の領域を、内部状態データを退避する領域として使用することができる。従って、キャッシュメモリのうち、使用頻度の高い領域を避けて、内部状態データを退避する領域を設定することができる。
【０１０６】
このように、本発明によれば、半導体集積回路装置の電源を中断する際に、半導体集積回路装置内のフリップフロップに保存されている内部状態を示すデータをキャッシュメモリに保存することが可能になる。電源中断から復帰する際に、キャッシュメモリに保存されたデータをフリップフロップに再設定することにより、少ない追加回路で電源中断から復帰する時間を短縮することが可能となる。
【０１０７】
半導体集積回路装置内部のフリップフロップのデータをキャッシュメモリに保存する際に、バリッドでないキャッシュメモリ領域に優先して保存する。バリッドでないキャッシュメモリ領域が保存することができるフリップフロップのデータ量より少ない場合のみ、必要最低限のバリッド状態のキャッシュメモリ領域のバリッドビットを無効にしてフリップフロップのデータを保存する。このようにすることにより、キャッシュメモリの内容の破壊を最低限にすることが可能となる。
【図面の簡単な説明】
【０１０８】
【図１】本発明の第１の実施の形態を簡単に説明する図である。
【図２】本発明の第１の実施の形態に係る半導体集積回路装置の構成を示すブロック図である。
【図３】キャッシュメモリとバリッドビットメモリとの対応関係を説明する図である。
【図４】第１の実施の形態における退避動作を説明するタイムチャートである。
【図５】第１の実施の形態における回復動作を説明するタイムチャートである。
【図６】第２の実施の形態を簡単に説明する図である。
【図７】第２の実施の形態に係る半導体集積回路装置の構成を示すブロック図である。
【図８】第２の実施の形態における退避動作を説明するタイムチャート（１）である。
【図９】第２の実施の形態における退避動作を説明するタイムチャート（２）である。
【図１０】第２の実施の形態における回復動作を説明するタイムチャート（１）である。
【図１１】第２の実施の形態における回復動作を説明するタイムチャート（２）である。
【図１２】第３の実施の形態における退避動作を説明するタイムチャート（１）である。
【図１３】第３の実施の形態における退避動作を説明するタイムチャート（２）である。
【図１４】第３の実施の形態における退避動作を説明するタイムチャート（３）である。
【符号の説明】
【０１０９】
１０、１２  キャッシュメモリ
２０、２２  バリッドビットメモリ
３０、３１、…、３Ｌ  スキャンチェーン
４０、４１、…、４Ｍ  スキャンフリップフロップ群
５０、５１  制御回路部
５２、５３  カウント部
５４  状態フラグ生成部
５５、５７  スキャンイネーブル生成部
５８  メモリ制御信号生成部
８１、８２、８３  選択回路
８７  論理和回路
９０  内部論理回路部
３００〜３３１  スキャンチェーン
Ｆ０−０〜２５５、…、３１−０〜２５５  スキャンフリップフロップ
ＰＦＬ  データ保護状態フラグ
ＰＳＥ  保護用スキャンイネーブル信号
ＶＤＩ  バリッドビットメモリ入力データ信号
ＶＤＯ  バリッドビットメモリ出力データ信号
ＶＡＤ  バリッドビットメモリアドレス信号
ＶＣＳ  バリッドビットメモリチップセレクト信号
ＶＷＥ  バリッドビットメモリライトイネーブル信号
ＣＤＩ  キャッシュメモリ入力データ信号
ＣＤＯ  キャッシュメモリ出力データ信号
ＣＡＤ  キャッシュメモリアドレス信号
ＣＣＳ  キャッシュメモリチップセレクト信号
ＣＷＥ  キャッシュメモリライトイネーブル信号
ＳＭＤ  退避モード信号
ＲＭＤ  回復モード信号
【図１】
2007232588.tif 000003
【図２】
2007232588.tif 000004
【図３】
2007232588.tif 000005
【図４】
2007232588.tif 000006
【図５】
2007232588.tif 000007
【図６】
2007232588.tif 000008
【図７】
2007232588.tif 000009
【図８】
2007232588.tif 000010
【図９】
2007232588.tif 000011
【図１０】
2007232588.tif 000012
【図１１】
2007232588.tif 000013
【図１２】
2007232588.tif 000014
【図１３】
2007232588.tif 000015
【図１４】
2007232588.tif 000016