(57)【要約】【課題】  回路面積を大きくすることなく、メモリ内の命令の誤り訂正を高精度に行なうことができる命令実行装置を提供する。【解決手段】  ＥＣＣ回路１２は、メモリ１１から出力される命令を取得して、命令の誤りを検出し、検出した誤りを訂正した命令の生成または検出した誤りを訂正するためのデータを生成する。ＣＰＵ１３は、ＥＣＣ回路１２を経由することなく、メモリ１１から出力される命令を取得して、命令をパイプライン処理する。ＥＣＣ回路１２は、誤りを検出したときには、誤りを検出した命令を特定し、かつ検出した誤りを訂正した命令または検出した誤りを訂正するためのデータを特定する誤り訂正情報をＣＰＵ１３に通知する。ＣＰＵ１３は、誤り訂正情報を受けて、誤りを検出した命令のパイプライン処理を一旦停止し、誤りを訂正した命令をパイプライン処理の最初のステージに投入する。【選択図】        図１
2007018047.tif 000002
【特許請求の範囲】
【請求項１】
メモリから出力される命令を取得して、前記取得した命令の誤りを検出し、前記検出した誤りを訂正した命令の生成または前記検出した誤りを訂正するためのデータを生成する誤り訂正回路と、
前記誤り訂正回路を経由することなく、前記メモリから出力される命令を取得して、前記取得した命令をパイプライン処理するプロセッサとを備え、
前記誤り訂正回路は、前記誤りを検出したときには、前記誤りを検出した命令を特定し、かつ前記検出した誤りを訂正した命令または前記検出した誤りを訂正するためのデータを特定する誤り訂正情報を前記プロセッサに通知し、
前記プロセッサは、前記誤り訂正情報を受けて、前記誤りを検出した命令のパイプライン処理を一旦停止し、前記誤りを訂正した命令をパイプライン処理の最初のステージに投入する、命令実行装置。
【請求項２】
前記パイプライン処理は、Ｍ段階（Ｍは３以上の自然数）のステージからなり、
前記誤り訂正回路は、前記誤りが検出された命令のパイプライン処理の第Ｎ番目（Ｎは３以上、かつＭ以下の自然数）のステージの処理までに、前記誤りが検出された命令についての前記誤り訂正情報を前記プロセッサに通知し、
前記プロセッサは、前記誤り訂正情報を受けて、前記誤りが検出された命令のパイプライン処理の前記第Ｎ番目のステージの処理を一旦停止する、請求項１記載の命令実行装置。
【請求項３】
前記プロセッサは、前記誤り訂正情報を受けて、さらに前記誤りを検出した命令に後続する命令のパイプライン処理を一旦停止するとともに、前記誤りを訂正した命令の最初のステージの投入後に、前記後続する命令をパイプライン処理の最初のステージに投入する、請求項１記載の命令実行装置。
【請求項４】
前記プロセッサは、前記誤り訂正情報を受けて、前記誤りを検出した命令に先行する命令のパイプライン処理は停止しない、請求項１記載の命令実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、命令実行装置に関し、特にメモリ内の命令の誤り訂正機能を有する命令実行装置に関する。
【背景技術】
【０００２】
近年半導体メモリの微細化が進むに伴い、自然界に存在する放射線（ガンマ線、アルファ粒子、中性子などの高エネルギー粒子）によりメモリデータが破壊されてしまう確率（いわゆるソフトエラー率）が高まってきている。このため、近年では半導体回路内に誤り訂正回路を内蔵することにより、このソフトエラーの問題に対処する方法が多くとられるようになってきている。
【０００３】
たとえば、特許文献１には、パイプライン処理を行なう情報処理装置において、パリティの誤りが検出されたときに直ちにパイプラインにインターロックをかけるパリティチェック回路と、誤り検出・修正回路を備え、これにより変換サイクル前に命令中の誤り検出を行なってパイプラインにインターロックをかけ、命令のフロー単位で誤り訂正を行なうことが記載されている。
【特許文献１】特開昭６１−５１２４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の装置では、誤りが検出されたときに、パイプライン処理の２番目のステージからインターロックをかけるので、誤り検出・修正回路は、それまでに誤り検出・修正を行なわなければならず、高速な処理が求められる。高速な誤り検出・修正処理を可能とするためには、精度の低い誤り検出・修正方法を採用するか、あるいは精度を維持するために誤り検出・修正回路のトランジスタのサイズを大きくしなければならず、その結果、誤り検出・修正回路の回路面積が増大する。
【０００５】
それゆえに、本発明の目的は、回路面積を大きくすることなく、メモリ内の命令の誤り訂正を高精度に行なことができる命令実行装置を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の命令実行装置は、メモリから出力される命令を取得して、取得した命令の誤りを検出し、検出した誤りを訂正した命令の生成または検出した誤りを訂正するためのデータを生成する誤り訂正回路と、誤り訂正回路を経由することなく、メモリから出力される命令を取得して、取得した命令をパイプライン処理するプロセッサとを備え、誤り訂正回路は、誤りを検出したときには、誤りを検出した命令を特定し、かつ検出した誤りを訂正した命令または検出した誤りを訂正するためのデータを特定する誤り訂正情報をプロセッサに通知し、プロセッサは、誤り訂正情報を受けて、誤りを検出した命令のパイプライン処理を一旦停止し、誤りを訂正した命令をパイプライン処理の最初のステージに投入する。
【０００７】
好ましくは、パイプライン処理は、Ｍ段階（Ｍは３以上の自然数）のステージからなり、誤り訂正回路は、誤りが検出された命令のパイプライン処理の第Ｎ番目（Ｎは３以上、かつＭ以下の自然数）のステージの処理までに、誤りが検出された命令についての誤り訂正情報をプロセッサに通知し、プロセッサは、誤り訂正情報を受けて、誤りが検出された命令のパイプライン処理の第Ｎ番目のステージの処理を一旦停止する。
【０００８】
好ましくは、プロセッサは、誤り訂正情報を受けて、さらに誤りを検出した命令に後続する命令のパイプライン処理を一旦停止するとともに、誤りを訂正した命令の最初のステージの投入後に、後続する命令をパイプライン処理の最初のステージに投入する。
【０００９】
好ましくは、プロセッサは、誤り訂正情報を受けて、誤りを検出した命令に先行する命令のパイプライン処理は停止しない。
【発明の効果】
【００１０】
本発明の命令実行装置によれば、回路面積を大きくすることなく、メモリ内の命令の誤り訂正を高精度に行なことができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を用いて説明する。
（命令実行装置の構成）
図１は、本発明の実施形態の命令実行装置のブロック図である。
【００１２】
図１を参照して、本発明の実施形態の命令実行装置１０は、メモリ１１に接続されたＥＣＣ（Error Checking and Correcting）回路１２と、ＥＣＣ回路１２を経由することなく、メモリ１１に接続されたＣＰＵ１３とを備える。
【００１３】
ＥＣＣ回路１２は、メモリ１１から出力される命令を取得して、取得した命令の誤りを検出し、検出した誤りを訂正した命令の生成または検出した誤りを訂正するためのデータを生成する。ＥＣＣ回路は、誤りを検出したときには、誤りを検出した命令を特定し、かつ検出した誤りを訂正した命令または検出した誤りを訂正するためのデータを特定するエラー訂正情報をＣＰＵ１３に通知する。
【００１４】
ＣＰＵ１３は、ＥＣＣ回路１２を経由することなく、メモリ１１から出力される命令を取得して、取得した命令をパイプライン処理する。
【００１５】
ＣＰＵ１３は、エラー訂正情報を受けると、誤りを検出した命令のパイプライン処理を一旦停止し、誤りを訂正した命令をパイプライン処理の最初のステージに投入する。また、ＣＰＵ１３は、エラー訂正情報を受けると、誤りを検出した命令に後続する命令のパイプライン処理を一旦停止するとともに、誤りを訂正した命令の最初のステージの投入後に、後続する命令をパイプライン処理の最初のステージに投入する。また、ＣＰＵ１３は、エラー訂正情報を受けても、誤りを検出した命令に先行する命令のパイプライン処理は停止しない。
【００１６】
さて、本発明の実施形態の命令実行装置との比較のため、従来の一般的な（特許文献１とは異なる）命令実行装置について説明する。
【００１７】
図２は、従来の一般的な命令実行装置のブロック図である。
図２を参照して、従来の命令実行装置２０は、メモリ１１から読出された命令は一旦ＥＣＣ回路２２に供給され、ＥＣＣ回路２２内でエラー検出および訂正のための処理が実行される。ＥＣＣ回路２２は、エラーを検出した場合には、読出された命令を正しい命令に訂正して、訂正した命令をＣＰＵ２３に供給する。一方、ＥＣＣ回路２２は、エラーが検出されなかった場合には、読出された命令をそのまま、補正することなくＣＰＵ２３に供給する。
【００１８】
ＣＰＵ２３は、ＥＣＣ回路２２からメモリ１１内の命令またはメモリ１１内の命令が訂正された命令の供給を受けて、供給された命令を実行する。
【００１９】
このように、従来の一般的な命令実行装置２０では、メモリ１１、ＥＣＣ回路２２、ＣＰＵ２３が直列に接続されており、ＥＣＣ回路２２でメモリ１１から読出された命令のエラーの検出および訂正のための処理を行なった後、ＣＰＵ２３に命令が渡される。これにより、ＥＣＣ回路２２による命令のエラー検出および訂正のための時間分だけ、命令の実行サイクルの時間が長くなってしまい、命令を高速には実行できなくなる。それを回避するためには、ＥＣＣ回路２２の高速化が求められ、ＥＣＣ回路２２の各トランジスタのサイズの増大、それによりＥＣＣ回路２２の回路面積が増大する。
【００２０】
（動作例）
図３は、本発明の実施形態の命令実行装置のパイプライン処理の動作例を説明するための図である。
【００２１】
図３において、各行は、パイプライン処理の各ステージを表わす。すなわち、ＳＴＡＧＥ０はコードフェッチステージ、ＳＴＡＧＥ１はデコードステージ、ＳＴＡＧＥ２はアドレス計算ステージ、ＳＴＡＧＥ３はメモリアクセスステージ、ＳＴＡＧＥ４はレジスタライトバックステージを表わす。ただし、このパイプラインの区切り方は、本発明の実施形態のＣＰＵでの例にすぎず、別のＣＰＵの場合には別の区切り方でもよい。
【００２２】
また、図３の各列は、時刻を表わす。図２の右側の列ほど時刻が進行し、同一の列は同一時刻を表わす。
【００２３】
以下では、図３を参照して本発明の実施形態の命令の実行処理について説明する。
まず、メモリ１１から読出された命令からエラーが検出されない場合の処理について説明する。図３における命令Ａがこの場合に相当する。メモリ１１から読出された命令Ｂは、ＣＰＵ１３とＥＣＣ回路１２の両方に与えられる。
【００２４】
時刻ｔ０において、ＣＰＵ１３は命令Ａパイプライン処理の最初のＳＴＡＧＥ０に投入する。次の時刻ｔ１において、ＣＰＵ１３は命令ＡをＳＴＡＧＥ１に送り、さらに次の時刻ｔ２において、ＣＰＵ１３は命令ＡをＳＴＡＧＥ２に送り、さらに次の時刻ｔ３において、ＣＰＵ１３は命令ＡをＳＴＡＧＥ３に送り、さらに次の時刻ｔ４において、ＣＰＵ１３は命令ＡをＳＴＡＧＥ４に送り、最後のＳＴＡＧＥ４で命令Ａの実行が完了する。
【００２５】
一方、ＥＣＣ回路１２は、ＣＰＵ１３の動作とは独立し、並列的に命令Ａのエラー検出および訂正処理を実行する。ＥＣＣ回路１２は、命令Ａからエラーが検出されないので、ＣＰＵ１３にエラー訂正情報は通知されない。
【００２６】
次に、メモリ１１から読出された命令からエラーが検出された場合の処理について説明する。図３における命令Ｂがこの場合に相当する。メモリ１１から読出された命令Ｂは、ＣＰＵ１３とＥＣＣ回路１２の両方に与えられる。
【００２７】
時刻ｔ１において、ＣＰＵ１３は命令Ｂをパイプライン処理の最初のＳＴＡＧＥ０に投入する。次の時刻ｔ２において、ＣＰＵ１３は命令ＢをＳＴＡＧＥ１に送り、さらに次の時刻ｔ３において、ＣＰＵ１３は命令ＢをＳＴＡＧＥ２に送る。
【００２８】
一方、ＥＣＣ回路１２は、ＣＰＵ１３の動作とは独立し、並列的に命令Ｂのエラー検出処理を実行する。ＥＣＣ回路１２は、命令Ｂのエラーを検出し、時刻ｔ３において、エラー訂正情報ＺをＣＰＵ１３に送信する。ここで、エラー訂正情報Ｚは、エラーを検出した命令Ｂを特定し、かつ検出したエラーを訂正した命令そのもの（命令Ｂ′）、またはＣＰＵ１３によって検出したエラーを訂正して命令Ｂ′を生成するためのデータを特定する情報である。
【００２９】
ＣＰＵ１３は、時刻ｔ３において、エラー訂正情報Ｚを受けて、次の時刻ｔ４において、エラーが検出された命令ＢのＳＴＡＧＥ３の処理、命令Ｂの後続の命令ＣのＳＴＡＧＥ２の処理、命令Ｂのさらに後続の命令ＤのＳＴＡＧＥ１の処理をキャンセルする。ただし、ＣＰＵ１３は、命令Ｂに先行する命令ＡのＳＴＡＧＥ４の処理はキャンセルせずに実行する。ＣＰＵ１３は、命令Ｂの後続の命令Ｃおよび命令Ｄの状態をＣＰＵ１３内のレジスタに退避させておく。一方でＣＰＵ１３は、エラー訂正情報Ｚに基づいて、訂正された命令Ｂ′をＳＴＡＧＥ０に投入する。
【００３０】
次に、時刻ｔ５において、ＣＰＵ１３は、レジスタに退避させていた命令ＣをＳＴＡＧＥ０に投入し、さらに、時刻ｔ６において、ＣＰＵ１３は、レジスタに退避させていた命令ＤをＳＴＡＧＥ０に投入する。
【００３１】
以上のようにして、命令Ｂにエラーが検出された場合でも、ＣＰＵ１３は、パイプライン処理を継続していくことができる。
【００３２】
以上の説明から明らかなように、本発明の実施形態の命令実行装置では、メモリ内の命令にエラーがない場合（実際上、ほとんどの場合がそうである）には、特許文献１に記載の装置と同様に、ＥＣＣ回路を経由することなく、ＣＰＵ１２が命令を実行するので、従来の一般的な命令実行装置で問題となるＥＣＣ回路でのエラー検出および訂正による命令の実行遅延が生じない。
【００３３】
また、メモリ１１内の命令にエラーが検出された場合には（極めて少ない頻度である）、特許文献１に記載の装置では、エラーが訂正された命令をパイプライン処理の最初のステージからやり直すことがないが、本発明の実施形態の命令実行装置では、エラーが訂正された命令Ｂはパイプライン処理の最初のステージから処理が実行されるので、意図したプログラミング通りの内容で命令を実行することができる。
【００３４】
また、メモリ１１内の命令にエラーがある場合には、特許文献１に記載の装置では、パイプライン処理の第２番目のステージでインターロックをかけるため高速な誤り検出・訂正処理が必要とされたが、本発明の実施形態の命令実行装置では、パイプライン処理の第４番目のステージでインターロックをかければよいので、高速な処理が求められない。その結果、回路面積を大きくすることなく、メモリ１１内の命令の誤り訂正を高精度に行なことができる。なお、本発明の実施形態では、ＣＰＵ１３は、パイプライン処理の第４番目のステージでインターロックをかけるものとしたが、これに限定するものではなく、パイプライン処理がＭ段階（Ｍは３以上の自然数）のステージからなる場合に、第Ｎ番目（Ｎは３以上、かつＭ以下の自然数）のステージでインターロックをかけるものとしてもよい。そして、この場合、ＥＣＣ回路１２は、第Ｎ番目のステージまでに、たとえば、第（Ｎ−１）番目のステージでエラー訂正情報をＣＰＵ１３に通知すればよい。この場合でも、特許文献１の装置に比べて、誤り検出・訂正の高速性が要求されないという効果がある。
【００３５】
また、特許文献１に記載の装置では、誤りが検出された命令の後続の命令はパイプライン処理を停止しているだけだが、本発明の実施形態の命令実行装置では、誤りが検出された命令Ｂのパイプライン処理の最初のステージに投入後、誤りが検出された命令Ｂの後続の命令Ｃ、Ｄが、パイプライン処理の最初のステージに投入されるので、先行する命令の実行結果に応じて、後続の命令の実行内容または結果が異なる場合にも、意図したプログラミング通りの内容で命令を実行することができる。
【００３６】
また、本発明の実施形態の命令実行装置は、誤りが検出された命令Ｂに先行する命令Ａについては、命令Ｂの誤りの実行結果に依存しないので、パイプライン処理が停止されない。その結果命令Ａの実行を速やかに完了することができる。
【００３７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態の命令実行装置のブロック図である。
【図２】従来の命令実行装置のブロック図である
【図３】本発明の実施形態の命令実行装置のパイプライン処理の動作例を説明するための図である。
【符号の説明】
【００３９】
１０，２０  命令実行装置、１１  メモリ、１２，２２  ＥＣＣ回路、１３，２３  ＣＰＵ。
【図１】
2007018047.tif 000003
【図２】
2007018047.tif 000004
【図３】
2007018047.tif 000005