説明

命令実行装置

【課題】 回路面積を大きくすることなく、メモリ内の命令の誤り訂正を高精度に行なうことができる命令実行装置を提供する。
【解決手段】 ECC回路12は、メモリ11から出力される命令を取得して、命令の誤りを検出し、検出した誤りを訂正した命令の生成または検出した誤りを訂正するためのデータを生成する。CPU13は、ECC回路12を経由することなく、メモリ11から出力される命令を取得して、命令をパイプライン処理する。ECC回路12は、誤りを検出したときには、誤りを検出した命令を特定し、かつ検出した誤りを訂正した命令または検出した誤りを訂正するためのデータを特定する誤り訂正情報をCPU13に通知する。CPU13は、誤り訂正情報を受けて、誤りを検出した命令のパイプライン処理を一旦停止し、誤りを訂正した命令をパイプライン処理の最初のステージに投入する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、命令実行装置に関し、特にメモリ内の命令の誤り訂正機能を有する命令実行装置に関する。
【背景技術】
【0002】
近年半導体メモリの微細化が進むに伴い、自然界に存在する放射線(ガンマ線、アルファ粒子、中性子などの高エネルギー粒子)によりメモリデータが破壊されてしまう確率(いわゆるソフトエラー率)が高まってきている。このため、近年では半導体回路内に誤り訂正回路を内蔵することにより、このソフトエラーの問題に対処する方法が多くとられるようになってきている。
【0003】
たとえば、特許文献1には、パイプライン処理を行なう情報処理装置において、パリティの誤りが検出されたときに直ちにパイプラインにインターロックをかけるパリティチェック回路と、誤り検出・修正回路を備え、これにより変換サイクル前に命令中の誤り検出を行なってパイプラインにインターロックをかけ、命令のフロー単位で誤り訂正を行なうことが記載されている。
【特許文献1】特開昭61−51241号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載の装置では、誤りが検出されたときに、パイプライン処理の2番目のステージからインターロックをかけるので、誤り検出・修正回路は、それまでに誤り検出・修正を行なわなければならず、高速な処理が求められる。高速な誤り検出・修正処理を可能とするためには、精度の低い誤り検出・修正方法を採用するか、あるいは精度を維持するために誤り検出・修正回路のトランジスタのサイズを大きくしなければならず、その結果、誤り検出・修正回路の回路面積が増大する。
【0005】
それゆえに、本発明の目的は、回路面積を大きくすることなく、メモリ内の命令の誤り訂正を高精度に行なことができる命令実行装置を提供することである。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明の命令実行装置は、メモリから出力される命令を取得して、取得した命令の誤りを検出し、検出した誤りを訂正した命令の生成または検出した誤りを訂正するためのデータを生成する誤り訂正回路と、誤り訂正回路を経由することなく、メモリから出力される命令を取得して、取得した命令をパイプライン処理するプロセッサとを備え、誤り訂正回路は、誤りを検出したときには、誤りを検出した命令を特定し、かつ検出した誤りを訂正した命令または検出した誤りを訂正するためのデータを特定する誤り訂正情報をプロセッサに通知し、プロセッサは、誤り訂正情報を受けて、誤りを検出した命令のパイプライン処理を一旦停止し、誤りを訂正した命令をパイプライン処理の最初のステージに投入する。
【0007】
好ましくは、パイプライン処理は、M段階(Mは3以上の自然数)のステージからなり、誤り訂正回路は、誤りが検出された命令のパイプライン処理の第N番目(Nは3以上、かつM以下の自然数)のステージの処理までに、誤りが検出された命令についての誤り訂正情報をプロセッサに通知し、プロセッサは、誤り訂正情報を受けて、誤りが検出された命令のパイプライン処理の第N番目のステージの処理を一旦停止する。
【0008】
好ましくは、プロセッサは、誤り訂正情報を受けて、さらに誤りを検出した命令に後続する命令のパイプライン処理を一旦停止するとともに、誤りを訂正した命令の最初のステージの投入後に、後続する命令をパイプライン処理の最初のステージに投入する。
【0009】
好ましくは、プロセッサは、誤り訂正情報を受けて、誤りを検出した命令に先行する命令のパイプライン処理は停止しない。
【発明の効果】
【0010】
本発明の命令実行装置によれば、回路面積を大きくすることなく、メモリ内の命令の誤り訂正を高精度に行なことができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施の形態について図面を用いて説明する。
(命令実行装置の構成)
図1は、本発明の実施形態の命令実行装置のブロック図である。
【0012】
図1を参照して、本発明の実施形態の命令実行装置10は、メモリ11に接続されたECC(Error Checking and Correcting)回路12と、ECC回路12を経由することなく、メモリ11に接続されたCPU13とを備える。
【0013】
ECC回路12は、メモリ11から出力される命令を取得して、取得した命令の誤りを検出し、検出した誤りを訂正した命令の生成または検出した誤りを訂正するためのデータを生成する。ECC回路は、誤りを検出したときには、誤りを検出した命令を特定し、かつ検出した誤りを訂正した命令または検出した誤りを訂正するためのデータを特定するエラー訂正情報をCPU13に通知する。
【0014】
CPU13は、ECC回路12を経由することなく、メモリ11から出力される命令を取得して、取得した命令をパイプライン処理する。
【0015】
CPU13は、エラー訂正情報を受けると、誤りを検出した命令のパイプライン処理を一旦停止し、誤りを訂正した命令をパイプライン処理の最初のステージに投入する。また、CPU13は、エラー訂正情報を受けると、誤りを検出した命令に後続する命令のパイプライン処理を一旦停止するとともに、誤りを訂正した命令の最初のステージの投入後に、後続する命令をパイプライン処理の最初のステージに投入する。また、CPU13は、エラー訂正情報を受けても、誤りを検出した命令に先行する命令のパイプライン処理は停止しない。
【0016】
さて、本発明の実施形態の命令実行装置との比較のため、従来の一般的な(特許文献1とは異なる)命令実行装置について説明する。
【0017】
図2は、従来の一般的な命令実行装置のブロック図である。
図2を参照して、従来の命令実行装置20は、メモリ11から読出された命令は一旦ECC回路22に供給され、ECC回路22内でエラー検出および訂正のための処理が実行される。ECC回路22は、エラーを検出した場合には、読出された命令を正しい命令に訂正して、訂正した命令をCPU23に供給する。一方、ECC回路22は、エラーが検出されなかった場合には、読出された命令をそのまま、補正することなくCPU23に供給する。
【0018】
CPU23は、ECC回路22からメモリ11内の命令またはメモリ11内の命令が訂正された命令の供給を受けて、供給された命令を実行する。
【0019】
このように、従来の一般的な命令実行装置20では、メモリ11、ECC回路22、CPU23が直列に接続されており、ECC回路22でメモリ11から読出された命令のエラーの検出および訂正のための処理を行なった後、CPU23に命令が渡される。これにより、ECC回路22による命令のエラー検出および訂正のための時間分だけ、命令の実行サイクルの時間が長くなってしまい、命令を高速には実行できなくなる。それを回避するためには、ECC回路22の高速化が求められ、ECC回路22の各トランジスタのサイズの増大、それによりECC回路22の回路面積が増大する。
【0020】
(動作例)
図3は、本発明の実施形態の命令実行装置のパイプライン処理の動作例を説明するための図である。
【0021】
図3において、各行は、パイプライン処理の各ステージを表わす。すなわち、STAGE0はコードフェッチステージ、STAGE1はデコードステージ、STAGE2はアドレス計算ステージ、STAGE3はメモリアクセスステージ、STAGE4はレジスタライトバックステージを表わす。ただし、このパイプラインの区切り方は、本発明の実施形態のCPUでの例にすぎず、別のCPUの場合には別の区切り方でもよい。
【0022】
また、図3の各列は、時刻を表わす。図2の右側の列ほど時刻が進行し、同一の列は同一時刻を表わす。
【0023】
以下では、図3を参照して本発明の実施形態の命令の実行処理について説明する。
まず、メモリ11から読出された命令からエラーが検出されない場合の処理について説明する。図3における命令Aがこの場合に相当する。メモリ11から読出された命令Bは、CPU13とECC回路12の両方に与えられる。
【0024】
時刻t0において、CPU13は命令Aパイプライン処理の最初のSTAGE0に投入する。次の時刻t1において、CPU13は命令AをSTAGE1に送り、さらに次の時刻t2において、CPU13は命令AをSTAGE2に送り、さらに次の時刻t3において、CPU13は命令AをSTAGE3に送り、さらに次の時刻t4において、CPU13は命令AをSTAGE4に送り、最後のSTAGE4で命令Aの実行が完了する。
【0025】
一方、ECC回路12は、CPU13の動作とは独立し、並列的に命令Aのエラー検出および訂正処理を実行する。ECC回路12は、命令Aからエラーが検出されないので、CPU13にエラー訂正情報は通知されない。
【0026】
次に、メモリ11から読出された命令からエラーが検出された場合の処理について説明する。図3における命令Bがこの場合に相当する。メモリ11から読出された命令Bは、CPU13とECC回路12の両方に与えられる。
【0027】
時刻t1において、CPU13は命令Bをパイプライン処理の最初のSTAGE0に投入する。次の時刻t2において、CPU13は命令BをSTAGE1に送り、さらに次の時刻t3において、CPU13は命令BをSTAGE2に送る。
【0028】
一方、ECC回路12は、CPU13の動作とは独立し、並列的に命令Bのエラー検出処理を実行する。ECC回路12は、命令Bのエラーを検出し、時刻t3において、エラー訂正情報ZをCPU13に送信する。ここで、エラー訂正情報Zは、エラーを検出した命令Bを特定し、かつ検出したエラーを訂正した命令そのもの(命令B′)、またはCPU13によって検出したエラーを訂正して命令B′を生成するためのデータを特定する情報である。
【0029】
CPU13は、時刻t3において、エラー訂正情報Zを受けて、次の時刻t4において、エラーが検出された命令BのSTAGE3の処理、命令Bの後続の命令CのSTAGE2の処理、命令Bのさらに後続の命令DのSTAGE1の処理をキャンセルする。ただし、CPU13は、命令Bに先行する命令AのSTAGE4の処理はキャンセルせずに実行する。CPU13は、命令Bの後続の命令Cおよび命令Dの状態をCPU13内のレジスタに退避させておく。一方でCPU13は、エラー訂正情報Zに基づいて、訂正された命令B′をSTAGE0に投入する。
【0030】
次に、時刻t5において、CPU13は、レジスタに退避させていた命令CをSTAGE0に投入し、さらに、時刻t6において、CPU13は、レジスタに退避させていた命令DをSTAGE0に投入する。
【0031】
以上のようにして、命令Bにエラーが検出された場合でも、CPU13は、パイプライン処理を継続していくことができる。
【0032】
以上の説明から明らかなように、本発明の実施形態の命令実行装置では、メモリ内の命令にエラーがない場合(実際上、ほとんどの場合がそうである)には、特許文献1に記載の装置と同様に、ECC回路を経由することなく、CPU12が命令を実行するので、従来の一般的な命令実行装置で問題となるECC回路でのエラー検出および訂正による命令の実行遅延が生じない。
【0033】
また、メモリ11内の命令にエラーが検出された場合には(極めて少ない頻度である)、特許文献1に記載の装置では、エラーが訂正された命令をパイプライン処理の最初のステージからやり直すことがないが、本発明の実施形態の命令実行装置では、エラーが訂正された命令Bはパイプライン処理の最初のステージから処理が実行されるので、意図したプログラミング通りの内容で命令を実行することができる。
【0034】
また、メモリ11内の命令にエラーがある場合には、特許文献1に記載の装置では、パイプライン処理の第2番目のステージでインターロックをかけるため高速な誤り検出・訂正処理が必要とされたが、本発明の実施形態の命令実行装置では、パイプライン処理の第4番目のステージでインターロックをかければよいので、高速な処理が求められない。その結果、回路面積を大きくすることなく、メモリ11内の命令の誤り訂正を高精度に行なことができる。なお、本発明の実施形態では、CPU13は、パイプライン処理の第4番目のステージでインターロックをかけるものとしたが、これに限定するものではなく、パイプライン処理がM段階(Mは3以上の自然数)のステージからなる場合に、第N番目(Nは3以上、かつM以下の自然数)のステージでインターロックをかけるものとしてもよい。そして、この場合、ECC回路12は、第N番目のステージまでに、たとえば、第(N−1)番目のステージでエラー訂正情報をCPU13に通知すればよい。この場合でも、特許文献1の装置に比べて、誤り検出・訂正の高速性が要求されないという効果がある。
【0035】
また、特許文献1に記載の装置では、誤りが検出された命令の後続の命令はパイプライン処理を停止しているだけだが、本発明の実施形態の命令実行装置では、誤りが検出された命令Bのパイプライン処理の最初のステージに投入後、誤りが検出された命令Bの後続の命令C、Dが、パイプライン処理の最初のステージに投入されるので、先行する命令の実行結果に応じて、後続の命令の実行内容または結果が異なる場合にも、意図したプログラミング通りの内容で命令を実行することができる。
【0036】
また、本発明の実施形態の命令実行装置は、誤りが検出された命令Bに先行する命令Aについては、命令Bの誤りの実行結果に依存しないので、パイプライン処理が停止されない。その結果命令Aの実行を速やかに完了することができる。
【0037】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0038】
【図1】本発明の実施形態の命令実行装置のブロック図である。
【図2】従来の命令実行装置のブロック図である
【図3】本発明の実施形態の命令実行装置のパイプライン処理の動作例を説明するための図である。
【符号の説明】
【0039】
10,20 命令実行装置、11 メモリ、12,22 ECC回路、13,23 CPU。

