(57)【要約】【課題】回路規模を大きくすることなく、プログラム中の複数箇所の誤りを修正できるようにする。【解決手段】プロセッサシステムは、プログラムＲＯＭ１と、プログラムＲＡＭ３と、ＲＯＭアドレスレジスタ４と、プログラムカウンタ５と、強制分岐先ＰＣレジスタ６と、アドレス比較部７と、セレクタ８と、マイコンＩＦ部９とを備えている。ＲＯＭアドレスレジスタ４と強制分岐先ＰＣレジスタ６に、データバス１０を経由して複数種類のアドレスを繰返し記憶できるようにしたため、プログラムＲＯＭ１中のマイクロコードに複数の誤りがあっても、回路規模を増大することなく、各誤りに対応する更新マイクロコードを実行できる。このため、プログラムの保守性がよくなる。【選択図】　図１
2004126658.tif 000002
【特許請求の範囲】
【請求項１】
第１のプログラムを格納する第１のプログラム記憶部と、
第２のプログラムを格納する第２のプログラム記憶部と、
前記第１及び第２のプログラムの実行アドレスを出力するプログラムカウンタと、
前記第１のプログラム中の第１のアドレスを記憶する第１のアドレス記憶部と、
前記第２のプログラム中の第２のアドレスを記憶する第２のアドレス記憶部と、
前記プログラムカウンタが前記第１のアドレスに一致したか否かを判断する比較部と、
前記比較部により一致したと判断されると、前記プログラムカウンタを前記第２のアドレスに変更するアドレス変更部と、
前記第１のアドレス記憶部に記憶される前記第１のアドレスと前記第２のアドレス記憶部に記憶される前記第２のアドレスとを更新するためのデータバスと、を備えることを特徴とするプロセッサシステム。
【請求項２】
前記第１及び第２のプログラム記憶部から読み出された命令をデコードした結果を前記データバスに供給する命令デコーダを備え、
前記第１のアドレス記憶部に記憶される前記第１のアドレスと前記第２のアドレス記憶部に記憶される前記第２のアドレスとは、前記命令デコーダの出力に基づいて更新されることを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
前記第１のプログラムは、複数種類の前記第１のアドレスをそれぞれ前記第１のアドレス記憶部に記憶するための複数の命令と、複数種類の前記第２のアドレスをそれぞれ前記第２のアドレス記憶部に記憶するための複数の命令とを含み、
前記第１のアドレス記憶部は、前記第１のプログラムに従って、それぞれ異なるタイミングで複数種類の前記第１のアドレスを順次記憶し、
前記第２のアドレス記憶部は、前記第１のプログラムに従って、それぞれ異なるタイミングで複数種類の前記第２のアドレスを順次記憶することを特徴とする請求項２に記載のプロセッサシステム。
【請求項４】
外部から供給された前記第１及び第２のアドレスを、前記データバスを介して前記第１及び第２のプログラム記憶部に記憶する制御を行うインタフェース部を備えることを特徴とする請求項１または２に記載のプロセッサシステム。
【請求項５】
前記第１のプログラム記憶部は、ＲＯＭであり、
前記第２のプログラム記憶部は、書き換え可能なメモリであり、
前記第２のプログラムは、前記第１のプログラムの少なくとも一部を更新するためのプログラムであることを特徴とする請求項１及至４のいずれかに記載のプロセッサシステム。
【請求項６】
前記第２のプログラムは、前記第１のプログラム中の任意箇所のデバックを行うためのデバックプログラムであり、
前記第１のアドレスは、前記第１のプログラム中のデバックを行う箇所の先頭アドレスであり、
前記第２のアドレスは、前記デバックプログラムの先頭アドレスであることを特徴とする請求項１，２，３及び５のいずれかに記載のプロセッサシステム。
【請求項７】
外部から前記データバスを介して供給された前記第２のプログラム、前記第１のアドレス及び前記第２のアドレスを、それぞれ前記第２のプログラム記憶部、前記第１のアドレス記憶部及び前記第２のアドレス記憶部に記憶する制御を行うとともに、前記デバックプログラムの実行結果を外部に供給する制御を行うインタフェース部を備えることを特徴とする請求項６に記載のプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、第１のプログラム記憶部に記憶された第１のプログラムの少なくとも一部を更新したり、デバックすることが可能なプロセッサシステムに関する。
【０００２】
【従来の技術】
ワンチップマイクロコンピュータ（以下、ワンチップマイコン）は、内部にマスクＲＯＭを備えていることが多い。この種のマスクＲＯＭには、製造時に予めマイクロコードが組み込まれているが、マスクＲＯＭはデータの書き換えができないため、マイクロコードに誤りがあると、そのマイコン自体を交換しなければならず、保守性が悪く、故障時のコストがかかってしまう。
【０００３】
このような問題を解消するため、プログラムＲＯＭ内のマイクロコードに誤りがあったときに、その誤りのある箇所だけを更新できるようにしたプロセッサシステムが実用化されている。
【０００４】
図３はこの種の従来のプロセッサシステムの概略構成を示すブロック図である。図３のプロセッサシステムは、プログラムＲＯＭ１と、インストラクションデコーダ２と、プログラムＲＡＭ３と、ＲＯＭアドレスレジスタ４と、プログラムカウンタ５と、強制分岐先ＰＣレジスタ６と、アドレス比較部７と、セレクタ８と、書き込み回路１２とを備えている。
【０００５】
プログラムＲＡＭ３には、誤りを直した正しいマイクロコードが格納される。ＲＯＭアドレスレジスタ４は、プログラムＲＯＭ１に格納されているマイクロコード中の誤りのある箇所（アドレス）を記憶する。強制分岐先ＰＣレジスタ６は、プログラムＲＡＭ３中の実行すべきアドレスを記憶する。ＲＯＭアドレスレジスタ４と強制分岐先ＰＣレジスタ６には、書き込み回路１２が各アドレスを記憶する。
【０００６】
アドレス比較部７は、プログラムカウンタ５がＲＯＭアドレスレジスタ４に記憶されたアドレスに一致したか否かを判断する。セレクタ８は、プログラムカウンタ５がＲＯＭアドレスレジスタ４に記憶されたアドレスに一致すると、プログラムカウンタ５を強制分岐先ＰＣレジスタ６に記憶されているアドレスに置き換える。
【０００７】
例えば、プログラムＲＯＭ１に格納されているマイクロコードの特定箇所に誤りがあったとすると、プログラムカウンタ５がその特定箇所を指し示すときに、プログラムカウンタ５を強制分岐先ＰＣレジスタ６のアドレスに置換する。これにより、プログラムＲＡＭ３に格納されている正しいマイクロコードが実行されるようになる。
【０００８】
【発明が解決しようとする課題】
しかしながら、マイクロコード中に複数の誤りがある場合は、誤りのある箇所ごとに、ＲＯＭアドレスレジスタ４と強制分岐先ＰＣレジスタ６を設けなければならず、回路規模が大きくなる。
【０００９】
また、図３のプロセッサシステムは、誤ったマイクロコードを正しいマイクロコードに置き換えるだけであり、プログラムＲＯＭ１中のマイクロコードをデバックする機能は備えていない。このため、マイクロコードのデバックを行うには、デバック専用回路を追加しなければならず、その分回路規模が大きくなってしまう。
【００１０】
本発明は、このような点に鑑みてなされたものであり、その目的は、回路規模を大きくすることなく、プログラム中の複数箇所の誤りを修正できるようにしたプロセッサシステムを提供することにある。
【００１１】
【課題を解決するための手段】
上述した課題を解決するために、本発明は、第１のプログラムを格納する第１のプログラム記憶部と、第２のプログラムを格納する第２のプログラム記憶部と、前記第１及び第２のプログラムの実行アドレスを出力するプログラムカウンタと、前記第１のプログラム中の第１のアドレスを記憶する第１のアドレス記憶部と、前記第２のプログラム中の第２のアドレスを記憶する第２のアドレス記憶部と、前記プログラムカウンタが前記第１のアドレスに一致したか否かを判断する比較部と、前記比較部により一致したと判断されると、前記プログラムカウンタを前記第２のアドレスに変更するアドレス変更部と、前記第１のアドレス記憶部に記憶される前記第１のアドレスと前記第２のアドレス記憶部に記憶される前記第２のアドレスとを更新するためのデータバスと、を備える。
【００１２】
本発明では、第１及び第２のアドレス記憶部に、第１及び第２のアドレスを繰返し記憶できるようにしたため、第１のプログラムに複数の誤りがあっても、回路規模を大きくすることなく、更新プログラムを実行でき、プログラムの保守性が向上する。
【００１３】
【発明の実施の形態】
以下、本発明に係るプロセッサシステムについて、図面を参照しながら具体的に説明する。
【００１４】
図１は本発明に係るプロセッサシステムの一実施形態のブロック図である。図１のプロセッサシステムは、マイクロコード本体を格納するプログラムＲＯＭ１と、マイクロコードに含まれる各命令をデコードするインストラクションデコーダ２と、マイクロコード中の誤り箇所を修正するための更新されたマイクロコードを格納するプログラムＲＡＭ３と、プログラムＲＯＭ１に格納されたマイクロコード中の誤り箇所を示すアドレスを記憶するＲＯＭアドレスレジスタ４と、マイクロコードの実行アドレスを出力するプログラムカウンタ５と、マイクロコード中に誤りがあるときの分岐先アドレスを記憶する強制分岐先ＰＣレジスタ６と、ＲＯＭアドレスレジスタ４に記憶されているアドレスとプログラムカウンタ５とが一致するか否かを検出するアドレス比較部７と、両アドレスが一致したときにプログラムカウンタ５を分岐先アドレスに変更するセレクタ８と、外部との間でデータの送受を行うマイコンＩＦ部９（外部ＩＦ部）とを備えている。
【００１５】
図１のプロセッサシステムは、インストラクションデコーダ２、ＲＯＭアドレスレジスタ４、強制分岐先ＰＣレジスタ６及びマイコンＩＦ部９が共通のデータバス１０に接続されている点で、図３のプロセッサシステムと異なっている。
【００１６】
以下、マイクロコードの更新処理の処理手順について説明する。なお、以下の説明では、プログラムＲＯＭ１中のマイクロコードに複数の誤りがあるものとする。
【００１７】
（１）まず、マイクロコード中の時間的に最初の誤り箇所を示すＲＯＭアドレスを、外部からマイコンＩＦ部９とデータバス１０を経由してＲＯＭアドレスレジスタ４に記憶する。同様に、更新されたマイクロコードを記憶するプログラムＲＡＭ３のアドレスを、外部からマイコンＩＦ部９とデータバス１０を経由して強制分岐先ＰＣレジスタ６に記憶する。
【００１８】
（２）その後、プログラムカウンタ５は、カウントアップ動作を開始し、プログラムカウンタ５をアドレスとしてプログラムＲＯＭ１から命令を読み出して、インストラクションデコーダ２でデコードし、命令を実行する。
【００１９】
（３）それに並行して、アドレス比較部７は、プログラムカウンタ５がＲＯＭアドレスレジスタ４に記憶されているＲＯＭアドレスと一致するか否かを検出し、一致しなければ、上記（２）及び（３）の処理を繰り返す。
【００２０】
（４）上記の（３）で一致が検出されると、セレクタ８は、プログラムカウンタ５を強制分岐先ＰＣレジスタ６に記憶されている強制分岐先アドレスに変更する。
【００２１】
（５）強制分岐先アドレスは、プログラムＲＡＭ３中の更新されたマイクロコードを指し示しているため、以後は、プログラムＲＯＭ１中の誤ったマイクロコードの代わりに、プログラムＲＡＭ３中の更新されたマイクロコードが実行される。
【００２２】
（６）また、ＲＯＭアドレスレジスタ４には、プログラムＲＯＭ１中のマイクロコードの次の誤り箇所を示すアドレスが記憶される。同様に、強制分岐先ＰＣレジスタ６には、プログラムＲＡＭ３中の更新されたマイクロコードのアドレスが記憶される。
【００２３】
（７）以後、上記の（２）〜（６）の処理が繰り返される。
【００２４】
上記の（１）や（６）でＲＯＭアドレスレジスタ４や強制分岐先ＰＣレジスタ６にアドレスを記憶する方法として、上述したように外部から供給されたアドレスをマイコンＩＦとデータバス１０を経由して各レジスタに記憶する方法と、プログラムＲＡＭ３中のプログラムに従って各レジスタに記憶する方法がある。
【００２５】
後者の場合、例えば、プログラムＲＡＭ３中のプログラム中に、ＲＯＭアドレスレジスタ４や強制分岐先ＰＣレジスタ６のアドレスを記憶する命令を記述しておく。
【００２６】
図２はこの種の命令列の一例を示す図である。図２の例では、まず、プログラムカウンタ５が０００のときに、ＲＯＭアドレスレジスタ４に１００番地のアドレスを記憶する。プログラムカウンタ５が００１になると、強制分岐先ＰＣレジスタ６に１０番地のアドレスを記憶する。プログラムカウンタ５が００２になると、強制分岐を許可する。プログラムカウンタ５が００３になると、８０番地に分岐して、更新されたプログラムを実行する。
【００２７】
その後、プログラムカウンタ５が０１０になると、次の誤り箇所をＲＯＭレジスタに記憶し、０１１で強制分岐先ＰＣレジスタ６を記憶する。以降、プログラムカウンタ５が０３０になった場合も、同様の処理が行われる。
【００２８】
このように、本実施形態では、ＲＯＭアドレスレジスタ４と強制分岐先ＰＣレジスタ６に、データバス１０を経由して複数種類のアドレスを繰返し記憶できるようにしたため、プログラムＲＯＭ１中のマイクロコードに複数の誤りがあっても、回路規模を増大することなく、各誤りに対応する更新マイクロコードを実行できる。このため、プログラムの保守性がよくなる。
【００２９】
図１のプロセッサシステムは、プログラムＲＯＭ１のデバックにも利用できる。この場合、図１の点線で示すように、マイコンＩＦに接続されたホストコンピュータからの指示によりデバックを行う。デバックには、プログラムＲＯＭ１内の指定されたアドレス位置だけブレークさせてデバックする手法と、プログラムＲＯＭ１内のプログラムを１ステップずつ実行する手法の２種類がある。
【００３０】
前者の場合、以下の手順でデバックを行う。
【００３１】
（１）まず、ホストコンピュータからマイコンＩＦを介してプログラムＲＡＭ３に、デバックプログラムを格納する。
【００３２】
（２）次に、ホストコンピュータからマイコンＩＦを介してＲＯＭアドレスレジスタ４に、プログラムＲＯＭ１内のデバックを行う先頭アドレスを記憶する。同様に、強制分岐先ＰＣレジスタ６に、デバック時の分岐先アドレス（この場合、プログラムＲＡＭ３内のデバックプログラムの先頭アドレス）を記憶する。
【００３３】
（３）次に、プログラムＲＯＭ１を開始する。
【００３４】
（４）プログラムカウンタ５がＲＯＭアドレスレジスタ４の値に一致すると、強制分岐先ＰＣレジスタ６の値に基づいて、プログラムＲＡＭ３内のデバックプログラムが実行される。
【００３５】
（５）このデバックプログラムでは、例えば、任意のメモリ及びレジスタの値をマイコンＩＦを介してホストコンピュータに伝送するという処理を実行する。
【００３６】
（６）これにより、プログラムＲＯＭ１内の任意のアドレス範囲についてデバックを行うことができる。また、デバックプログラムの中で、ＲＯＭアドレスレジスタ４と強制分岐先ＰＣレジスタ６に新たな値を記憶することもでき、プログラムＲＯＭ１内の複数箇所について連続的にデバックを行うことも可能である。
【００３７】
（７）デバックプログラムの中で間接アドレッシングまたはスタックを利用したリターンを行って、元のプログラムＲＯＭ１の処理に戻る。
【００３８】
（８）以降、（３）〜（７）の処理を繰り返す。
【００３９】
プログラムＲＯＭ１内のプログラムを１ステップずつ実行する場合は、（１）〜（６）の手順は同じである。
【００４０】
（７）次に、デバックプログラムの中でＲＯＭアドレスレジスタ４を＋１する。
【００４１】
（８）次に、（３）〜（７）の処理を繰り返す。
【００４２】
このように、本実施形態によれば、デバック用の専用のハードウェアを設けなくても、プログラムＲＯＭ１内のプログラムのデバックも行うことができる。このため、プログラムの開発が容易になる。
【００４３】
【発明の効果】
以上詳細に説明したように、本発明によれば、第１及び第２のアドレス記憶部に記憶されている第１及び第２のアドレスを、データバスを介して更新できるため、第１のプログラムに複数箇所の誤りがあっても、回路規模を大きくすることなく、各誤りに対応した複数の更新プログラムを実行できる。したがって、プログラムの保守性がよくなる。
【図面の簡単な説明】
【図１】本発明に係るプロセッサシステムの一実施形態のブロック図。
【図２】プログラムＲＡＭに格納されるプログラムの一例を示す図。
【図３】従来のプロセッサシステムの概略構成を示すブロック図。
【符号の説明】
１　プログラムＲＯＭ
２　インストラクションデコーダ
３　プログラムＲＡＭ
４　ＲＯＭアドレスレジスタ
５　プログラムカウンタ
６　強制分岐先ＰＣレジスタ
７　アドレス比較部
８　セレクタ
９　マイコンＩＦ部
１０　データバス
１１　ホストコンピュータ
【図１】
2004126658.tif 000003
【図２】
2004126658.tif 000004
【図３】
2004126658.tif 000005