(57)【要約】【課題】  プロセッサのソフトウェア的な初期化処理をより高速に行うことができるようにする。【解決手段】  マスタープロセッサとスレーブプロセッサとの間で通信を行うシステムにおいて、リセット信号に応じて、第１の初期化処理を行った後で初期化プログラムを使用してソフトウェア的な第２の初期化処理を行う初期化方法が提供される。マスタープロセッサが、リセット信号の種類に基づいて、初期化プログラムがローカルメモリ（６）又は外部メモリ（９）の何れにあるかを設定し、スレーブプロセッサは、選択されたローカルメモリ又は外部メモリから初期化プログラムを読み出す。【選択図】        図１
2005293609.tif 000002
【特許請求の範囲】
【請求項１】
マスタープロセッサとスレーブプロセッサとの間で通信を行うシステムにおいて、リセット信号に応じて、第１の初期化処理を行った後で初期化プログラムを使用してソフトウェア的な第２の初期化処理を行う初期化方法であって、
前記マスタープロセッサが、前記リセット信号の種類に基づいて、初期化プログラムがローカルメモリ又は外部メモリの何れにあるかを設定し、
前記スレーブプロセッサは、前記選択されたローカルメモリ又は外部メモリから初期化プログラムを読み出すことを特徴とする初期化方法。
【請求項２】
前記リセット信号の情報を格納するリセットレジスタを備えることを特徴とする請求項１に記載の初期化方法。
【請求項３】
前記リセット信号は、初期起動リセット信号、再起動リセット信号又はプログラムリセット信号の何れかであることを特徴とする請求項１又は請求項２に記載の初期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、初期化方法に関する。
【背景技術】
【０００２】
ある装置に備えられたマイクロプロセッサは、装置の電源が投入されると、外部から与えられるリセット信号に応じてプロセッサ内部を初期化するリセット動作を行う。このリセット動作では、プロセッサ内部に備えられた記憶素子の記憶内容を初期化するハードウェア的な初期化処理の後、外部メモリから初期化処理用のプログラムを読み込んで実行することにより、種々のアプリケーションプログラムを実行可能な状態に設定するソフトウェア的な初期化処理が行われる。
【０００３】
上記ハードウェア的な初期化処理は、リセット信号のアサートを契機として行われる。また、上記ソフトウェア的な初期化処理は、リセット信号のネゲートを契機として、リセットベクタで指定されるアドレスから初期化処理用プログラムの命令をフェッチすることによって行われる。通常、この初期化処理用プログラムは、プロセッサの外部にバスを介して接続されたリード・オンリ・メモリ（以下、ＲＯＭ）に格納されている。
【０００４】
すなわち、ソフトウェア的な初期化処理では、プロセッサがバスを介してＲＯＭに読み出し要求アドレスを与えることで、初期化処理用プログラムの命令列がＲＯＭから順次読み出されてバスを介してプロセッサに供給される。これを受け取ったプロセッサは、供給された命令に従って、プロセッサ内部に備えられている各種設定用レジスタにシステムに応じた適当な値を設定することにより、アプリケーションプログラムを実行可能な環境を整備する。
【０００５】
ところで、このようなリセット動作を行うプロセッサを共有バスに複数個接続し、そのうちの１つをマスタープロセッサ、その他をスレーブプロセッサとして機能させるようにしたマルチプロセッサを構成するシステムが存在する。このようなマルチプロセッサシステム全体をリセットするためには、全てのプロセッサにおいてリセット動作を行う必要がある。
【０００６】
そのために、まず全てのプロセッサに対してリセット信号がアサートされ、全てのプロセッサにおいてハードウェア的な初期化処理が行われる。そして、プロセッサ内部の記憶素子の記憶内容を初期化するために必要十分な時間だけリセット信号がアサートされた後、このリセット信号は各プロセッサに対してネゲートされる。
【０００７】
このリセット信号のネゲートを契機として、各プロセッサは続いてソフトウェア的な初期化処理を行うために、リセットベクタで指示されるアドレスに従ってＲＯＭに対するアクセスを一斉に開始しようとする。しかし、共有バス上に接続されたＲＯＭに対して複数のプロセッサが同時にアクセスすることはできない。そのため、各プロセッサは、共有バスのアービトレーション（バス調停）を介してＲＯＭに順番にアクセスし、ソフトウェア的な初期化処理のために必要なプログラムの命令列を順に読み出すことになる。
【０００８】
また、上述のようなリセット動作を行うプロセッサを組み込んだシステムにおいて、電源投入後においてもプロセッサが動作していない状態では、当該プロセッサでのクロック供給を停止することにより、消費電力の低減化を図ったシステムも提案されている。例えば、上述のようなマルチプロセッサにより構成されるシステムでは、マスタープロセッサが動作してスレーブプロセッサが動作していない状態が存在するが、この場合にはスレーブプロセッサでのクロック供給を停止することにより、低消費電力化を図っている。
【０００９】
プロセッサのクロック供給が停止されている状態で、その後そのプロセッサを使用する状態が発生したときは、再びクロックが供給されてプロセッサの起動が行われる。このとき、再起動されるプロセッサでは、リセット信号のアサートに応じてハードウェア的な初期化処理を行った後、リセット信号のネゲートに応じてバスを介してＲＯＭにアクセスし、必要な初期化処理用プログラムの命令列を読み込んでソフトウェア的な初期化処理を実行することになる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記従来のシステムにおいては、ハードウェア的な初期化処理の後に続いて行われるソフトウェア的な初期化処理では、その初期化処理に必要なプログラムを、バスを介して低速なメモリデバイスであるＲＯＭにアクセスして取得しなければならず、そのリセット動作に多くの時間がかかっていた。
【００１１】
特に、低消費電力化のためにプロセッサのクロック供給を一時的に停止するようにしたシステムにおいて、プロセッサの停止と起動とが頻繁に行われると、低速なＲＯＭへのアクセスがプロセッサ起動の度に実行されるため、システムの起動待ちという無駄な時間が増大するという問題があった。
【００１２】
また、複数のプロセッサが共有バス上に接続されたマルチプロセッサシステムにおいては、それぞれのプロセッサが実行する初期化処理用のプログラムを記憶したＲＯＭが共有バスに接続されているため、各プロセッサからＲＯＭへのアクセスが競合した場合は、バス調停が行われて各プロセッサが低速なＲＯＭに順次アクセスすることになる。そのため、全てのプロセッサの初期化に要する時間が大幅に増大してしまうという問題があった。
【００１３】
さらに、マルチプロセッサシステムでは、それぞれのプロセッサには異なる役割が与えられるのが通常であり、ソフトウェア的な初期化処理の内容もそれぞれ異なるものとなる。そのため、初期化処理のために使用するプログラムもそれぞれのプロセッサ毎に異なるものとなる。したがって、ＲＯＭ内に格納された異なるプログラムのうち、どのプログラムをどのプロセッサが実行するのかを判別する機構が必要となり、システムの構成が煩雑になるという問題があった。
【００１４】
本発明は、このような問題を解決するために成されたものであり、プロセッサのソフトウェア的な初期化処理をより高速に行うことができるようにすることを目的とする。
また、本発明は、プロセッサのソフトウェア的な初期化処理を行うための機構をより簡素化することができるようにすることをも目的とする。
【課題を解決するための手段】
【００１５】
本発明の初期化方法は、マスタープロセッサとスレーブプロセッサとの間で通信を行うシステムにおいて、リセット信号に応じて、第１の初期化処理を行った後で初期化プログラムを使用してソフトウェア的な第２の初期化処理を行う初期化方法であって、前記マスタープロセッサが、前記リセット信号の種類に基づいて、初期化プログラムがローカルメモリ又は外部メモリの何れにあるかを設定し、前記スレーブプロセッサは、前記選択されたローカルメモリ又は外部メモリから初期化プログラムを読み出すことを特徴とする。
【発明の効果】
【００１６】
電源投入後において内部クロックの供給が停止された後の再起動時には、高速なローカルメモリから再起動用の初期化プログラムを読み出してプロセッサの起動を行うことができ、その再起動処理を高速に行うことができる。これにより、システムの消費電力を抑制するとともにクロック停止状態からの高速な復帰を実現することができるようになる。また、マルチプロセッサシステムを構成した場合に、どのプロセッサがどのプログラムを実行するのかを判別するための機構も不要となり、システムの構成を簡素化することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施形態を図面に基づいて説明する。
図１は、本発明によるデータ処理システムの第１の実施形態に係るプロセッサの構成例を示すブロック図である。
【００１８】
本実施形態のプロセッサ１０は、メモリからプログラムの命令を読み出してフェッチする動作を制御する命令フェッチ制御部１、フェッチされた命令を解釈して実行する命令実行部２、メモリの内容のコピーを保持して高速なメモリアクセスをサポートするキャッシュメモリおよびその制御部（以下、キャッシュユニット３と略す）、ローカルなメモリであるランダム・アクセス・メモリ（ＲＡＭ）６およびアドレスバス７やデータバス８などの外部バスの制御を行うバス制御部４、与えられる外部クロックＣＬＯＣＫに基づいて内部クロックｂｃｋ，ｃｃｋの生成および分配を行うクロック制御部５を備えて構成されている。
【００１９】
外部バス７，８には、外部メモリであるＲＯＭ９が接続されており、プロセッサ１０のソフトウェア的な初期化処理を行うために必要な初期化プログラムがここにあらかじめ記憶されている。なお、ここでは外部メモリとしてＲＯＭ９を想定しているが、これに限られない。また、ＲＡＭ６は、通常はプロセッサ１０のワークメモリとして使用されるものであり、必要に応じてＲＯＭ９から外部バス７，８を介して初期化プログラムが転送され、格納される。
【００２０】
なお、キャッシュユニット３内のキャッシュメモリは、プロセッサ１０に接続された外部メモリの内容のコピーを保持する、高速ではあるが容量の小さなバッファメモリである。外部メモリの内容のコピーがキャッシュメモリに存在していた場合、命令実行部２に対するデータはこのキャッシュメモリから供給される。本発明に関する限り、キャッシュユニット３の有無は本質的な意味を持たないため、詳細な説明は割愛する。本実施形態では、キャッシュメモリとしては、例えばストアスルー型のものを用いるものとする。
【００２１】
上記命令フェッチ制御部１は、プロセッサ１０が実行すべき初期化プログラムの命令が格納されているメモリのアドレスを生成し、それを要求命令アドレスｉａとして命令フェッチ要求ｉａｖａｌと共にキャッシュユニット３に発行する。このとき、命令フェッチ制御部１は、外部から与えられるアドレス選択信号ＭＳに基づいて、ローカルメモリであるＲＡＭ６または外部メモリであるＲＯＭ９の何れかの開始アドレスを選択して要求命令アドレスｉａとする。つまり、この命令フェッチ制御部１は、本発明のアドレス選択手段を備えている。
【００２２】
命令フェッチ制御部１から命令フェッチ要求ｉａｖａｌを受け取ったキャッシュユニット３は、それに伴って与えられた要求命令アドレスｉａを用いて、キャッシュメモリ内に有効なエントリが存在するかどうかを検索する。ここでキャッシュヒットした場合には、キャッシュメモリから該当するデータを読み出して、それを命令データｉｄとして命令実行部２に供給する。一方、キャッシュメモリ内に有効なエントリが存在せず、キャッシュミスが発生した場合には、命令フェッチ要求と要求アドレスａｄｄとをバス制御部４に供給する。
【００２３】
バス制御部４は、受け取った要求アドレスａｄｄに従って、ＲＡＭ６またはＲＯＭ９の何れかに対して選択的にデータの読み出しを要求する。すなわち、このバス制御部４は、ＲＡＭ６のアドレス領域を指定する情報を保持するための領域指定レジスタ４ａを備えており、ここには領域の先頭アドレスＡＳＲおよび領域サイズＡＭＲの情報が保持されている。そして、キャッシュユニット３から受け取った要求アドレスａｄｄが、この先頭アドレスＡＳＲおよび領域サイズＡＭＲの対によって指定されるＲＡＭ６のアドレス領域に含まれているか否かに応じて、ＲＡＭ６またはＲＯＭ９の何れかに対してデータの読み出しを要求する。
【００２４】
図２は、上記ＲＡＭ６やＲＯＭ９の他に、プロセッサ１０内の各種レジスタを含むシステム全体のメモリマップを示す図である。図２の例では、アドレス番号が0x0000＿0000〜0x01FF＿FFFFまではＲＡＭ６に割り当てられ、0xFE00＿0000〜0xFF00＿0000まではプロセッサ１０内の各構成（命令フェッチ制御部１、命令実行部２、キャッシュメモリ３、バス制御部４およびクロック制御部５）に備えられる各種レジスタに割り当てられ、0xFF00＿0000〜0xFFFF＿FFFFまではＲＯＭ９に割り当てられている。なお、0x01FF＿FFFF〜0xFE00＿0000までのアドレス番号は未使用である。
【００２５】
この図２の例に従えば、領域指定レジスタ４ａの先頭アドレスＡＳＲの情報として0x0000＿0000のアドレス番号が保持され、領域サイズＡＭＲの情報として01FF＿FFFFの領域サイズが保持されている。したがって、バス制御部４は、キャッシュユニット３から受け取った要求アドレスａｄｄが0x0000＿0000〜0x01FF＿FFFFの範囲内に含まれていれば、アドレス線 ram＿add に要求アドレスａｄｄを載せてＲＡＭ６に対してデータの読み出しを要求する。
【００２６】
また、バス制御部４は、受け取った要求アドレスａｄｄが、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの対によって指定される上記0x0000＿0000〜0x01FF＿FFFFのアドレス領域に含まれておらず、かつ、メモリマップされたプロセッサ１０内の各種レジスタの領域を表す0xFE00＿0000〜0xFF00＿0000のアドレス領域にも含まれていなかった場合は、アドレスバス７に要求アドレスａｄｄを載せてＲＯＭ９に対してデータの読み出しを要求する。
【００２７】
ＲＡＭ６またはＲＯＭ９に対して要求されたデータは、それぞれのメモリから読み出され、データ線 ram＿dataまたはデータバス８を介してバス制御部４に送られてくる。このデータを受け取ったバス制御部４は、それをリードデータｒｄｄとしてキャッシュユニット３に供給する。リードデータｒｄｄを受けたキャッシュユニット３は、そのデータを命令データｉｄとして命令実行部２に供給し、必要に応じてキャッシュメモリにこの命令データを登録する。
【００２８】
以上のようにして命令データｉｄの供給を受けた命令実行部２は、その命令を解釈して実行する。この実行の過程でＲＡＭ６、ＲＯＭ９あるいはプロセッサ１０内の各種レジスタなどに格納されたデータを参照する必要が生じた場合、命令実行部２は、要求データアドレスｏａを伴ってデータフェッチ要求をキャッシュユニット３に発行する。
【００２９】
このときのデータフェッチに関して、これ以降の動作は命令フェッチの場合とほぼ同様である。ただし、メモリマップされたレジスタのアドレス領域（0xFE00＿0000〜0xFF00＿0000）を要求アドレスａｄｄが指定していた場合、バス制御部４はそのレジスタの値（領域指定レジスタ４ａや後述するリセットレジスタ（ＲＳＴＲ）４ｂの値）を読み出してリードデータｒｄｄとしてキャッシュユニット３に返す。また、ＲＡＭ６、ＲＯＭ９あるいはレジスタからバス制御部４を介してキャッシュユニット３に返されたデータは、最終的にリードデータｒｄとして命令実行部２に供給される。
【００３０】
また、命令実行部２における命令実行の過程で、ＲＡＭ６あるいはレジスタなどのメモリの内容を更新する必要が生じた場合には、要求データアドレスｏａとライトデータｗｄとを伴ってデータライト要求をキャッシュユニット３に発行する。キャッシュユニット３は、キャッシュヒットした場合にはキャッシュメモリにライトデータｗｄを書き込むとともに、バス制御部４に対して要求アドレスａｄｄを伴うデータライト要求とライトデータｗｒｄとを発行する。
【００３１】
このデータライト要求を受け取ったバス制御部４は、受け取った要求アドレスａｄｄが、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの対によって指定されるＲＡＭ６のアドレス領域に含まれていた場合には、アドレス線 ram＿add に要求アドレスａｄｄ、データ線 ram＿dataにライトデータｗｒｄを載せてＲＡＭ６に対してデータの書き込みを要求する。また、受け取った要求アドレスａｄｄが、領域指定レジスタ４ａやリセットレジスタ４ｂなどのメモリマップされたレジスタのアドレス領域を指定していた場合は、バス制御部４は、その要求アドレスａｄｄで示されるレジスタに対してライトデータｗｒｄの書き込みを行う。
【００３２】
また、バス制御部４は、受け取った要求アドレスａｄｄが、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの対によって指定されるＲＡＭ６のアドレス領域に含まれておらず、かつ、メモリマップされたレジスタのアドレス領域にも含まれていなかった場合は、アドレスバス７に要求アドレスａｄｄ、データバス８にライトデータｗｒｄを載せてＲＯＭ９に対してデータの書き込みを要求する。
【００３３】
本実施形態のプロセッサ１０は、外部から与えられるクロックＣＬＯＣＫによって駆動されている。クロック制御部５は、この外部クロックＣＬＯＣＫをもとに第１、第２の内部クロックｂｃｋ，ｃｃｋを発生する。そして、バス制御部４に対しては第１の内部クロックｂｃｋを供給し、それ以外の命令フェッチ制御部１、命令実行部２およびキャッシュユニット３には第２の内部クロックｃｃｋを供給している。
【００３４】
このクロック制御部５に対しては、内部クロックｂｃｋ，ｃｃｋの供給を停止させることを指示するクロック停止信号ｓｔｏｐが命令実行部２から必要に応じて与えられる。すなわち、このプロセッサ１０は、命令実行部２においてクロック停止用の命令を実行することにより、内部クロックｂｃｋ，ｃｃｋの供給を自ら停止させることができるようになっている。クロックの停止モードとして、２つの内部クロックｂｃｋ，ｃｃｋを共に停止させる第１のモードと、第２の内部クロックｃｃｋのみを停止させる第２のモードとの２つがある。
【００３５】
一旦停止させたクロック供給を再開するためには、初期起動リセット信号ＰＲＳＴ（本発明の第１のリセット信号）あるいは再起動リセット信号ＨＲＳＴ（本発明の第２のリセット信号）の何れかをアサートする方法か、バス制御部４が備えるリセットレジスタ４ｂに図示しない外部バスマスタから書き込みを行い、上記再起動リセット信号ＨＲＳＴあるいは次に述べるプログラムリセット信号ＳＲＳＴに相当するリセット信号（起動信号ｗｕｐ）をバス制御部４の内部で生成してアサートする方法がある。後者の方法を採用する場合には、第１の内部クロックｂｃｋはバス制御部４に供給され続けている必要があるため、この場合は上述の第２のモードが採用される。
【００３６】
なお、図１中には詳細に示していないが、上記初期起動リセット信号ＰＲＳＴおよび再起動リセット信号ＨＲＳＴは、プロセッサ１０内の各構成（命令フェッチ制御部１、命令実行部２、キャッシュユニット３、バス制御部４およびクロック制御部５）に与えられるようになっている。本実施形態では、これらのリセット信号の他に、内部クロックｂｃｋ，ｃｃｋの供給停止および再開とは関係なく独自にリセット動作を行うプログラムリセット信号ＳＲＳＴ（本発明の第３のリセット信号）も用意されている。このプログラムリセット信号ＳＲＳＴは、例えばデバッグを行うときなどに利用され、命令フェッチ制御部１および命令実行部２に対してのみ供給されるようになっている。
【００３７】
図３は、上記命令フェッチ制御部１の詳細な構成例を示す図である。図３において、要求命令アドレスｉａは、命令アドレスレジスタ１１に保持され、キャッシュユニット３へと供給される。プロセッサ１０が順次命令を実行している状態では、次の要求命令アドレスｉａとして、命令アドレスレジスタ１１に保持されている現在のアドレスに対して値"１６"が加算器１２で加算され、その結果がセレクタ１３，１４にて選択されて命令アドレスレジスタ１１に保持される。このインクリメント値"１６"は、プロセッサ１０の命令データバスのバス幅が指定されている。
【００３８】
また、プロセッサ１０が分岐命令を実行した場合には、命令実行部２から分岐したことを通知する信号ｂがアサートされる。この場合は、次の要求命令アドレスｉａとして、命令実行部２から送られてくる分岐先アドレスｂａｄがセレクタ１３にて選択されて、セレクタ１４を介して命令アドレスレジスタ１１に保持される。
【００３９】
また、初期起動リセット信号ＰＲＳＴ、再起動リセット信号ＨＲＳＴ、プログラムリセット信号ＳＲＳＴおよびリセットレジスタ４ｂからの起動信号ｗｕｐ（以下、これら４つの信号を総称して単にリセット信号と呼ぶ）によりプロセッサ１０の初期化が行われている状態では、外部から与えられるアドレス選択信号ＭＳに応じてセレクタ１５により選択された何れかのアドレス（0x0000＿0000または0xFF00＿0000）が、上記リセット信号に応じてセレクタ１４にて選択されて命令アドレスレジスタ１１に保持される。
【００４０】
例えば、初期起動リセット信号ＰＲＳＴが入力されるとき、つまり、装置の電源が投入されたときには、アドレス選択信号ＭＳの値が"１"に設定され、ＲＯＭ９のアドレス領域の先頭アドレスを表す固定値"0xFF00＿0000"が選択されて命令アドレスレジスタ１１に保持される。一方、再起動リセット信号ＨＲＳＴが入力されるとき、つまり、内部クロックｂｃｋ，ｃｃｋの供給停止状態からクロック供給を再開するときには、アドレス選択信号ＭＳの値が"０"に設定され、ＲＡＭ６のアドレス領域の先頭アドレスを表す固定値"0x0000＿0000"が選択されて命令アドレスレジスタ１１に保持される。
プログラムリセット信号ＳＲＳＴや起動信号ｗｕｐが入力されたときも、再起動リセット信号ＨＲＳＴが入力されたときと同様である。
【００４１】
これにより、リセット信号がネゲートされて初期化プログラムの命令フェッチを最初に行おうとした際の要求命令アドレスｉａは、ＲＯＭ９の先頭アドレス"0xFF00＿0000"あるいはＲＡＭ６の先頭アドレス"0x0000＿0000"の何れかとなる。このように、アドレス選択信号ＭＳにより選択動作を行うセレクタ１４，１５によって本発明のアドレス選択手段が構成される。
【００４２】
また、命令フェッチ制御ロジック１６は、与えられるリセット信号に応じて、プロセッサ１０の命令実行状況やキャッシュ制御部の状況等に従って命令フェッチ要求ｉａｖａｌの発行の可否を決定する。命令アドレスレジスタ１１内に保持された要求命令アドレスｉａは、キャッシュユニット３に対して命令フェッチ要求ｉａｖａｌがアサートされてこれが受け付けられるまでは、更新されることはない。
【００４３】
図４は、バス制御部４の領域指定レジスタ４ａを含む部分の詳細な構成例を示す図であり、アドレスおよびデータの流れを示している。図４に示すように、バス制御部４は、バスＩ／Ｆ２１と、メモリ制御部２２と、外部バス制御部２３とを備えている。上記バスＩ／Ｆ２１は、上述の領域指定レジスタ４ａを有するバスコマンド制御部２４と、リードデータパス２５と、ライトデータパス２６とを備えている。
【００４４】
また、上記メモリ制御部２２は、メモリ−バスＩ／Ｆ（ＭＢＩ）２７と、メモリＩ／Ｆ（ＭＩ）２８と、メモリ−外部バスＩ／Ｆ（ＭＥＩ）２９とを備えている。また、上記外部バス制御部２３は、外部バス−バスＩ／Ｆ（ＥＢＩ）３０と、外部バス−メモリＩ／Ｆ（ＥＭＩ）３１と、外部バスＩ／Ｆ３２とを備えている。
【００４５】
以下に、命令フェッチ時におけるバス制御部４の動作を説明する。キャッシュユニット３からの命令フェッチ要求を受けたバス制御部４は、バスコマンド制御部２４において、当該命令フェッチ要求と共に与えられた要求アドレスａｄｄと、領域指定レジスタ４ａにあらかじめ設定されている先頭アドレスＡＳＲおよび領域サイズＡＭＲの値とを比較し、要求アドレスａｄｄがＲＡＭ６のアドレス領域内のものかどうかを判定する。
【００４６】
このアドレス比較の結果、命令フェッチ要求がＲＡＭ６に対する要求であった場合、バスコマンド制御部２４は、メモリ制御部２２に対して命令フェッチ要求を発行する。この命令フェッチ要求をメモリ−バスＩ／Ｆ２７で受けたメモリ制御部２２は、メモリＩ／Ｆ２８を介して接続されたＲＡＭ６をアクセスして、上記要求アドレスａｄｄに対応する命令データを読み出す。読み出された命令データは、メモリ−バスＩ／Ｆ２７およびリードデータパス２５を介してキャッシュユニット３へと送り返され、最終的に命令実行部２へと送られる。
【００４７】
一方、上記のアドレス比較の結果、命令フェッチ要求が外部バス７，８上に接続されたＲＯＭ９に対する要求であった場合、バスコマンド制御部２４は、外部バス制御部２３に対して命令フェッチ要求を発行する。この命令フェッチ要求を外部バス−バスＩ／Ｆ３０で受けた外部バス制御部２３は、バスの調停を行い、外部バス７，８上にメモリトランザクションを発行してその応答を待つ。
【００４８】
そして、外部バス７，８上のＲＯＭ９から読み出された命令データが外部バス７，８に出力されると、外部バス制御部２３はその命令データを外部バスＩ／Ｆ３２を介して取り込む。こうして取り込まれた命令データは、外部バス−バスＩ／Ｆ３０およびリードデータパス２５を介してキャッシュユニット３へと送り返され、最終的に命令実行部２へと送られる。
【００４９】
図５は、上記図４に示したバスコマンド制御部２４内でアドレス判定を行う部分の詳細な構成例を示す図である。図５に示すように、バスコマンド制御部２４は、上述の領域指定レジスタ４ａと、２つの比較器４１，４２と、２つのバッファ４３，４５と、ＮＡＮＤゲート４４とを備えている。
【００５０】
一方の比較器４１は、メモリマップされたレジスタのアドレス領域と、キャッシュユニット３から与えられる要求アドレスａｄｄとを比較する。この比較の結果、メモリマップされたレジスタのアドレス領域内に要求アドレスａｄｄが含まれている場合（信号ｍａｔｃｈ１がアサートされた場合）には、バッファ４３を介して命令フェッチ要求のコマンドをレジスタに対して発行する。
【００５１】
また、他方の比較器４２は、キャッシュユニット３から与えられる要求アドレスａｄｄと、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの対により指定されるＲＡＭ６のアドレス領域とを比較する。この比較の結果、先頭アドレスＡＳＲに設定された開始アドレスから領域サイズＡＭＲで指定されるサイズ内に要求アドレスａｄｄが含まれている場合（信号ｍａｔｃｈ２がアサートされた場合）には、バッファ４５を介して命令フェッチ要求のコマンドをＲＡＭ６に対して発行する。
【００５２】
さらに、上記２つの比較器４１，４２における比較の結果、キャッシュユニット３から与えられる要求アドレスａｄｄが、メモリマップされたレジスタのアドレス領域にもＲＡＭ６のアドレス領域にも含まれていない場合（信号ｍａｔｃｈ１，２が両方ともアサートされない場合）には、ＮＡＮＤゲート４４を介して命令フェッチ要求のコマンドを外部バス７，８に対して発行する。
【００５３】
図６は、バス制御部４のリセットレジスタ４ｂを含む部分の詳細な構成例を示す図であり、当該リセットレジスタ４ｂに対するデータ書き込みの流れを示している。図６に示すように、リセットレジスタ４ｂは、ＰＤ，ＨＤ，ＳＤ，ＨＳ，ＳＳという５ビット分のレジスタから構成されている。
【００５４】
このうちＰＤ，ＨＤ，ＳＤの各ビットは、直前のリセット要因を示すためのレジスタであり、ＰＤビットは電源投入時における初期起動リセット、ＨＤビットはクロック供給再開時における再起動リセット、ＳＤビットはデバッグ時等におけるプログラム再起動リセットであることを示す。これらの３ビットは、リセット要因の識別情報を保持する本発明の情報保持手段に相当する。
【００５５】
また、残りのＨＳ，ＳＳの２ビットは、図示しない外部バスマスタからここに書き込みを行うことにより、再起動リセット信号ＨＲＳＴあるいはプログラムリセット信号ＳＲＳＴに相当するリセット信号（ＨＲＳＴ'、ＳＲＳＴ'）をバス制御部４の内部で発生するためのものであり、本発明のリセット内部発生手段を構成する。すなわち、このＨＳビットおよびＳＳビットの出力は、それぞれ再起動リセット信号ＨＲＳＴおよびプログラムリセット信号ＳＲＳＴと共にＯＲゲート５１，５２に供給され、何れか有効な方が後段に供給される。
【００５６】
上記リセットレジスタ４ｂ内のＰＤ，ＨＤ，ＳＤの各ビットと、初期起動リセット信号ＰＲＳＴ、再起動リセット信号ＨＲＳＴおよびプログラムリセット信号ＳＲＳＴとの間には、数個の論理ゲート５１〜５７が適当に配置されており、ＰＤ，ＨＤ，ＳＤの３つのビットうち何れか１つのビットのみが"１"に設定されるようになっている。
【００５７】
すなわち、初期起動リセット信号ＰＲＳＴがアサートされた場合にはＰＤビットが"１"にセットされる。また、外部からの再起動リセット信号ＨＲＳＴがアサートされた場合、あるいはＨＳビットに書き込みが行われて内部での再起動リセット信号ＨＲＳＴ'がアサートされた場合には、ＨＤビットが"１"にセットされる。また、外部からのプログラムリセット信号ＳＲＳＴがアサートされた場合、あるいはＳＳビットに書き込みが行われて内部でのプログラムリセット信号ＳＲＳＴ'がアサートされた場合には、ＳＤビットが"１"にセットされる。
【００５８】
また、上記数個の論理ゲート５１〜５７を適当に配置することにより、３種類のリセット間に、
ＰＲＳＴ＞ＨＲＳＴ＞ＳＲＳＴ
の優先順位を持たせている。そして、新たにリセット要因が発生するまでは、直前のリセット要因をＰＤ，ＨＤ，ＳＤの各ビットに保持し続けるようになっている。
【００５９】
図７は、クロック制御部５の構成例を示す図である。クロック制御部５は、外部から供給された外部クロックＣＬＯＣＫから２つの内部クロックｂｃｋ，ｃｃｋを発生し、これをプロセッサ１０の内部へ供給している。すなわち、本実施形態では、図１に示したように、バス制御部４とその他の部分への内部クロックはｂｃｋ，ｃｃｋの別系統で供給されている。
【００６０】
また、本実施形態では、命令実行部２からの指示により、プロセッサ１０内部へのクロック供給を一時的に停止させることを可能としている。例えば、消費電力を低減させるために、プロセッサ１０のアイドル状態が一定時間続くと、命令実行部２からクロック制御部５に対してクロック停止信号ｓｔｏｐがアサートされる。
【００６１】
このとき、バス制御部４も含めたプロセッサ１０全体に対する内部クロックｂｃｋ，ｃｃｋを共に停止させる第１のモードと、プロセッサ１０内のバス制御部４を除く部分に対する第２の内部クロックｃｃｋのみを停止させる第２のモードとの何れかを選択することができる。選択されたモードに応じて、命令実行部２からクロック停止信号ｓｔｏｐｂｃあるいはｓｔｏｐｃがアサートされる。
【００６２】
プロセッサ１０の全体を停止させるためのクロック停止信号ｓｔｏｐｂｃは、２つのＯＲゲート６１，６５に供給される。ＯＲゲート６１を通過したクロック停止信号ｓｔｏｐｂｃは、Ｃレジスタ６２に保持された後、ＡＮＤゲート６４の負論理端子に供給され、ＡＮＤゲート６４の正論理端子に供給される外部クロックＣＬＯＣＫとの論理積がとられて内部クロックｃｃｋとして出力される。
【００６３】
一方、ＯＲゲート６５を通過したクロック停止信号ｓｔｏｐｂｃは、Ｂレジスタ６６に保持された後、ＡＮＤゲート６８の負論理端子に供給され、ＡＮＤゲート６８の正論理端子に供給される外部クロックＣＬＯＣＫとの論理積がとられて内部クロックｂｃｋとして出力される。
【００６４】
このような構成により、クロック停止信号ｓｔｏｐｂｃがアサートされたときには、ＡＮＤゲート６４，６８の負論理端子には共に"１"の信号が入力されるので、２つの内部クロックｂｃｋ，ｃｃｋの供給が停止されることとなる。
【００６５】
また、プロセッサ１０内のバス制御部４以外を停止させるためのクロック停止信号ｓｔｏｐｃは、ＯＲゲート６１にのみ供給される。このＯＲゲート６１を通過したクロック停止信号ｓｔｏｐｃは、Ｃレジスタ６２に保持された後、ＡＮＤゲート６４の負論理端子に供給され、ＡＮＤゲート６４の正論理端子に供給される外部クロックＣＬＯＣＫとの論理積がとられて内部クロックｃｃｋとして出力される。
【００６６】
このような構成により、クロック停止信号ｓｔｏｐｃがアサートされたときには、ＡＮＤゲート６４の負論理端子には"１"の信号が入力されるので、内部クロックｃｃｋの供給が停止されることとなる。一方、クロック停止信号ｓｔｏｐｃはＯＲゲート６５には供給されないので、当該クロック停止信号ｓｔｏｐｃのアサートによってＡＮＤゲート６８の負論理端子に"１"の信号が入力されることはなく、内部クロックｂｃｋの供給は継続して行われることとなる。
【００６７】
なお、上記ＯＲゲート６１，６５には、それぞれＡＮＤゲート６３，６７の出力も供給されている。ＡＮＤゲート６３は、その正論理端子に供給されるＣレジスタ６２の出力と、負論理端子に供給される起動信号ｗｕｐとの論理積をとってＯＲゲート６１に供給する。また、ＡＮＤゲート６７は、その正論理端子に供給されるＢレジスタ６６の出力と、負論理端子に供給される起動信号ｗｕｐとの論理積をとってＯＲゲート６５に供給する。
【００６８】
また、上記Ｃレジスタ６２およびＢレジスタ６６の記憶内容は、初期起動リセット信号ＰＲＳＴ、再起動リセット信号ＨＲＳＴ、あるいは外部バスマスタ等からリセットレジスタ４ｂ（図６のＨＳビット）への書き込みにより発生する内部再起動リセット信号ＨＲＳＴ'をアサートすることによって書き換えられるようになっている。
【００６９】
例えば、バス制御部４に対してのみ内部クロックｂｃｋが供給されている状態では、内部再起動リセット信号ＨＲＳＴ'のアサートにより、バス制御部４以外の部分に対する内部クロックｃｃｋの供給を再開できるように構成されている。また、プロセッサ１０の全体に対して内部クロックｂｃｋ，ｃｃｋの供給が停止された状態では、初期起動リセット信号ＰＲＳＴあるいは再起動リセット信号ＨＲＳＴをアサートすることにより、当該内部クロックｂｃｋ，ｃｃｋの供給を再開できるように構成されている。
【００７０】
次に、以上のように構成した本実施形態によるプロセッサ１０を単独で用いた場合の起動シーケンスについて、以下に説明する。
まず、装置の電源投入時における初期起動リセット信号ＰＲＳＴによる起動処理シーケンスについて説明する。
【００７１】
装置の電源投入時には、まず、初期起動リセット信号ＰＲＳＴがアサートされてハードウェア的な初期化処理が行われる。このとき、バス制御部４内の領域指定レジスタ４ａやリセットレジスタ４ｂを含むプロセッサ１０内の各種レジスタの値が、例えば全て"０"に初期化される。
【００７２】
そして、このハードウェア的な初期化処理を行うのに必要十分な時間だけ初期起動リセット信号ＰＲＳＴがアサートされ、電源が安定すると、上記初期起動リセット信号ＰＲＳＴがネゲートされる。初期起動リセット信号ＰＲＳＴがネゲートされると、続いてソフトウェア的な初期化処理を行うために、リセットベクタで指示されるアドレスに従って初期化プログラムの読み出しが行われる。
【００７３】
電源投入直後では、ＲＡＭ６に有効な初期化プログラムのデータが保持されていないため、アドレス選択信号ＭＳの値は"１"に設定されている。これにより命令フェッチ制御部１は、初期アドレス"0xFF00＿0000"からの命令フェッチ要求を発行する。
【００７４】
これに応じてバス制御部４では、与えられた"0xFF00＿0000"の要求アドレスａｄｄが、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲにより指定されるＲＡＭ６のアドレス領域に含まれているか否かを判定し、その結果に応じてＲＡＭ６あるいはＲＯＭ９の何れかにアクセスする。この時点では、ＲＡＭ６のアドレス領域はφに初期化されており、与えられた要求アドレスａｄｄもＲＯＭ９のアドレス領域を指定しているため、バス制御部４は外部バス７，８上に接続されたＲＯＭ９に対してアクセスすることになる。
【００７５】
ＲＯＭ９に格納されている初期化プログラムは、その最初のシーケンスにおいてリセットレジスタ４ｂの値を参照するように規定されている。電源投入直後においては、リセットレジスタ４ｂ内のＰＤビットが"１"にセットされていることを確認して、初期起動リセット信号ＰＲＳＴがネゲートされた場合に必要な処理を含むルーチンを実行する。
【００７６】
このようにしてプロセッサ１０が起動した後、ＲＡＭ６をアクセスするために必要なアドレス情報（先頭アドレスＡＳＲおよび領域サイズＡＭＲ）を領域指定レジスタ４ａに設定する。図２の例においては、先頭アドレスＡＳＲに"0x0000＿0000"、領域サイズＡＭＲに"0x01FF＿FFFF"の値を設定し、ＲＡＭ６のアドレス領域として３２Ｍバイトを実装する。そして、領域指定レジスタ４ａに必要な値を設定した後は、アドレス選択信号ＭＳの値を"０"に切り替えるとともに、外部バス７，８上に接続されたＲＯＭ９あるいはその他のデバイスから再起動用のプログラムをＲＡＭ６にロードしておく。
【００７７】
次に、内部クロックの供給再開時における再起動リセット信号ＨＲＳＴによる起動処理シーケンスについて説明する。
ここでは一例として、プロセッサ１０の起動後、必要とされる処理が一定時間行われなかったことを契機としてプロセッサ１０全体に内部クロックｂｃｋ，ｃｃｋの供給を停止させ、その後必要性が生じた時点で外部からの再起動リセット信号ＨＲＳＴにより再起動を行う場合の再起動シーケンスを説明する。
【００７８】
外部より再起動リセット信号ＨＲＳＴがアサートされると、クロック制御部５内で内部クロックｂｃｋ，ｃｃｋの供給を停止させているレジスタ（図７のＣレジスタ６２およびＢレジスタ６６）がリセットされ、内部クロックｂｃｋ，ｃｃｋの供給が再開される。これと同時に、メモリアクセスに必要な情報（領域指定レジスタ４ａ内の先頭アドレスＡＳＲ、領域サイズＡＭＲなど）を除いてハードウェア的な初期化処理が行われる。
【００７９】
なお、プロセッサ１０に接続されるローカルメモリとしてＳＤＲＡＭを用いた場合、プロセッサ１０は、上述の先頭アドレスＡＳＲや領域サイズＡＭＲの情報を格納する領域指定レジスタ４ａの他に、メモリアクセスに必要な情報として、ＤＲＡＭの品種毎に異なるＤＲＡＭのオペレーション間の最小サイクル数を設定するコントロールレジスタ、ＤＲＡＭに対するアクセスのモードを設定するアクセスモード制御レジスタ、ＤＲＡＭのモード設定時にＤＲＡＭに対して書き込む情報を設定するモードセットレジスタ、ＤＲＡＭのタイプ、バス幅、直結／ＤＩＭＭ使用などの情報を設定するコンフィギュレーションレジスタ、ＤＲＡＭのＲＡＳアドレスビット数、ＣＡＳアドレスビット数、バンクアドレスビット数を設定するアドレスナンバレジスタ、ＤＲＡＭコントローラの状態を表すステータスレジスタ、ＤＲＡＭのオートリフレッシュまたはセルフリフレッシュを設定するリフレッシュコントロールレジスタ、オートリフレッシュ時のリフレッシュ間隔を設定するリフレッシュタイマレジスタなどを備える。これらのレジスタは何れも、初期起動リセット信号ＰＲＳＴによっては初期化されるが、再起動リセット信号ＨＲＳＴやプログラムリセット信号ＳＲＳＴによっては初期化されない。
【００８０】
上記ハードウェア的な初期化処理の後、再起動リセット信号ＨＲＳＴがネゲートされると、アドレス選択信号ＭＳ（＝０）により選択されるアドレス"0x0000＿0000"からの命令フェッチが開始される。このとき、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの値は、再起動リセット信号ＨＲＳＴのアサートによっては初期化されていないので、このときの命令フェッチ要求はＲＡＭ６へと発行される。これにより、低速なＲＯＭ９へのアクセスを不要とし、プロセッサ１０の再起動処理を高速に行うことができる。
【００８１】
なお、ここでアドレス選択信号ＭＳの値として"１"を設定することにより、ＲＯＭ９に対して命令フェッチ要求を発行するように指示することも可能である。プロセッサ１０の再起動時にＲＯＭ９からの命令フェッチが実行される場合には、ＲＯＭ９に格納されている初期化プログラムは、その最初のシーケンスにおいてリセットレジスタ４ｂの値を参照し、リセットレジスタ４ｂ内のＨＤビットがセットされていることを確認することで、既に電源投入時に領域指定レジスタ４ａに設定されている情報の再設定処理を省くことができ、その分だけプロセッサ１０の再起動処理を高速化することができる。
【００８２】
なお、内部クロックｃｃｋの供給停止後に外部からの再起動リセット信号ＨＲＳＴによりプロセッサ１０の再起動を行う場合や、内部クロックｂｃｋ，ｃｃｋあるいは内部クロックｃｃｋの供給停止後に、内部発生した再起動リセット信号ＨＲＳＴ'によりプロセッサ１０の再起動を行う場合の再起動シーケンスについても、その動作は以上と同様である。
【００８３】
次に、プログラムリセット信号ＳＲＳＴによる起動処理シーケンスについて説明する。
外部よりプログラムリセット信号ＳＲＳＴがアサートされると、命令実行部２において現在実行中のプログラムが強制的に中断され、命令フェッチ制御部１に対してハードウェア的な初期化処理が行われる。
【００８４】
その後、プログラムリセット信号ＳＲＳＴがネゲートされると、アドレス選択信号ＭＳ（＝０）により選択されるアドレス"0x0000＿0000"からの命令フェッチが開始される。このとき、領域指定レジスタ４ａ内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの値は、プログラムリセット信号ＳＲＳＴのアサートによっては初期化されていないので、このときの命令フェッチ要求はＲＡＭ６へと発行される。これにより、低速なＲＯＭ９へのアクセスを不要とし、プロセッサ１０の再起動処理を高速に行うことができる。
【００８５】
なお、ここでアドレス選択信号ＭＳの値として"１"を設定することにより、ＲＯＭ９に対して命令フェッチ要求を発行するように指示することも可能である。プログラムリセット時にＲＯＭ９からの命令フェッチが実行される場合には、ＲＯＭ９に格納されている初期化プログラムは、その最初のシーケンスにおいてリセットレジスタ４ｂの値を参照し、リセットレジスタ４ｂ内のＳＤビットがセットされていることを確認することで、命令フェッチ制御部１のレジスタに対してのみ必要な再設定処理を行い、その他の不要な処理を省くことができ、その分だけプロセッサ１０の再起動処理を高速化することができる。
【００８６】
以上詳しく説明したように、本実施形態のプロセッサ１０によれば、ソフトウェア的な初期化処理を行う際に、初期起動リセット信号ＰＲＳＴ、再起動リセット信号ＨＲＳＴ、プログラムリセット信号ＳＲＳＴの各リセット信号とアドレス選択信号ＭＳとを用いた指示に応じて、外部バス７，８に接続されたＲＯＭ９からの起動か、プロセッサ１０にローカルメモリとして接続されたＲＡＭ６からの起動かを選択することができる。
【００８７】
これにより、電源投入後において内部クロックｂｃｋ，ｃｃｋの供給が停止された後の再起動時には、高速なＲＡＭ６から再起動用の初期化プログラムを読み出してプロセッサ１０の起動を行うことができ、その再起動処理を高速に行うことができる。また、再起動時にＲＯＭ９に対してアクセスする場合でも、リセットレジスタ４ｂの値を読むことで、ＲＯＭ９に格納されている初期化プログラム内で分岐して、リセット内容に応じた起動処理のみを選択的に実行することができる。したがって、低消費電力化のためにプロセッサ１０でクロック供給の停止と起動が頻繁に行われるようなシステムでも、システムの起動待ちという無駄な時間を格段に短くすることができる。
【００８８】
また、上記のようなプロセッサ１０を共有バスに複数接続してマルチプロセッサシステムを構成した場合においても、例えばスレーブプロセッサで内部クロックｂｃｋ，ｃｃｋの供給が一時的に停止された後の再起動時において、当該スレーブプロセッサは高速なＲＡＭ６から再起動用の初期化プログラムを読み出すことができ、その再起動処理を高速に行うことができる。その際、スレーブプロセッサからは外部バス７，８に対して命令フェッチ要求を発行することがないので、複数のプロセッサからＲＯＭ９へのアクセスが競合することがなく、バス調停の処理も不要とすることができる。
【００８９】
さらに、上述のようにマルチプロセッサシステムを構成した場合でも、それぞれのプロセッサにおいて実行すべき初期化プログラムを格納したメモリの先頭アドレスがアドレス選択信号ＭＳにより選択される。したがって、どのプロセッサがＲＯＭ９内のどのプログラムを実行するのかを判別するための機構も不要となり、システムの構成を簡素化することができる。
【００９０】
次に、本発明によるデータ処理システムの第２の実施形態について説明する。
図８は、第２の実施形態によるプロセッサをスレーブプロセッサとして搭載したマルチプロセッサシステムの構成例を示すブロック図である。
【００９１】
図８において、７１はマスタープロセッサ、７２はスレーブプロセッサであり、それぞれに対してローカルメモリであるＲＡＭ７３，７４が接続されている。共有バスである外部バス７，８には、これらのマスタープロセッサ７１、スレーブプロセッサ７２の他に、ＲＯＭ９、共有メモリ７５、メモリ−メモリ間のダイレクトデータ転送を行うＤＭＡＣ（Direct Memory Access Controller ）７６、スレーブプロセッサ７２を制御する信号を生成するＡＳＩＣ（Application Specific Intergrated Ciucuit）７７が接続されている。
【００９２】
上記マスタープロセッサ７１は、電源投入後は常時動作しているものであり、通常のプロセッサを用いることが可能である。一方、スレーブプロセッサ７２は、電源投入後において、低消費電力化のために内部クロックの供給停止および起動を行うことができるようになされたものであり、本実施形態に特有のプロセッサが用いられる。
【００９３】
図９は、本実施形態に係るスレーブプロセッサ７２の構成例を示すブロック図である。
本実施形態のスレーブプロセッサ７２は、図１に示したプロセッサ１０とほぼ同様の構成を有するが、命令フェッチ制御部８１およびバス制御部８４の構成が図１と異なっている。また、命令フェッチ制御部８１には、プログラムリセット信号ＳＲＳＴやアドレス選択信号ＭＳに加えて、起動抑止信号ＷＡＩＴが入力されている。
【００９４】
上記命令フェッチ制御部８１は、図１０のように構成されている。図１０に示すように、本実施形態の命令フェッチ制御部８１では、図３に示した命令フェッチ制御部１と比べて、起動抑止信号ＷＡＩＴの論理を反転するインバータ８５、このインバータ８５の出力と命令フェッチ制御ロジック１６の出力との論理積をとるＡＮＤゲート８６とが追加されている。
【００９５】
このように構成することにより、命令フェッチ制御ロジック１６がプロセッサ７２の命令実行状況やキャッシュ制御部の状況等を判断して命令フェッチ要求ｉａｖａｌの発行が可能な状態となっても、さらに外部からの起動抑止信号ＷＡＩＴがネゲートされない限り、命令フェッチ要求ｉａｖａｌはキャッシュユニット３に対して発行されることはない。このように、インバータ８５およびＡＮＤゲート８６によって本発明の起動抑止手段が構成される。
【００９６】
また、上記バス制御部８４は、図４に示したのとほぼ同様に構成されている。ただし、本実施形態において外部バス制御部２３は、規定されたプロトコルに従って外部バス７，８上に発生したトランザクションが他のデバイスから自プロセッサに対する要求であった場合、そのコマンドを取り込んで該当する処理を開始する機構を有している。
【００９７】
具体的には、外部バス制御部２３は、外部バス７，８上に発生したトランザクションを常に監視し、有効なトランザクションが生じた場合に、そのアドレス情報を取り込んで自プロセッサ内の資源に対してあらかじめ割り当てられたアドレス情報との比較を行う。この比較の結果、自プロセッサ内の資源に対する要求と認識された場合は、そのトランザクションのコマンドを取り込み、上記アドレス情報によって指定される内部資源へのアクセスを開始する。
【００９８】
図１１は、この外部バス制御部２３の構成例を示す図である。図１１に示すように、本実施形態の外部バス制御部２３は、キャッシュユニット３からのコマンドとライトデータとを保持する４段のキャッシュコマンドバッファ９１、外部バス７，８からの応答データをキャッシュユニット３へ送り出すための応答データバッファ９２、外部バス７，８からのコマンドとライトデータとを保持する４段のバスコマンドバッファ９３、ローカルメモリであるＲＡＭ７４からの読み出しデータを受ける読出データバッファ９４を備えている。
【００９９】
外部バス制御部２３は更に、上記４段のキャッシュコマンドバッファ９１に格納されたデータの何れかを選択するセレクタ９５、上記４段のバスコマンドバッファ９３に格納されたデータの何れかを選択するセレクタ９６、アドレスバス７の調停を行うコマンド調停部９７、データバス８の調停を行うデータ調停部９８およびメモリマップされたレジスタ９９を備えている。
【０１００】
上記レジスタ９９は、図９に示した領域指定レジスタ４ａおよびリセットレジスタ４ｂに相当するものであり、ＲＡＭ７４の先頭アドレスＡＳＲおよび領域サイズＡＭＲの情報、図６に示したリセット種識別情報ＰＤ，ＨＤ，ＳＤおよび内部リセット書込情報ＨＳ，ＳＳを保持している。このレジスタ９９には、キャッシュユニット３からのコマンド、外部バス７，８からのコマンドの両方がアクセスできるように構成されている。
【０１０１】
このように、上述した第１の実施形態では先頭アドレスＡＳＲおよび領域サイズＡＭＲを格納する領域指定レジスタ４ａはバスＩ／Ｆ２１内に備えられていたが（図４参照）、第２の実施形態では、これらの情報を格納するレジスタ９９は、外部バス制御部２３内に備えられている。この場合、バスＩ／Ｆ２１は、外部バス制御部２３からこのレジスタ９９に設定された値を受け取っている。
【０１０２】
次に、以上のように本実施形態によるプロセッサ７２をスレーブプロセッサとして用いたマルチプロセッサシステムの起動シーケンスについて、以下に説明する。
まず、装置の電源投入時における初期起動リセット信号ＰＲＳＴによる起動処理シーケンスについて説明する。
【０１０３】
装置の電源投入時には、マスタープロセッサ７１に対しては初期起動リセット信号ＰＲＳＴがアサートされ、スレーブプロセッサ７２に対しては初期起動リセット信号ＰＲＳＴと起動抑止信号ＷＡＩＴとがアサートされる。初期起動リセット信号ＰＲＳＴがアサートされると、マスタープロセッサ７１およびスレーブプロセッサ７２の両方にてハードウェア的な初期化処理が行われる。このとき、先頭アドレスＡＳＲや領域サイズＡＭＲの情報を含むプロセッサ７１，７２内のレジスタの値が、例えば全て"０"に初期化される。
【０１０４】
そして、ハードウェア的な初期化処理が行われ、電源が安定すると、上記初期起動リセット信号ＰＲＳＴがネゲートされる。マスタープロセッサ７１では、初期起動リセット信号ＰＲＳＴがネゲートされると、続いてソフトウェア的な初期化処理を行うために、リセットベクタで指示されるアドレスに従って、外部バス７，８に接続されたＲＯＭ９から初期化プログラムの読み出しが行われる。このとき、起動抑止信号ＷＡＩＴはアサートされたままである。そのため、スレーブプロセッサ７２では、命令フェッチ要求ｉａｖａｌは発行されず、初期化プログラムの読み出しは行われない。
【０１０５】
マスタープロセッサ７１における初期化処理が完了すると、マスタープロセッサ７１は、スレーブプロセッサ７２の内部資源（先頭アドレスＡＳＲ、領域サイズＡＭＲの情報など）を外部バス７，８を介して適切な値に設定する。つまり、マスタープロセッサ７１から図１１のデータ調停部９８を介してレジスタ９９に書き込みを行うことにより、スレーブプロセッサ７２に接続されたＲＡＭ７４のアドレス領域を適切に設定する。そして、マスタープロセッサ７１は、ＤＭＡＣ７６を起動して、スレーブプロセッサ７２が必要とする初期化プログラムを、例えばＲＯＭ９からＲＡＭ７４に転送する。
【０１０６】
このとき、スレーブプロセッサ７２が備える図１１の外部バス制御部２３においては、メモリ−メモリ間のデータダイレクト転送のためにＤＭＡＣ７６よりアドレスバス７を介して与えられたアドレスが、レジスタ９９に設定された先頭アドレスＡＳＲおよび領域サイズＡＭＲの対で指定されるＲＡＭ７４のアドレス領域内のものかどうかを判定する。
【０１０７】
この場合、レジスタ９９内の先頭アドレスＡＳＲおよび領域サイズＡＭＲの各情報には、事前にＲＡＭ７４のアドレス領域がセットされているので、外部バス制御部２３は、ＲＯＭ９からデータバス８を介して送られてきた初期化プログラムのデータをメモリ制御部２２に送り、ＲＡＭ７４の該当するアドレス領域に対して初期化プログラムを格納することになる。
【０１０８】
本実施形態では、先頭アドレスＡＳＲおよび領域サイズＡＭＲの情報がバスＩ／Ｆ２１ではなく外部バス制御部２３内に保持されているので、バスＩ／Ｆ２１を用いることなく、メモリ制御部２２と外部バス制御部２３だけで初期化プログラムの転送を行うことができる。また、ＤＭＡＣ７６はマスタープロセッサ７１と独立して転送処理を実行するため、マスタープロセッサ７１の処理部を煩わせることなく、スレーブプロセッサ７２のＲＡＭ７４に必要なソフトウェアの転送処理を行うことができる。
【０１０９】
ＤＭＡＣ７６は、転送処理の完了を割り込み信号を用いてマスタープロセッサ７１に通知する。ＤＭＡＣ７６からの転送完了割り込み信号を検出したマスタープロセッサ７１は、その後必要が生じた時点でＡＳＩＣ７７にアクセスし、起動抑止信号ＷＡＩＴをネゲートさせる。この起動抑止信号ＷＡＩＴがネゲートされることにより、スレーブプロセッサ７２では、命令フェッチ制御部８１が、"０"の値が設定されたアドレス選択信号ＭＳによって選択される初期アドレス"0x0000＿0000"からの命令フェッチ要求ｉａｖａｌをキャッシュユニット３を介してバス制御部８４に発行する。
【０１１０】
このとき、バス制御部８４内のバスコマンド制御部２４では、当該命令フェッチ要求ｉａｖａｌと共に与えられる要求アドレスａｄｄと、外部バス制御部２３内のレジスタ９９から受け取った先頭アドレスＡＳＲおよび領域サイズＡＭＲの値とを比較し、要求アドレスａｄｄがＲＡＭ７４のアドレス領域内のものかどうかを判定する。
【０１１１】
ここでは、先頭アドレスＡＳＲおよび領域サイズＡＭＲにはＲＡＭ７４のアドレス領域がセットされているので、バスコマンド制御部２４は、命令フェッチ要求ｉａｖａｌがＲＡＭ７４に対する要求であると判断し、メモリ制御部２２に対して命令フェッチ要求を発行する。この命令フェッチ要求を受けたメモリ制御部２２は、メモリＩ／Ｆ２８を介して接続されたＲＡＭ７４をアクセスして上記要求アドレスａｄｄに対応する命令データを読み出し、それを命令実行部２に供給して実行する。
【０１１２】
その後、必要とされる処理がスレーブプロセッサ７２において一定時間行われなかったとすると、そのことを契機として、スレーブプロセッサ７２の命令実行部２がクロック制御部５に対してクロック停止信号ｓｔｏｐｃを供給することにより、バス制御部８４以外に供給されている内部クロックｃｃｋの供給を停止させる。
【０１１３】
マスタープロセッサ７１は、その後必要性が生じた時点で、スレーブプロセッサ７２が備えるレジスタ９９のＨＳビットに書き込みを行うことにより、内部クロックｃｃｋの供給を再開させるとともに、ハードウェア的な初期化処理およびソフトウェア的な初期化処理を実行する。このとき、ソフトウェア的な初期化処理を行うために必要な初期化プログラムの起動シーケンスは、第１の実施形態で述べたのと同様であり、ＲＡＭ７４からの高速な再起動が実行される。
【０１１４】
このように、第２の実施形態では、電源投入時における初期起動リセット信号ＰＲＳＴによる起動処理シーケンスにおいて、スレーブプロセッサ７２では、起動抑止信号ＷＡＩＴのアサートにより命令フェッチ要求ｉａｖａｌの発行を停止している間にＲＡＭ７４に初期化プログラムを転送しておき、その後起動抑止信号ＷＡＩＴをネゲートしてＲＡＭ７４に対して命令フェッチ要求ｉａｖａｌを発行するようにしている。
【０１１５】
したがって、電源投入時における起動処理シーケンスにおいても、スレーブプロセッサ７２は共有バスを介してＲＯＭ９にアクセスしなくても済む。これにより、高速なＲＡＭ７４から初期化プログラムを読み出してスレーブプロセッサ７２の起動を行うことができる。また、共有バス上に接続された複数のプロセッサがＲＯＭ９に対するアクセスを一斉に開始することがなく、共有バスのアービトレーションを不要とすることもでき、起動処理を高速に行うことができる。
【０１１６】
また、スレーブプロセッサ７２において実行すべき初期化プログラムはＲＡＭ７４に格納され、スレーブプロセッサ７２の初期化処理を行う際には、アドレス選択信号ＭＳにより選択したこのＲＡＭ７４の先頭アドレスから初期化プログラムを読み出せば良いので、どのプロセッサがどのプログラムを実行するのかを判別するための機構も不要となり、システムの構成を簡素化することができる。
【０１１７】
なお、以上に説明した各実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０１１８】
例えば、以上の各実施形態では、外部から与えられるアドレス選択信号ＭＳに基づいて初期化プログラムの開始アドレスを選択していたが、開始アドレスの選択が内部で行われるようにしても良い。図１２は、その場合の命令フェッチ制御部の構成例を示す図である。この例では、ＬＳＩ内部のレジスタに設定した値に従って、再起動アドレスの選択を行うようにしている。なお、図１２において、図１０に示したブロックと同じブロックには同一の符号を付している。
【０１１９】
図１２に示す命令フェッチ制御部１０１では、図１０に示した命令フェッチ制御部８１に対して、数個の論理ゲート１０２〜１０５とレジスタ１０６とが追加されている。ＡＮＤゲート１０２は、アドレス選択信号ＭＳと初期起動リセット信号ＰＲＳＴとの論理積をとってその結果をＯＲゲート１０５に出力する。ＡＮＤゲート１０３は、信号btdir と、信号 set＿btdir と、初期起動リセット信号ＰＲＳＴの論理反転信号との論理積をとってその結果をＯＲゲート１０５に出力する。また、ＡＮＤゲート１０４は、信号 set＿btdir の論理反転信号と、初期起動リセット信号ＰＲＳＴの論理反転信号と、レジスタ１０６の出力信号との論理積をとってその結果をＯＲゲート１０５に出力する。
【０１２０】
上記ＯＲゲート１０５は、各ＡＮＤゲート１０２〜１０４の出力結果の論理和をとってその結果をレジスタ１０６に出力する。これによりレジスタ１０６は、初期起動リセット信号ＰＲＳＴのアサート時には、外部端子からアドレス選択信号ＭＳの値を取り込む。また、初期起動リセット信号ＰＲＳＴがネゲートされ、信号 set＿btdir がアサートされている時は、信号btdir の値を取り込む。また、これ以外の状態の時は、記憶されている値を保持する。ここで、信号btdir ，set＿btdir は、命令実行部２がレジスタ１０６への書き込み命令を実行することによりアサートされるものとする。
【０１２１】
セレクタ１５は、レジスタ１０６に保持されている値に応じて、"0x0000＿0000"または"0xFF00＿0000"の何れかのアドレスを選択する。例えば、レジスタ１０６に保持されている値が"１"のときはアドレス"0xFF00＿0000"を選択し、レジスタ１０６に保持されている値が"０"のときはアドレス"0x0000＿0000"を選択する。
【０１２２】
以上のように構成することにより、電源投入時には初期起動リセット信号ＰＲＳＴがアサートされ、外部端子からアドレス選択信号ＭＳの値を取り込んで初期化プログラムの開始アドレスを選択する。また、クロック供給停止前に命令実行部２がレジスタ１０６への書き込み命令を実行することで当該レジスタ１０６の値を"０"に設定しておくことで、クロック供給の停止後における再起動リセット信号ＨＲＳＴによる再起動時には、レジスタ１０６内の"０"の値を参照して、初期化プログラムの開始アドレスとして"0x0000＿0000"（ＲＡＭの先頭アドレス）を選択することができる。
【０１２３】
なお、ここではアドレス選択信号ＭＳの外部端子とレジスタ設定との混合型を示しているが、レジスタ設定のみの構成とすることも可能である。また、レジスタ１０６を他のユニットに移動してメモリマップとすることで、スレーブプロセッサの動作時にマスタープロセッサからレジスタ１０６への書き込みを可能とすることができ、初期化プログラムの開始アドレスの選択をマスタープロセッサから制御可能とする構成も可能である。
【０１２４】
上述したように、アドレス選択信号に基づいて、ローカルメモリまたはバスを介して接続される外部メモリに格納された初期化プログラムの開始アドレスを選択するアドレス選択手段を設けたので、電源投入後において内部クロックの供給が停止された後の再起動時には、高速なローカルメモリから再起動用の初期化プログラムを読み出してプロセッサの起動を行うことができ、その再起動処理を高速に行うことができる。これにより、システムの消費電力を抑制するとともにクロック停止状態からの高速な復帰を実現することができるようになる。
【０１２５】
また、起動抑止信号に基づいて、初期化プログラムが格納されたメモリへのアクセス要求を抑止するアクセス抑止手段を備え、メモリへのアクセス要求を抑止している間に、外部バスを介して接続される外部メモリに格納された初期化プログラムをローカルメモリに転送しておき、アクセス要求の抑止の解除後には、ローカルメモリに格納された初期化プログラムの開始アドレスを選択するようにしたので、電源投入時における起動処理シーケンスにおいても外部メモリにアクセスすることなく、高速なローカルメモリから初期化プログラムを読み出して起動を行うことができる。また、外部バス上に接続された複数のプロセッサが外部メモリに対するアクセスを一斉に開始することがなくなり、共有バスのアービトレーションを不要とすることもできるので、起動処理を高速に行うことができる。
また、マルチプロセッサシステムを構成した場合に、どのプロセッサがどのプログラムを実行するのかを判別するための機構も不要となり、システムの構成を簡素化することができる。
【０１２６】
本発明の様々な形態をまとめると、以下のようになる。
（１）リセット信号に応じて、ハードウェア的な初期化処理を行った後でメモリから必要な初期化プログラムを読み込んでソフトウェア的な初期化処理を行うデータ処理システムであって、
アドレス選択信号に基づいて、ローカルメモリまたはバスを介して接続される外部メモリに格納された上記初期化プログラムの開始アドレスを選択するアドレス選択手段を備えたことを特徴とするデータ処理システム。
【０１２７】
（２）上記アドレス選択手段は、電源投入時に第１のリセット信号が外部より与えられるときは、上記アドレス選択信号に基づいて、上記外部メモリに格納された上記初期化プログラムの開始アドレスを選択することを特徴とする上記（１）に記載のデータ処理システム。
【０１２８】
（３）上記アドレス選択手段は、クロック供給の停止後における再起動時に第２のリセット信号が外部より与えられるときは、上記アドレス選択信号に基づいて、上記ローカルメモリに格納された上記初期化プログラムの開始アドレスを選択することを特徴とする上記（１）に記載のデータ処理システム。
【０１２９】
（４）上記第２のリセット信号が外部より与えられるときは、上記ハードウェア的な初期化処理では、上記ローカルメモリのアドレス領域を含むメモリアクセスに必要な情報以外を初期化することを特徴とする上記（３）に記載のデータ処理システム。
【０１３０】
（５）上記アドレス選択手段は、強制的な初期化のために第３のリセット信号が外部より与えられるときは、上記アドレス選択信号に基づいて、上記ローカルメモリに格納された上記初期化プログラムの開始アドレスを選択することを特徴とする上記（１）に記載のデータ処理システム。
【０１３１】
（６）上記第３のリセット信号が外部より与えられるときは、上記ハードウェア的な初期化処理では、プログラムの命令フェッチを制御するフェッチ制御部を含む最小限の情報だけを初期化することを特徴とする上記（５）に記載のデータ処理システム。
【０１３２】
（７）上記ローカルメモリ内の初期化プログラムは、電源投入時に第１のリセット信号が外部より与えられたときに、上記外部メモリに格納された上記初期化プログラムを転送して格納することを特徴とする上記（１）に記載のデータ処理システム。
【０１３３】
（８）上記第２のリセット信号と等価なリセット信号を装置内部で発生させるリセット内部発生手段を備えることを特徴とする上記（３）に記載のデータ処理システム。
【０１３４】
（９）上記第３のリセット信号と等価なリセット信号を装置内部で発生させるリセット内部発生手段を備えることを特徴とする上記（５）に記載のデータ処理システム。
【０１３５】
（１０）データ処理システムに対して行われたリセット動作が第１のリセット、第２のリセットおよび第３のリセットの何れであるかを識別するための情報を保持する情報保持手段を備え、
上記初期化プログラムの命令に基づいて上記情報保持手段内の識別情報を読み取り、その結果に応じた処理を行うことを特徴とする上記（１）に記載のデータ処理システム。
【０１３６】
（１１）リセット信号に応じて、ハードウェア的な初期化処理を行った後でメモリから必要な初期化プログラムを読み込んでソフトウェア的な初期化処理を行うデータ処理システムであって、
起動抑止信号に基づいて、上記初期化プログラムが格納されたメモリへのアクセス要求を抑止するアクセス抑止手段を備えたことを特徴とするデータ処理システム。
【０１３７】
（１２）アドレス選択信号に基づいて、ローカルメモリまたはバスを介して接続される外部メモリに格納された上記初期化プログラムの開始アドレスを選択するアドレス選択手段と、
上記アクセス抑止手段によって上記メモリへのアクセス要求を抑止している間に、上記外部メモリに格納された上記初期化プログラムを上記ローカルメモリに転送するデータ転送手段とを備え、
上記アクセス要求の抑止の解除後に上記アドレス選択手段は、上記アドレス選択信号に基づいて、上記ローカルメモリに格納された上記初期化プログラムの開始アドレスを選択することを特徴とする上記（１１）に記載のデータ処理システム。
【０１３８】
（１３）上記ローカルメモリのアドレス領域を表す情報を保持するレジスタおよび、外部より与えられるリセット信号と等価なリセット信号を装置内部で発生させるための情報を保持するレジスタを備え、上記外部バスに接続された他のバスマスタデバイスからこれらのレジスタに対してアクセス可能であることを特徴とする上記（１２）に記載のデータ処理システム。
【０１３９】
（１４）共有バス上に複数のデータ処理装置が接続され、それぞれのデータ処理装置において、リセット信号に応じて、ハードウェア的な初期化処理を行った後でメモリから必要な初期化プログラムを読み込んでソフトウェア的な初期化処理を行うデータ処理システムであって、当該データ処理システムに含まれる少なくとも１つのデータ処理装置に、
アドレス選択信号に基づいて、ローカルメモリまたはバスを介して接続される外部メモリに格納された上記初期化プログラムの開始アドレスを選択するアドレス選択手段と、
起動抑止信号に基づいて、上記初期化プログラムが格納されたメモリへのアクセス要求を抑止するアクセス抑止手段と、
上記アクセス抑止手段によって上記メモリへのアクセス要求を抑止している間に、上記外部メモリに格納された上記初期化プログラムを上記ローカルメモリに転送するデータ転送手段とを備え、
上記アクセス要求の抑止の解除後に上記アドレス選択手段は、上記アドレス選択信号に基づいて、上記ローカルメモリに格納された上記初期化プログラムの開始アドレスを選択することを特徴とするデータ処理システム。
【０１４０】
（１５）上記データ転送手段によるデータ転送は、メモリ−メモリ間のダイレクト転送を行うＤＭＡＣを用いて行うことを特徴とする上記（１４）に記載のデータ処理システム。
【図面の簡単な説明】
【０１４１】
【図１】本発明によるデータ処理システムの第１の実施形態に係るプロセッサの構成例を示すブロック図である。
【図２】ＲＡＭ、ＲＯＭおよびレジスタを含むシステム全体のメモリマップを示す図である。
【図３】命令フェッチ制御部の詳細な構成例を示す図である。
【図４】バス制御部の領域指定レジスタを含む部分の詳細な構成例を示す図であり、アドレスおよびデータの流れを示す図である。
【図５】バスコマンド制御部内でアドレス判定を行う部分の詳細な構成例を示す図である。
【図６】バス制御部のリセットレジスタを含む部分の詳細な構成例を示す図であり、当該リセットレジスタに対するデータ書き込みの流れを示す図である。
【図７】クロック制御部の構成例を示す図である。
【図８】第２の実施形態によるプロセッサをスレーブプロセッサとして搭載したマルチプロセッサシステムの構成例を示すブロック図である。
【図９】第２の実施形態によるプロセッサの構成例を示すブロック図である。
【図１０】第２の実施形態による命令フェッチ制御部の構成例を示す図である。
【図１１】第２の実施形態による外部バス制御部の構成例を示す図である。
【図１２】命令フェッチ制御部の他の構成例を示す図である。
【符号の説明】
【０１４２】
１  命令フェッチ制御部
２  命令実行部
３  キャッシュユニット
４  バス制御部
４ａ  領域指定レジスタ
４ｂ  リセットレジスタ
５  クロック制御部
６  ＲＡＭ（ローカルメモリ）
７  アドレスバス
８  データバス
９  ＲＯＭ（外部メモリ）
１０  プロセッサ
１４，１５  セレクタ（アドレス選択手段）
２３  外部バス制御部
２４  バスコマンド制御部
７１  マスタープロセッサ
７２  スレーブプロセッサ
７３，７４  ＲＡＭ（ローカルメモリ）
７６  ＤＭＡＣ
７７  ＡＳＩＣ
８１  命令フェッチ制御部
８４  バス制御部
８５  インバータ
８６  ＡＮＤゲート
９９  レジスタ
１０１  命令フェッチ制御部
１０６  レジスタ
ＰＲＳＴ  初期起動リセット信号（第１のリセット信号）
ＨＲＳＴ  再起動リセット信号（第２のリセット信号）
ＳＲＳＴ  プログラムリセット信号（第３のリセット信号）
ＭＳ  アドレス選択信号
ＡＳＲ  先頭アドレス情報
ＡＭＲ  領域サイズ情報
ＰＤ，ＨＤ，ＳＤ  リセット種識別ビット
ＨＳ，ＳＳ  内部リセット書込みビット
ｂｃｋ，ｃｃｋ  内部クロック
ｓｔｏｐｃ，ｓｔｏｐｂｃ  クロック停止信号
ＷＡＩＴ  起動抑止信号
【図１】
2005293609.tif 000003
【図２】
2005293609.tif 000004
【図３】
2005293609.tif 000005
【図４】
2005293609.tif 000006
【図５】
2005293609.tif 000007
【図６】
2005293609.tif 000008
【図７】
2005293609.tif 000009
【図８】
2005293609.tif 000010
【図９】
2005293609.tif 000011
【図１０】
2005293609.tif 000012
【図１１】
2005293609.tif 000013
【図１２】
2005293609.tif 000014