JP2007018047A - 命令実行装置 - Google Patents

命令実行装置 Download PDF

Info

Publication number
JP2007018047A
JP2007018047A JP2005196006A JP2005196006A JP2007018047A JP 2007018047 A JP2007018047 A JP 2007018047A JP 2005196006 A JP2005196006 A JP 2005196006A JP 2005196006 A JP2005196006 A JP 2005196006A JP 2007018047 A JP2007018047 A JP 2007018047A
Authority
JP
Japan
Prior art keywords
instruction
error
detected
pipeline processing
cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2005196006A
Other languages
English (en)
Inventor
Hiroshi Ueki
浩 植木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP2005196006A priority Critical patent/JP2007018047A/ja
Publication of JP2007018047A publication Critical patent/JP2007018047A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)
  • Detection And Correction Of Errors (AREA)
  • Advance Control (AREA)

Abstract

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

Description

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

Claims (4)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005196006A JP2007018047A (ja) 2005-07-05 2005-07-05 命令実行装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005196006A JP2007018047A (ja) 2005-07-05 2005-07-05 命令実行装置

Publications (1)

Publication Number Publication Date
JP2007018047A true JP2007018047A (ja) 2007-01-25

Family

ID=37755192

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005196006A Withdrawn JP2007018047A (ja) 2005-07-05 2005-07-05 命令実行装置

Country Status (1)

Country Link
JP (1) JP2007018047A (ja)

Similar Documents

Publication Publication Date Title
US9652321B2 (en) Recovery algorithm in non-volatile memory
US9619324B2 (en) Error correction in non—volatile memory
JP5010271B2 (ja) エラー訂正コード生成方法、およびメモリ制御装置
KR900002604B1 (ko) 제어기억장치를 갖는 정보처리장치내의 에러회복 장치 및 방법.
US10657010B2 (en) Error detection triggering a recovery process that determines whether the error is resolvable
US10891185B2 (en) Error counters on a memory device
JP4703718B2 (ja) 選択的サブルーチンリターン構造
JP2007188379A (ja) エラー訂正方法
US7827449B2 (en) Non-inline transaction error correction
US20080046103A1 (en) Control apparatus with fast i/o function, and control method for control data thereof
TWI751167B (zh) 讀取記憶體指令的處理器、方法及系統,其讀取包括缺陷資料之讀取
TWI293429B (en) Microprocessor capable of detecting a fault in an instruction, and method, apparatus and system for detecting an error associated with an instruction
KR20150094112A (ko) 반도체 메모리 장치 및 동작 방법
JP5292706B2 (ja) コンピュータシステム
US20130305000A1 (en) Signal processing circuit
JP2007018047A (ja) 命令実行装置
KR102603835B1 (ko) 프로세서 시스템의 프로그램 카운터 구조를 보호하고 인터럽트 요청의 처리를 모니터링하기 위한 방법 및 장치
JP4900680B2 (ja) 半導体メモリ試験装置
JP2004030424A (ja) 命令処理装置および命令処理方法
JP5843804B2 (ja) 演算装置およびエラー処理方法
TW201606785A (zh) 記憶體控制器
JP2016066344A (ja) メモリ診断回路
JP6339487B2 (ja) 半導体集積回路と半導体装置およびエラー検出訂正方法
JP2009238168A (ja) マイクロプロセッサ
JP6724673B2 (ja) テスト支援プログラム、テスト支援方法及びテスト支援装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081007