(57)【要約】【課題】ＲＯＭに記憶したプログラムを製造後に修正するための回路規模の増大を最小限に留め、修正プログラムの実行を開始するまでの時間遅れを最小限に留め、命令先読み技術を用いてあっても修正箇所のアドレスを直接指定可能なマイクロコンピュータを実現する。【解決手段】ＲＯＭ２のプログラムの修正を行う際、被修正箇所の先頭のアドレスを修正アドレスレジスタ３１に記憶させ、修正プログラムをＲＡＭ２に記憶させ、修正プログラムの開始アドレスを分岐先アドレスレジスタ３３に記憶させておくことで、比較回路３２でフェッチアドレスレジスタ１と修正アドレスレジスタ３１との値の一致を検出したときに、選択回路４が分岐先アドレスレジスタ３３に記憶した修正プログラムの開始アドレスをアドレスバスに出力し、ＲＡＭ５に記憶した修正プログラムを実行できる。【選択図】　　　　図１
2004086596.tif 000002
【特許請求の範囲】
【請求項１】
命令をプリフェッチするためのアドレスが格納されるフェッチアドレスレジスタと、アドレスバスと、プログラムを構成する複数の命令を記憶し前記アドレスバス上のアドレスに対応する前記記憶データが読み出されるＲＯＭと、前記アドレスバス上のアドレスに対応する記憶データが読み出されるＲＡＭと、前記ＲＯＭおよびＲＡＭから読み出されたデータが出力されるデータバスと、前記データバス上のデータを格納する命令キューとを備えたマイクロコンピュータであって、
前記フェッチアドレスレジスタに格納されているアドレスと比較するためのアドレスを記憶する比較アドレスレジスタと、
前記比較アドレスレジスタに記憶されたアドレスと前記フェッチアドレスレジスタに格納されているアドレスとを比較して両アドレスの一致を検出する比較回路と、
分岐先アドレスとして前記ＲＡＭ内の所定のアドレスを記憶する分岐先アドレスレジスタと、
前記比較回路が前記両アドレスの一致を検出したときに前記分岐先アドレスレジスタのアドレスをアドレスバスに出力し、一致を検出しないときは前記フェッチアドレスレジスタのアドレスを前記アドレスバスに出力する選択回路とを設けたことを特徴とするマイクロコンピュータ。
【請求項２】
前記分岐先アドレスレジスタは、分岐先のベースアドレスを決める分岐先アドレスベースレジスタと、前記ベースアドレスからのオフセット量を示す分岐先アドレスオフセットレジスタとで構成されることを特徴とする請求項１記載のマイクロコンピュータ。
【請求項３】
前記比較アドレスレジスタおよび分岐先アドレスレジスタは外部から値が設定されるように構成されたことを特徴とする請求項１または請求項２記載のマイクロコンピュータ。
【請求項４】
前記分岐先アドレスベースレジスタに代えて、分岐先のベースアドレスが予め記憶され変更不可能である記憶手段を設けたことを特徴とする請求項２記載のマイクロコンピュータ。
【請求項５】
前記比較アドレスレジスタと分岐先アドレスレジスタと比較回路とを複数組設けたことを特徴とする請求項１記載のマイクロコンピュータ。
【請求項６】
前記比較アドレスレジスタと分岐先アドレスオフセットレジスタと比較回路とを複数組設けたことを特徴とする請求項２，請求項３または請求項４記載のマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコンピュータに内蔵されたＲＯＭに固定記憶されたプログラムを半導体集積回路の製造後に修正し、正常に動作させることができるプログラム変更装置を内蔵したマイクロコンピュータに関するものである。
【０００２】
【従来の技術】
近年の電子機器にはその高機能化、高性能化に対応する為にマイクロコンピュータが多く利用されている。一般的にこれらのマイクロコンピュータの動作を決めるプログラムはＲＯＭに格納される。特に民生機器等の大量生産されるような機器に使用される場合は、その単価が安い等の理由から半導体集積回路の製造工程時にプログラムを固定設置するマスクＲＯＭが用いられる場合が多い。しかしながらマスクＲＯＭは製造工程時にプログラムを固定設置する為、製造後に仕様変更の発生やプログラムミスの発覚等の理由によりプログラムに修正を加えたくても不可能であり、最悪の場合は完成品を廃棄せざるをえなかった。また、プログラムに修正を加えるためには再度マイクロコンピュータを製造するしか方法が無く、費用と時間を浪費するという問題があった。
【０００３】
これらの問題を解決するために従来からいくつかのプログラム変更装置が考案され、この装置をマイクロコンピュータに内蔵することで製造後のマイクロコンピュータに対してプログラムの修正を可能としている。
【０００４】
図５は第１の従来例のプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。図５において、１はフェッチアドレスレジスタ、２はプログラムが格納されるＲＯＭ、３１は修正アドレスレジスタ、３２は比較回路、３４は修正命令レジスタ、５はＲＡＭ、６は命令キュー、９は選択回路である。
【０００５】
通常マイクロコンピュータは、フェッチアドレスレジスタ１により指示されたＲＯＭ２上の命令を順次読み出し、命令キュー６に蓄積された後ＣＰＵ（図示せず）内で解読後、マイクロ命令等の実行により基本動作を行う。本従来例のプログラム変更装置では、修正が必要な命令が格納されるアドレスを修正アドレスレジスタ３１に、修正後の命令を修正命令レジスタ３４に格納する。修正アドレスレジスタ３１とフェッチアドレスレジスタ１の値は常に比較回路３２により比較され、一致を検出すると選択回路９を修正命令レジスタ側に切り替え、ＲＯＭ２からではなく、修正命令レジスタ３４に格納される命令コードを命令解読器へ供給する事で命令の修正を行っている。修正アドレスレジスタ３１と比較回路３２及び修正命令レジスタ３４で構成されるプログラム変更装置主要部３ａは、一つのアドレスに格納される命令を修正する為に一組必要であり、通常は複数のアドレスの命令を修正する為に複数組のプログラム変更装置主要部３ａ〜３ｎが実装される。
【０００６】
図６は第２の従来例のプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。図６において、１はフェッチアドレスレジスタ、２はプログラムが格納されるＲＯＭ、３１は修正アドレスレジスタ、３２は比較回路、３５は割込ベクタレジスタ、５はＲＡＭ、６は命令キューである。
【０００７】
本従来例のプログラム変更装置では、修正が必要な命令が格納されるアドレスを修正アドレスレジスタ３１に、一連の修正プログラムをＲＡＭ５に、修正プログラムの開始アドレスを割込ベクタレジスタ３５に格納する。修正アドレスレジスタ３１とフェッチアドレスレジスタ１の値は常に比較回路３２により比較され、一致を検出すると割込要求信号ＩＲＱを発生する。ＣＰＵ（図示せず）が割込要求信号ＩＲＱを受理すると、現在のプログラムカウンタ値等をスタックに退避し、割込ベクタレジスタ３５から割込分岐先のアドレスを読み出し、フェッチアドレスレジスタ１に設定する。この場合割込ベクタレジスタ３５にはＲＡＭ５上に格納した修正プログラムの開始番地が格納されており、割込処理プログラムとして、修正プログラムを実行することになる。
【０００８】
【発明が解決しようとする課題】
しかしながら従来のプログラム変更装置には下記のような問題があった。第１の従来例では、比較回路３２、修正アドレスレジスタ３１、修正命令レジスタ３４からなる一組のプログラム変更装置主要部で修正可能な命令は一箇所のアドレスに対応する命令コード（例えば８ビットマイクロコンピュータでは１バイトの命令コード）のみである。プログラム変更装置主要部と修正命令コードが１対１に対応する為、複数の命令コードを修正可能とするには複数組のプログラム変更装置主要部を実装する必要がある。通常は８組から１６組程度実装される場合が多い。一般的な８ビットマイクロコンピュータでは１６ビット〜２４ビット、１６ビットマイクロコンピュータでは２４ビット〜３２ビットのアドレス線を有している。すなわちこのプログラム変更装置主要部の比較回路３２及び修正アドレスレジスタ３１はアドレス線と同じビット幅を備える必要があり、またそれらと同じ数の修正命令レジスタ３４（一組あたりのビット幅は一般的には８ビットマイクロコンピュータの場合は８ビット、１６ビットマイクロコンピュータの場合は１６ビット）が必要となり、複数組備えるとなると回路規模が増大するという問題を生じる。
【０００９】
また逆に修正プログラムの大きさは実装されるプログラム変更装置主要部の組数に制限されてしまうという問題もある。
【００１０】
第２の従来例では、一般的な割込を用いて修正プログラムを実行させる方式である為、プログラムカウンタ値やプログラム状態語ＰＳＷ（図示せず）のスタックへの退避動作を伴う。従ってその為のスタック領域の確保が必要であり、ＲＡＭを浪費するという問題がある。またスタックへの退避動作の為の時間が必要となり、実行までの時間的なロスを発生する。この事はスピードを要する処理にとっては致命的になりかねない。更に、近年のマイクロコンピュータでは処理速度の高速化の為に命令の先読みという技術を用いられることが一般的で、ＲＯＭの読み出しの為のプリフェッチアドレスと、実際にＣＰＵが実行している命令の実行アドレスとは異なっている。その為プリフェッチアドレスと修正アドレスレジスタ３１の値を比較回路３２で比較して、一致した場合に割込を発生させ、修正プログラムを実行させたとしても正しくその命令を修正したこととはならないという問題を生じる。なぜなら、例えば一致を検出した時に実行中の命令が分岐命令であった場合修正アドレスレジスタ３１で指定した命令を実行しない場合がある。従って命令先読み技術を利用したマイクロコンピュータにおいては実行アドレスとの比較が必要であるが、一般的には命令実行アドレスを保持するレジスタは実装されていない場合が多く、プログラム変更装置の為に前記実行アドレスレジスタを設けることは回路規模を増大させるという問題を生じる。
【００１１】
本発明は前述の課題を解決し、（１）製造後にＲＯＭに固定記憶された命令の修正を可能にするための回路規模の増大を最小限に留め、（２）修正プログラムの大きさの制限を緩和し、（３）修正プログラムの実行を開始するまでの時間遅れを最小限に留め、（４）命令先読み技術を用いたマイクロコンピュータでも修正箇所のアドレスを直接指定可能なマイクロコンピュータを提供する事を目的とする。
【００１２】
【課題を解決するための手段】
本発明の請求項１記載のマイクロコンピュータは、命令をプリフェッチするためのアドレスが格納されるフェッチアドレスレジスタと、アドレスバスと、プログラムを構成する複数の命令を記憶しアドレスバス上のアドレスに対応する記憶データが読み出されるＲＯＭと、アドレスバス上のアドレスに対応する記憶データが読み出されるＲＡＭと、ＲＯＭおよびＲＡＭから読み出されたデータが出力されるデータバスと、データバス上のデータを格納する命令キューとを備えたマイクロコンピュータであって、フェッチアドレスレジスタに格納されているアドレスと比較するためのアドレスを記憶する比較アドレスレジスタと、比較アドレスレジスタに記憶されたアドレスとフェッチアドレスレジスタに格納されているアドレスとを比較して両アドレスの一致を検出する比較回路と、分岐先アドレスとしてＲＡＭ内の所定のアドレスを記憶する分岐先アドレスレジスタと、比較回路が両アドレスの一致を検出したときに分岐先アドレスレジスタのアドレスをアドレスバスに出力し、一致を検出しないときはフェッチアドレスレジスタのアドレスをアドレスバスに出力する選択回路とを設けたことを特徴とする。
【００１３】
この請求項１の構成によれば、ＲＯＭに記憶されたプログラムの修正を行う際、被修正箇所の先頭のアドレスを比較アドレスレジスタに記憶させるとともに、被修正箇所を修正したプログラム（修正プログラム）をＲＡＭに記憶させ、修正プログラムの開始アドレスを分岐先アドレスレジスタに記憶させておくことで、被修正箇所のアドレスがフェッチアドレスレジスタに格納され、比較回路でフェッチアドレスレジスタのアドレスが比較アドレスレジスタのアドレスと一致したことを検出したときに、選択回路が分岐先アドレスレジスタに記憶している修正プログラムの開始アドレスをアドレスバスに出力することによりＲＡＭに記憶した修正プログラムを実行させることができる。このようにしてプログラムの実行を分岐させる構成とすることにより、（１）マイクロコンピュータの製造後にＲＯＭに固定記憶された命令の修正を可能にするための回路規模の増大を最小限に留め、（２）修正プログラムの大きさの制限を緩和し、（３）修正プログラムの実行を開始するまでの時間遅れを最小限に留め、（４）命令先読み技術を用いたマイクロコンピュータでも修正箇所のアドレスを直接指定可能な優れたマイクロコンピュータが得られる。
【００１４】
本発明の請求項２記載のマイクロコンピュータは、請求項１記載のマイクロコンピュータにおいて、分岐先アドレスレジスタは、分岐先のベースアドレスを決める分岐先アドレスベースレジスタと、ベースアドレスからのオフセット量を示す分岐先アドレスオフセットレジスタとで構成されることを特徴とする。
【００１５】
複数の修正箇所に対応して請求項１の構成では比較アドレスレジスタと分岐先アドレスレジスタと比較回路とを複数組設ける必要があるが、請求項２の構成のように、分岐先アドレスレジスタを分岐先アドレスベースレジスタと分岐先アドレスオフセットレジスタとに分けることにより、分岐先アドレスベースレジスタは複数組に共通に用いることができるため１つ設ければよく、回路規模を削減することが可能となる。
【００１６】
本発明の請求項３記載のマイクロコンピュータは、請求項１または請求項２記載のマイクロコンピュータにおいて、比較アドレスレジスタおよび分岐先アドレスレジスタは外部から値が設定されるように構成されたことを特徴とする。
【００１７】
この請求項３の構成により、ＲＯＭに記憶されたプログラムの修正を行う際に、被修正箇所の先頭のアドレスを比較アドレスレジスタに記憶させるとともに、ＲＡＭに記憶させる修正プログラムの開始アドレスを分岐先アドレスレジスタに記憶させることができる。
【００１８】
本発明の請求項４記載のマイクロコンピュータは、請求項２記載のマイクロコンピュータにおいて、分岐先アドレスベースレジスタに代えて、分岐先のベースアドレスが予め記憶され変更不可能である記憶手段を設けたことを特徴とする。
【００１９】
この請求項４の構成によれば、分岐先のベースアドレスを固定アドレスに設定しておくことで、レジスタを使用しない構成となり、レジスタを書き換えるための制御などが不要になり、回路規模を削減することが可能となる。
【００２０】
本発明の請求項５記載のマイクロコンピュータは、請求項１記載のマイクロコンピュータにおいて、比較アドレスレジスタと分岐先アドレスレジスタと比較回路とを複数組設けたことを特徴とする。
【００２１】
この請求項５の構成により、ＲＯＭに記憶されたプログラムの複数の箇所の修正を行うことができる。
【００２２】
本発明の請求項６記載のマイクロコンピュータは、請求項２，請求項３または請求項４記載のマイクロコンピュータにおいて、比較アドレスレジスタと分岐先アドレスオフセットレジスタと比較回路とを複数組設けたことを特徴とする。
【００２３】
この請求項６の構成により、ＲＯＭに記憶されたプログラムの複数の箇所の修正を行うことができる。
【００２４】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２５】
（第１の実施の形態）
図１は本発明の第１の実施の形態におけるプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図であり、１はフェッチアドレスレジスタ、２はプログラムが格納されるＲＯＭ、３１は修正アドレスレジスタ（比較アドレスレジスタ）、３２は比較回路、３３は分岐先アドレスレジスタ、４は選択回路、５はＲＡＭ、６は命令キュー、７は一致信号である。
【００２６】
本実施の形態のマイクロコンピュータに内蔵されたプログラム変更装置は、修正アドレスレジスタ３１と比較回路３２と分岐先アドレスレジスタ３３とからなる主要部が複数の命令を修正するために複数組（３ａ〜３ｎ）実装されるとともに、選択回路４を備えている。フェッチアドレスレジスタ１と分岐先アドレスレジスタ３３は選択回路４を介してアドレスバスに接続され、さらにＲＯＭ２、及びＲＡＭ５に接続される。また、ＲＡＭ５とＲＯＭ２はデータバスにより接続される。修正アドレスレジスタ３１にはＲＯＭ２に格納される一連の命令コードの修正箇所（不具合箇所）のアドレスを格納する。修正箇所が複数行に及ぶ場合は、その修正箇所の先頭の命令コードが格納されるアドレスを格納する。
【００２７】
比較回路３２は、修正アドレスレジスタ３１に格納されたアドレス値とＲＯＭ２に格納された命令コードを読み出すためのフェッチアドレスレジスタ１のアドレス値とを比較し、両アドレス値の一致を検出すると一致信号７を出力する。
【００２８】
選択回路４は、比較回路３２から一致信号７が入力される（上記両アドレス値の一致の検出が有る）と、分岐先アドレスレジスタ３３に格納されているアドレスをアドレスバスに出力し、一致信号７が入力されない（上記両アドレス値の一致の検出が無い）ときはフェッチアドレスレジスタ１のアドレスをアドレスバスに出力する。
【００２９】
通常マイクロコンピュータは、フェッチアドレスレジスタ１によりアドレス指示されたデータをＲＯＭ２から順次読み出し、読み出したデータを命令キュー６に蓄積し、順次ＣＰＵ（図示せず）で解読し、マイクロ命令を起動することで各種動作を実行する。一般的なマイクロコンピュータではＲＯＭ２とＲＡＭ５が同一のメモリ空間に配置されることが多く、マイクロコンピュータに内蔵されるＲＡＭにはＣＰＵの実行に必要な情報がデータとして格納保持されることが多いが、フェッチアドレスレジスタ１がＲＡＭ５上のアドレスを指示する事で、ＲＡＭ５上の命令コードを実行することも可能である。なお、図示していないＣＰＵ内部にアドレス計算部があり、ここから選択回路１０を介して通常時（一致信号７が入力されないとき）はフェッチアドレスレジスタ１へのアドレスの設定が行われる。
【００３０】
また、選択回路１０は、比較回路３２から一致信号７が入力されると、分岐先アドレスレジスタ３３から選択回路４を介してアドレスバスに出力された値（アドレス）をフェッチアドレスレジスタ１へ取り込ませ、フェッチアドレスレジスタ１へのアドレスの設定が行われる。なお、選択回路１０をフェッチアドレスレジスタ１とは別に設けているが、選択回路１０の機能をフェッチアドレスレジスタ１に内蔵して構成してもよい。
【００３１】
次に本プログラム変更装置にてＲＯＭ２に固定記憶された命令を修正する方法について説明する。（１）ＲＯＭ２上に固定記憶されたプログラムに不具合や仕様変更等の理由により修正の必要が生じた場合、その被修正命令コード、又は一連の被修正プログラムの先頭の命令コードが格納されるアドレス値を修正アドレスレジスタ３１に格納する。（２）被修正箇所に対応した修正プログラムをＲＡＭ５に格納する。（３）ＲＡＭ５に格納された修正プログラムの開始アドレスを、分岐先アドレスレジスタ３３に格納する。以上の操作をマイクロコンピュータのリセットスタート時に外部の不揮発性メモリ等から、マイクロコンピュータに一般的に装備されるシリアルインターフェースやパラレルインタフェース等を介して必要なデータを読み込む事で行う。
【００３２】
これらの動作は予めＲＯＭ２上に、外部の不揮発性メモリの特定のアドレスに記憶されたデータの状態や、マイクロコンピュータの端子の状態により、マイクロコンピュータのリセットスタート後起動される初期設定プログラムの中で起動されるようなプログラムを組み込んでおけばよい。上記の設定がなされたマイクロコンピュータが動作中に、被修正命令コードの読み出し動作を行うと、比較回路３２により修正アドレスレジスタ３１に格納されたアドレス値との一致が検出され、一致信号７を出力する。一致信号７が選択回路４に入力されると、選択回路４は分岐先アドレスレジスタ３３に設定されたアドレスをアドレスバスに出力する。
【００３３】
このアドレスバスに出力されたアドレスを選択回路１０を介しフェッチアドレスレジスタ１へロードすることにより、次の命令フェッチは分岐先アドレスレジスタ３３に設定されたアドレスから行われることになる。この時のアドレスバス、データバスの動きを模式的に示したタイミングチャートが図４である。２サイクル目でフェッチアドレスレジスタ１と修正アドレスレジスタ３１に設定されたアドレスが一致した場合、比較回路３２からの一致信号７によりアドレスバスにはフェッチアドレスレジスタ１のデータではなく、分岐先アドレスレジスタ３３のデータが出力される。同時にフェッチアドレスレジスタ１には分岐先アドレスレジスタ３３の値が書き込まれており、３サイクル目ではこのアドレスから命令フェッチが行われる。これによってＲＡＭ５上に格納された修正プログラムを読み出し、実行する。修正プログラムの最後でＲＯＭ２上のアドレスへの分岐命令を実行させることで一連のプログラム修正を完了させる。
【００３４】
修正アドレスレジスタ３１と比較回路３２と分岐先アドレスレジスタ３３からなるプログラム変更装置主要部が１組につき一箇所のプログラム修正が可能である。従ってプログラム変更装置主要部を複数組（３ａ〜３ｎ）備えることにより、複数箇所のプログラムの修正が可能である。通常は２〜４組程度実装すれば十分である。
【００３５】
以上のように本実施の形態によれば、プログラムの実行を分岐させる構成とすることにより、（１）マイクロコンピュータの製造後にＲＯＭ２に固定記憶された命令の修正を可能にするための回路規模の増大を最小限に留め、（２）修正プログラムの大きさの制限を緩和し、（３）修正プログラムの実行を開始するまでの時間遅れを最小限に留め、（４）命令先読み技術を用いたマイクロコンピュータでも修正箇所のアドレスを直接指定可能で、（５）縮小化命令を用いたマイクロコンピュータでも修正箇所のアドレスを直接指定可能な優れたプログラム変更装置を内蔵したマイクロコンピュータを実現することができる。
【００３６】
（第２の実施の形態）
図２は本発明の第２の実施の形態におけるプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図であり、１はフェッチアドレスレジスタ、２はプログラムが格納されるＲＯＭ、３１は修正アドレスレジスタ、３２は比較回路、３３Ａは分岐先アドレスベースレジスタ、３３Ｂは分岐先アドレスオフセットレジスタ、４は選択回路、５はＲＡＭ、６は命令キュー、７は一致信号である。図１と同様の部分には同一符号を付し、その説明を省略する。
【００３７】
本実施の形態のマイクロコンピュータに内蔵されたプログラム変更装置は、修正アドレスレジスタ３１と比較回路３２と分岐先アドレスオフセットレジスタ３３Ｂとからなる第１主要部が複数の命令を修正するために複数組（３ａ〜３ｎ）実装され、第２主要部の分岐先アドレスベースレジスタ３３Ａが実装されるとともに、選択回路４を備えている。
【００３８】
この第２の実施の形態では、第１の実施の形態における複数組の分岐先アドレスレジスタ３３に代えて、１つの分岐先アドレスベースレジスタ３３Ａと複数組の分岐先アドレスオフセットレジスタ３３Ｂとを設けている。その他の構成は第１の実施の形態と同様である。ここでアドレスバス幅が３２ビットである場合、一例として分岐先アドレスベースレジスタ３３Ａとして２４ビットを実装し、分岐先アドレスオフセットレジスタ３３Ｂを８ビットで実装したとする。フェッチアドレスレジスタ１と修正アドレスレジスタ３１が比較回路３２によって比較され一致した場合、分岐先アドレスベースレジスタ３３Ａの２４ビットをアドレスバスの上位２４ビットとして出力し、分岐先アドレスオフセットレジスタ３３Ｂの８ビットをアドレスバスの下位８ビットとして出力することにより３２ビットのアドレスデータを得る。以降の動作は第１の実施の形態と同様である。
【００３９】
上記の例では、ＲＡＭ５に格納された複数の修正プログラムのそれぞれの開始アドレスの共通ビット部分である上位２４ビット分を、分岐先アドレスベースレジスタ３３Ａに格納し、それぞれの開始アドレスの異なるビット部分である下位８ビット分を、それぞれの分岐先アドレスオフセットレジスタ３３Ｂに格納している。この場合、複数組実装される分岐先アドレスオフセットレジスタ３３Ｂは８ビットのレジスタとなり、多くのプログラム変更装置主要部を実装した場合のレジスタが大幅に節約出来ることになる。たとえばプログラム変更装置主要部を８組実装した場合にそれらの修正プログラムの開始アドレスを格納するために必要なレジスタは、第１の実施の形態の場合、３２ビット×８＝２５６ビットとなるが、第２の実施の形態の場合、２４ビット＋８ビット×８＝８８ビットとなる。すなわち、第２の実施の形態では、第１の実施の形態に比べてレジスタの総ビット数を削減し、回路規模を削減することが可能となる。
【００４０】
（第３の実施の形態）
図３は本発明の第３の実施の形態におけるプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図であり、１はフェッチアドレスレジスタ、２はプログラムが格納されるＲＯＭ、３１は修正アドレスレジスタ、３２は比較回路、３３Ｂは分岐先アドレスオフセットレジスタ、４は選択回路、５はＲＡＭ、６は命令キュー、７は一致信号、８は分岐先ベースアドレスである。図２と同様の部分には同一符号を付し、その説明を省略する。
【００４１】
本実施の形態のマイクロコンピュータに内蔵されたプログラム変更装置は、修正アドレスレジスタ３１と比較回路３２と分岐先アドレスオフセットレジスタ３３Ｂとからなる第１主要部が複数の命令を修正するために複数組（３ａ〜３ｎ）実装され、第２主要部の分岐先ベースアドレス８を備えるとともに、選択回路４を備えている。
【００４２】
この第３の実施の形態では、第２の実施の形態における分岐先アドレスベースレジスタ３３Ａに代えて、分岐先ベースアドレス８を設けている。その他の構成は第２の実施の形態と同様である。第２の実施の形態における分岐先アドレスベースレジスタ３３Ａがその値を外部から設定ないし変更可能であるのに対し、分岐先ベースアドレス８はシステムによって例えばＲＡＭ５の特定のアドレスを示す固定アドレスに設定されており、変更できない。すなわち分岐先ベースアドレス８は、論理回路で構成されたハードウェアである。これによってレジスタを使用しない構成となり、レジスタを書き換えるための制御などが不要になり、回路規模を削減することが可能となる。ここでアドレスバス幅が３２ビットである場合、一例として分岐先ベースアドレス８として２４ビットの固定値出力とし、分岐先アドレスオフセットレジスタ３３Ｂを８ビットで実装したとする。フェッチアドレスレジスタ１と修正アドレスレジスタ３１が比較回路３２によって比較され一致した場合、分岐先ベースアドレス８の２４ビットをアドレスバスの上位２４ビットとして出力し、分岐先アドレスオフセットレジスタ３３Ｂの８ビットをアドレスバスの下位８ビットとして出力することにより３２ビットのアドレスデータを得る。以降の動作は第１の実施の形態と同様である。
【００４３】
この第３の実施の形態によれば、第２の実施の形態と同様の効果が得られることに加え、分岐先ベースアドレス８はレジスタを使用しない構成であるため、前述したとおり、レジスタを書き換えるための制御などが不要になり、より回路規模を削減することが可能となる。
【００４４】
【発明の効果】
以上のように本発明によれば、ＲＯＭに記憶されたプログラムの修正を行う際、被修正箇所の先頭のアドレスを比較アドレスレジスタに記憶させるとともに、被修正箇所を修正したプログラム（修正プログラム）をＲＡＭに記憶させ、修正プログラムの開始アドレスを分岐先アドレスレジスタに記憶させておくことで、被修正箇所のアドレスがフェッチアドレスレジスタに格納され、比較回路でフェッチアドレスレジスタのアドレスが比較アドレスレジスタのアドレスと一致したことを検出したときに、選択回路が分岐先アドレスレジスタに記憶している修正プログラムの開始アドレスをアドレスバスに出力することによりＲＡＭに記憶した修正プログラムを実行させることができる。このようにしてプログラムの実行を分岐させる構成とすることにより、（１）マイクロコンピュータの製造後にＲＯＭに固定記憶された命令の修正を可能にするための回路規模の増大を最小限に留め、（２）修正プログラムの大きさの制限を緩和し、（３）修正プログラムの実行を開始するまでの時間遅れを最小限に留め、（４）命令先読み技術を用いたマイクロコンピュータでも修正箇所のアドレスを直接指定可能で、（５）縮小化命令を用いたマイクロコンピュータでも修正箇所のアドレスを直接指定可能な優れたマイクロコンピュータを実現することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。
【図２】本発明の第２の実施の形態におけるプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。
【図３】本発明の第３の実施の形態におけるプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。
【図４】本発明の実施の形態におけるアドレスバス、データバスの動きを模式的に示したタイミングチャートである。
【図５】第１の従来例のプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。
【図６】第２の従来例のプログラム変更装置を内蔵したマイクロコンピュータの要部構成を示すブロック図である。
【符号の説明】
１　フェッチアドレスレジスタ
２　ＲＯＭ
３ａ〜３ｎ　プログラム変更装置主要部
３１　修正アドレスレジスタ
３２　比較回路
３３　分岐先アドレスレジスタ
３３Ａ　分岐先アドレスベースレジスタ
３３Ｂ　分岐先アドレスオフセットレジスタ
３４　修正命令レジスタ
４　選択回路
５　ＲＡＭ
６　命令キュー
７　一致信号
８　分岐先ベースアドレス
【図１】
2004086596.tif 000003
【図２】
2004086596.tif 000004
【図３】
2004086596.tif 000005
【図４】
2004086596.tif 000006
【図５】
2004086596.tif 000007
【図６】
2004086596.tif 000008