(第1実施形態)
図1は本発明の第1実施形態の要部を示す回路図である。本発明の第1実施形態は、外部から与えられるCPUの初期化(CPU内の各レジスタ、各ステートマシーンの値を初期状態に設定すること)を指示する初期化信号である外部リセット信号RSTが解除されると、即ち、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)とされてCPUの初期状態の解除が指示されると、RAM初期化専用のハードウエアにより、RAMおよびCPU内のキャッシュのタグ(TAG)RAMの初期化を自動的に行うものである。
図1中、1は外部端子である外部リセット信号(RST)入力端子、2は内部リセット信号(RST_IN)発生部、3はRAM初期化専用のハードウエアであるRAM初期化ユニット、4はアドレスバス、5はデータバス、6−0、6−1はRAM、7−0、7−1はOR回路、8−0、8−1はインバータとAND回路を組み合わせてなる組合せ論理回路、9はCPUである。
RAM初期化ユニット3は、RAM初期化コントロール部10と、アドレス生成カウンタ部11と、データ生成部12と、WE生成部13を有している。CPU9は、整数演算ユニット14と、バスインタフェース15と、命令キャッシュ16−Iと、命令用アドレスバス17−Iと、命令用データバス18−Iと、データキャッシュ16−Dと、データ用アドレスバス17−Dと、データ用データバス18−Dと、OR回路19−I、19−Dと、インバータとAND回路を組み合わせてなる組合せ論理回路20−I、20−Dを有している。命令キャッシュ16−IはタグRAM21−Iを有し、データキャッシュ16−DはタグRAM21−Dを有している。
内部リセット信号発生部2は、外部リセット信号入力端子1を介して与えられる外部リセット信号RSTを入力して内部リセット信号RST_INを発生するものであり、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)に遷移してCPU9の初期状態の解除が指示されたときは、クロックCLKを生成するための水晶振動子の発振が安定する期間だけ遅延させて内部リセット信号RST_INをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させるものである。この内部リセット信号発生部2は必須のものではない。
RAM初期化ユニット3は、内部リセット信号発生部2が出力する内部リセット信号RST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると、内部リセット信号RST_INを遅延してなる内部リセットディレイ信号RST_IN_DLYによりCPU9の初期状態解除を遅延させて、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化を自動的に行うものである。
RAM初期化コントロール部10は、アドレス生成カウンタ部11、データ生成部12およびWE生成部13の制御と、CPU9のリセット信号入力端子22に内部リセット信号RST_INを遅延してなる内部リセットディレイ信号RST_IN_DLYを与えてCPU9の初期化制御を行うものである。
具体的には、RAM初期化コントロール部10は、内部リセット信号発生部2が出力する内部リセット信号RST_INを入力し、内部リセット信号RST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると、アドレス生成カウンタ部11、データ生成部12およびWE生成部13にRAM6−0、6−1およびタグRAM21−I、21−Dの初期化に必要な動作を開始させると共に、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が完了するまで、内部リセットディレイ信号RST_IN_DLYのレベルをHレベル(活性レベル)に維持してCPU9に初期状態を維持させ、そして、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が完了すると、内部リセットディレイ信号RST_IN_DLYのレベルをLレベル(非活性レベル)とすることにより、CPU9の初期状態を解除する。
アドレス生成カウンタ部11は、RAM初期化コントロール部10により制御され、RAM6−0、6−1およびタグRAM21−I、21−Dに与える初期化のためのアドレスADR_INIを生成してアドレスバス4、命令用アドレスバス17−Iおよびデータ用アドレスバス17−Dに出力するものである。
データ生成部12は、RAM初期化コントロール部10により制御され、RAM6−0、6−1およびタグRAM21−I、21−Dに与える初期化のためのデータDATA_INIを生成してデータバス5、命令用データバス18−Iおよびデータ用データバス18−Dに出力するものである。
WE生成部13は、RAM初期化コントロール部10により制御され、RAM6−0、6−1およびタグRAM21−I、21−Dに対する初期化のためのデータDATA_INIの書き込みを可能とするためのRAM初期化ライトイネーブル信号WE_INIを生成して出力するものである。ここで、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)の場合、RAM6−0、6−1およびタグRAM21−I、21−Dに対する初期化のためのデータDATA_INIの書き込みが可能となる。
そこで、WE生成部13は、RAM初期化コントロール部10からRAM6−0、6−1およびタグRAM21−I、21−Dの初期化開始を指示されると、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が完了するまで、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)とし、それ以外の期間は、RAM初期化ライトイネーブル信号WE_INI=Lレベル(非活性レベル)とする。
RAM6−0において、23−0はライトイネーブル信号入力端子であり、OR回路7−0の出力端子は、RAM6−0のライトイネーブル信号入力端子23−0に接続され、OR回路7−0の一方の入力端子にCPU9が出力するRAM6−0用のRAMライトイネーブル信号WE_0が与えられ、OR回路7−0の他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
また、RAM6−0において、24−0はクロックインヒビット信号入力端子であり、組合せ論理回路8−0の出力端子は、RAM6−0のクロックインヒビット信号入力端子24−0に接続され、組合せ論理回路8−0の一方の入力端子にCPU9が出力するRAM6−0用のRAMクロックインヒビット信号IH_0が与えられ、組合せ論理回路8−0の他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
したがって、RAMライトイネーブル信号WE_0=Hレベル(活性レベル)、RAMクロックインヒビット信号IH_0=Lレベル(非活性レベル)の場合には、RAM6−0においては、ライトイネーブル信号入力端子23−0はHレベル(活性レベル)、クロックインヒビット信号入力端子24−0はLレベル(非活性レベル)となり、CPU9からRAM6−0に対する書き込みが可能となる。
これに対して、RAMライトイネーブル信号WE_0=Lレベル(非活性レベル)、RAMクロックインヒビット信号IH_0=Hレベル(活性レベル)とし、CPU9がRAM6−0への書き込みを自己禁止している場合であっても、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)の場合には、ライトイネーブル信号入力端子23−0はHレベル(活性レベル)、クロックインヒビット信号入力端子24−0はLレベル(非活性レベル)となり、RAM初期化ユニット3によるRAM6−0に対する書き込みが可能となる。
RAM6−1において、23−1はライトイネーブル信号入力端子であり、OR回路7−1の出力端子は、RAM6−1のライトイネーブル信号入力端子23−1に接続され、OR回路7−1の一方の入力端子にCPU9が出力するRAM6−1用のRAMライトイネーブル信号WE_1が与えられ、OR回路7−1の他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
また、RAM6−1において、24−1はクロックインヒビット信号入力端子であり、組合せ論理回路8−1の出力端子は、RAM6−1のクロックインヒビット信号入力端子24−1に接続され、組合せ論理回路8−1の一方の入力端子にCPU9が出力するRAM6−1用のRAMクロックインヒビット信号IH_1が与えられ、組合せ論理回路8−1の他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
したがって、RAMライトイネーブル信号WE_1=Hレベル(活性レベル)、RAMクロックインヒビット信号IH_1=Lレベル(非活性レベル)の場合には、RAM6−1においては、ライトイネーブル信号入力端子23−1はHレベル(活性レベル)、クロックインヒビット信号入力端子24−1はLレベル(非活性レベル)となり、CPU9からRAM6−1に対する書き込みが可能となる。
これに対して、RAMライトイネーブル信号WE_1=Lレベル(非活性レベル)、RAMクロックインヒビット信号IH_1=Hレベル(活性レベル)とし、CPU9がRAM6−1への書き込みを自己禁止している場合であっても、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)の場合には、ライトイネーブル信号入力端子23−1はHレベル(活性レベル)、クロックインヒビット信号入力端子24−1はLレベル(非活性レベル)となり、RAM初期化ユニット3によるRAM6−1に対する書き込みが可能となる。
命令キャッシュ16−Iにおいて、25−Iはライトイネーブル信号入力端子であり、OR回路19−Iの出力端子は、命令キャッシュ16−Iのライトイネーブル信号入力端子25−Iに接続され、OR回路19−Iの一方の入力端子にバスインタフェース15が出力するタグRAM21−I用の命令キャッシュ・タグRAMライトイネーブル信号WE_Iが与えられ、OR回路19−Iの他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
また、命令キャッシュ16−Iにおいて、26−Iはクロックインヒビット信号入力端子であり、組合せ論理回路20−Iの出力端子は、命令キャッシュ16−Iのクロックインヒビット入力端子26−Iに接続され、組合せ論理回路20−Iの一方の入力端子にバスインタフェース15が出力するタグRAM21−I用の命令キャッシュ・タグRAMクロックインヒビット信号IH_Iが与えられ、組合せ論理回路20−Iの他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
したがって、命令キャッシュ・タグRAMライトイネーブル信号WE_I=Hレベル(活性レベル)、命令キャッシュ・タグRAMクロックインヒビット信号IH_I=Lレベル(非活性レベル)の場合には、命令キャッシュ16−Iにおいては、ライトイネーブル信号入力端子25−IはHレベル(活性レベル)、クロックインヒビット信号入力端子26−IはLレベル(非活性レベル)となり、CPU9の内部動作によるタグRAM21−Iに対する書き込みが可能となる。
これに対して、命令キャッシュ・タグRAMライトイネーブル信号WE_I=Lレベル(非活性レベル)、命令キャッシュ・タグRAMクロックインヒビット信号IH_I=Hレベル(活性レベル)とし、CPU9の内部動作によるタグRAM21−Iへの書き込みが禁止される場合でも、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)の場合には、ライトイネーブル信号入力端子25−IはHレベル(活性レベル)、クロックインヒビット信号入力端子26−IはLレベル(非活性レベル)となり、RAM初期化ユニット3によるタグRAM21−Iに対する書き込みが可能となる。
データキャッシュ16−Dにおいて、25−Dはライトイネーブル信号入力端子であり、OR回路19−Dの出力端子は、データキャッシュ16−Dのライトイネーブル信号入力端子25−Dに接続され、OR回路19−Dの一方の入力端子にバスインタフェース15が出力するタグRAM21−D用のデータキャッシュ・タグRAMライトイネーブル信号WE_Dが与えられ、OR回路19−Dの他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
また、データキャッシュ16−Dにおいて、26−Dはクロックインヒビット信号入力端子であり、組合せ論理回路20−Dの出力端子は、データキャッシュ16−Dのクロックインヒビット信号入力端子26−Dに接続され、組合せ論理回路20−Dの一方の入力端子にバスインタフェース15が出力するタグRAM21−D用のデータキャッシュ・タグRAMクロックインヒビット信号IH_Dが与えられ、組合せ論理回路20−Dの他方の入力端子にWE生成部13が出力するRAM初期化ライトイネーブル信号WE_INIが与えられるように構成されている。
したがって、データキャッシュ・タグRAMライトイネーブル信号WE_D=Hレベル(活性レベル)、データキャッシュ・タグRAMクロックインヒビット信号IH_D=Lレベル(非活性レベル)の場合には、データキャッシュ16−Dにおいては、ライトイネーブル信号入力端子25−DはHレベル(活性レベル)、クロックインヒビット信号入力端子26−DはLレベル(非活性レベル)となり、CPU9の内部動作によるタグRAM21−Dに対する書き込みが可能となる。
これに対して、データキャッシュ・タグRAMライトイネーブル信号WE_D=Lレベル(非活性レベル)、データキャッシュ・タグRAMクロックインヒビット信号IH_D=Hレベル(活性レベル)とし、CPU9の内部動作によるタグRAM21−Dへの書き込みが禁止される場合でも、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)の場合には、ライトイネーブル信号入力端子25−DはHレベル(活性レベル)、クロックインヒビット信号入力端子26−DはLレベル(非活性レベル)となり、RAM初期化ユニット3によるタグRAM21−Dに対する書き込みが可能となる。
図2は本発明の第1実施形態におけるRAM初期化動作を示すタイミングチャートである。即ち、本発明の第1実施形態においては、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)に遷移してCPU9の初期状態解除が指示されると、内部リセット信号発生部2は、クロックCLKを生成するための水晶振動子の発振が安定する期間だけ遅延させて内部リセット信号RST_INをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させる。
そして、RAM初期化コントロール部10は、内部リセット信号RST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると、アドレス生成カウンタ部11、データ生成部12およびWE生成部13にRAM6−0、6−1およびタグRAM21−I、21−Dの初期化に必要な動作を開始させると共に、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が完了するまで、内部リセットディレイ信号RST_IN_DLYをHレベル(活性レベル)に維持し、CPU9に初期状態を維持させる。
ここに、アドレス生成カウンタ部11は、RAM6−0、6−1およびタグRAM21−I、21−Dに与える初期化のためのアドレスADR_INIを生成してアドレスバス4および命令用アドレスバス17−I、17−Dに出力し、データ生成部12は、RAM6−0、6−1およびタグRAM21−I、21−Dに与える初期化のためのデータDATA_INIとして、“0x00000000”(但し、0xは16進数表記を示す)を生成してデータバス5およびデータ用データバス18−I、18−Dに出力し、WE生成部13は、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が完了するまで、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)とする。
RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)となることから、RAM6−0、6−1、命令キャッシュ16−I、データキャッシュ16−Dのライトイネーブル信号入力端子23−0、23−1、25−I、25−DはHレベル(活性レベル)、クロックインヒビット信号入力端子24−0、24−1、26−I、26−DはLレベル(非活性レベル)になる。この結果、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が可能となる。
そして、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化が完了すると、WE生成部13は、RAM初期化ライトイネーブル信号WE_INI=Lレベル(非活性レベル)にすると共に、内部リセットディレイ信号RST_IN_DLYをLレベル(非活性レベル)に遷移させ、CPU9のリセット信号入力端子22をLレベル(非活性レベル)にしてCPU9の初期状態を解除する。この結果、CPU9は、通常動作に移行する。
ここで、例えば、タグRAM21−Iにアドレス0x0001_0000〜0x0001_3ffcを割り当て、タグRAM21−Dにアドレス0x0002_0000〜0x0002_7ffcを割り当て、RAM6−0にアドレス0x0003_0000〜0x0003_fffcを割り当て、RAM6−1にアドレス0x0004_0000〜0x0004_fffcを割り当てるものとする。
また、バスインタフェース15は、通常動作時、アドレスの上位16ビットが0x0001であれば、命令キャッシュ・タグRAMクロックインヒビット信号IH_I=0とし、0x0002であれば、データキャッシュ・タグRAMクロックインヒビット信号IH_D=0とし、0x0003であれば、RAMクロックインヒビット信号IH_0=0とし、0x0004であれば、RAMクロックインヒビット信号IH_1=0とするように動作し、RAM6−0、6−1およびタグRAM21−I、21−Dの中から1個のRAMを選択するように動作するものとする。
このようにする場合には、RAM初期化時には、RAM初期化ライトイネーブル信号WE_INI=Hレベル、RAM6−0、6−1、命令キャッシュ16−I、データキャッシュ16−Dのライトイネーブル信号入力端子23−0、23−1、25−I、25−DはHレベル(活性レベル)、クロックインヒビット信号入力端子24−0、24−1、26−I、26−DはLレベル(非活性レベル)になるので、初期化のためのアドレスADR_INIを0x0000から0xfffcまで順にインクリメントすることで、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化を同時に行うことができる。
以上のように、本発明の第1実施形態によれば、RAM初期化ユニット3によりRAM6−0、6−1およびタグRAM21−I、21−Dの初期化を自動的に行い、RAM6−0、6−1およびタグRAM21−I、21−Dの未書き込みアドレスの記憶値を初期値“0x00000000”に設定することができる。したがって、ユーザプログラム評価時に、ユーザプログラムミスにより、RAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しを行った場合、常に初期値“0x00000000”が読み出されることになる。
この場合、初期値“0x00000000”が正常動作に都合の悪い値である場合には、ユーザプログラム評価時に、RAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスをLSIの異常動作として発見することができ、ユーザプログラムの修正の機会を得ることができ、これにより、LSIの実使用時におけるRAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスによる異常動作を防ぐことができる。
これに対して、初期値“0x00000000”がたまたま正常動作に都合の良い値であった場合には、ユーザプログラム評価時に、RAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスはLSIの異常動作として発見することができないが、この場合には、LSIの実使用時にも異常動作とはならず、ユーザプログラムミスは何ら問題とならない。
このように、本発明の第1実施形態によれば、RAM初期化ユニット3がRAM6−0、6−1、タグRAM21−I、21−Dに書き込む初期値“0x00000000”が正常動作に都合の悪い値であっても、都合の良い値であっても、LSIの実使用時におけるRAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスによる異常動作を防ぐことができる。
(第2実施形態)
図3は本発明の第2実施形態の要部を示す回路図である。本発明の第2実施形態は、外部リセット信号RSTが解除されたことによるRAMの自動初期化を行うか否かを選択することができ、また、RAM初期化レジスタに所定値を書き込むことによりRAMの初期化を自動的に行うことができ、また、キャッシュ・オン直後にタグRAMの初期化を自動的に行うことができるようにしたものである。
本発明の第2実施形態は、外部リセット信号入力端子1と、内部リセット信号発生部2と、外部リセット信号RSTが解除された直後のRAMの自動初期化を抑止するRAM初期化抑止信号(NOT_RAM_INI)を入力するためのRAM初期化抑止信号入力端子27と、RAM初期化専用のハードウエアであるRAM初期化ユニット28と、アドレスバス4、データバス5と、RAM6−0、6−1と、OR回路7−0、7−1と、組合せ論理回路8−0、8−1と、CPU29を有している。なお、外部リセット信号入力端子1と、内部リセット信号発生部2と、アドレスバス4、データバス5と、RAM6−0、6−1と、OR回路7−0、7−1と、組合せ論理回路8−0、8−1は、本発明の第1実施形態が備えるものと同様のものである。
RAM初期化ユニット28は、RAM初期化コントロール部30と、アドレス生成カウンタ部31と、データ生成部32と、WE生成部33と、RAM初期化レジスタ34を有している。CPU29は、図1に示すCPU9と同様に、整数演算ユニット14と、バスインタフェース15と、命令キャッシュ16−Iと、命令用アドレスバス17−Iと、命令用データバス18−Iと、データキャッシュ16−Dと、データ用アドレスバス17−Dと、データ用データバス18−Dと、OR回路19−I、19−Dと、組合せ論理回路20−I、20−Dを有しており、命令キャッシュ16−IはタグRAM21−1を有し、データキャッシュ16−DはタグRAM21−Dを有している。
CPU29がCPU9と異なる点は、CPU29のリセット信号入力端子35に内部リセット信号発生部2が出力する内部リセット信号RST_INが与えられる点、RAM初期化コントロール部30からRAM初期化リクエスト信号RAM_INI_REQを受ける機能を有している点、RAM初期化コントロール部30にRAM初期化アクノリッジ信号RAM_INI_ACK、命令キャッシュ・オン信号ICACHE_ONおよびデータキャッシュ・オン信号DCACHE_ONを与える機能を有している点などである。
RAM初期化コントロール部30は、アドレス生成カウンタ部31、データ生成部32、WE生成部33およびCPU29を制御し、RAM6−0、6−1およびタグRAM21−I、21−Dの初期化を制御するものであり、内部リセット信号発生部2が出力する内部リセット信号RST_INを受ける機能、RAM初期化抑止信号NOT_RAM_INIを受ける機能、CPU29が出力する命令キャッシュ・オン信号ICACHE_ONと、データキャッシュ・オン信号DCACHE_ONと、RAM初期化アクノリッジ信号RAM_INI_ACKを受ける機能、CPU29にRAM初期化リクエスト信号RAM_INI_REQを与える機能などを有している。
具体的には、RAM初期化コントロール部30は、RAM初期化抑止信号NOT_RAM_INI=Lレベル(非活性レベル)の場合には、内部リセット信号RST_INがLレベル(非活性レベル)に遷移すると、RAM6−0、6−1の初期化制御を開始し、又は、RAM初期化抑止信号NOT_RAM_INI=Hレベル(活性レベル)の場合には、内部リセット信号RST_INがLレベル(非活性レベル)に遷移しても、RAM6−0、6−1の初期化制御を行わず、また、RAM初期化レジスタ34に“1”が書き込まれることにより、RAM6−0、6−1の初期化制御を開始し、また、命令キャッシュ・オン信号ICACHE_ONがHレベル(活性レベル)になると、タグRAM21−Iの初期化制御を開始し、また、データキャッシュ・オン信号DCACHE_ONがHレベル(活性レベル)になると、タグRAM21−Dの初期化制御を開始する。
アドレス生成カウンタ部31は、RAM初期化コントロール部30により制御され、RAM6−0、6−1の初期化時には、RAM6−0、6−1に与える初期化のためのアドレスADR_INIを生成してアドレスバス4に出力し、また、タグRAM21−Iの初期化時には、タグRAM21−Iに与える初期化のためのアドレスADR_C_INIを生成して命令用アドレスバス17−Iおよびデータ用アドレスバス17−Dに出力し、また、タグRAM21−Dの初期化時には、タグRAM21−Dに与える初期化のためのアドレスADR_C_INIを生成して命令用アドレスバス17−Iおよびデータ用アドレスバス17−Dに出力するものである。
データ生成部32は、RAM初期化コントロール部30により制御され、RAM6−0、6−1の初期化時には、RAM6−0、6−1に与える初期化のためのデータDATA_INIを生成してデータバス5、命令用データバス18−Iおよびデータ用データバス18−Dに出力し、また、タグRAM21−Iの初期化時には、タグRAM21−Iに与える初期化のためのデータDATA_INIを生成してデータバス5、命令用データバス18−Iおよびデータ用データバス18−Dに出力し、また、タグRAM21−Dの初期化時には、タグRAM21−Dに与える初期化のためのデータDATA_INIを生成してデータバス5、命令用データバス18−Iおよびデータ用データバス18−Dに出力するものである。
WE生成部33は、RAM初期化コントロール部30により制御され、RAM初期化ライトイネーブル信号WE_INI、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI、データキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INIを生成し、RAM初期化ライトイネーブル信号WE_INIをOR回路7−0、7−1、組合せ論理回路8−0、8−1に与え、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INIをOR回路19−I、組合せ論理回路20−Iに与え、データキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INIをOR回路19−D、組合せ論理回路20−Dに与えるものである。
即ち、本実施形態では、OR回路19−Iの一方の入力端子にはバスインタフェース15が出力するタグRAM21−I用の命令キャッシュ・タグRAMライトイネーブル信号WE_Iが与えられるが、OR回路19−Iの他方の入力端子にはWE生成部33が出力する命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INIが与えられる。また、組合せ論理回路20−Iの一方の入力端子にはバスインタフェース15が出力するタグRAM21−I用の命令キャッシュ・タグRAMクロックインヒビット信号IH_Iが与えられるが、組合せ論理回路20−Iの他方の入力端子にはWE生成部33が出力する命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INIが与えられる。
また、OR回路19−Dの一方の入力端子にはバスインタフェース15が出力するタグRAM21−D用のデータキャッシュ・タグRAMライトイネーブル信号WE_Dが与えられるが、OR回路19−Dの他方の入力端子にはWE生成部33が出力するデータキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INIが与えられる。また、組合せ論理回路20−Dの一方の入力端子にはバスインタフェース15が出力するタグRAM21−D用のデータキャッシュ・タグRAMクロックインヒビット信号IH_Dが与えられるが、組合せ論理回路20−Dの他方の入力端子にはWE生成部33が出力するデータキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INIが与えられる。
したがって、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)の場合、RAM6−0、6−1に対する初期化データDATA_INIの書き込みが可能となる。また、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI=Hレベル(活性レベル)の場合、タグRAM21−Iに対する初期化データDATA_INIの書き込みが可能となる。また、データキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INI=Hレベル(活性レベル)の場合、タグRAM21−Dに対する初期化データDATA_INIの書き込みが可能となる。
そこで、WE生成部33は、RAM初期化コントロール部30からRAM6−0、6−1の初期化開始を指示されると、RAM6−0、6−1の初期化が完了するまで、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)とし、それ以外の期間は、RAM初期化ライトイネーブル信号WE_INI=Lレベル(非活性レベル)とする。
また、WE生成部33は、RAM初期化コントロール部30からタグRAM21−Iの初期化開始を指示されると、タグRAM21−Iの初期化が完了するまで、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI=Hレベル(活性レベル)とし、それ以外の期間は、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI=Lレベル(非活性レベル)とする。
また、WE生成部33は、RAM初期化コントロール部30からタグRAM21−Dの初期化開始を指示されると、タグRAM21−Dの初期化が完了するまで、データキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INI=Hレベル(活性レベル)とし、それ以外の期間は、データキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INI=Lレベル(非活性レベル)とする。
RAM初期化レジスタ34は、1ビット構成のレジスタであり、その格納値RAM_INI_REGをRAM初期化コントロール部30に与えるものであり、その格納値RAM_INI_REGの初期値を“0”とし、ユーザにより“1”が書き込まれると、RAM初期化コントロール部30は、RAM6−0、6−1の初期化制御を開始する。
図4は本発明の第2実施形態における外部リセット信号解除直後のRAM初期化動作を示すタイミングチャートである。本発明の第2実施形態においては、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)に遷移してCPU29の初期状態解除が指示されると、内部リセット信号発生部2は、クロックCLKを生成するための水晶振動子の発振が安定する期間だけ遅延させて内部リセット信号RST_INをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させる。
RAM初期化コントロール部30は、RAM初期化抑止信号NOT_RAM_INI=Lレベル(非活性レベル)とされている場合には、内部リセットRST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると、CPU29に与えるRAM初期化リクエスト信号RAM_INI_REQをLレベル(非活性レベル)からHレベル(活性レベル)に遷移させ、CPU29に対してアドレスバス4およびデータバス5の使用禁止を要求する。
CPU29は、RAM初期化リクエスト信号RAM_INI_REQがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、RAM初期化アクノリッジ信号RAM_INI_ACKをLレベル(非活性レベル)からHレベル(活性レベル)に遷移させて、アドレスバス4およびデータバス5の使用禁止要求を承認する。
そして、RAM初期化コントロール部30は、RAM初期化アクノリッジ信号RAM_INI_ACKがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、RAM6−0、6−1の初期化制御を開始し、アドレス生成カウンタ部31、データ生成部32およびWE生成部33にRAM初期化動作を開始させる。
ここに、アドレス生成カウンタ部31は、RAM6−0、6−1に与える初期化のためのアドレスADR_INIを生成してアドレスバス4に出力し、データ生成部32は、RAM6−0、6−1に与える初期化のためのデータDATA_INIとして、“0x00000000”を生成してデータバス5、データ用データバス18−I、18−Dに出力し、WE生成部33は、RAM6−0、6−1の初期化が完了するまで、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)とする。
ここで、RAM初期化ライトイネーブル信号WE_INI=Hレベル(活性レベル)となることから、RAM6−0、6−1のライトイネーブル信号入力端子23−0、23−1はHレベル(活性レベル)、クロックインヒビット信号入力端子24−0、24−1はLレベル(非活性レベル)になる。この結果、RAM初期化ユニット28によるRAM6−0、6−1の初期化が可能となる。
そして、RAM6−0、6−1の初期化が完了すると、WE生成部33は、RAM初期化ライトイネーブル信号WE_INI=Lレベル(非活性レベル)にすると共に、RAM初期化コントロール部30は、RAM初期化リクエスト信号RAM_INI_REQをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させ、CPU29は、これを受けて、RAM初期化アクノリッジ信号RAM_INI_ACKをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させ、通常動作に移行する。
なお、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)に遷移し、内部リセット信号発生部2が内部リセット信号RST_INをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させた場合においても、RAM初期化コントロール部30は、RAM初期化抑止信号NOT_RAM_INI=Hレベル(活性レベル)とされている場合には、CPU29に与えるRAM初期化リクエスト信号RAM_INI_REQをLレベルに維持し、RAM6−0、6−1の初期化制御を実行しない。
図5は本発明の第2実施形態におけるRAM初期化レジスタ34への“1”の書き込みによるRAM初期化動作を示すタイミングチャートである。本発明の第2実施形態においては、通常動作時に、RAM初期化レジスタ34に“1”が書き込まれると、RAM初期化抑止信号NOT_RAM_INIのレベルに関係なく、RAM初期化コントロール部30は、CPU29に与えるRAM初期化リクエスト信号RAM_INI_REQをLレベル(非活性レベル)からHレベル(活性レベル)に遷移させ、CPU29に対してアドレスバス4およびデータバス5の使用禁止を要求する。
CPU29は、RAM初期化リクエスト信号RAM_INI_REQがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、RAM初期化アクノリッジ信号RAM_INI_ACKをLレベル(非活性レベル)からHレベル(活性レベル)に遷移し、アドレスバス4およびデータバス5の使用禁止要求を承認する。以下、内部リセット信号RST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移した場合と同様に、RAM初期化ユニット28によるRAM6−0、6−1の初期化が自動的に行われる。
図6は本発明の第2実施形態における命令キャッシュ・オン信号(データキャッシュ・オン信号)によるタグRAM初期化動作を示すタイミングチャートである。本発明の第2実施形態においては、通常動作時に、命令キャッシュ16−Iがオンとされたことを示す命令キャッシュ・オン信号ICACHE_ONがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、RAM初期化抑止信号NOT_RAM_INIのレベルに関係なく、RAM初期化コントロール部30は、CPU29に対して、RAM初期化リクエスト信号RAM_INI_REQをLレベル(非活性レベル)からHレベル(活性レベル)に遷移させ、CPU29に対して命令用アドレスバス17−I、命令用データバス18−Iおよびデータ用アドレスバス17−D、データ用データバス18−Dの使用禁止を要求する。
CPU29は、RAM初期化リクエスト信号RAM_INI_REQがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、RAM初期化アクノリッジ信号RAM_INI_ACKをLレベル(非活性レベル)からHレベル(活性レベル)に遷移し、命令用アドレスバス17−I、命令用データバス18−Iおよびデータ用アドレスバス17−D、データ用データバス18−Dの使用禁止要求を承認する。
そして、RAM初期化コントロール部30は、RAM初期化アクノリッジ信号RAM_INI_ACKがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、タグRAM21−Iの初期化制御を開始し、アドレス生成カウンタ部31、データ生成部32およびWE生成部33にタグRAM21−Iの初期化動作を開始させる。
ここに、アドレス生成カウンタ部31は、タグRAM21−Iに与える初期化のためのアドレスADR_C_INIを生成して命令用アドレスバス17−Iおよびデータ用アドレスバス17−D上に出力し、データ生成部32は、タグRAM21−Iに与える初期化データDATA_INIとして、“0x00000000”を生成してデータバス5、データ用データバス18−I、18−Dに出力し、WE生成部33は、タグRAM21−Iの初期化が完了するまで、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI=Hレベル(活性レベル)とする。
ここで、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI=Hレベル(活性レベル)となることから、タグRAM21−Iのライトイネーブル信号入力端子25−IはHレベル(活性レベル)、クロックインヒビット信号入力端子26−1はLレベル(非活性レベル)になる。この結果、RAM初期化ユニット28によるタグRAM21−Iの初期化が可能となる。
そして、タグRAM21−Iの初期化が完了すると、WE生成部33は、命令キャッシュ・タグRAM初期化ライトイネーブル信号WE_I_INI=Lレベル(非活性レベル)にすると共に、RAM初期化コントロール部30は、RAM初期化リクエスト信号RAM_INI_REQをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させ、CPU29は、これを受けて、RAM初期化アクノリッジ信号RAM_INI_ACKをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させ、通常動作に移行する。
なお、通常動作時に、データキャッシュ16−Dがオンとされたことを示すデータキャッシュ・オン信号DCACHE_ONがLレベル(非活性レベル)からHレベル(活性レベル)に遷移した場合には、RAM初期化コントロール部30の制御により、命令キャッシュ・オン信号ICACHE_ONがLレベル(非活性レベル)からHレベル(活性レベル)に遷移した場合と同様にして、RAM初期化ユニット28によるタグRAM21−Dの初期化が自動的に行われる。但し、この場合には、WE生成部33は、タグRAM21−Dの初期化が完了するまで、データキャッシュ・タグRAM初期化ライトイネーブル信号WE_D_INI=Hレベル(活性レベル)とする。
以上のように、本発明の第2実施形態によれば、RAM初期化ユニット28によりRAM6−0、6−1およびタグRAM21−I、21−Dの初期化を自動的に行い、RAM6−0、6−1およびタグRAM21−I、21−Dの未書き込みアドレスの記憶値を初期値“0x00000000”に設定することができる。したがって、ユーザプログラム評価時に、ユーザプログラムミスにより、RAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しを行った場合、常に初期値“0x00000000”が読み出されることになる。
この場合、初期値“0x00000000”が正常動作に都合の悪い値である場合には、ユーザプログラム評価時に、RAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスをLSIの異常動作として発見することができ、ユーザプログラムの修正の機会を得ることができ、これにより、LSIの実使用時におけるRAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスによる異常動作を防ぐことができる。
これに対して、初期値“0x00000000”がたまたま正常動作に都合の良い値であった場合には、ユーザプログラム評価時に、RAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスはLSIの異常動作として発見することができないが、この場合には、LSIの実使用時にも異常動作とはならず、ユーザプログラムミスは何ら問題とならない。
このように、本発明の第2実施形態によれば、RAM初期化ユニット28がRAM6−0、6−1、タグRAM21−I、21−Dに書き込む初期値“0x00000000”が正常動作に都合の悪い値であっても、都合の良い値であっても、LSIの実使用時におけるRAM6−0、6−1、タグRAM21−I、21−Dの未書き込みアドレスからの読み出しというユーザプログラムミスによる異常動作を防ぐことができる。
なお、本発明の第2実施形態においては、外部リセット信号解除直後にRAM6−0、6−1の初期化を自動的に行うか否かを選択することができるようにした場合について説明したが、選択によらず、外部リセット信号解除直後のRAM6−0、6−1の初期化を自動的に行うことができないようにすることもできる。この場合には、RAM初期化抑止信号入力端子27は不要であり、また、RAM初期化コントロール部30は、RAM初期化レジスタ34に“1”が書き込まれた場合に、RAM6−0、6−1の初期化制御を行い、また、命令キャッシュ・オン信号ICACHE_ONがHレベル(活性レベル)にされた場合に、タグRAM21−Iの初期化制御を行い、また、データキャッシュ・オン信号DCACHE_ONがHレベル(活性レベル)にされた場合に、タグRAM21−Dの初期化制御を行うように構成する。
(第3実施形態)
図7は本発明の第3実施形態の要部を示す回路図である。本発明の第3実施形態は、外部リセット信号RSTが解除されると、即ち、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)とされてCPUの初期状態の解除が指示されると、RAM初期化プログラムによりRAMの初期化を自動的に行うものである。
図7中、37は外部端子である外部リセット信号(RST)入力端子、38は内部リセット信号(RST_IN)発生部、39はRAM初期化ユニット、40はユーザプログラムが格納されたユーザROM、41はバス(アドレスバスおよびデータバス)、42−0、42−1はRAM、43はCPU、44はCPU43のリセット信号入力端子である。本実施形態では、RAM初期化ユニット39とCPU43とでRAM42−0、42−2の初期化を行うRAM初期化手段が構成されている。
内部リセット信号発生部38は、外部リセット信号入力端子37を介して与えられる外部リセット信号RSTを入力して内部リセット信号RST_INを発生するものであり、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)に遷移してCPU43の初期状態の解除が指示されたときは、クロックCLKを生成するための水晶振動子の発振が安定する期間だけ遅延させて内部リセット信号RST_INをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させるものである。この内部リセット信号発生部38は必須のものではない。
RAM初期化ユニット39は、RAM初期化ROM45と、セレクタ46と、RAM初期化コントロール部47を有している。RAM初期化ROM45は、RAM42−0、42−1の初期化に必要なRAM初期化プログラムを格納するものである。なお、RAM初期化プログラムの最後の番地には、ソフトウエアリセット発生命令が格納されている。ソフトウエアリセット発生命令は、外部からCPU43にリセット信号が入力された場合と同様に、CPU43に初期化することを命令するものであり、CPU43は、ソフトウエアリセット発生命令を実行するときは、ソフトウエアリセット発生信号RST_SOFTをRAM初期化コントロール部47にアサートする。
セレクタ46は、CPU43がRAM初期化ROM45又はユーザROM40のいずれかにアクセスできるようにするものであり、RAM初期化コントロール部47により制御され、RAM初期化ROM45のアドレス入力端子およびデータ入出力端子又はユーザROM40のアドレス入力端子およびデータ入出力端子と、バス41との接続を図るものである。
RAM初期化コントロール部47は、内部リセット信号発生部38が出力する内部リセット信号RST_INと、CPU43が出力するソフトウエアリセット発生信号RST_SOFTを入力し、セレクタ46の選択動作を制御するものである。具体的には、RAM初期化コントロール部47は、内部リセット信号RST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると、セレクタ46がRAM初期化ROM45を選択するようにセレクタ46を制御し、その後、ソフトウエアリセット発生信号RST_SOFTがLレベル(非活性レベル)からHレベル(活性レベル)に遷移すると、セレクタ46がユーザROM40を選択するようにセレクタ46を制御する。
図8は本発明の第3実施形態におけるRAM初期化動作を示すフローチャートである。本発明の第3実施形態においては、外部リセット信号RSTが解除されると、即ち、外部リセット信号RSTがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると(ステップS1)、クロックCLKを生成するための水晶振動子の発振安定が判断され(ステップS2)、発振が安定すると、内部リセット信号発生部38は、内部リセット信号RST_INを解除し、即ち、内部リセット信号RST_INをHレベル(活性レベル)からLレベル(非活性レベル)に遷移させる(ステップS3)。この結果、CPU43の初期状態が解除される。
RAM初期化コントロール部47は、内部リセット信号RST_INがHレベル(活性レベル)からLレベル(非活性レベル)に遷移すると、セレクタ46がRAM初期化ROM45を選択するようにセレクタ46を制御する(ステップS4)。この結果、CPU43は、RAM初期化ROM45から命令をフェッチし、RAM初期化プログラムを実行し、RAM42−0、42−1に初期値を書き込み、最後に、ソフトウエアリセット発生命令を実行する(ステップS5)。
CPU43は、ソフトウエアリセット発生命令をフェッチし、ソフトウエアリセット発生命令を実行してCPU43自身を初期化するときは、ソフトウエアリセット発生信号RST_SOFTをLレベル(非活性レベル)からHレベル(活性レベル)に遷移させる。この結果、RAM初期化コントロール部47は、セレクタ46がユーザROM40を選択するようにセレクタ46を制御する(ステップS6)。
そして、CPU43においては、ソフトウエアリセットが解除されたか否かが判断され(ステップS7)、ソフトウエアリセットが解除され、CPU43の初期状態が解除され、CPU43は、ユーザROM40から命令をフェッチし、ユーザプログラムを実行することになる(ステップS8)。
以上のように、本発明の第3実施形態によれば、RAM初期化ユニット39によりRAM42−0、42−1の初期化を自動的に行い、RAM42−0、42−1の未書き込みアドレスの記憶値を所定の初期値(例えば、“0x00000000”)に設定することができる。したがって、ユーザプログラム評価時に、ユーザプログラムミスにより、RAM42−0、42−1の未書き込みアドレスからの読み出しを行った場合にも、常に所定の初期値が読み出されることになる。
この場合、初期値が正常動作に都合の悪い値である場合には、ユーザプログラム評価時に、RAM42−0、42−1の未書き込みアドレスからの読み出しというユーザプログラムミスをLSIの異常動作として発見することができ、ユーザプログラムの修正の機会を得ることができ、これにより、LSIの実使用時におけるRAM42−0、42−1の未書き込みアドレスからの読み出しというユーザプログラムミスによる異常動作を防ぐことができる。
これに対して、初期値がたまたま正常動作に都合の良い値であった場合には、ユーザプログラム評価時に、RAM42−0、42−1の未書き込みアドレスからの読み出しというユーザプログラムミスはLSIの異常動作として発見することができないが、この場合には、LSIの実使用時にも異常動作とはならず、ユーザプログラムミスは何ら問題とならない。
このように、本発明の第3実施形態によれば、RAM初期化ユニット39がRAM42−0、42−1に書き込む初期値が正常動作に都合の悪い値であっても、都合の良い値であっても、LSIの実使用時におけるRAM42−0、42−1の未書き込みアドレスからの読み出しというユーザプログラムミスによる異常動作を防ぐことができる。
なお、本発明の第3実施形態においては、RAM初期化ROM45がRAM42−0、42−1の初期化に必要なプログラムを格納している場合について説明したが、更に、CPU43内のキャッシュのタグRAMの初期化に必要なプログラムを格納しておくこともでき、このようにする場合には、RAM42−0、42−1のほか、キャッシュのタグRAMの初期化も自動的に行うことができる。
ここで、本発明を整理すると、本発明には、少なくとも、以下の半導体集積回路が含まれる。
(付記1)CPUとRAMを有する半導体集積回路であって、前記半導体集積回路の初期化を指示する外部信号が解除されると、前記RAMを自動的に初期化するRAM初期化手段を備えることを特徴とする半導体集積回路。
(付記2)前記RAM初期化手段は、前記RAMに与える初期化のためのアドレスを生成するアドレス生成部と、前記RAMに与える初期化のためのデータを生成するデータ生成部と、前記第1の外部信号が解除されると、前記アドレス生成部を制御して前記初期化のためのアドレスを生成させると共に、前記データ生成部を制御して前記初期化のためのデータを生成させるRAM初期化コントロール部を備えることを特徴とする付記1記載の半導体集積回路。
(付記3)前記RAM初期化コントロール部は、前記RAMの初期化が完了するまで、前記CPUの初期状態解除を遅延させることを特徴とする付記2記載の半導体集積回路。
(付記4)前記RAM初期化手段は、前記RAMに対する初期化のためのデータの書き込みを可能にするための制御信号を生成する手段を備えることを特徴とする付記2又は3記載の半導体集積回路。
(付記5)前記RAM初期化手段は、前記RAMを自動的に初期化するほか、前記CPU内のタグRAMを自動的に初期化することを特徴とする付記1記載の半導体集積回路。
(付記6)前記RAM初期化手段は、前記RAMおよび前記タグRAMに与える初期化のためのアドレスを生成するアドレス生成部と、前記RAMおよび前記タグRAMに与える初期化のためのデータを生成するデータ生成部と、前記第1の外部信号が解除されると、前記アドレス生成部を制御して前記初期化のためのアドレスを生成させると共に、前記データ生成部を制御して前記初期化のためのデータを生成させるRAM初期化コントロール部を備えることを特徴とする付記5記載の半導体集積回路。
(付記7)前記RAM初期化コントロール部は、前記RAMおよび前記タグRAMの初期化が完了するまで、前記CPUの初期状態解除を遅延させることを特徴とする付記6記載の半導体集積回路。
(付記8)前記RAM初期化手段は、前記RAMおよび前記タグRAMに対する前記初期化のためのデータの書き込みを可能にするための制御信号を生成する手段を備えることを特徴とする付記6又は7記載の半導体集積回路。
(付記9)前記RAM初期化手段は、前記第1の外部信号が解除されたことによる前記RAMの自動的初期化を第2の外部信号により抑止されるように構成されていることを特徴とする付記1又は5に記載の半導体集積回路。
(付記10)前記RAM初期化手段は、前記RAMに与える初期化のためのアドレスを生成するアドレス生成部と、前記RAMに与える初期化のためのデータを生成するデータ生成部と、前記RAMの初期化を指示する値が書き込み可能とされたRAM初期化レジスタと、前記RAMの自動的初期化が前記第2の外部信号により抑止されていない場合には、前記第1の外部信号が解除されると、前記アドレス生成部を制御して前記初期化のためのアドレスを生成させると共に、前記データ生成部を制御して前記初期化のためのデータを生成させ、また、前記RAM初期化レジスタに前記RAMの初期化を指示する値が書き込まれたときは、前記アドレス生成部を制御して前記初期化のためのアドレスを生成させると共に、前記データ生成部を制御して前記初期化のためのデータを生成させるRAM初期化コントロール部を有することを特徴とする付記9記載の半導体集積回路。
(付記11)前記RAM初期化コントロール部は、前記RAMの初期化が完了するまで、前記CPUが前記RAMにアクセスするためのバスの使用を制限するように前記CPUを制御する機能を有することを特徴とする付記10記載の半導体集積回路。
(付記12)前記RAM初期化手段は、前記RAMに対する初期化データの書き込みを可能にするための制御信号を生成する手段を有することを特徴とする付記10又は11記載の半導体集積回路。
(付記13)前記アドレス生成部は、前記RAMに与える初期化のためのアドレスのほか、前記キャッシュ内のタグRAMに与える初期化のためのアドレスを生成する機能を有し、前記RAM初期化コントロール部は、前記CPUから前記CPU内のキャッシュをオンとしたことを示す信号を受けた場合には、前記アドレス生成部を制御して前記タグRAMに与える初期化のためのアドレスを生成させると共に、前記データ生成部を制御して初期化のためのデータを出力させ、前記タグRAMは、前記タグRAMに与える初期化のためのアドレスおよび初期化のためのデータを受けるように構成されていることを特徴とする付記10、11又は12記載の半導体集積回路。
(付記14)前記RAM初期化手段は、前記タグRAMに対する初期化のためのデータの書き込みを可能にするための制御信号を生成する手段を有することを特徴とする付記13記載の半導体集積回路。
(付記15)CPUとRAMを有する半導体集積回路であって、前記RAMの初期化を指示する値が書き込み可能とされた所定のレジスタを有し、前記CPUが前記所定のレジスタに前記RAMの初期化を指示する値を書き込んだときは、前記RAMを初期化するRAM初期化手段を有することを特徴とする半導体集積回路。
(付記16)CPUとRAMを有する半導体集積回路であって、前記RAMを初期化するためのRAM初期化プログラムを格納するRAM初期化ROMを有し、前記半導体集積回路の初期化を指示する外部信号が解除されると、前記CPUが前記RAM初期化プログラムを使用して前記RAMの初期化を行うように構成されていることを特徴とする半導体集積回路。
(付記17)前記CPUによる前記RAM初期化ROM又はユーザプログラムを格納するユーザROMのいずれかへのアクセスを可能とするセレクタと、前記セレクタの選択動作を制御する選択制御手段を有し、前記RAM初期化プログラムの最後の番地には前記CPUの初期化命令が存在し、前記CPUが前記初期化命令を実行するときは、その旨を前記選択制御手段に通知し、前記選択制御手段は、前記第1の外部信号が解除されると、前記CPUが前記RAM初期化ROMにアクセスするように前記セレクタを制御し、前記CPUから前記初期化命令を実行する旨の通知を受けると、前記CPUが前記初期化命令実行後に前記ユーザROMにアクセスするように前記セレクタを制御することを特徴とする付記16記載の半導体集積回路。