(57)【特許請求の範囲】
【請求項１】
命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する処理部、および、
この処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記処理部の命令デコーダに与えるアクセス制御部を備え、
前記処理部は、外部から入力されるリセット信号に応答してプロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行うとともに、前記アクセス制御部がソフトウェア的なリセット処理を行うリセット処理プログラムを起動するための命令が格納されたリセットベクタエントリの先頭アドレスを出力しないように制御し、
割り込み信号が前記処理部に入力されたことに応答して、前記処理部は割り込み処理プログラムを構成する命令が前記処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、
プロセッサの初期化がなされ、
前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わない、マイクロプロセッサ。
【請求項２】
外部に対してアドレスを出力するアドレス端子を有し、
リセット信号が入力された後、少なくとも割り込み信号が入力されるまでは前記アドレス端子をハイインピーダンス状態にする、請求項１に記載のマイクロプロセッサ。
【請求項３】
アドレス端子がハイインピーダンス状態となった場合、処理部が外部に対するアクセスをアクセス制御部に要求したことに応答して前記アクセス制御部は前記処理部へアクセス禁止を通知する通知信号を出力する、請求項２に記載のマイクロプロセッサ。
【請求項４】
内蔵メモリ、および、
この内蔵メモリと処理部とを接続する内部データバスを有し、
前記内部メモリに記憶された割り込み処理プログラムが前記内部データバスを介して前記内蔵メモリから前記命令デコーダに与えられるようにアクセス制御部は前記内蔵メモリへアドレスを出力する、請求項１に記載のマイクロプロセッサ。
【請求項５】
命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する処理部、
この処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記処理部の命令デコーダに与えるアクセス制御部、および、
第１のモード及び第２のモードのいずれかに設定されるためのモード設定手段を備え、
外部から入力されるリセット信号に応答して、プロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、
前記モード設定手段により第１のモードが設定された場合、
前記リセット信号が前記処理部に入力されたことに応答して、前記処理部はリセット処理プログラムを構成する命令が前記処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられたリセット処理プログラムの命令を実行することによりプロセッサの初期化がなされ、
前記モード設定手段により第２のモードが設定された場合、
前記リセット信号が前記処理部に入力されたことに応答して、前記処理部は前記アクセス制御部が前記リセット処理プログラムが格納されたアドレスを出力しないように制御すると共に、
前記リセット信号が入力された後に割り込み信号が前記処理部に入力されたことに応答して、前記処理部は割り込み処理プログラムを構成する命令が前記命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、
プロセッサの初期化がなされ、
前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わない、マイクロプロセッサ。
【請求項６】
外部に対してアドレスを出力するアドレス端子を有し、
モード設定手段により第２のモードが設定された場合、リセット信号が入力された後、少なくとも割り込み信号が入力されるまでは前記アドレス端子をハイインピーダンス状態にする、請求項５に記載のマイクロプロセッサ。
【請求項７】
アドレス端子がハイインピーダンス状態となった場合、処理部が外部に対するアクセスをアクセス制御部に要求したことに応答して前記アクセス制御部は前記処理部へアクセス禁止を通知する通知信号を出力する、請求項６に記載のマイクロプロセッサ。
【請求項８】
内蔵メモリ、および、
この内蔵メモリと処理部とを接続する内部データバスを有し、
モード設定手段により第１のモードが設定された場合、外部の記憶手段に記憶されたリセット処理プログラムがフェッチされ命令デコーダに与えられるようにアクセス制御部は当該外部の記憶手段へアドレスを出力し、
モード設定手段により第２のモードが設定された場合、前記内部メモリに記憶された割り込み処理プログラムが前記内部データバスを介して前記内蔵メモリから前記命令デコーダに与えられるように前記アクセス制御部は前記内蔵メモリへアドレスを出力する、請求項５に記載のマイクロプロセッサ。
【請求項９】
各々は、命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する第１および第２の処理部、および、
前記第１および第２の処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記第１および第２の処理部のそれぞれ命令デコーダのいずれかに与えるアクセス制御部を備え、
外部から入力されるリセット信号に応答して、前記第１および第２の処理部を含むプロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、
前記リセット信号が前記第１の処理部に入力されたことに応答して、前記第１の処理部はリセット処理プログラムを構成する命令が前記第１の処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記第１の処理部がその命令デコードに与えられたリセット処理プログラムを実行することにより前記第１の処理部内の初期化がなされ、
前記リセット信号が前記第１の処理部に入力されたことに応答して、前記アクセス制御部が前記リセット処理プログラムが格納されたアドレスを出力しないように制御されると共に、
前記リセット信号が入力された後に前記第２の処理部に割り込み信号が入力されたことに応答して、前記第２の処理部は割り込み処理プログラムを構成する命令が前記第２の処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記第２の処理部がその命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、前記第２の処理部内の初期化がなされ、
前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わない、マイクロプロセッサ。
【請求項１０】
第２の処理部に入力される割り込み信号は、第１の処理部がリセット処理プログラムを実行することにより生成されて当該第２の処理部に入力される、請求項９に記載のマイクロプロセッサ。
【請求項１１】
内蔵メモリ、および、
この内蔵メモリと第１および第２の処理部の各々とを接続する内部データバスを有し、
外部の記憶手段に記憶されたリセット処理プログラムがフェッチされ第１の処理部の命令デコーダに与えられるようにアクセス制御部はアドレスを当該外部の記憶手段へ出力し、
前記内蔵メモリに記憶された割り込み処理プログラムが前記内部データバスを介して前記第２の処理部の命令デコーダに与えられるようにアクセス制御部はアドレスを前記内蔵メモリへ出力する、請求項９に記載のマイクロプロセッサ。
【請求項１２】
第１の処理部がリセット処理プログラムの命令を実行することにより、外部の記憶手段から割り込み処理プログラムを内蔵メモリに転送し記憶させる処理がなされ、
この処理により前記内蔵メモリに記憶された割り込み処理プログラムが内部データバスを介して第２の処理部の命令デコーダに与えられるようにした、請求項１１に記載のマイクロプロセッサ。
【請求項１３】
命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する第１の処理部と、
この第１の処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記第１の処理部の命令デコーダに与える第１のアクセス制御部とを有する第１のマイクロプロセッサ、および
命令をデコードする第２の命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する第２の処理部と、この第２の処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記第２の処理部の命令デコーダに与える第２のアクセス制御部とを有する第２のマイクロプロセッサを備え、
前記第１のマイクロプロセッサにリセット信号が入力されたことに応答して、第１のマイクロプロセッサの内部の記憶素子がリセットされるとともに、前記第１の処理部はリセット処理プログラムを構成する命令が前記第１の処理部の命令デコーダに与えられるように前記第１のアクセス制御部を制御し、前記第１の処理部がその命令デコーダに与えられたリセット処理プログラムの命令を実行することにより前記第１のマイクロプロセッサの初期化がなされ、
前記第２のマイクロプロセッサに前記リセット信号が入力されたことに応答して、第２のマイクロプロセッサの内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行うと共に前記第２のアクセス制御部が前記リセット処理プログラムが格納されたアドレスを出力しないよう制御を行い、前記第２のマイクロプロセッサに割り込み信号が入力されたことに応答して、前記第２の処理部は割り込み処理プログラムを構成する命令が前記第２の処理部の命令デコーダに与えられるように前記第２のアクセス制御部を制御し、前記第２の処理部がその命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、前記第２のマイクロプロセッサの初期化がなされ、
前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わない、マルチプロセッサシステム。
【請求項１４】
第１のマイクロプロセッサの第１の処理部がリセット処理プログラムを実行することにより割り込み信号が生成され、当該割り込み信号が第２のマイクロプロセッサに入力されることにより第２のマイクロプロセッサの初期化がなされる、請求項１３に記載のマルチプロセッサシステム。
【請求項１５】
リセット処理プログラムを格納する記憶手段を備え、
第１のマイクロプロセッサは、前記記憶手段から前記リセット処理プログラムをフェッチして実行するように第１のアクセス制御部が前記記憶手段へアドレスを出力し、
第２のマイクロプロセッサは、割り込み処理プログラムが格納する内蔵メモリを有し、前記割り込み処理プログラムが前記内蔵メモリから前記第２のマイクロプロセッサの命令デコーダへ与えられるように前記第２のアクセス制御部が前記内蔵メモリへアドレスを出力する、請求項１３に記載のマルチプロセッサシステム。
【請求項１６】
第１のマイクロプロセッサがリセット処理プログラムを実行することにより、割り込み処理プログラムを記憶する記憶手段から第２のマイクロプロセッサの内蔵メモリに前記割り込み処理プログラムを転送して記憶させる処理がなされ、
この処理により前記内蔵メモリに記憶された割り込み処理プログラムが内部データバスを介して第２の処理部の命令デコーダに与えられるようにした、請求項１５に記載のマルチプロセッサシステム。
【請求項１７】
第２のマイクロプロセッサは、アドレスを出力するアドレス端子を有し、リセット信号が入力された後、少なくとも割り込み信号が入力されるまでは前記アドレス端子をハイインピーダンス状態にする、請求項１３に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、リセット機能を有するマイクロプロセッサに関し、特にマルチプロセッサシステムで用いる場合に、システム全体を簡単な機構でもって初期化させるために必須な構成を有するマイクロプロセッサに関するものである。
また、この発明は、簡単な機構でもってシステム全体の初期化を行うマルチプロセッサシステムに関するものである。
【０００２】
【従来の技術】
マイクロプロセッサは、例えばユーザプログラムを実行処理するにあたり、電源投入とともに外部からリセット信号がアサートされることによりプロセッサ内部を初期化するリセット動作を行う。このリセット動作では、マイクロプロセッサ外部からリセット信号がアサートされると、プロセッサ内部の記憶素子にリセット信号が入力されてその記憶内容をリセットするハードウェア的なリセット処理、および外部のメモリからリセット処理用のプログラムをフェッチし、プロセッサ内でこのリセット処理用のプログラムを実行することによりユーザプログラムが処理できる状態にしてしておくソフトウェア的なリセット処理がなされる。特に、上記のソフトウェア的なリセット処理では、リセット信号がアサートされると、外部のメモリからリセットベクタエントリをフェッチし、このエントリに含まれる情報を参照することにより、上記のリセット処理用のプログラムがフェッチされる。
【０００３】
このリセット動作を行うプロセッサを複数個設け、そのうちの一つをマスタープロセッサ、その他をスレーブプロセッサとして機能させるマルチプロセッサを構成するシステムにおいて、システム全体をリセットするために各プロセッサをすべて初期化しなければならない。そのためにまず、すべてのプロセッサにリセット信号がアサートされる。システム上のリード・オンリー・メモリ（以下、ＲＯＭ）には予めリセット処理用の命令が格納されており、各プロセッサはリセット信号のアサート後にこのＲＯＭにアクセスしてリセット処理用のプログラムを実行することにより初期化がなされる。ただし、各プロセッサは同時にＲＯＭへアクセスすることはできないために、マルチプロセッサシステムでは各プロセッサがＲＯＭに順次アクセスするように構成されている。
【０００４】
【発明が解決しようとする課題】
このように構成されたマルチプロセッサシステムでは、各プロセッサにリセット信号が同時にアサートされても、リセットベクタエントリを参照するためにそのリセットベクタエントリを格納するＲＯＭを同時にアクセスすることはできないので、複数のプロセッサがＲＯＭを順次アクセスするためのバス調停回路といった複雑な機構が新たに必要になる。しかも、マスタープロセッサ、スレーブプロセッサでは、リセット処理の内容が異なるため、各々のプロセッサでリセット処理用のプログラム内の異なるルーチンプログラムを実行することが通常であり、この場合、どのプロセッサがどのプログラムルーチンを実行するかを識別するための機構もさらに必要となる。
これ以外にも、マルチプロセッサシステム上で各プロセッサに対応するようにローカルなＲＯＭを複数個設け、各プロセッサは対応のＲＯＭに格納されたリセット処理用の命令を実行することによりリセット動作を行う方法が考えられる。しかし、リセット信号のアサート後、各プロセッサが複数個のＲＯＭのうちのいずれのＲＯＭにアクセスするかを指定するためのアドレス情報をプロセッサ毎に与えなければならない。そのために各プロセッサに別々のリセットベクタエントリを設定することも考えられるが、マスタープロセッサおよびスレーブプロセッサをそれぞれ同一のプロセッサでもって構成しようとした場合、リセットベクタエントリにプロセッサがアクセスすべきＲＯＭを指定するアドレス情報を外部から設定できるようにしなければならない。いずれにしてもアドレス情報を外部から設定するための機構を追加しなければならない。また、各プロセッサに対応してＲＯＭを複数個設けること自体、ハードウェア的な増加をもたらす。
【０００５】
マルチプロセッサシステムでは、マスタープロセッサ、スレーブプロセッサ等の各ユニット間での処理を調停するための複雑な機構を要するため、上述のような新たな機構を設けることは、システムの構成をさらに複雑化させる。また、マルチプロセッサシステムを機能させるためには多数のメモリが必要となるため、不要にもメモリを増加させたくない。
【０００６】
この発明は上記問題点を解決するためになされたものであり、マルチプロセッサシステムで使用するマイクロプロセッサであって、マルチプロセッサシステムを簡単な機構でもって初期化するために必須な構成を備えたマイクロプロセッサを提供することを技術課題とする。
また、このようなマイクロプロセッサを用いて、簡単な機構でもってシステム全体のリセットすることのできるマルチプロセッサシステムを提供することを技術課題とする。
【０００７】
【課題を解決するための手段】
第１の発明によるマイクロプロセッサは、命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する処理部、および、この処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記処理部の命令デコーダに与えるアクセス制御部を備え、前記処理部は、外部から入力されるリセット信号に応答してプロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行うとともに、前記アクセス制御部がソフトウェア的なリセット処理を行うリセット処理プログラムを起動するための命令が格納されたリセットベクタエントリの先頭アドレスを出力しないように制御し、割り込み信号が前記処理部に入力されたことに応答して、前記処理部は割り込み処理プログラムを構成する命令が前記処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、プロセッサの初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものである。
【０００８】
第２の発明によるマイクロプロセッサは、第１の発明にさらに、リセット信号が入力された後、少なくとも割り込み信号が入力されるまではアドレス端子をハイインピーダンス状態にするものである。
【０００９】
第３の発明によるマイクロプロセッサは、第２の発明にさらに、アドレス端子がハイインピーダンス状態となった場合、処理部が外部に対するアクセスをアクセス制御部に要求したことに応答してアクセス制御部は処理部へアクセス禁止を通知する通知信号を出力するものである。
【００１０】
第４の発明によるマイクロプロセッサは、第１の発明にさらに、内蔵メモリ、および、この内蔵メモリと処理部とを接続する内部データバスを有し、内蔵メモリに記憶された割り込み処理プログラムが内部データバスを介して内蔵メモリから処理部の命令デコーダに与えられるようにアクセス制御部は内蔵メモリへアドレスを出力するものである。
【００１１】
第５の発明によるマイクロプロセッサは、命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する処理部、この処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記処理部の命令デコーダに与えるアクセス制御部、および、第１のモード及び第２のモードのいずれかに設定されるためのモード設定手段を備え、外部から入力されるリセット信号に応答して、プロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、前記モード設定手段により第１のモードが設定された場合、前記リセット信号が前記処理部に入力されたことに応答して、前記処理部はリセット処理プログラムを構成する命令が前記処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられたリセット処理プログラムの命令を実行することによりプロセッサの初期化がなされ、前記モード設定手段により第２のモードが設定された場合、前記リセット信号が前記処理部に入力されたことに応答して、前記処理部は前記アクセス制御部が前記リセット処理プログラムが格納されたアドレスを出力しないように制御すると共に、前記リセット信号が入力された後に割り込み信号が前記処理部に入力されたことに応答して、前記処理部は割り込み処理プログラムを構成する命令が前記命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、プロセッサの初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものである。
【００１２】
第６の発明によるマイクロプロセッサは、第５の発明にさらに、モード設定手段により第２のモードが設定された場合、リセット信号が入力された後、少なくとも割り込み信号が入力されるまではアドレス端子をハイインピーダンス状態にするものである。
【００１３】
第７の発明によるマイクロプロセッサは、第６の発明にさらに、アドレス端子がハイインピーダンス状態となった場合、処理部が外部に対するアクセスをアクセス制御部に要求したことに応答してアクセス制御部が処理部へアクセス禁止を通知する通知信号を出力するものである。
【００１４】
第８の発明によるマイクロプロセッサは、第５の発明にさらに、内蔵メモリ、および、この内蔵メモリと処理部とを接続する内部データバスを有し、第１のモードが設定された場合、外部の記憶手段に記憶されたリセット処理プログラムがフェッチされ命令デコーダに与えられるようにアクセス制御部は外部の記憶手段へアドレスを出力し、第２のモードが設定された場合、内部メモリに記憶された割り込み処理プログラムが内部データバスを介して内蔵メモリから命令デコーダに与えられるようにアクセス制御部は内蔵メモリへアドレスを出力するものである。
【００１５】
第９の発明によるマイクロプロセッサは、各々は、命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する第１および第２の処理部、および、前記第１および第２の処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記第１および第２の処理部のそれぞれ命令デコーダのいずれかに与えるアクセス制御部を備え、外部から入力されるリセット信号に応答して、前記第１および第２の処理部を含むプロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、前記リセット信号が前記第１の処理部に入力されたことに応答して、前記第１の処理部はリセット処理プログラムを構成する命令が前記第１の処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記第１の処理部がその命令デコードに与えられたリセット処理プログラムを実行することにより前記第１の処理部内の初期化がなされ、前記リセット信号が前記第１の処理部に入力されたことに応答して、前記アクセス制御部が前記リセット処理プログラムが格納されたアドレスを出力しないように制御されると共に、前記リセット信号が入力された後に前記第２の処理部に割り込み信号が入力されたことに応答して、前記第２の処理部は割り込み処理プログラムを構成する命令が前記第２の処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記第２の処理部がその命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、前記第２の処理部内の初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものである。
【００１６】
第１０の発明によるマイクロプロセッサは、第９の発明にさらに、第２の処理部に入力される割り込み信号は、第１の処理部がリセット処理プログラムを実行することにより生成されて第２の処理部に入力されるものである。
【００１７】
第１１の発明によるマイクロプロセッサは、第９の発明にさらに、第１の処理部がリセット処理プログラムの命令を実行することにより、外部の記憶手段から割り込み処理プログラムを内蔵メモリに転送し記憶させる処理がなされ、この処理により内蔵メモリに記憶された割り込み処理プログラムが内部データバスを介して第２の処理部の命令デコーダに与えられるようにしたものである。
【００１８】
第１２の発明によるマイクロプロセッサは、第１１の発明にさらに、第１の処理部がリセット処理プログラムの命令を実行することにより、外部の記憶手段から割り込み処理プログラムを内蔵メモリに転送し記憶させる処理がなされ、この処理により前記内蔵メモリに記憶された割り込み処理プログラムが内部データバスを介して第２の処理部の命令デコーダに与えられるようにしたものである。
【００１９】
第１３の発明によるマルチプロセッサシステムは、命令をデコードする命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する第１の処理部と、この第１の処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記第１の処理部の命令デコーダに与える第１のアクセス制御部とを有する第１のマイクロプロセッサ、および命令をデコードする第２の命令デコーダを含み、この命令デコーダからのデコード結果に従って種々の処理を行うことにより当該命令を実行する第２の処理部と、この第２の処理部に制御され、記憶領域を指定するアドレスを出力し、その記憶領域に格納された命令を前記第２の処理部の命令デコーダに与える第２のアクセス制御部とを有する第２のマイクロプロセッサを備え、前記第１のマイクロプロセッサにリセット信号が入力されたことに応答して、第１のマイクロプロセッサの内部の記憶素子がリセットされるとともに、前記第１の処理部はリセット処理プログラムを構成する命令が前記第１の処理部の命令デコーダに与えられるように前記第１のアクセス制御部を制御し、前記第１の処理部がその命令デコーダに与えられたリセット処理プログラムの命令を実行することにより前記第１のマイクロプロセッサの初期化がなされ、前記第２のマイクロプロセッサに前記リセット信号が入力されたことに応答して、第２のマイクロプロセッサの内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行うと共に前記第２のアクセス制御部が前記リセット処理プログラムが格納されたアドレスを出力しないよう制御を行い、前記第２のマイクロプロセッサに割り込み信号が入力されたことに応答して、前記第２の処理部は割り込み処理プログラムを構成する命令が前記第２の処理部の命令デコーダに与えられるように前記第２のアクセス制御部を制御し、前記第２の処理部がその命令デコーダに与えられた前記割り込み処理プログラムとして格納されているソフトウェア的なリセット処理を行うための命令を実行することにより、前記第２のマイクロプロセッサの初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は行わない、ものである。
【００２０】
第１４の発明によるマルチプロセッサシステムは、第１３の発明にさらに、第１のマイクロプロセッサの第１の処理部がリセット処理プログラムを実行することにより割り込み信号が生成され、当該割り込み信号が第２のマイクロプロセッサに入力されることにより第２のマイクロプロセッサの初期化がなされるものである。
【００２１】
第１５の発明によるマルチプロセッサシステムは、第１３の発明にさらに、リセット処理プログラムを格納する記憶手段を備え、第１のマイクロプロセッサは、記憶手段からリセット処理プログラムをフェッチして実行するように第１のアクセス制御部が記憶手段へアドレスを出力し、第２のマイクロプロセッサは、割り込み処理プログラムが格納する内蔵メモリを有し、割り込み処理プログラムが内蔵メモリから第２のマイクロプロセッサの命令デコーダへ与えられるように第２のアクセス制御部が内蔵メモリへアドレスを出力するものである。
【００２２】
第１６の発明によるマルチプロセッサシステムは、第１５の発明にさらに、第１のマイクロプロセッサがリセット処理プログラムを実行することにより、割り込み処理プログラムを記憶する記憶手段から第２のマイクロプロセッサの内蔵メモリに前記割り込み処理プログラムを転送して記憶させる処理を行い、この処理により内蔵メモリに記憶された割り込み処理プログラムが内部データバスを介して第２の処理部の命令デコーダに与えられるようにしたものである。
【００２３】
第１７の発明によるマルチプロセッサシステムは、第１３の発明にさらに、第２のマイクロプロセッサは、リセット信号が入力された後、少なくとも割り込み信号が入力されるまではアドレス端子をハイインピーダンス状態にするものである。
【００２４】
【発明の実施の形態】
実施の形態１．
図１は、この発明の実施の形態１におけるマイクロプロセッサを示す構成図である。マイクロプロセッサ10は、１６ビット幅の外部データバス25に接続されるデータバス端子Ｄを有し、その内部には１２８ビットのデータが転送できる１２８ビット幅の内部データバス20を有する。
そして、プロセッサ本体10は、中央処理装置（以下、ＣＰＵ）11と、内部データバス20から取り込んだ命令セット（以下、単に命令と呼ぶ）をＣＰＵ11へ与える命令キュー12と、内部データバス20に対して１２８ビットのデータを入出力するとともに、外部に対しては１６ビットのデータを入出力する外部バスインターフェース部（以下、外部バスＩ／Ｆ部）13と、内部データバス20に対してデータが入出力する、それぞれキャッシュメモリ14、内蔵ダイナミック・ランダムアクセスメモリ（以下、内蔵ＤＲＡＭ）15、汎用入出力ポート16、データセレクタ17と、メモリへのアクセス制御とともに、外部データバス25のバス制御を行うバスコントローラ18を含み、単一チップの半導体集積回路で構成されている。
【００２５】
ＣＰＵ11は、制御部30と実行部40にて構成されている。
制御部30は命令デコーダ31を含み、命令デコーダ31は、３２ビット幅の信号線を介して命令キュー12から複数の命令を順次入力してデコードする。制御部30は命令のデコード内容に応じて種々の制御信号を出力する。デコードされる命令は３２ビットで構成されたものと１６ビットで構成されたものがある。
【００２６】
実行部40は、各々３２ビットのデータを保持する複数のレジスタを有するレジスタ群41と、入力する２つの値に関する算術演算等を行う算術演算部（以下、ＡＬＵ）42、および命令の格納番地を示すアドレスを保持するプログラムカウンタ（以下、ＰＣ）43、各々３２ビット幅のデータバス44a 、44b 、44c を有する。
【００２７】
レジスタ群41は、データやアドレスの一時保持等に使用される１６本の汎用レジスタ、及びプロセッサ状態語レジスタ（ＰＳＷ）、スタックポインタ、ＰＣ43のバックアップ用レジスタ等に使用される５本の制御レジスタを含む。すべて３２ビットのデータを保持するレジスタである。
ＡＬＵ42は、その一方に、データバス44a を介してレジスタ群41内の選択されたレジスタの内容、あるいは制御部30から出力されるデータ（例えば、命令のオペランド指定部にある即値データ）を入力し、他方に、データバス44b を介してレジスタ群41内の選択されたレジスタの内容を入力する。そしてＡＬＵ42はデータバス44c を介して、その算術演算結果をレジスタ群41の選択されたレジスタあるいはＰＣ43に出力する。
ＰＣ43は、保持する値を順次カウントして命令キュー12に与えるべき命令の格納先アドレスをバスコントローラ18に出力する。また分岐先命令のフェッチでは、ＡＬＵ42で計算されたアドレス値、あるいは命令デコーダ31でデコードされている命令にある即値アドレスをセットし、命令キュー12に与えるべき分岐先命令のアドレス値をバスコントローラ18に出力する。
【００２８】
実行部40は、制御部30からの制御信号を受け、命令デコーダ31でデコードされた命令を実行する。例えば、算術演算命令に対してはＡＬＵ42がレジスタ群41から入力する値を演算し、演算結果をレジスタ群41へ転送する。またレジスタ群41の保持データを転送する転送命令では、転送されるデータがレジスタ群41からＡＬＵ42、データセレクタ17を介して内部データバス20へ出力され、さらに内蔵ＤＲＡＭ15、あるいは外部記憶装置等に転送される。さらに分岐命令に対しては、上記のように分岐先アドレスをＰＣ43にセットする。
【００２９】
バスコントローラ18は、ＣＰＵ11で生成されたアドレス及びその他の制御信号を受け取り、その受け取ったアドレスの指定する記憶領域をアクセスするように、その記憶領域である内蔵ＤＲＡＭ14、キャッシュメモリ13あるいは外部の記憶装置へ対してアドレスを出力する。外部の記憶装置へのアクセスは、バスコントローラ18が外部バスＩＦ部13を制御することにより行われる。
【００３０】
命令キュー12は、内部データバス20から１２８ビット単位で命令を構成するデータを入力し保持し、制御部30の制御に従って実行されるべき命令を３２ビット単位で命令デコーダ31へ出力する。また、命令デコーダ31でデコードされている命令が分岐命令である場合には、命令キュー12に保持している命令をキャンセルする。
【００３１】
内蔵ＤＲＡＭ15は、１Ｍバイトの記憶容量を有し、内部データバス20と１２８ビット単位でデータを入出力する。内蔵ＤＲＡＭ15は、バスコントローラ18から出力されるアドレス、その他の制御信号を受け、そのアドレスの指定する領域に対して命令またはデータの読み出しまたは書き込みがなされる。
キャッシュメモリ14は、４Ｋバイトのスタティック・ランダムアクセスメモリで構成され、内部データバス20と１２８ビット単位でデータを入出力する。特にキャッシュメモリ14は、内蔵ＤＲＡＭ15の命令及びデータの共通キャッシュとして機能するモード、または外部の記憶領域に対して命令キャッシュとして機能するモードを有する。このモード切り替えはバスコントローラ18により制御される。
【００３２】
汎用入出力ポート16は内部データバス20と接続するデータレジスタを有する。内部データバス20を介してプロセッサ内部からデータがこのデータレジスタにセットされ、さらに１ビットの端子Ｐから外部に出力される。また、端子Ｐから入力されるデータは、このデータレジスタに一時セットされ、内部データバス20を介してプロセッサ内部に転送される。そして汎用入出力ポート16のデータレジスタは、バスコントローラ18から出力されるアドレス、その他の制御信号によりアクセスされる。
【００３３】
データセレクタ17は、内部データバス20から入力する１２８ビットデータのうち、３２ビット単位で選択したデータをＣＰＵ11内のデータバス44c に出力し、レジスタ群41、ＰＣ43に転送する。またＡＬＵ42からデータバス44c に順次送出された４つの３２ビットデータを結合して、データセレクタ17で１２８ビット単位のデータとして内部データバス20に出力することができる。そしてこのデータセレクタ17の動作は制御部30の制御により行われる。
【００３４】
外部バスＩ／Ｆ部13は、外部に対して１６ビットの外部データを入出力する１６個のデータバス端子Ｄと、２４ビットのアドレスを入出力する２４個のアドレス端子Ａとに接続されている。外部バスＩ／Ｆ部13は、外部の記憶装置（例えばＲＯＭ、ＲＡＭ）、あるいはＩＯデバイスに対するアクセスを行う。プロセッサ10が例えば外部の記憶装置にアクセスする場合には、外部バスＩ／Ｆ部13は、バスコントローラ18からアクセス先のアドレスを受け取り、さらに、アドレス端子Ａを介してそのアドレスを外部の記憶装置に出力する。外部の記憶装置では、マイクロプロセッサ10から転送されたデータをその受け取ったアドレスの示す記憶場所へ書き込んだり、またはその記憶場所に記憶されたデータを読み出してマイクロプロセッサ10へ転送する。
【００３５】
マイクロプロセッサ10が外部バスに対してバス権を放棄していても（つまり、マイクロプロセッサ10自身が外部の記憶装置に対してアクセスすることができない）、図１のように外部バスＩ／Ｆ部13にチップセレクト信号CSが入力されることにより、外部バスマスターが、マイクロプロセッサ10の内蔵ＤＲＡＭ15へのアクセスを行うことができる。この場合、外部バスＩ／Ｆ部13は、そのアクセス先のアドレスをアドレス端子Ａを介して外部バスマスターから入力する。バスコントローラ18は、外部バスＩ／Ｆ部13からそのアドレスを受け取り、さらに内蔵ＤＲＡＭ15へ出力することにより、内蔵ＤＲＡＭ15がアクセスされる。これにより、外部データバス25から転送されたデータは、外部バスＩ／Ｆ部13、内部データバス20を介して内蔵ＤＲＡＭ15に書き込まれ、または、内蔵ＤＲＡＭ15の記憶データを読み出して、内部データバス20、外部バスＩ／Ｆ部13を介して外部データバス25へ転送される。
【００３６】
マイクロプロセッサ10は、外部からリセット信号RST を入力し、リセット信号RST がアサートされるとその内部の素子がリセットされる。すなわち、リセット信号RST が図示しない信号線を介してＣＰＵ11を含むプロセッサ10内の必要な記憶素子に入力され、アサートされたことに応答してその素子の記憶内容をすべてリセットする。これをハードウェア的なリセット処理と呼ぶこととする。
特に、制御部31がリセット信号RST を入力し、リセット信号RST が解除されたことに従い制御部30は外部のＲＯＭに格納されたリセットベクタエントリをＣＰＵ１１内にフェッチするように、実行部40を制御する。このフェッチされたリセットベクタエントリ内の示す情報を参照することによりリセット処理プログラムが起動する。そしてリセット処理プログラムが実行されることにより、プロセッサ10全体のリセット処理がなされる。これをソフトウェア的なリセット処理と呼ぶこととする。これについては後述する。
【００３７】
また、マイクロプロセッサ10は、外部から割り込み信号INT を入力する。制御部30が割り込み信号INT を受けることにより、制御部30が内蔵ＤＲＡＭ15に格納されている外部割り込みベクタエントリをＣＰＵ１１内にフェッチするように、実行部40を制御する。そして外部割り込みベクタエントリ内の命令が実行されることにより、プロセッサ10内の割り込み処理が開始される。これについても後述する。
【００３８】
マイクロプロセッサ10は、図２に示す物理アドレス空間を有する。H’00 0000番地〜H’0F FFFF番地の領域は、内蔵ＤＲＡＭ15に割り当てられた内蔵ＤＲＡＭ領域である。H’10 0000番地〜H’FF FFFF番地の領域は、ＲＯＭ等の外部記憶装置に対して割り当てられた外部領域である。
【００３９】
内蔵ＤＲＡＭ領域において、特にH’00 0080番地〜H’00 008F番地には、外部割り込みベクタエントリの格納領域が割り当てられている。
また、外部領域において、特にH’FF FFF0番地〜H’FF FFFF番地には、リセットベクタエントリの格納領域が割り当てられている。
【００４０】
マイクロプロセッサ10は、マルチプロセッサシステムを構成する上で、マスタープロセッサ、スレーブプロセッサのいずれにも使用することができる。制御部30はモード切り替え信号M/S を入力する。信号M/S がＨレベルの場合は、マスタープロセッサとして使用されるマスターモードが設定され、信号M/S がＬレベルの場合は、スレーブプロセッサとして使用されるスレーブモードが設定される。プロセッサ10は、マスターモード、スレーブモードのいずれであっても、図２に示す物理アドレス空間に従い各領域に割り当てられた対象へのアクセスを行う。
【００４１】
次に、マスターモードが設定された場合のマイクロプロセッサ10におけるリセット動作について説明する。
リセット信号RST がＬレベルにアサートされるとともに、プロセッサ10内の素子がリセットされ、ハードウェア的なリセット処理がなされる。またリセット信号RST のアサートに応答してＰＣ43にリセットベクタエントリの先頭アドレスであるH’FF FFF0番地がセットされるようになっている。
その後、リセット信号RST がＨレベルにネゲートされたことに応答して、制御部30は、外部からリセットベクタエントリをフェッチするように、実行部40を制御する。そのためにまず、ＰＣ43は、すでに保持しているリセットベクタエントリの先頭アドレスであるH’FF FFF0番地をバスコントローラ18に出力する。バスコントローラ18は、H’FF FFF0番地が外部領域に対するアクセスであることを認識し、外部バスＩ／Ｆ部13に対してH’FF FFF0番地にあるデータ、すなわちリセットベクタエントリを外部からフェッチするよう要求する。外部バスＩ／Ｆ部13は、H’FF FFF0番地を外部アドレスバスへ出力する。
【００４２】
図３はマスターモードが設定される場合のプロセッサ10から見た外部のＲＯＭが割り当てらた領域の詳細を示す。また図４はマスターモードが設定される場合のプロセッサ10から見た内蔵ＤＲＡＭ15が割り当てらた領域の詳細を示す。
【００４３】
外部領域の一部が外部ＲＯＭに対して割り当てられ、リセットベクタエントリは外部ＲＯＭに格納されている。外部ＲＯＭは外部アドレスバスを介してH’FF  FFF0番地が入力されることに応答して、その番地に格納された情報を外部データバス25を介して外部バスＩ／Ｆ部13へ出力する。
リセットベクタエントリは、リセット処理プログラム50を起動させるための情報が含まれている。この実施の形態では、図３に示すとおり、リセットベクタエントリ内のH’FF FFF0番地には分岐命令が記憶されており、マイクロプロセッサ10は、リセットベクタエントリとして分岐命令を外部からフェッチすることになる。このフェッチした分岐命令は内部データバス20を介して命令キュー12に入力され、ＣＰＵ11は分岐命令をデコードして実行する。そしてH’FF FFF1番地〜H’FF FFFF番地になにも情報が格納されていないものとする。
【００４４】
分岐命令は、オペコードJMP と分岐先アドレス情報とで構成され、この分岐先アドレス情報は、複数の命令からなるリセット処理プログラム50が格納されている領域の先頭アドレスであるH’FF 0000番地を示している。従ってマイクロプロセッサ10は、その分岐命令の実行によりH’FF 0000番地がＰＣ43にセットされ、H’FF 0000番地に格納されたリセット処理プログラム50の先頭命令を外部データバス25を介して外部からフェッチする。この先頭命令は命令デコーダ31でデコードされ、実行部40にて実行される。以降、マイクロプロセッサ10は、ＰＣ43が保持アドレスを順次カウントして、リセット処理プログラム50内にある複数の命令を順次フェッチし実行し、最終的にメインプログラムに実行を復帰させることにより、マスターモードにおけるマイクロプロセッサ10のソフトウェア的なリセット処理が完了する。
【００４５】
この実施の形態では図３に示すように、リセット処理プログラムは、外部ＲＯＭに格納されている。しかしこれに限ることなくリセット処理プログラムが図３に示された外部ＲＡＭに格納されてあってもよい。
【００４６】
また、この実施の形態では、リセットベクタエントリには、リセット処理プログラムの先頭命令へ分岐する分岐命令のみを格納していたが、例えば、リセットベクタエントリ内にリセット処理プログラムの先頭アドレスを格納し、ＣＰＵ11がその先頭アドレスをＰＣ43にセットするように構成されてもよい。
【００４７】
このリセット処理プログラムの実行により、マイクロプロセッサ10がマスタープロセッサとして使用するために必要なリセット処理が行われ、特に図４に示された外部割り込みベクタエントリ、および外部割り込み処理プログラム51がＲＯＭあるいはＲＡＭ等の外部の記憶装置から内蔵ＲＡＭ15へダウンロードされる処理がなされる。
【００４８】
マスターモードにおいて、マイクロプロセッサ10が例えばメインプログラムの実行中に外部から外部割り込み信号INT がアサートされた場合における割り込み処理は次のように開始される。
外部割り込み信号INT がＬレベルでアサートされることにより、制御部30はＰＣ43に外部割り込みベクタエントリの先頭アドレスであるH’00 0080番地をセットする。そして制御部30はリセット処理時に外部からダウンロードされた外部割り込みベクタエントリを内蔵ＤＲＡＭ15からＣＰＵ11内に転送するように実行部40を制御する。ＰＣ43は、H’00 0080番地をバスコントローラ18に出力する。バスコントローラ18は、H’00 0080番地が内蔵ＤＲＡＭ領域に対するアクセスであることを認識し、内蔵ＤＲＡＭ15に対してH’00 0080番地のアドレスを出力する。内蔵ＤＲＡＭ15は、H’00 0080番地にある情報を内部データバス20を介してＣＰＵ11に出力する。
【００４９】
外部割り込みベクタエントリは、内蔵ＤＲＡＭ15に記憶された外部割り込み処理プログラム51を起動させるための情報が含まれている。この実施の形態では、図４に示したとおり、その先頭アドレスであるH’00 0080番地には、オペコードJMP と分岐先アドレス情報とで構成された分岐命令が格納されており、H’00 0081番地〜H’00 008F番地にはなにも情報が格納されていない。
この分岐命令の分岐先アドレス情報は、複数の命令からなる外部割り込み処理プログラム51の先頭アドレスであるH’00 1000番地を示している。従ってマイクロプロセッサ10では、その分岐命令の実行によりH’00 1000番地がＰＣ43にセットされ、内蔵ＤＲＡＭ15のH’00 1000番地に格納された外部割り込み処理プログラムの先頭命令が内部データバス20を介してＣＰＵ11に送られる。この先頭命令は命令デコーダ31でデコードされ、実行部40にて実行される。以降、マイクロプロセッサ10は、ＰＣ43が保持アドレスを順次カウントして、外部割り込み処理プログラム51内にある複数の命令を順次フェッチし実行する。
【００５０】
通常、外部割り込み処理プログラムには、複数の割り込み要因のうちのどの割り込み要因が原因となって外部割り込み信号INT がアサートされたかを解析する要因解析プログラム、外部割り込み信号INT の発生原因となった割り込み要因に対応した割り込み処理を行う要因処理プログラムが含まれ、この外部割り込み処理プログラムが実行されることにより、マイクロプロセッサ11内で外部割り込みの発生した要因に応じた処理がなされる。
【００５１】
次いで、スレーブモードが設定された場合のマイクロプロセッサ10におけるリセット動作について説明する。
リセット信号RST がＬレベルにアサートされるとともに、マスターモードの場合と同様にプロセッサ10内の素子がリセットされ、ハードウェア的なリセット処理がなされる。また、リセット信号RST のアサートに応答してＰＣ43にリセットベクタエントリの先頭アドレスであるH’FF FFF0番地がセットされる。しかし、その後にリセット信号RST がＨレベルにネゲートされても、制御部30はＰＣ43がその先頭アドレスであるH’FF FFF0番地がバスコントローラ18に転送されないようにし、外部からリセットベクタエントリをフェッチしないように実行部40を制御している。
【００５２】
図５は、スレーブモードが設定された場合のプロセッサ10から見た内蔵ＤＲＡＭが割り当てられた領域の詳細を示す。
スレーブモードにおいて、ソフトウェア的なリセット処理は、外部から外部割り込み信号INT がアサートされることにより開始される。
なお、外部割り込み信号INT がアサートされる前に、マスタープロセッサ等の外部バスマスターにより、図５に示す外部割り込みベクタエントリ及び外部割り込み処理プログラム52が内蔵ＤＲＡＭ15に書き込まれたものとする。
【００５３】
外部割り込み信号INT がＬレベルでアサートされることにより、制御部30はＰＣ43に外部割り込みベクタエントリの先頭アドレスであるH’00 0080番地をセットし、外部割り込みベクタエントリが内蔵ＤＲＡＭ15からＣＰＵ11内に取り込まれるように実行部40を制御する。ＰＣ43は、H’00 0080番地をバスコントローラ18に出力する。バスコントローラ18は、H’00 0080番地が内蔵ＤＲＡＭ領域に対するアクセスであることを認識し、内蔵ＤＲＡＭ15に対してH’00 0080番地のアドレスを出力する。内蔵ＤＲＡＭ15は、H’00 0080番地にある情報を内部データバス20を介してＣＰＵ11に出力する。
【００５４】
マスターモードと同様に、外部割り込みベクタエントリの先頭アドレスであるH’00 0080番地には、オペコードJMP と分岐先アドレス情報とで構成された分岐命令が格納されており、H’00 0081番地〜H’00 008F番地にはなにも情報が格納されていない。この分岐命令の分岐先アドレス情報は、複数の命令からなる外部割り込み処理プログラム52の先頭アドレスであるH’00 1000番地を示している。従ってマイクロプロセッサ10では、その分岐命令の実行によりH’00 1000番地がＰＣ43にセットされ、内蔵ＤＲＡＭ15のH’00 1000番地に格納された外部割り込み処理プログラム52の先頭命令が内部データバス20を介してＣＰＵ11に送られる。この先頭命令は命令デコーダ31でデコードされ、実行部40にて実行される。以降、マイクロプロセッサ10は、ＰＣ43が保持アドレスを順次カウントして、外部割り込み処理プログラム52内にある複数の命令を順次フェッチし実行する。
【００５５】
外部割り込み処理プログラム52はリセット処理を行うための命令からなり、このリセット処理を行うための命令がＣＰＵ11で実行されることによりマイクロプロセッサ10がスレーブプロセッサとして使用されるために必要なリセット処理がなされる。
なお、このスレーブモードにおける外部割り込み処理プログラムは、マルチプロセッサシステムにおけるスレーブプロセッサの使用形態によってユーザにより自由に設定される。この実施の形態においては、外部割り込み信号INT がスレーブプロセッサのリセット処理以外の要因に対して使用されないスレーブプロセッサを想定しているため、外部割り込み処理プログラムはリセット処理を行うための命令のみで構成されている。
しかし、外部割り込み信号INT がスレーブプロセッサの初期化処理以外の要因に対する割り込みにも用いられるならば、リセット処理を行うための命令の他に、その要因に応じた処理を行うための割り込み要因処理プログラム、及び要因を解析するための要因解析プログラムを構成する命令を外部割り込み処理プログラムに追加してもよい。
【００５６】
マイクロプロセッサ10がスレーブモードに設定されている場合、少なくともリセット処理が行われている間は外部バスに対するバス権を放棄しており、特に１６個のデータバス端子Ｄ、および２４個のアドレス端子Ａをすべてハイインピーダンス状態にしている。
【００５７】
外部バスＩ／Ｆ部13は、１６個の外部データバス端子Ｄ、２４個のアドレス端子Ａの合計４０個の端子の各々に接続する入出力バッファを有し、その入出力バッファの回路構成を図６に示す。
この入出力バッファは、その入力側が外部端子に接続される入力バッファ60、その出力側が外部端子に接続される出力バッファ61で構成され、また入力バッファ60、出力バッファ61にはそれぞれ信号Ｒ、Ｗが入力される。
【００５８】
外部端子からデータあるいはアドレスを入力する場合、信号Ｒ、ＷをともにＨにして、入力バッファ60が動作することにより外部端子から入力される信号を入力バッファ60の出力線からプロセッサ内部に送る。一方、出力バッファ61は外部端子が電源電圧VCC 、接地電圧GND のいずれにも電気的に接続されないようにし、外部端子をハイインピーダンス状態にする。
外部端子にデータあるいはアドレスを出力する場合には、信号Ｒ、ＷをともにＬにして、出力バッファ61が動作することによりプロセッサ内部から出力バッファ61の入力線に伝搬された信号を外部端子に送る。一方、入力バッファ60は、その出力が電源電圧VCC 、接地電圧GND のいずれにも電気的に接続されないようにし、プロセッサ内部への出力線をハイインピーダンス状態にする。
【００５９】
つまり、スレーブモードにおいては、データバス端子Ｄ、アドレス端子Ａに接続するすべての出力バッファ61にＨレベルの信号Ｗが入力され、各々の端子をすべてハイインピーダンスとしている。これは、マイクロプロセッサ10がデータバス端子Ｄ、アドレス端子Ａから外部に信号を不用意に発生させないようにするためである。
【００６０】
なお、アドレス端子Ａがハイインピーダンス状態であっても、アドレス端子Ａを介してアドレスをプロセッサ10に与えることができ、外部バスマスターがプロセッサ10の内蔵ＤＲＡＭ15に対するデータの書き込みまたは読み出しを行える。この場合、データバス端子Ｄがハイインピーダンス状態であっても、外部バスＩ／Ｆ部13はチップセレクト信号CSが入力されたことに応答して、データバス端子Ｄのハイインピーダンス状態が解除されるように構成されている。
【００６１】
また、この実施の形態のマイクロプロセッサ10においては、アドレス端子Ａがハイインピーダンス状態となって外部データバスのバス権を放棄している間に、ＣＰＵ11が記憶装置、ＩＯデバイス等の外部の装置に対するアクセスを要求し、バスコントローラ18が、その要求信号もしくは外部装置を指定するアドレスをＣＰＵ11から受け取った場合、ＣＰＵ11に外部へのアクセスの禁止を知らせ、ＣＰＵ11に例外処理を行わせることを通知する例外発生通知信号を出力する。ＣＰＵ11はこの例外発生通知信号を受け取ると例外処理を開始し、例外処理ハンドラを起動させる。
【００６２】
図７は、このマイクロプロセッサ10を用いたマルチプロセッサシステムのシステム構成図である。
このマルチプロセッサシステムにおいては、図１にあるマイクロプロセッサ10をマスターモードに設定して用いるマスタープロセッサMP、図１にあるマイクロプロセッサ10をスレーブモードに設定して用いるスレーブプロセッサSPを有し、各々のデータバス端子Ｄは、共通の１６ビット幅のシステムバス100 に接続されている。
さらに、このマルチプロセッサシステムは、システムバス100 に接続され、種々の命令を格納する外部ＲＯＭ105 、およびシステムバス100 に接続され、スレーブプロセッサSPに対して外部割り込み信号を出力する割り込みコントローラ110 を有する。
【００６３】
図７におけるマルチプロセッサシステムに対するシステム初期化の動作を図８に示すタイミングチャート図を用いて説明する。図８は、リセット信号RST と外部割り込み信号INT の波形、マイクロプロセッサMP、スレーブプロセッサSPの各内部の処理、及びスレーブプロセッサSPにおけるデータバス端子Ｄ、アドレス端子Ａの状態をそれぞれ示している。
【００６４】
特に図８に付された（１）〜（６）の各処理について説明する。
（１）：ハードウェア的なリセット処理
マルチプロセッサシステムにおいて、マスタープロセッサMP、スレーブプロセッサSPには共通してリセット信号RST が入力される。リセット信号RST がＬレベルにアサートされると、マスタープロセッサMP及びスレーブプロセッサSPの双方では、リセット信号RST のＬレベルに応答して、各プロセッサ内の記憶素子がすべてリセットされる。
【００６５】
リセット信号RST がアサートされた後、ネゲートされたことに応答して、マスタープロセッサMPでは、外部ＲＯＭ105 に格納されたリセットベクタエントリがシステムバス100 を介してフェッチされる。そしてＣＰＵ11はリセットベクタエントリにある分岐命令を実行することにより、リセット処理プログラム50の先頭命令に分岐し、マスタープロセッサMPはリセット処理プログラム50の複数の命令を順次フェッチし、実行する。一方、スレーブプロセッサSPでは、リセット信号RST がアサートされ、その後ネゲートされても、リセットベクタエントリは外部からフェッチしない。従ってリセット処理を行うための命令で構成されたリセット処理プログラム50は命令デコーダ31に与えられず、実行されない。
【００６６】
（２）：マスタープロセッサMPの内蔵ＤＲＡＭ15への命令のダウンロード
リセット処理プログラム50の実行により、マスタープロセッサMPでは、ＣＰＵ11が外部ＲＯＭ105 （あるいは図示しない他の外部記憶装置）からシステムバス100 、内部データバス20を介して種々のプログラムを取り込み、これを内蔵ＤＲＡＭ15の所定の格納先に転送する。この内蔵ＤＲＡＭ15に転送されるプログラムには、図４に示す外部割り込みベクタエントリと外部割り込み処理プログラム51とが含まれている。
【００６７】
（３）：スレーブプロセッサSPの内蔵ＤＲＡＭ15への命令のダウンロード
リセット処理プログラム50の実行により、マスタープロセッサMPは、外部ＲＯＭ105 あるいは図示しない他の外部記憶装置からシステムバス100 、内部データバス20を介して種々のプログラムを取り込む。この取り込んだプログラムをスレーブプロセッサSPの内蔵ＤＲＡＭ15の所定領域へ転送するために、マスタープロセッサMPはスレーブプロセッサSPへチップセレクト信号CSと共に転送先のアドレスを入力する。これによりスレーブプロセッサSPはシステムバス100 を介してマスタープロセッサMPから転送されるプログラムを入力して自身の内蔵ＤＲＡＭ15へ記憶する。このスレーブプロセッサSPの内蔵ＤＲＡＭ15に記憶されたプログラムには、図５に示す外部割り込みベクタエントリとリセット処理を行うための命令を含む外部割り込み処理プログラム52とが含まれている。
【００６８】
（４）：スレーブプロセッサSPへの外部割り込み信号INT の発生
スレーブプロセッサSPの内蔵ＤＲＡＭ15への命令のダウンロードを終了した後に、リセット処理プログラム50の実行により、マスタープロセッサMPは、システムバス100 を介して割り込みコントローラ110 に割り込みデータを転送する。割り込みコントローラ110 は１６ビットデータを格納する割り込みレジスタ111 を有し、システムバス100 からの割り込みデータをセットする。
割り込みコントローラ110 の制御部112 はフリップ・フロップ回路を有し、割り込みレジスタ111 の所定のビット111aが「1」 を保持している場合にフロップ回路を「0」 にセットし、外部割り込み信号INT をＬレベルにする。そして外部割り込み信号INT は、スレーブプロセッサSPに入力される。
【００６９】
以上の（２）〜（４）の処理を含むリセット処理プログラム50の実行が終了することにより、マスタープロセッサの初期化が完了する。
【００７０】
（５）：スレーブプロセッサSPの外部割り込み処理プログラム52の実行
スレーブプロセッサSPにおいて、外部割り込み信号INT がアサートされたことにより、スレーブプロセッサSPのＣＰＵ11は（３）でスレーブプロセッサの内蔵ＤＲＡＭ15にダウンロードされ記憶された図６に示す外部割り込みベクタエントリを取り込み、その外部割り込みベクタエントリの分岐命令を実行する。この分岐命令の実行により、外部割り込み処理プログラム52の先頭命令に分岐し、その先頭命令が実行される。そしてスレーブプロセッサSPのＣＰＵ11は、内蔵ＤＲＡＭ15から外部割り込み処理プログラム52の複数の命令を順次取り込み、実行する。
図５に示したように、外部割り込み処理プログラム52には、リセット処理を行うための命令が含まれており、スレーブプロセッサSPのＣＰＵ11においてこのリセット処理を行うための命令の実行が終了することにより、スレーブプロセッサSPの初期化が完了する。
【００７１】
（６）：外部割り込み信号INT のネゲート
スレーブプロセッサSPの汎用入出力ポートに接続する端子Ｐから出力される信号PP0 が、割り込みコントローラ110 の制御部112 に入力される。制御部112 は信号PP0 が入力されたことにより、制御部112 のフリップフロップ回路が「1」 にリセットされるように構成されている。
スレーブプロセッサSPのＣＰＵ11がこの外部割り込み処理プログラム52を実行することにより、スレーブプロセッサSPにおける汎用入出力ポート16のデータレジスタにデータがセットされ、このデータのセットにより端子Ｐから信号PP0 を出力する。そして信号PP0 が割り込みコントローラ110 に入力されて、制御部112 のフリップフロップ回路をリセットする。その結果、割り込みコントローラ110 が外部割り込み信号INT をＨレベルにネゲートする。
【００７２】
以上の（５）、（６）の処理を含む外部割り込み処理プログラム52の実行が終了することにより、マルチプロセッサシステムの初期化が完了する。
【００７３】
スレーブプロセッサSPのデータバス端子Ｄ、およびアドレス端子Ａは、このマルチプロセッサシステムの初期化の動作において、（１）のハードウェア的なリセット処理からシステムの処理化が終了するまで、常にハイインピーダンス状態を保持している。これにより、スレーブプロセッサSPがシステムバス100 に対してバス権を放棄している。つまり、システム初期化が行われている間は、スレーブプロセッサSPが外部ＲＯＭ105 、マスタープロセッサMPの内蔵ＤＲＡＭ15、さらには図示しない外部記憶装置、外部ＩＯデバイスに対するアクセスを行わない。
【００７４】
この実施の形態１におけるマイクロプロセッサ10には、次の特徴がある。
（ａ）マイクロプロセッサ10は、外部からリセット信号RST が入力されても、その内部の記憶素子の記憶内容はリセットされるもののリセットベクタエントリをフェッチしないようにしたため外部の記憶装置に格納されたリセット処理プログラムを実行しない。そして割り込み信号INT が入力されたことに応答して外部割り込みベクタエントリを参照し、ＣＰＵ11が外部割り込み処理プログラム52に含まれるリセット処理を行うための命令を実行することによりプロセッサ10の初期化がなされるので、リセット信号の入力信号とは別に割り込み処理のためにプロセッサに通常備えられている既存の外部割り込み信号の入力機構及びその割り込み処理機構を用いて初期化することができる。
従って、リセット信号に応答してリセット処理のプログラムルーチンを実行することにより初期化されるマスタープロセッサとマルチプロセッサシステムを構成する場合に、マイクロプロセッサ10は、外部割り込み処理プログラムにリセット処理を行うための命令を設定しておく以外、既存のハードウェア機構をそのまま利用するだけで、マスタープロセッサが実行するものとは別の初期化用のプログラムルーチンを実行することができる。
従来考えられていたように、マルチプロセッサシステムに使用される複数のプロセッサのいずれもがリセット信号に応答してリセット処理用の別々のプログラムルーチンを実行する場合に必要とされる、どのプロセッサがどのプログラムルーチンをアクセスして実行するかを識別する種々の機構も不要となる。
【００７５】
（ｂ）このマイクロプロセッサ10では、スレーブモードが設定されている場合、リセット信号が入力された後に、その内部が初期化が終了するまでは少なくともアドレス端子Ａをハイインピーダンス状態（すなわち、図６の出力バッファ61の出力側をハイインピーダンス状態にする）にしているので、プロセッサ10がアドレス端子から不用意にＨまたはＬの信号が出力されることを防ぐ。特に、プロセッサ10がリセット信号が入力された後その内部が初期化が終了するまでの間に他の外部バスマスターがその初期化のために外部データバスを使用する場合（例えば、この実施の形態における図７におけるマスタープロセッサMPの初期化）、システムのアドレスバス上に伝搬しているアドレスに影響を与えないため、外部バスマスターの外部に対するアクセスが確実に行える。
また、割り込み処理プログラムの実行時に外部のメモリにアクセスできるようにするために、アドレス端子Ａは、割り込み信号INT がアサートされるまでハイインピーダンス状態にしておき、アサート後にハイインピーダンス状態を解除するようにしてもよい。
この実施の形態では、マスタープロセッサの初期化時に、その内蔵ＤＲＡＭからデータが読み出されることがないため、データバス端子Ｄもハイインピーダンス状態としている。
【００７６】
（ｃ）このマイクロプロセッサ10では、アドレス端子Ａがハイインピーダンス状態である場合に、外部バスＩ／Ｆ部13がＣＰＵ11から外部に対するアクセスを要求されても、ＣＰＵ11に例外発生通知信号を出力するので、ＣＰＵ11はこの例外発生通知信号により外部バス権も有さずに外部にアクセスしたことに対する例外処理を速やかに行える。
【００７７】
（ｄ）このマイクロプロセッサ10では、内蔵ＤＲＡＭ15に格納された外部割り込み処理プログラムを内部データバス20を介してＣＰＵ11が取り込み、この外部割り込み処理プログラム52にあるリセット処理を行うための命令を実行することにより、プロセッサの初期化がなされるので、マルチプロセッサシステムにおける他のプロセッサとは独立して初期化が行える。例えば、図８にある、マスタープロセッサMPのリセット処理プログラムの実行期間と、スレーブプロセッサとして機能するマイクロプロセッサ10の外部割り込み処理プログラムの実行期間とが一部オーバーラップして行われていることからわかるように、マイクロプロセッサ10を他のマイクロプロセッサと並列にリセット処理することもでき、システム全体の初期化を迅速に終了させることができる。
また、ＣＰＵ11は外部データバス25を使用することなくリセット処理を行うための命令を取り込み実行するので、マルチプロセッサシステムにおいて初期化の際に、外部データバス25を介して外部記憶装置からリセット処理プログラムを取り込み実行するマイクロプロセッサとの間に外部データバス25の利用を調整するバス調停回路を設ける必要もなくなる。
【００７８】
この実施の形態ではマスタープロセッサのリセット処理プログラム50の実行において、マイクロプロセッサ10の内蔵ＤＲＡＭ15にリセット処理を行うための命令を含んだ外部割り込み処理プログラム52を外部から書き込むようにしている。しかし、マイクロプロセッサ10内に内部データバス20に接続する内蔵ＲＯＭを設け、予めこの内蔵ＲＯＭに、外部割り込みベクタエントリとリセット処理を行うための命令を含んだ外部割り込み処理プログラム52とを格納し、ＣＰＵ11は内蔵ＲＯＭから命令を取り込み実行することによっても同一の効果を得る。しかも、マスタープロセッサMPのリセット処理プログラム50の実行において、スレーブプロセッサSP側の内蔵ＤＲＡＭ15へのプログラムの書き込み動作が不要になり、さらにシステム全体の初期化を素早く終了させることができる。
このように、内蔵ＲＯＭに格納する形態を採用する場合は、図５にある外部割り込みベクタエントリの分岐命令で、ＣＰＵ11が内蔵ＲＯＭへアクセスするようにその分岐先アドレス情報を変更する必要がある。
【００７９】
（ｅ）このマイクロプロセッサ10では、外部からリセット信号RST が入力されたことに応答して、リセット処理プログラム50が実行されることにより初期化がなされるマスターモードと、外部からリセット信号RST が入力されても、リセット処理プログラムを外部のＲＯＭ等からフェッチせず、そして割り込み信号INTが入力されたことに応答して、ＣＰＵ11が外部割り込み処理プログラムを構成する命令が命令デコードされ、この外部割り込み処理プログラムに含まれるリセット処理を行うための命令を実行することにより初期化がなされるスレーブモードが設定できるように構成されている。マイクロプロセッサ10をマスタプロセッサ、スレーブプロセッサのいずれで使用しても、図２のように同一のアドレス空間を構成することができる。そして、マイクロプロセッサがいずれのモードであっても、リセットベクタエントリの内容、及び外部割り込みベクタエントリの内容を変更させる必要はない。従って、マルチプロセッサシステムにおいてスレーブプロセッサを増やしたい場合には、同一のプロセッサを単に追加してモードを設定するだけの簡単な構成で実現でき、かつ各プロセッサの初期化がスムーズに行える。
【００８０】
この実施の形態におけるマルチプロセッサシステムでは、次の特徴がある。
（ｆ）マスタープロセッサMP、スレーブプロセッサSPにはともにリセット信号RST が入力される。マスタープロセッサMPでは、リセット信号RST が入力されたことに応答してリセットベクタエントリを参照し、リセット処理プログラム50が実行されることによりマスタープロセッサMPの初期化がなされる。スレーブプロセッサSPでは、リセット信号RST が入力されても、外部ＲＯＭに書き込まれたリセットベクタエントリを参照しないため、リセット処理プログラムを実行せず、マスタープロセッサMPが割り込みコントローラ110 を介して外部割り込み信号INT を入力したことに応答して外部割り込みベクタエントリを参照し、ＣＰＵ11が外部割り込み処理プログラム52を取り込み、その中のリセット処理を行うための命令を実行することにより、初期化がなされる。
その結果、各プロセッサが外部ＲＯＭにあるリセットベクタエントリを同時にアクセスすることはない。そしてシステムの初期化の際には２つのマイクロプロセッサは、それぞれ異なるベクタエントリを参照してプログラムルーチンを実行するように構成されているので、同一のリセットベクタエントリを参照してプログラムルーチンを実行する構成を採用した場合に必要とするプロセッサの識別機構も不要である。
【００８１】
また、各プロセッサを初期化するために、リセット処理プログラムを格納した記憶装置をプロセッサ毎に対応して設け、各プロセッサは対応の記憶装置からプログラムをフェッチし実行する必要もなくなる。よって、プロセッサがどの記憶装置にアクセスすべきかを設定するための機構も不要となる。また、記憶装置の増加も防ぐことができる。
【００８２】
実施の形態２．
図７のマルチプロセッサシステムにおいて、マルチプロセッサMP、スレーブプロセッサSP、割り込みコントローラ110 、これらを共通に接続するデータバスをワンチップ化したマルチプロセッサ機能を有するマイクロプロセッサで構成してもよい。そしてこのマルチプロセッサ機能を有するマイクロプロセッサと、図７に示すものと同一の外部ＲＯＭとをシステムバスで接続することにより、マルチプロセッサシステム全体を構成してもよい。
【００８３】
図９は、この実施の形態におけるマルチプロセッサシステムを有したマイクロプロセッサを示す構成図である。このマルチプロセッサシステムは、マイクロプロセッサ200 、ＲＯＭ201 及びマイクロプロセッサ200 とＲＯＭ201 あるいは図示しないユニットとの間でデータを転送するシステムバス202 を有する。
マイクロプロセッサ200 は、１２８ビット幅の内部データバス210 、この内部データバス210 に接続されるそれぞれＣＰＵ211a、211b、内蔵ＤＲＡＭ212 、外部バスＩＦ部213 、割り込みコントローラ214 、さらにはＣＰＵ211a、211bの各々の制御を受けて、内蔵ＤＲＡＭ212 と外部バスＩＦ部213 を制御するバスコントローラ215 を含み、これらが単一チップの半導体集積回路で構成されている。
【００８４】
ＣＰＵ211a、211bの各々は、基本的には図１にあるＣＰＵ11と同一に構成され、内部データバス210 から命令を取り込んでデコードする命令デコーダを含みそのデコード内容に応じた制御信号を出力する制御部、３２ビット単位でデータを処理し、この制御信号に従いデコードされた命令を実行し、内部データバス210に対してデータを入出力を行う実行部を有する。そしてＣＰＵ211a、211bの制御部には、それぞれ割り込み信号INTa、INTbが入力され、そしてリセット信号RST  が共通して入力される。またＣＰＵ211a、211bの各々は、図１に示される命令キュー12、データセレクタ17と同一の機能を有するものを含んでいる。
【００８５】
バスコントローラ215 は、ＣＰＵ211a、211bの各々により制御され、各々で生成されたアドレス及びその他の制御信号を受け取り、その受け取ったアドレスの指定する記憶領域をアクセスするように、その記憶領域である内蔵ＤＲＡＭ214あるいは外部の記憶装置へ対してアドレスを出力する。外部の記憶装置へのアクセスは、バスコントローラ215 が外部バスＩＦ部13を制御することにより行われる。そしてＣＰＵ211a、211bの各々は、内部データバス210 を介してバスコントローラ215 より出力されたアドレスの指定する記憶領域から命令あるいはデータを取り込む。
【００８６】
内蔵ＤＲＡＭ212 は、内部データバス210 と１２８ビット単位でデータを入出力し、バスコントローラ215 から出力されるアドレス、その他の制御信号を受け、そのアドレスの指定する領域に対して命令またはデータの読み出しまたは書き込みがなされる。ＣＰＵ211a、211bの双方は、バスコントローラ215 を制御することにより内蔵ＤＲＡＭ212 に対して命令またはデータのやり取りができる。
【００８７】
外部バスＩ／Ｆ部213 は、１６個の入出力端を有するデータバス端子Ｄに接続され、システムバス202 を介してＲＯＭ201 あるいは図示しない装置に対して１６ビットのデータを入出力する。マイクロプロセッサ200 が外部の記憶装置にアクセスする場合には、外部バスＩ／Ｆ部13は、バスコントローラ215 からアクセス先のアドレスを受け取り、さらにそのアドレスを外部の記憶装置に出力する。外部の記憶装置では、マイクロプロセッサ200 から転送されたデータをその受け取ったアドレスの示す記憶場所へ書き込み、またはその記憶場所に記憶されたデータを読み出してマイクロプロセッサ200に転送する。
【００８８】
マイクロプロセッサ200 は、外部から外部割り込み信号EINTを入力する。外部割り込み信号EINTは割り込みコントローラ214 に与えられる。割り込みコントローラ214 は、ＣＰＵ211a、211bにそれぞれ割り込み信号INTa、INTbを与える。特に割り込みコントローラ214 は、外部割り込み信号EINTがＣＰＵ211a、211bのどちらに対する割り込みかを判定し、割り込み信号INTa、INTbのいずれか一方を出力する。ＣＰＵ211a、211bは、それぞれ割り込み信号INTa、INTbに応答して割り込み処理プログラムを起動実行し、割り込み要因に対する割り込み処理を行う。また割り込みコントローラ214 は、ＣＰＵ211aから内部データバス210 を介してデータが転送され、この転送されたデータに基づき、外部割り込み信号EINTに拘わらずＣＰＵ21b に対して割り込み信号INTbを出力する機能を有する。
【００８９】
マイクロプロセッサ200 は、外部からリセット信号RST を入力しＣＰＵ211a、211b内を含むプロセッサ200 内の各記憶素子に与える。リセット信号RST がアサートされることに応答して各記憶素子の記憶内容をリセットするというハードウェア的なリセット処理を行う。またマイクロプロセッサ200 は、リセット信号RST がネゲートされると、ＲＯＭ201 に格納されているリセット処理プログラムが起動してＣＰＵ211aで実行されるように構成されている。詳細は後述する。
【００９０】
マイクロプロセッサ200 は、ＣＰＵ211a、ＣＰＵ211bのうちの一方をマスタープロセッサ、その他方をスレーブプロセッサとして動作するマルチプロセッサを構成する。この実施の形態ではＣＰＵ211aをマスタープロセッサ、ＣＰＵ211bをスレーブプロセッサとしている。
【００９１】
図１０は、マイクロプロセッサ200 の物理アドレス空間を説明するための説明図である。実施の形態１にあるプロセッサ10と同様、H’00 0000番地〜H’0F FFFF番地の領域は、内蔵ＤＲＡＭ15に割り当てられた内蔵ＤＲＡＭ領域であり、H’10 0000番地〜H’FF FFFF番地の領域は、ＲＯＭ201 、その他の外部記憶装置に対して割り当てられた外部領域である。内蔵ＤＲＡＭ領域において、H’00 0080番地〜H’00 008F番地にはＣＰＵ211aが参照する割り込みベクタエントリ241の格納領域、H’00 0090番地〜H’00 009F番地にはＣＰＵ211bが参照する割り込みベクタエントリ242 の格納領域がそれぞれ割り当てられている。外部領域においては、H’FF FFF0番地〜H’FF FFFF番地には、リセットベクタエントリ240の格納領域が割り当てられている。
ＣＰＵ211a、211bの各々から見たアドレス空間は、図１０に示すもので表現される。
【００９２】
図１１は、アドレス空間の外部領域の詳細を説明するための説明図である。
外部領域には、図９に示されているＲＯＭ201 が割り当てられる。さらにそのＲＯＭ201 への割り当て領域には、リセットベクタエントリ240 とその先頭命令がH’FF 0000番地に格納されたリセット処理プログラム250 とが割り当てられている。リセットベクタエントリにおいて、H’FF 0000番地にはリセット処理プログラム250 の先頭命令に分岐する分岐命令０が格納され、その他の番地にはなにも情報は格納されていない。分岐命令０にはH’FF 0000番地を示す情報が含まれている。
【００９３】
また、図１２は、アドレス空間の内蔵ＤＲＡＭ領域の詳細を説明するための説明図である。
その先頭命令がH’00 1000番地に格納された割り込み処理プログラム251 、その先頭命令がH’00 2000番地に格納された割り込み処理プログラム252 が内蔵ＤＲＡＭ領域に割り当てられている。割り込みベクタエントリ241 において、H’00 0080番地には割り込み処理プログラム251 の先頭命令に分岐する分岐命令１が格納され、その他の番地にはなにも情報は格納されていない。分岐命令１にはH’00 1000番地を指す情報が含まれている。割り込みベクタエントリ242 において、H’00 0090番地には割り込み処理プログラム252 の先頭命令に分岐する分岐命令２が格納され、その他の番地にはなにも情報は格納されていない。分岐命令２にはH’00 2000番地を示す情報が含まれている。
【００９４】
次に図９のマイクロプロセッサ200 の初期化動作について、図１３のフローチャート図を参照しながら説明する。
ステップST1 において、リセット信号RST がＬレベルにアサートされたことにより、ＣＰＵ211a、211bを含むマイクロプロセッサ200 内の各記憶素子はそのＬレベルのリセット信号RST を入力し、その記憶内容がリセットされる（マイクロプロセッサ200 のハードウェア的なリセット処理）。
【００９５】
次いで、ステップST2 において、リセット信号RST がＨレベルにネゲートされることに応答し、ＣＰＵ211aがリセット処理プログラム250 を実行する。
まず、リセット信号RST がネゲートされることにより、ＣＰＵ211aがリセットベクタエントリ240 の内容を参照すべく、システムバス202 を介してＲＯＭ201からリセットベクタエントリ240 がプロセッサ200 にフェッチされ、内部データバス210 を介してＣＰＵ211a内に取り込まれる。ＣＰＵ211aはリセットベクタエントリ240 に含まれる分岐命令０を実行することにより、ＲＯＭ201 に格納されたリセット処理プログラム250 の実行へ分岐する。そしてリセット処理プログラム250 を構成する複数の命令がH’FF 0000番地の先頭命令から順次フェッチされ、ＣＰＵ211aにより実行される。リセット処理プログラム250 の実行が終了することにより、ＣＰＵ211a内の初期化が完了する。
【００９６】
一方、リセット信号RST がネゲートされても、ＣＰＵ211bは、リセットベクタエントリ240 をＲＯＭ201 から取り込まないように構成されている。従ってＣＰＵ211bは、リセット処理プログラム250 を実行しない。
なお、ステップST2 において、ＣＰＵ211aはＲＯＭ201 に格納されている割り込みベクタエントリ241 、242 、及び割り込み処理プログラム251 、252 をＲＯＭ201 から取り込み、内蔵ＤＲＡＭ212 にダウンロードする処理を行う（ステップST2a）。割り込みベクタエントリ241 、242 、及び割り込み処理プログラム251 、252 は、図１２のアドレス空間で指定されたとおりに内蔵ＤＲＡＭ212 の所定の領域にそれぞれ格納される。
【００９７】
また、ステップST2 はリセット処理プログラム250 の実行におけるＣＰＵ211a自身ｂの初期化が完了した後に行われる最後の処理として、ＣＰＵ211aが割り込みコントローラ214 を用いてＣＰＵ211bに割り込み信号INTbを発生させる処理を行う（ステップST2b）。
ステップST2bにおいては、ＣＰＵ211aは内部データバス210 を介して割り込みコントローラ214 にデータを転送する。割り込みコントローラ214 はこの転送されたデータに基づいて、ＣＰＵ211bに割り込み信号INTbを出力する。
【００９８】
ステップST3 において、ＣＰＵ211bはこの割り込み信号INTbがアサートされたことに応答して、割り込み処理プログラム252 を実行する。
ＣＰＵ211aは、割り込みコントローラ214 へデータを転送したことを最後に、内部データバス210 のバス権を放棄し、ＣＰＵ211bに内部データバス210 のバス権が移る。
割り込み信号INT がアサートされて、ＣＰＵ211bは、ステップST2aの処理ですでに内蔵ＤＲＡＭ212 に格納されている割り込みベクタエントリ242 を、内部データバス210 を介して取り込む。ＣＰＵ211bは割り込み処理ベクタエントリ242を参照し、その中に含まれる分岐命令２を実行することにより、同じくステップST2aの処理ですでに内蔵ＤＲＡＭ212 に格納されている割り込み処理プログラム252 の実行へ分岐する。そして割り込み処理プログラム252 を構成する複数の命令がH’00 2000番地の先頭命令から順次フェッチされ、ＣＰＵ211bにより実行される。
【００９９】
この割り込み処理プログラム252 には、ＣＰＵ211b内のリセット処理を行うための命令が含まれている。割り込み処理プログラム252 の実行することにより、ＣＰＵ211bは、割り込み処理プログラム252 内の要因解析プログラムの実行により、入力された割り込み信号INTbがリセット処理という要因に対してアサートされたことを解析し、その結果、割り込み処理プログラム252 に含まれるリセット処理を行うための命令を実行する。この割り込み処理プログラム252 の実行が終了することにより、ＣＰＵ211b内の初期化が完了する。
【０１００】
この割り込み処理プログラムにあるリセット処理を行うための命令には、ＣＰＵ211bから内部データバス210 を介して割り込みコントローラ214 へデータを転送する命令が含まれている。割り込みコントローラ214 は、この転送されたデータを受け取ることにより、割り込み信号INTbをネゲートする。
【０１０１】
なお、ＣＰＵ211bに入力される割り込み信号INTbは、ＣＰＵ211aのリセット処理プログラム250 の実行により発生させる場合に限らず、ＣＰＵ211aの初期化が終了した後に、外部から割り込み信号INTに応答して発生させてもよい。
【０１０２】
この実施の形態２におけるマイクロプロセッサ200 には次の特徴がある。
内蔵メモリ212 は、ＣＰＵ211a、211bの共有メモリとして、１２８ビットの内部データバス210 を介してデータのやり取りが行われるので、共有メモリへのアクセス効率が著しく向上する。
このようなマイクロプロセッサ200 においてソフトウェア的なリセット処理を行う場合に、リセット信号RST が入力されても、ＣＰＵ211aだけがリセット処理プログラムを実行してＣＰＵ211a内の初期化を行い、ＣＰＵ211bは、割り込み信号INTbに応答してリセット処理を行うための命令を含む外部割り込み処理プログラムを実行することによりＣＰＵ211b内の初期化を行うので、リセットベクタエントリ240 はＣＰＵ211aのみが参照し、ＣＰＵ211a、211bがリセットベクタエントリ240 を格納するＲＯＭ201 を順次アクセスするためのバス調停回路をチップ内に設ける必要はない。
【０１０３】
特に、ＣＰＵ211bは、外部の記憶装置からではなく内蔵ＤＲＡＭ211aから割り込みベクタエントリ、及びリセット処理を行うための命令を取り込み実行するので、命令の取り込みが高速に行える。しかも内部データバス幅が外部バスより大きいため、一層の高速な命令取り込みが期待できる。
【０１０４】
なお、リセット処理プログラムを格納するものとして、外部ＲＯＭ201 以外にＲＡＭあるいは磁気ディスク等のデータバス202 に接続する記憶装置であれば何でもよい。
【０１０５】
【発明の効果】
以上説明したように、この発明に係るマイクロプロセッサによると、外部から入力されるリセット信号に応答してプロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、割り込み信号が前記処理部に入力されたことに応答して、前記処理部は割り込み処理プログラムを構成する命令が前記処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられた割り込み処理プログラムに含まれるリセット処理である、ソフトウェア的なリセット処理を行うための命令を実行することにより、プロセッサの初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものであるので、リセット信号に応答して命令を実行することにより初期化される別のプロセッサとともにマルチプロセッサシステムを構成する場合、本来割り込み処理のために設けられた通常の機構を利用することにより初期化のための命令実行が可能になる。従って、共通のリセット信号に応答してプログラムを実行させたときに比べ、各プロセッサの実行すべきプログラムルーチンの格納されたどの記憶領域をアクセスするかを識別するためのハードウェア機構を各々のプロセッサに追加する必要がなく、マルチプロセッサシステムのシステム設計が容易になる。
【０１０６】
また、この発明に係るマイクロプロセッサによると、第１のモード及び第２のモードのいずれかに設定されるためのモード設定手段を備え、外部から入力されるリセット信号に応答して、プロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、前記モード設定手段により第１のモードが設定された場合、前記リセット信号が前記処理部に入力されたことに応答して、前記処理部はリセット処理プログラムを構成する命令が前記処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられたリセット処理プログラムの命令を実行することによりプロセッサの初期化がなされ、前記モード設定手段により第２のモードが設定された場合、割り込み信号が前記処理部に入力されたことに応答して、前記処理部は割り込み処理プログラムを構成する命令が前記命令デコーダに与えられるように前記アクセス制御部を制御し、前記処理部が前記命令デコーダに与えられた割り込み処理プログラムに含まれるリセット処理である、ソフトウェア的なリセット処理を行うための命令を実行することにより、プロセッサの初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものであるので、第１のモードに設定されたもの、第２のモードに設定されたものを用意してマルチプロセッサシステムを構成した場合、各々のプロセッサが共通のリセット信号に応答してプログラムを実行させたときに比べ、各々の実行すべきプログラムルーチンの格納されたどの記憶領域をアクセスするかを識別するためのハードウェア機構を各々のプロセッサに設けることなくシステム全体の初期化ができる。この場合、モードを変更する以外は全く同一のプロセッサを用意すればよい。
【０１０７】
また、この発明に係るマイクロプロセッサによると、外部から入力されるリセット信号に応答して、前記第１および第２の処理部を含むプロセッサ内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、前記リセット信号が前記第１の処理部に入力されたことに応答して、前記第１の処理部はリセット処理プログラムを構成する命令が前記第１の処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記第１の処理部がその命令デコードに与えられたリセット処理プログラムを実行することにより前記第１の処理部内の初期化がなされ、前記第２の処理部に割り込み信号が入力されたことに応答して、前記第２の処理部は割り込み処理プログラムを構成する命令が前記第２の処理部の命令デコーダに与えられるように前記アクセス制御部を制御し、前記第２の処理部がその命令デコーダに与えられた割り込み処理プログラムに含まれるリセット処理である、ソフトウェア的なリセット処理を行うための命令を実行することにより、前記第２の処理部内の初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものであるので、各々の処理部が共通のリセット信号に応答してプログラムを実行する場合に比べ、各々の処理部の実行すべきプログラムルーチンの格納されたどの記憶領域をアクセスするかを識別するためのハードウェア機構をプロセッサに搭載する必要がなくなり、マイクロプロセッサの設計が容易になる。
【０１０８】
また、この発明に係るマルチプロセッサシステムによると、第１のマイクロプロセッサにリセット信号が入力されたことに応答して、第１のマイクロプロセッサの内部の記憶素子がリセットされるとともに、前記第１の処理部はリセット処理プログラムを構成する命令が前記第１の処理部の命令デコーダに与えられるように前記第１のアクセス制御部を制御し、前記第１の処理部がその命令デコーダに与えられたリセット処理プログラムの命令を実行することにより前記第１のマイクロプロセッサの初期化がなされ、前記第２のマイクロプロセッサに前記リセット信号が入力されたことに応答して、第２のマイクロプロセッサの内部の記憶素子がリセットされる、ハードウェア的なリセット処理を行い、前記第２のマイクロプロセッサに割り込み信号が入力されたことに応答して、前記第２の処理部は割り込み処理プログラムを構成する命令が前記第２の処理部の命令デコーダに与えられるように前記第２のアクセス制御部を制御し、前記第２の処理部がその命令デコーダに与えれらた割り込み処理プログラムに含まれるリセット処理である、ソフトウェア的なリセット処理を行うための命令を実行することにより、前記第２のマイクロプロセッサの初期化がなされ、前記リセット信号が入力されてから、前記割り込み信号が入力されるまでの間、前記ソフトウェア的なリセット処理は、行わないものである。これによると、第２のマイクロプロセッサ側では、本来割り込み処理のために設けられた通常の機構を利用することにより初期化のための命令実行が可能になる。従って、第１および第２のマイクロプロセッサはともに共通のリセット信号に応答してプログラムを実行する場合に比べ、各プロセッサの実行すべきプログラムルーチンの格納されたどの記憶領域をアクセスするかを識別するためのハードウェア機構を各々のプロセッサに追加する必要がなく、マルチプロセッサシステムのシステム設計が容易になる。
【図面の簡単な説明】
【図１】  この発明の実施の形態１によるマイクロプロセッサを示す構成図である。
【図２】  図１のマイクロプロセッサに設定されているアドレス空間を説明するための説明図である。
【図３】  図１のマイクロプロセッサにおいて、マスターモードが設定されている場合のプロセッサから見た外部ＲＯＭが割り当てられた領域の詳細を説明するための説明図である。
【図４】  図１のマイクロプロセッサにおいて、マスターモードが設定されている場合のプロセッサから見た内蔵ＤＲＡＭが割り当てられた領域の詳細を説明するための説明図である。
【図５】  図１のマイクロプロセッサにおいて、スレーブモードが設定されている場合のプロセッサから見た内蔵ＤＲＡＭが割り当てられた領域の詳細を説明するための説明図である。
【図６】  図１のマイクロプロセッサにおいて、データバス端子Ｄ、アドレス端子Ａに接続されている入出力バッファを示す構成図である。
【図７】  図１のマイクロプロセッサを用いたマルチプロセッサシステムを示すシステム構成図である。
【図８】  図７のマルチプロセッサシステムにおいて、マスタープロセッサMP及びスレーブプロセッサSPのそれぞれ初期化の動作を示すタイミングチャート図である。
【図９】  この発明の実施の形態２によるマルチプロセッサシステムを示す構成図である。
【図１０】  図９に示されたマイクロプロセッサ200 に設定されているアドレス空間を説明するための説明図である。
【図１１】  図９に示されたマイクロプロセッサ200 から見た外部ＲＯＭが割り当てられた領域の詳細を説明するための説明図である。
【図１２】  図９に示されたマイクロプロセッサ200 から見たから見た内蔵ＤＲＡＭが割り当てられた領域の詳細を説明するための説明図である。
【図１３】  図９のマルチプロセッサシステムにおける初期化の動作を示すタイミングチャート図である。
【符号の説明】
11…中央処理装置（ＣＰＵ）、13…外部バスＩ／Ｆ部、15…内蔵ＤＲＡＭ、18…バスコントローラ、50…リセット処理プログラム、52…外部割り込み処理プログラム、100 …システムバス、105 …外部ＲＯＭ、110 …割り込みコントローラ、MP…マスタープロセッサ、SP…スレーブプロセッサ
【図１】
0004226085.tif 000002
【図２】
0004226085.tif 000003
【図３】
0004226085.tif 000004
【図４】
0004226085.tif 000005
【図５】
0004226085.tif 000006
【図６】
0004226085.tif 000007
【図７】
0004226085.tif 000008
【図８】
0004226085.tif 000009
【図９】
0004226085.tif 000010
【図１０】
0004226085.tif 000011
【図１１】
0004226085.tif 000012
【図１２】
0004226085.tif 000013
【図１３】
0004226085.tif 000014