【特許請求の範囲】
【請求項1】
メモリから出力される命令を取得して、前記取得した命令の誤りを検出し、前記検出した誤りを訂正した命令の生成または前記検出した誤りを訂正するためのデータを生成する誤り訂正回路と、
前記誤り訂正回路を経由することなく、前記メモリから出力される命令を取得して、前記取得した命令をパイプライン処理するプロセッサとを備え、
前記誤り訂正回路は、前記誤りを検出したときには、前記誤りを検出した命令を特定し、かつ前記検出した誤りを訂正した命令または前記検出した誤りを訂正するためのデータを特定する誤り訂正情報を前記プロセッサに通知し、
前記プロセッサは、前記誤り訂正情報を受けて、前記誤りを検出した命令のパイプライン処理を一旦停止し、前記誤りを訂正した命令をパイプライン処理の最初のステージに投入する、命令実行装置。
【請求項2】
前記パイプライン処理は、M段階(Mは3以上の自然数)のステージからなり、
前記誤り訂正回路は、前記誤りが検出された命令のパイプライン処理の第N番目(Nは3以上、かつM以下の自然数)のステージの処理までに、前記誤りが検出された命令についての前記誤り訂正情報を前記プロセッサに通知し、
前記プロセッサは、前記誤り訂正情報を受けて、前記誤りが検出された命令のパイプライン処理の前記第N番目のステージの処理を一旦停止する、請求項1記載の命令実行装置。
【請求項3】
前記プロセッサは、前記誤り訂正情報を受けて、さらに前記誤りを検出した命令に後続する命令のパイプライン処理を一旦停止するとともに、前記誤りを訂正した命令の最初のステージの投入後に、前記後続する命令をパイプライン処理の最初のステージに投入する、請求項1記載の命令実行装置。
【請求項4】
前記プロセッサは、前記誤り訂正情報を受けて、前記誤りを検出した命令に先行する命令のパイプライン処理は停止しない、請求項1記載の命令実行装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2007−18047(P2007−18047A)
【公開日】平成19年1月25日(2007.1.25)
【国際特許分類】
【出願番号】特願2005−196006(P2005−196006)
【出願日】平成17年7月5日(2005.7.5)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】