(57)【要約】【課題】マイクロプログラムの読出し時にＳＥＵを生じた場合においても対処できるマイクプロセッサを得る。【解決手段】マイクロプログラム格納ＲＯＭ１に格納されるマイクロ命令にパリティを付加する。パリティチェック回路５は、マイクロ命令レジスタ４に格納されたマイクロ命令のパリティチェックを行い、エラー検出時はパリティエラー検出信号を送出する。マイクロ命令実行部６は、パリティチェック回路５からパリティエラー検出信号が送出された場合は、例えば、マイクロプロセッサの実行を停止させる。【選択図】図１
2009238168.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプログラムを使用したマイクロプロセッサにおいて、
マイクロ命令に誤り検出符号を付加すると共に、
前記誤り検出符号に基づいて前記マイクロ命令の誤り検出を行う誤り検出部と、
前記誤り検出結果に基づいて、前記マイクロ命令を実行するマイクロ命令実行部とを備えたマイクロプロセッサ。
【請求項２】
マイクロプログラム格納部から読み出すマイクロ命令を、インクリメントされるカウント値に基づいて指定するカウンタを備え、
誤り検出部で誤りを検出した場合、前記カウント値のインクリメントを停止させることを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
マイクロ命令実行部によるマイクロ命令の実行と、誤り検出部による誤り検出を並行して行うと共に、誤り検出時は誤りの発生したマイクロ命令の実行を無効化することを特徴とする請求項２記載のマイクロプロセッサ。
【請求項４】
マイクロプログラムを使用したマイクロプロセッサにおいて、
マイクロ命令に誤り訂正符号を付加すると共に、
前記誤り訂正符号に基づいて、前記マイクロ命令が誤りであった場合の誤り訂正を行う誤り訂正回路と、
前記誤り訂正回路から出力されたマイクロ命令を実行するマイクロ命令実行部とを備えたマイクロプロセッサ。
【請求項５】
マイクロプログラム格納部から読み出すマイクロ命令を、インクリメントされるカウント値に基づいて指定するカウンタと、
前記読み出されたマイクロ命令を、直接マイクロ命令実行部に入力させるか、誤り訂正回路を介して入力させるかを選択するセレクタとを備え、
前記マイクロ命令実行部によるマイクロ命令の実行と、前記誤り訂正回路による誤り訂正とを並行して行うと共に、
前記誤り訂正回路で、前記マイクロ命令実行部が実行しているマイクロ命令の誤り訂正を行った場合、前記マイクロ命令実行部の実行結果を無効化すると共に、次のサイクルで、前記セレクタが前記誤り訂正回路の出力を選択することで、前記マイクロ命令実行部が誤り訂正済みマイクロ命令を実行し、かつ、当該誤り訂正済みマイクロ命令の実行時は前記カウンタのカウント値のインクリメントを停止させることを特徴とする請求項４記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、放射線等の外来ノイズに対する耐性を備えた、マイクロプログラム方式のマイクロプロセッサに関するものである。
【背景技術】
【０００２】
人工衛星などの航空宇宙環境で使用される半導体には通常より強い放射線にさらされることが知られている。このような環境下では入射した放射線により半導体上の回路にノイズが生じ、これが内部メモリやフリップフロップの反転を引き起こすことが知られている。このような現象をＳＥＵ（Single Event Upset）と呼ぶ。このような現象がマイクロプロセッサを用いたシステムで発生すると、マイクロプロセッサの暴走などの実行異常を引き起こす。このような問題に対して、従来では、例えば特許文献１に示されるようなメモリに誤り検出符号を付加する方法を用い、誤り検出時にはメモリの再読出しを行うことで外来ノイズの影響を減らしていた。
【０００３】
【特許文献１】特開昭５９−９４３００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このような放射線によるＳＥＵはマイクロプロセッサの内部でも発生するため、内部回路においても対策が必要になるが、従来では、特に、マイクロプログラムの読み出し時ＳＥＵが発生した場合に対処できるような内部回路での対策は行われていなかった。
【０００５】
この発明は上記のような課題を解決するためになされたもので、マイクロプログラムの読出し時にＳＥＵを生じた場合においても対処できるマイクプロセッサを得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るマイクロプロセッサは、マイクロ命令に誤り検出符号を付加すると共に、誤り検出符号に基づいてマイクロ命令の誤り検出を行う誤り検出部と、誤り検出結果に基づいて、マイクロ命令を実行するマイクロ命令実行部とを備えたものである。
【発明の効果】
【０００７】
この発明のマイクロプロセッサは、マイクロ命令に誤り検出符号を付加し、マイクロ命令の誤り検出結果に基づいてマイクロ命令を実行するようにしたので、マイクロプログラムの読出し時にＳＥＵを生じた場合であっても対処することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、この発明の実施の形態１によるマイクロプロセッサを示す構成図である。
図において、マイクロプロセッサは、マイクロプログラム格納ＲＯＭ（マイクロプログラム格納部）１、マイクロプログラムカウンタ２、インクリメント回路３、マイクロ命令レジスタ４、パリティチェック回路（誤り検出回路）５、マイクロ命令実行部６を備えている。
【０００９】
マイクロプログラムはマイクロプログラム格納ＲＯＭ１に格納されている。マイクロプログラム格納ＲＯＭ１には、マイクロプログラムカウンタ２の出力がマイクロプログラム格納ＲＯＭ１のアドレスとして接続されており、マイクロ命令がマイクロプログラム格納ＲＯＭ１から一つずつ読み出されて出力される。マイクロプログラムカウンタ２にはインクリメント回路３が接続されており、このインクリメント回路３により、実行対象となるマイクロプログラムのアドレスを順次インクリメントしてゆく。
【００１０】
マイクロプログラム格納ＲＯＭ１の出力はマイクロ命令レジスタ４の入力に接続されており、読み出されたマイクロ命令は、マイクロ命令レジスタ４に一時的に記憶される。マイクロ命令レジスタ４に格納されたマイクロ命令はマイクロ命令実行部６に接続されると共に、パリティチェック回路５にも接続される。マイクロ命令実行部６ではマイクロ命令の解析と実行を行い、パリティチェック回路５ではマイクロ命令のパリティチェックを行う。
【００１１】
本実施の形態のマイクロ命令にはパリティが付加されており、パリティチェック回路５がマイクロ命令レジスタ４のパリティを計算する。パリティチェック回路５でパリティエラーを検出した場合は、パリティエラー検出信号をマイクロ命令実行部６に送出する。こうすることで、マイクロプログラム格納ＲＯＭ１からの読出し時に放射線などの外来ノイズの影響によるビット反転を検出することができる。マイクロ命令実行部６がパリティチェック回路５からのパリティエラー検出信号をどう使用するかは実装依存であるが、最も簡単な対応はマイクロプロセッサの実行を停止させ、外部に異常の検知を通知することである。尚、実施の形態１および後述する実施の形態２，３では、誤り訂正としてパリティチェックの例を説明しているが、マイクロ命令の誤り検出が行えるものであれば、どのような誤り検出符号を付加するようにしてもよい。
【００１２】
以上のように、実施の形態１のマイクロプロセッサによれば、マイクロプログラムを使用したマイクロプロセッサにおいて、マイクロ命令に誤り検出符号を付加すると共に、誤り検出符号に基づいてマイクロ命令の誤り検出を行う誤り検出部と、誤り検出結果に基づいて、マイクロ命令を実行するマイクロ命令実行部とを備えたので、誤りを含んだマイクロ命令の実行を防止でき、マイクロ命令の読出し時にＳＥＵを生じた場合であっても対処可能なマイクロプロセッサを得ることができる。
【００１３】
実施の形態２．
実施の形態２は、パリティエラーが発生した場合は、そのマイクロ命令を再度読み出すようにしたものである。
図２は、本発明の実施の形態２によるマイクロプロセッサの構成図である。
本実施の形態では、パリティチェック回路５の出力が、実施の形態１と同様にマイクロ命令実行部６に接続されると共に、マイクロプログラムカウンタ２に接続されたセレクタ７に接続されている。このセレクタ７は、パリティチェック回路５からのパリティエラー検出信号に基づいて、インクリメント回路３の出力か、マイクロプログラムカウンタ２の出力かを選択してマイクロプログラムカウンタ２に入力するためのセレクタである。即ち、マイクロプログラムカウンタ２の出力は、インクリメント回路３を経たものと経ていないものがセレクタ７を経てマイクロプログラムカウンタ２の入力に接続されるよう構成され、セレクタ７の選択結果に応じて、マイクロプログラムカウンタ２のインクリメントを行うか、現在の値を保持するかが選択される。その他の構成は、図１に示した実施の形態１の構成と同様であるため、対応する部分に同一符号を付してその説明を省略する。
【００１４】
次に、実施の形態２の動作について説明する。
先ず、パリティチェック回路５におけるチェック結果、パリティエラーが検出されなかった場合は、セレクタ７は、マイクロプログラムカウンタ２をインクリメントするよう選択する。即ち、インクリメント回路３によってインクリメントされた出力をマイクロプログラムカウンタ２に与える。
実施の形態１では、パリティエラー検出時にマイクロプロセッサを停止させていたが、パリティエラーの原因がＳＥＵによるビット反転の場合、マイクロプログラム格納ＲＯＭ１から命令を再読出しすることで、正しい命令を読み出せる可能性がある。そこで、パリティエラー検出信号でセレクタ７を切替えてマイクロプログラムカウンタ２のインクリメントを停止することで、次の命令サイクルで同じマイクロ命令の再読出しと再実行を行う。再実行中の命令で再びパリティエラーが検出されなければセレクタ７が再び切替わり、マイクロプログラムカウンタ２がインクリメントされ、マイクロプログラム命令の実行を継続することができる。
【００１５】
以上のように、実施の形態２のマイクロプロセッサによれば、マイクロプログラム格納部から読み出すマイクロ命令を、インクリメントされるカウント値に基づいて指定するカウンタを備え、誤り検出部で誤りを検出した場合、カウント値のインクリメントを停止させるようにしたので、マイクロ命令の誤り検出時にも正しいマイクロ命令を実行することができる。
【００１６】
実施の形態３．
実施の形態２を実現するには、パリティチェックを行って、エラーのないマイクロ命令のみを実行する必要がある。しかし、この方式ではマイクロプロセッサの実行性能が低下する。この理由は、［マイクロ命令実行時間＋パリティチェック時間］が１マイクロ命令実行時間となるため、パリティチェック時間の分、マイクロプロセッサの処理クロックが低下するためである。稀にしか発生しないパリティエラーのためにマイクロプロセッサの処理性能が低下することは望ましくない。そこで、実施の形態３では、マイクロ命令の実行をパリティチェックと並行して行い、パリティエラーが検出された場合、マイクロ命令の実行を無効とすることにより、同様の効果を性能低下無く得ることができるようにしている。
【００１７】
図３は、実施の形態３のマイクロプロセッサの構成図である。
図示のマイクロプロセッサは、マイクロプログラム格納ＲＯＭ１、マイクロプログラムカウンタ２、インクリメント回路３、マイクロ命令レジスタ４、パリティチェック回路５、セレクタ７，８，９，１０、演算器１１、バスインタフェース部１２、レジスタファイル１３を備えている。ここで、マイクロプログラム格納ＲＯＭ１〜セレクタ７は、実施の形態２の構成と同様である。セレクタ８は、マイクロ命令レジスタ４からの書き込み制御信号と、マイクロ命令の実行結果を無効化するための書き込み禁止信号のいずれかを選択して、レジスタファイル１３に対して書き込み制御信号として出力するセレクタである。セレクタ９は、マイクロ命令レジスタ４からの定数フィールドかバスインタフェース部１２のデータ出力のいずれかを選択して演算器１１の入力１に出力するためのセレクタである。セレクタ１０は、マイクロ命令レジスタ４からの定数フィールドかレジスタファイル１３のデータ出力のいずれかを選択して演算器１１の入力２に出力するセレクタである。
【００１８】
演算器１１は、マイクロ命令レジスタ４からの演算器指令値と、セレクタ９，１０からの入力値に基づいてマイクロ命令を実行し、その出力をバスインタフェース部１２とレジスタファイル１３とに接続する実施の形態１，２におけるマイクロ命令実行部６に対応する構成である。バスインタフェース部１２は、マイクロプロセッサと外部のバスとのインタフェースである。レジスタファイル１３は、マイクロプロセッサの内部レジスタであり、セレクタ８を介して与えられる書き込み制御信号に基づいて、演算器１１の演算結果の書き込みが行われるようになっている。また、レジスタファイル１３における出力アドレスおよび入力アドレスは、マイクロ命令レジスタ４からのレジスタアドレス１およびレジスタアドレス２によって指定される出力レジスタ、入力レジスタを指定するための入力部である。
【００１９】
このように構成されたマイクロプロセッサでは、パリティチェック回路５でパリティエラーを検出した場合は、パリティエラー検出信号をセレクタ７とセレクタ８とに送出する。これにより、実施の形態２と同様にマイクロプログラム格納ＲＯＭ１からのマイクロ命令の再読み出しが行われると共に、セレクタ８が書き込み禁止信号を選択することで、演算器１１からのレジスタファイル１３へのデータ書き込みが禁止される。即ち、実行されたマイクロ命令は無効化される。これ以外の動作は、実施の形態２と同様である。
【００２０】
尚、図３に示した例は、非パイプライン型マイクロプロセッサの例であるが、パイプライン型マイクロプロセッサにおいても、実行パイプラインで結果の書き戻し処理を行う前に書き戻し処理を禁止し、パイプラインに投入されている命令全てを破棄することで同様に無効化処理が可能である。本実施の形態の構成をより効果的に実装するためには、パイプラインのできるだけ後段で書き戻し処理を実行することが望ましい。
【００２１】
以上のように、実施の形態３のマイクロプロセッサによれば、マイクロ命令実行部によるマイクロ命令の実行と、誤り検出部による誤り検出を並行して行うと共に、誤り検出時は誤りの発生したマイクロ命令の実行を無効化するようにしたので、誤り検出によるマイクロプロセッサの性能低下を抑えることができる。
【００２２】
実施の形態４．
実施の形態１〜３では、マイクロ命令の誤り検出にパリティを使用していたが、パリティの代わりに誤り訂正符号（ＥＣＣ：Error Correction Code）を用いることで、マイクロ命令を再読出しすることなく、誤りを含まないマイクロ命令を実行することができる。以下、誤り訂正を行うようにした例を実施の形態４として説明する。
【００２３】
図４は、実施の形態４のマイクロプロセッサの構成図である。
図示のマイクロプロセッサは、マイクロプログラム格納メモリ（マイクロプログラム格納部）１ａ、マイクロプログラムカウンタ２、インクリメント回路３、マイクロ命令レジスタ４、マイクロ命令実行部６、誤り訂正回路１４を備えている。誤り訂正回路１４は、マイクロ命令レジスタ４に格納されたマイクロ命令に対して、含まれるＥＣＣに基づいて誤り訂正を行う回路である。また、マイクロプログラム格納メモリ１ａは、実施の形態１〜３のマイクロプログラム格納ＲＯＭ１と同様に、マイクロプログラムを格納するメモリであるが、ＲＯＭだけでなくＲＡＭであっても良い点が異なっている。その他の構成は実施の形態１と同様である。尚、実施の形態４および後述する実施の形態５における誤り訂正符号としては、例えばハミング符号といった誤り訂正符号を用いるが、どのようなものであってもよい。
【００２４】
本実施の形態では、マイクロプログラムに誤り訂正符号が含まれている。誤り訂正回路１４は、マイクロ命令レジスタ４に格納されたマイクロ命令に対して、誤りがあるかを判定し、誤りがあった場合は、その誤り訂正符号に基づいて誤り訂正を行う。誤り訂正済みマイクロ命令はマイクロ命令実行部６に出力され、マイクロ命令実行部６は、誤り訂正回路１４から出力された訂正済みマイクロ命令を実行する。
【００２５】
このように、誤り訂正済みマイクロ命令をマイクロ命令実行部６に供給することで常に正常なマイクロ命令を実行することができる。もし、ＥＣＣで誤り訂正できないような多ビット誤りが発生した場合は、実施の形態１と同様に異常停止するか、実施の形態２と同様にマイクロ命令の再読出しを行う。
【００２６】
パリティを用いた方式ではマイクロ命令を再読出しする際のＳＥＵによる影響のみに対処できるのに対して、誤り訂正回路１４を用いた方式ではマイクロプログラム格納メモリ１ａ上のデータが反転した場合にも有効である。従って、パリティを用いた方式と異なり、マイクロプログラム格納メモリ１ａとしてＲＡＭの使用も可能である。
【００２７】
以上のように、実施の形態４のマイクロプロセッサによれば、マイクロプログラムを使用したマイクロプロセッサにおいて、マイクロ命令に誤り訂正符号を付加すると共に、誤り訂正符号に基づいて、マイクロ命令が誤りであった場合の誤り訂正を行う誤り訂正回路と、誤り訂正回路から出力されたマイクロ命令を実行するマイクロ命令実行部とを備えたので、マイクロ命令が誤りを含んだ状態を訂正し、正しいマイクロ命令で実行することができる。
【００２８】
実施の形態５．
実施の形態４では、誤り訂正回路１４を通ったマイクロ命令を直接実行しているため誤り訂正回路１４の出力が確定するまでマイクロ命令の実行ができない。そこで、実施の形態５では、実施の形態３と同様に、誤り訂正回路１４の誤り訂正処理と並行して誤り訂正前のマイクロ命令の実行を行う。
【００２９】
図５は、実施の形態５のマイクロプロセッサの構成図である。
実施の形態５のマイクロプロセッサが実施の形態４と異なる点は、セレクタ７とセレクタ１５を設け、セレクタ１５によって誤り訂正前のマイクロ命令と誤り訂正済みマイクロ命令を選択してマイクロ命令実行部６に与えるようにし、また、誤り訂正回路１４から誤り検出信号が出力された場合は、実施の形態３と同様にセレクタ７によってマイクロプログラムカウンタ２のインクリメントを停止させるようにした点である。更に、実施の形態５では、誤り訂正回路１４から誤り検出信号が出力された場合は、マイクロ命令実行部６におけるマイクロ命令の実行結果を無効化するようにしている。尚、無効化の手段としては、例えば、実施の形態３で示した構成を用いる。
【００３０】
このように構成された実施の形態５のマイクロプロセッサでは、マイクロ命令レジスタ４に格納されたマイクロ命令に誤りがなく、誤り訂正回路１４から誤り検出信号が出力されない場合、セレクタ１５はマイクロ命令レジスタ４側の出力を選択しており、マイクロ命令実行部６は、誤り訂正前のマイクロ命令を実行する。即ち、マイクロ命令実行部６におけるマイクロ命令の実行は、誤り訂正回路１４の誤り訂正処理と並行して行われる。
【００３１】
一方、誤り訂正回路１４で、マイクロ命令実行部６が実行しているマイクロ命令の誤り訂正を行った場合、マイクロ命令実行部６の実行結果を無効化すると共に、次のサイクルで、セレクタ１５が誤り訂正回路１４の出力を選択することで、マイクロ命令実行部６が誤り訂正済みマイクロ命令を実行する。また、誤り訂正回路１４から出力される誤り検出信号により、セレクタ７はマイクロプログラムカウンタ２の出力を選択する。これにより、誤り訂正済みマイクロ命令の実行時は、マイクロプログラムカウンタ２におけるカウント値のインクリメントが停止される。
【００３２】
このように、実施の形態５では、誤り訂正回路１４の出力が確定した時点で、誤りが検出されれば、マイクロ命令実行部６で実行中の命令を無効化し、次のサイクルで誤り訂正済みのマイクロ命令を用いて再実行することで、誤り訂正回路１４を組み込んだことによる性能低下を防止している。
【００３３】
以上のように、実施の形態５のマイクロプロセッサによれば、マイクロプログラム格納部から読み出すマイクロ命令を、インクリメントされるカウント値に基づいて指定するカウンタと、読み出されたマイクロ命令を、直接マイクロ命令実行部に入力させるか、誤り訂正回路を介して入力させるかを選択するセレクタとを備え、マイクロ命令実行部によるマイクロ命令の実行と、誤り訂正回路による誤り訂正とを並行して行うと共に、誤り訂正回路で、マイクロ命令実行部が実行しているマイクロ命令の誤り訂正を行った場合、マイクロ命令実行部の実行結果を無効化すると共に、次のサイクルで、セレクタが誤り訂正回路の出力を選択することで、マイクロ命令実行部が誤り訂正済みマイクロ命令を実行し、かつ、誤り訂正済みマイクロ命令の実行時はカウンタのカウント値のインクリメントを停止させるようにしたので、誤り訂正によるマイクロプロセッサの性能低下を抑えることができる。
【図面の簡単な説明】
【００３４】
【図１】この発明の実施の形態１によるマイクロプロセッサを示す構成図である。
【図２】この発明の実施の形態２によるマイクロプロセッサを示す構成図である。
【図３】この発明の実施の形態３によるマイクロプロセッサを示す構成図である。
【図４】この発明の実施の形態４によるマイクロプロセッサを示す構成図である。
【図５】この発明の実施の形態５によるマイクロプロセッサを示す構成図である。
【符号の説明】
【００３５】
１  マイクロプログラム格納ＲＯＭ、１ａ  マイクロプログラム格納メモリ、２  マイクロプログラムカウンタ、３  インクリメント回路、４  マイクロ命令レジスタ、５  パリティチェック回路、６  マイクロ命令実行部、７，８，９，１０，１５  セレクタ、１１  演算器、１２  バスインタフェース部、１３  レジスタファイル、１４  誤り訂正回路。
【図１】
2009238168.tif 000003
【図２】
2009238168.tif 000004
【図３】
2009238168.tif 000005
【図４】
2009238168.tif 000006
【図５】
2009238168.tif 000007