JP4334598B1 - 情報処理装置およびエラー訂正方法 - Google Patents
情報処理装置およびエラー訂正方法 Download PDFInfo
- Publication number
- JP4334598B1 JP4334598B1 JP2008107130A JP2008107130A JP4334598B1 JP 4334598 B1 JP4334598 B1 JP 4334598B1 JP 2008107130 A JP2008107130 A JP 2008107130A JP 2008107130 A JP2008107130 A JP 2008107130A JP 4334598 B1 JP4334598 B1 JP 4334598B1
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processor
- error correction
- error
- memory
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】割り込みを用いずにメモリエラーを容易に訂正することができる情報処理装置を実現する。
【解決手段】CPU11からフェッチ要求された命令にエラーが存在することが検出された場合、命令送出部131は、メモリ13からリードされた命令をプロセッサに送出する代わりに、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、CPU11に送出する。これにより、エラー訂正処理が実行された後に、フェッチ要求された命令に制御を戻すことができる。
【選択図】図1
【解決手段】CPU11からフェッチ要求された命令にエラーが存在することが検出された場合、命令送出部131は、メモリ13からリードされた命令をプロセッサに送出する代わりに、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、CPU11に送出する。これにより、エラー訂正処理が実行された後に、フェッチ要求された命令に制御を戻すことができる。
【選択図】図1
Description
本発明は情報処理装置およびメモリエラーを訂正するためのエラー訂正方法に関する。
近年、パーソナルコンピュータ、PDA、組み込みシステムといった、様々な情報処理装置が開発されている。
このような情報処理装置においては、通常、プロセッサによって実行される命令群は、ダイナミックRAMのようなメモリに格納されている。メモリからの命令のフェッチ時に、もしその命令にECCエラーのような誤りの存在が検出されたならば、この命令をプロセッサに渡すことを禁止することが必要である。
特許文献1には、割り込みを用いてエラーを回復するシステムが開示されている。このシステムにおいては、データ記憶割り込みという特殊な割り込みを用いて、エラーの発生が報告される。
特開2000−99406号公報
しかし、特許文献1の技術は、データ記憶割り込みという特殊な割り込みをサポートする、ある特定種のプロセッサにしか適用することができない。したがって、割り込みのような特別な仕組みを用いずにメモリエラーを訂正するための新たな機能の実現が必要である。
本発明は上述の事情を考慮してなされたものであり、割り込みを用いずにメモリエラーを容易に訂正することができる情報処理装置およびエラー訂正方法を提供することを目的とする。
上述の課題を解決するため、本発明の情報処理装置は、プロセッサと、前記プロセッサから発行されるフェッチ要求によって指定されたメモリアドレスに応じて、メモリに格納された命令群の一つをリードするメモリインタフェース手段と、前記リードされた命令に対応する前記メモリ上のエラー訂正コードを用いて、前記リードされた命令にエラーが存在するか否かを判定するエラー検出手段と、前記リードされた命令にエラーが存在することが検出された場合、前記リードされた命令を前記プロセッサに送出する代わりに、前記フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、前記リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、前記プロセッサに送出する命令送出手段とを具備し、前記エラー訂正処理ルーチンによるエラー訂正処理の完了後に、前記スタックに保存されているメモリアドレスが前記プロセッサのプログラムカウンタにロードされることを特徴とする。
また、本発明は、メモリエラーを訂正するためのエラー訂正方法であって、プロセッサから発行されるフェッチ要求によって指定されたメモリアドレスに応じて、メモリに格納された命令群の一つをリードするステップと、前記リードされた命令に対応する前記メモリ上のエラー訂正コードを用いて、前記リードされた命令にエラーが存在するか否かを判定するステップと、前記リードされた命令にエラーが存在することが検出された場合、前記リードされた命令を前記プロセッサに送出する代わりに、前記フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、前記リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、前記プロセッサに送出するステップと、前記エラー訂正処理ルーチンによるエラー訂正処理の完了後に、前記スタックに保存されているメモリアドレスを前記プロセッサのプログラムカウンタにロードするステップとを具備することを特徴とする。
本発明によれば、割り込み信号を用いずにメモリエラーを訂正することができる。
以下、図面を参照して本発明の実施形態を説明する。
まず、図1を参照して、本発明の一実施形態に係る情報処理装置の構成を説明する。この情報処理装置は、例えば、パーソナルコンピュータのようなコンピュータ、またはハードディスクドライブのような各種電子機器に内蔵される組み込みシステムとして使用される。この情報処理装置は、CPU11と制御回路12とを備えている。
CPU11は各種プログラムを実行するプロセッサである。CPU11は、各種演算処理を実行すると共に、情報処理装置内の各デバイスまたは電子機器内の各デバイスを制御する。このCPU11は割り込み信号INTを受信するための割り込み信号入力端子を有している。
CPU11は、複数のステージを含むパイプライン構造のコアユニット111を備えおり、幾つかの命令(コードとも云う)を先読み(プリフェッチ)することができる。フェッチすべき命令のメモリ番地(メモリアドレス)はCPU11内のプログラムカウンタによって指示される。プログラムカウンタは、インストラクションポインタと称されることもある。プログラムカウンタの値は、通常は、次の命令を次のメモリ番地からフェッチするために順番に更新される。CPU11は、命令をメモリからフェッチするためのフェッチ要求を発行する。このフェッチ要求は、プログラムカウンタによって示されるメモリアドレスを含む。すなわち、CPU11は、プログラムカウンタによって示されるメモリ番地の情報(ここでは命令)をリードするためのメモリリード要求をフェッチ要求として発行する。
またCPU11としては、ローカルメモリを含むプロセッサを使用してもよい。CPU11内のローカルメモリは、例えば、スタティックRAMから構成されている。このローカルメモリには、CPU11によって実行されるべき命令群の一部を格納することができる。具体的には、エラー処理ルーチン、割り込みハンドラのような、システム制御に密結合された処理ルーチンをローカルメモリに格納してもよい。
制御回路12は、CPU11のローカルバス10に接続されている。制御回路12は、CPU11からのメモリアクセス要求に応じて外部メモリをアクセスするメモリ制御機能を有している。例えば、制御回路12とCPU11は、System on a Chip(SOC)のような1チップマイクロコンピュータとして実現することができる。この1チップマイクロコンピュータが、本実施形態の情報処理装置のコア部として機能する。
メモリ13は、CPU11によって実行される命令群を格納するための外部メモリである。メモリ13は、制御回路12に設けられたメモリインタフェースに接続することができる。CPU11および制御回路12を含む装置の構成に外部メモリであるメモリ13を付加したシステムが、本実施形態の情報処理システムとして機能する。
メモリ13には、例えば、命令群と、これら命令群に対応するエラー訂正コードとが格納されている。エラー訂正コードとしては、例えばECC、CRC等の、よく知られた様々なエラー訂正可能冗長コードを使用し得る。個々の命令毎にエラー訂正コードを用意しても良く、またあるブロックデータ(複数の命令)単位でエラー訂正コードを用意しても良い。
メモリ13は、例えば、ダイナミックRAMから構成されている。ダイナミックRAMはCPU11のローカルメモリを構成するスタティックRAMよりも低速のメモリであるが、スタティックRAMに比べビット当たりのコストは低い。本実施形態では、ローカルメモリおよびメモリ13のどちらも、CPU11のメモリアドレス空間上にそれぞれマッピングされている。
不揮発性メモリ14は各種プログラム(命令群)を格納している。例えば、本情報処理装置の起動時等に、不揮発性メモリ14に格納された命令群がメモリ13およびCPU11のローカルメモリに分散してロードされる。エラー訂正処理ルーチンは、メモリ13およびCPU11のローカルメモリのどちらに格納しても良い。
制御回路12は、メモリインタフェース部121、エラー検出部122、キャッシュメモリ123、コード記憶部124、およびセレクタ125を備えている。
メモリインタフェース部121は、CPU11から発行されるフェッチ要求(メモリリード要求)によって指定されたメモリアドレスに応じて、メモリ13に格納された命令群の一つをリードする。すなわち、フェッチ要求によって指定されるメモリ13上のメモリ番地から命令がリードされる。
エラー検出部122は、リードされた命令に対応するメモリ13上のエラー訂正コード(ECC)を用いて、当該リードされた命令にエラーが存在するか否かを判定する。ECCチェック結果はセレクタ125に送られる。また、リードされた命令はキャッシュメモリ123に保存される。
キャッシュメモリ123は、CPU11によってフェッチ要求されたメモリ13上の命令のロードに要するレイテンシーを減少するために設けられたキャッシュである。このキャッシュメモリ123は、メモリ13に格納されている命令群の一部を格納する。このキャッシュ123は、例えば、スタティックRAMから構成されている。
コード記憶部124およびセレクタ125は、命令送出部131として機能する。この命令送出部131は、メモリ13からの命令のリード時にメモリエラー(ECCエラー等)の発生が検出された時に、CPU11に送出すべき命令を、フェッチ要求によって指定されたメモリ番地の命令(ECCエラーの存在が検出された命令)から、エラー訂正処理ルーチンへジャンプするための命令に差し替える処理を実行する。
命令送出部131は、フェッチ要求された命令、つまりメモリ13からリードされた命令にエラーが存在することがエラー検出回路122によって検出された場合、リードされた命令をCPU11に送出する代わりに、少なくとも、2つの命令をCPU11に送出する。
一方の命令は、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令(プッシュ命令)である。この第1の命令は、エラーの発生が検出された命令(フェッチ要求された命令)に制御を戻すために必要な情報として、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する。
すなわち、一般に、サブルーチンコールにおいては、コールされたサブルーチンからリターン時には、コール命令の次の命令に制御が戻される。本実施形態では、エラーの発生が検出された命令(フェッチ要求された命令)自体に制御を戻すために、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する処理が実行される。
もう一つの命令は、リードされた命令のエラー訂正処理をエラー訂正コードを用いて実行するエラー訂正処理ルーチンへジャンプするための第2の命令(ジャンプ命令)である。この第2の命令により、エラー訂正処理ルーチンに制御を移すことが出来る。エラー訂正処理ルーチンによるエラー訂正処理の完了後、スタックに保存されているメモリアドレスはプログラムカウンタにロードされる。これによって、エラーの発生が検出された命令(フェッチ要求された命令)に制御が戻される。
以下、命令送出部131からCPU11に送出される命令群について具体的に説明する。
リードされた命令にエラーが存在することが検出された時、命令送出部131は、コード記憶部124に格納されている以下の命令をCPU11に送出する。
push PC
push error_flag
jump ERR_CORR
ここで、命令“push PC”は上述の第1の命令である。この命令“push PC”は、プログラムカウンタレジスタ(PCレジスタ)の値をスタック(メモリ領域)に保存することをCPU11に指示する。 CPU11のアーキテクチャによって、たとえばPCレジスタがすでに次のアドレスを示すようにインクリメントされていれば、“PC”の値を-1、もしくは1命令アドレス分の減算を行い、その値をスタックに保存する。必要なことは、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存することであることに注意されたい。
push error_flag
jump ERR_CORR
ここで、命令“push PC”は上述の第1の命令である。この命令“push PC”は、プログラムカウンタレジスタ(PCレジスタ)の値をスタック(メモリ領域)に保存することをCPU11に指示する。 CPU11のアーキテクチャによって、たとえばPCレジスタがすでに次のアドレスを示すようにインクリメントされていれば、“PC”の値を-1、もしくは1命令アドレス分の減算を行い、その値をスタックに保存する。必要なことは、フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存することであることに注意されたい。
命令“push error_flag”は、ステータスレジスタ、演算結果レジスタ等の各種ステータスフラグをスタックに保存する命令である。
命令“jump ERR_CORR”は上述の第2の命令である。この命令“jump ERR_CORR”は、リードされた命令のエラー訂正処理をエラー訂正コードを用いて実行するエラー訂正処理ルーチンへのジャンプをCPU11に指示する。“ERR_CORR”は、エラー訂正処理ルーチンが格納されているメモリ領域の先頭アドレスを示している。
このような命令群(push PC、push error_flag、jump ERR_CORR)をCPU11に渡すことにより、CPU11は、フェッチ要求したアドレスにこれら一連のコードがあたかも記述されていたかのように動作する。つまり、これら命令の実行タイミングが到来すると、CPU11は、(1)ECCエラーが発生したメモリアドレスと同一のメモリアドレス(例えばPC-1)をスタックに保存する処理、(2)エラーフラグをスタックに保存という処理を行った後に、(3)エラー訂正処理ルーチンにジャンプする。そして、CPU11は、エラー訂正処理ルーチンを実行して、エラーが発生した命令を含むメモリ領域を対応するエラー訂正コードを用いて訂正した後、エラー訂正処理ルーチンから抜ける。エラー訂正処理ルーチンによるエラー訂正処理が完了した時、スタックに保存されているメモリアドレスはCPU11のプログラムカウンタにロードされ、これにより、プログラムカウンタの値は、エラーが発生した命令のフェッチ要求を発生した時点の値に戻される。よって、エラーの発生が検出された命令自体に再び制御を戻すことが出来、CPU11は、エラーが発生した命令のフェッチを再度実行する。この時点では、エラーが発生した命令のエラーは訂正されている。
このように、CPU11に送出すべき命令を、ECCエラーの存在が検出された命令から、一連の命令群(push PC、push error_flag、jump ERR_CORR)に差し替えることにより、割り込みのような特別な仕組みを用いることなく、メモリエラーの訂正を実行することが可能となる。
もし一回のフェッチ要求でフェッチされる命令数が1つの場合には、命令送出部131は、フェッチ要求に対する応答データとして、命令“push PC”をCPU11に送出した後に、CPU11から送信される後続のフェッチ要求を待機すればよい。そして、その後続のフェッチ要求の受信に応答して、CPU11は、その受信したフェッチ要求に対する応答データとして、命令“push error_flag”をCPU11に送出する。この後、命令送出部131は、CPU11から送信される後続のフェッチ要求を再び待機する。そして、その後続のフェッチ要求の受信に応答して、CPU11は、その受信したフェッチ要求に対する応答データとして、命令“jump ERR_CORR”をCPU11に送出する。
なお、命令“push error_flag”は必ずしも必要な命令ではなく、命令“push error_flag”のCPU11への送出を省略してもよい。
リードされた命令にエラーが存在することが検出されたかった場合には、命令送出部131は、リードされた命令を、フェッチ要求に対する応答データとしてCPU11に送出する。この場合、リードされた命令は、例えば、キャッシュメモリ123から取り出すことができる。
上述したように、命令“push PC”は、フェッチ要求によって指定されたメモリアドレス(EECエラーの存在が検出された命令が格納されているメモリ番地)と同一のメモリアドレスをスタックに保存するものであるので、以下では、単に“push PC”と表記する。
命令送出部131は、コード記憶部124と、セレクタ125とを含んでいる。コード記憶部124には、一連の命令群(push PC、push error_flag、jump ERR_CORR)が予め格納されている。セレクタ125は、CPU11からフェッチ要求された命令にエラーの存在が検出されたか否かに応じて、コード記憶部124およびキャッシュメモリ123の一方を選択し、選択した方からCPU11に送出すべき命令を取り出す。
次に、図2を参照して、本実施形態によるエラー訂正のためのコード差し替え動作について説明する。
図2は、プログラムカウンタ(PCレジスタ)の値の変化とCPU11によってフェッチされる命令との関係が時間を追って示されている。図2における矢印は、プログラムカウンタ(PCレジスタ)の値、つまりフェッチ対象の命令のメモリアドレスを示している。また、図2においては、命令“push error_flag”のCPU11への送出を省略する場合を示している。
いま、フェッチ対象のアドレスAAAh番地の命令Nをメモリ13からリードした時に、そのリードした命令Nにエラーが存在することが検出された場合を想定する。この場合、命令Nの代わりに、命令“push PC”がCPU11に送出される。プログラムカウンタ(PCレジスタ)の値が更新されると、CPU11から次の命令のフェッチ要求が発行される。この時、命令“jump xxxh”が、CPU11に送出される。xxxhは、エラー訂正処理ルーチンが格納されているメモリ領域の先頭アドレスを示している。
CPU11は、あたかもアドレスAAAh番地に命令“push PC”が存在し、アドレスAAAh+1番地に命令“jump xxxh”が存在していたかのように、命令“push PC”と命令“jump xxxh”とを順次フェッチおよび実行する。
命令“push PC”がCPU11によって実行されると、AAAhがスタックに保存される。次いで、命令“jump xxxh”がCPU11によって実行されると、CPU11はエラー訂正処理ルーチンにジャンプする。
命令“jump xxxh”の実行により、プログラムカウンタ(PCレジスタ)の値はxxxhに変更される。CPU11はエラー訂正処理ルーチンの命令群(エラー訂正処理のための命令群)をフェッチしながら実行する。エラー訂正処理ルーチンの最後尾にはスタックに保存されているメモリアドレスをプログラムカウンタにロードする命令(Load PC)が記述されている。したがって、エラー訂正処理ルーチンからのリターン時、つまりエラー訂正処理の完了時には、プログラムカウンタの値はAAAhに戻される。この結果、CPU11は、再び、アドレスAAAh番地の命令Nをメモリ13からリードするためのフェッチ要求を発行する。
次に、図3のフローチャートを参照して、制御回路12の動作を説明する。
制御回路12は、CPU11から送信されるフェッチ要求(コードフェッチ要求)を受信する(ステップS101)。このフェッチ要求の受信に応答して、制御回路12は、フェッチ要求に含まれるメモリアドレスによって指定される命令をメモリ13からリードする処理と、そのリードした命令にエラーが存在するか否かを判定するECCエラー検出処理とを実行する(ステップS102)。
リードした命令にエラーが存在することが検出されなかったならば(ステップS103のNO)、制御回路12は、リードした命令(フェッチ要求で指定されたメモリ番地の命令)をCPU11に送出する(ステップS104)。
一方、リードした命令にエラーが存在することが検出されたならば(ステップS103のYES)、制御回路12は、コード記憶部124から命令“push PC”を取り出し、その命令“push PC”を、リードした命令の代わりにCPU11に送出する(ステップS105)。次いで、制御回路12は、CPU11からの次のフェッチ要求を受信するまで待機する。次のフェッチ要求を受信すると(ステップS106のYES)、制御回路12は、コード記憶部124から命令“jump ERR_CORR”を取り出し、その命令“jump ERR_CORR”を、CPU11に送出する(ステップS107)。
次に、図4のフローチャートを参照して、エラー訂正処理ルーチンを実行することによってCPU11によって行われるエラー訂正処理について説明する。
CPU11は、例えば、エラー検出部122からエラー発生が検出された命令のメモリアドレスを取得すること等により、エラーアドレスを特定することができる。そして、CPU11は、発生したエラー(エラー発生が検出された命令のエラー)がエラー訂正コードを用いて訂正することが可能なエラーであるか否かを判定する(ステップS201)。 発生したエラーが訂正することが可能なエラーであるならば(ステップS201のYES)、CPU11は、エラー発生が検出された命令に対応するエラー訂正コードを用いてエラー訂正処理(ECCエラー訂正処理)を実行する(ステップS202)。
一方、発生したエラーが訂正することが不可能なエラーであるならば(ステップS201のNO)、CPU11は、エラー発生が検出された命令を不揮発性メモリ14からメモリ13に再度ロードする処理(リロード処理)を実行する(ステップS203)。
この後、CPU11は、エラー訂正処理ルーチンから抜けるために、スタックに保存されているメモリアドレスをプログラムカウンタ(PCレジスタ)にロードする(ステップS204)。この結果、エラー発生が検出された命令に制御が戻される。
以上のように、本実施形態においては、フェッチ要求された命令にエラーが存在することが検出された場合、リードされた命令をCPU11に送出する代わりに、命令“push PC”と命令“jump ERR_CORR”とがCPU11に送出される。これにより、割り込み信号をCPU11に送出することなく、メモリエラーを訂正でき、そしてエラー発生が検出された命令に制御を戻すことが出来る。
また、エラー訂正処理ルーチンへ制御が移るタイミングは、エラー発生が検出された時点ではなく、命令“jump ERR_CORR”がCPU11によって実際に実行される時点であるので、既にコアユニット111のパイプラインまたは命令キュー等に実行待ちの命令が存在する場合であっても、それら命令の実行に何等影響を与えることなく、エラー訂正処理ルーチンの実行を開始することができる、
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えばエラー検出部122においては1ビット訂正を行い、1ビット以上の訂正が必要な場合にのみセレクタ125を切り替えてコード記憶部125の命令をCPU11に送出するようにしてもよい。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えばエラー検出部122においては1ビット訂正を行い、1ビット以上の訂正が必要な場合にのみセレクタ125を切り替えてコード記憶部125の命令をCPU11に送出するようにしてもよい。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
11…CPU、12…制御回路、13…メモリ、14…不揮発性メモリ、111…コア、121…メモリインタフェース部、122…エラー検出部、123…キャッシュメモリ、124…コード記憶部、125…セレクタ、131…命令送出部。
Claims (11)
- プロセッサと、
前記プロセッサから発行されるフェッチ要求によって指定されたメモリアドレスに応じて、メモリに格納された命令群の一つをリードするメモリインタフェース手段と、
前記リードされた命令に対応する前記メモリ上のエラー訂正コードを用いて、前記リードされた命令にエラーが存在するか否かを判定するエラー検出手段と、
前記リードされた命令にエラーが存在することが検出された場合、前記リードされた命令を前記プロセッサに送出する代わりに、前記フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、前記リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、前記プロセッサに送出する命令送出手段とを具備し、前記エラー訂正処理ルーチンによるエラー訂正処理の完了後に、前記スタックに保存されているメモリアドレスが前記プロセッサのプログラムカウンタにロードされることを特徴とする情報処理装置。 - 前記命令送出手段は、前記リードされた命令にエラーが存在することが検出されなかった場合、前記リードされた命令を前記プロセッサに送出することを特徴とする請求項1記載の情報処理装置。
- 前記命令送出手段は、前記リードされた命令にエラーが存在することが検出された場合、前記フェッチ要求に対する応答データとして前記第1の命令を前記プロセッサに送出した後に、前記プロセッサから送信される後続のフェッチ要求を待機し、前記後続のフェッチ要求の受信に応答して、前記後続のフェッチ要求に対する応答データとして前記第2の命令を前記プロセッサに送出することを特徴とする請求項2記載の情報処理装置。
- 前記命令送出手段は、前記第1の命令と前記第2の命令とを格納したコード記憶部を含み、前記リードされた命令にエラーが存在することが検出された場合、前記第1の命令および前記第2の命令を前記コード記憶部から取り出すことを特徴とする請求項1記載の情報処理装置。
- 前記エラー訂正処理ルーチンは、前記エラー訂正処理のための命令群と、前記スタックに保存されたメモリアドレスを前記プロセッサのプログラムカウンタにロードする命令とを含むことを特徴とする請求項1記載の情報処理装置。
- 前記プロセッサは複数のステージを含むパイプライン構造のコアユニットを含み、前記プロセッサは命令を先読みするように構成されていることを特徴とする請求項1記載の情報処理装置。
- プロセッサと、
命令群とこれら命令群に対応するエラー訂正コードとを格納したメモリと、
前記プロセッサから発行されるフェッチ要求によって指定されたメモリアドレスに応じて、前記メモリに格納された命令群の一つをリードするメモリインタフェース手段と、
前記リードされた命令に対応する前記メモリ上のエラー訂正コードを用いて、前記リードされた命令にエラーが存在するか否かを判定するエラー検出手段と、
前記リードされた命令にエラーが存在することが検出された場合、前記リードされた命令を前記プロセッサに送出する代わりに、前記フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、前記リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、前記プロセッサに送出する命令送出手段とを具備し、前記エラー訂正処理ルーチンによるエラー訂正処理の完了後に、前記スタックに保存されているメモリアドレスが前記プロセッサのプログラムカウンタにロードされることを特徴とする情報処理システム。 - 前記命令送出手段は、前記リードされた命令にエラーが存在することが検出されなかった場合、前記リードされた命令を前記プロセッサに送出することを特徴とする請求項7記載の情報処理システム。
- 前記命令送出手段は、前記リードされた命令にエラーが存在することが検出された場合、前記フェッチ要求に対する応答データとして前記第1の命令を前記プロセッサに送出した後に、前記プロセッサから送信される後続のフェッチ要求を待機し、前記後続のフェッチ要求の受信に応答して、前記後続のフェッチ要求に対する応答データとして前記第2の命令を前記プロセッサに送出することを特徴とする請求項8記載の情報処理システム。
- メモリエラーを訂正するためのエラー訂正方法であって、
プロセッサから発行されるフェッチ要求によって指定されたメモリアドレスに応じて、メモリに格納された命令群の一つをリードするステップと、
前記リードされた命令に対応する前記メモリ上のエラー訂正コードを用いて、前記リードされた命令にエラーが存在するか否かを判定するステップと、
前記リードされた命令にエラーが存在することが検出された場合、前記リードされた命令を前記プロセッサに送出する代わりに、前記フェッチ要求によって指定されたメモリアドレスと同一のメモリアドレスをスタックに保存する第1の命令と、前記リードされた命令のエラー訂正処理を実行するエラー訂正処理ルーチンへジャンプするための第2の命令とを、前記プロセッサに送出するステップと、
前記エラー訂正処理ルーチンによるエラー訂正処理の完了後に、前記スタックに保存されているメモリアドレスを前記プロセッサのプログラムカウンタにロードするステップとを具備することを特徴とするエラー訂正方法。 - 前記リードされた命令にエラーが存在することが検出されなかった場合、前記リードされた命令を前記プロセッサに送出するステップをさらに具備することを特徴とする請求項10記載のエラー訂正方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008107130A JP4334598B1 (ja) | 2008-04-16 | 2008-04-16 | 情報処理装置およびエラー訂正方法 |
US12/398,003 US7716537B2 (en) | 2008-04-16 | 2009-03-04 | Information processing apparatus and error correction method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008107130A JP4334598B1 (ja) | 2008-04-16 | 2008-04-16 | 情報処理装置およびエラー訂正方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4334598B1 true JP4334598B1 (ja) | 2009-09-30 |
JP2009258985A JP2009258985A (ja) | 2009-11-05 |
Family
ID=41190677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008107130A Expired - Fee Related JP4334598B1 (ja) | 2008-04-16 | 2008-04-16 | 情報処理装置およびエラー訂正方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7716537B2 (ja) |
JP (1) | JP4334598B1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535804B2 (en) * | 2012-05-21 | 2017-01-03 | Cray Inc. | Resiliency to memory failures in computer systems |
CN103116484B (zh) * | 2012-12-31 | 2015-12-23 | 华为技术有限公司 | 指令处理方法及设备 |
US10445168B2 (en) * | 2013-06-18 | 2019-10-15 | Nxp Usa, Inc. | Device and method for executing a program, and method for storing a program |
CN110059391B (zh) * | 2019-04-10 | 2022-12-09 | 中科寒武纪科技股份有限公司 | 待测器件验证装置及相关产品 |
CN110059390B (zh) * | 2019-04-10 | 2022-12-09 | 中科寒武纪科技股份有限公司 | 待测器件验证装置及相关产品 |
CN110261758B (zh) * | 2019-06-10 | 2021-09-21 | 中科寒武纪科技股份有限公司 | 待测器件验证装置及相关产品 |
US20230280909A1 (en) * | 2022-03-01 | 2023-09-07 | Nxp B.V. | System and method for managing memory errors in integrated circuits |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4538265A (en) | 1983-03-24 | 1985-08-27 | International Business Machines Corporation | Method and apparatus for instruction parity error recovery |
JPH03225433A (ja) | 1990-01-30 | 1991-10-04 | Nec Corp | シングルチップマイクロコンピュータ |
JPH04277847A (ja) | 1991-03-06 | 1992-10-02 | Nec Corp | メモリ装置 |
JPH07334374A (ja) | 1994-06-10 | 1995-12-22 | Fuji Xerox Co Ltd | 割り込み検出処理装置 |
US6332181B1 (en) | 1998-05-04 | 2001-12-18 | International Business Machines Corporation | Recovery mechanism for L1 data cache parity errors |
US6167549A (en) * | 1998-07-10 | 2000-12-26 | Kye Technology Corporation | Memory access control device, and its control method |
US6543028B1 (en) * | 2000-03-31 | 2003-04-01 | Intel Corporation | Silent data corruption prevention due to instruction corruption by soft errors |
US20090070654A1 (en) * | 2006-02-09 | 2009-03-12 | International Business Machines Corporation | Design Structure For A Processor System With Background Error Handling Feature |
US7987384B2 (en) * | 2008-02-12 | 2011-07-26 | International Business Machines Corporation | Method, system, and computer program product for handling errors in a cache without processor core recovery |
-
2008
- 2008-04-16 JP JP2008107130A patent/JP4334598B1/ja not_active Expired - Fee Related
-
2009
- 2009-03-04 US US12/398,003 patent/US7716537B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7716537B2 (en) | 2010-05-11 |
US20090265579A1 (en) | 2009-10-22 |
JP2009258985A (ja) | 2009-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4334598B1 (ja) | 情報処理装置およびエラー訂正方法 | |
US9727343B2 (en) | Apparatus and method for handling exception events | |
KR101249693B1 (ko) | 서브루틴 복귀 메카니즘 선택 | |
US9043806B2 (en) | Information processing device and task switching method | |
JP2008047116A (ja) | 入力/出力装置とメモリ間のデータ転送の融通性のある制御 | |
JP2008139908A (ja) | メモリ制御装置、コンピュータシステム及びデータ再生記録装置 | |
EP2054800A2 (en) | Flash memory access circuit | |
KR980010764A (ko) | 인터럽트 제어방식, 프로세서 및 계산기 시스템 | |
US20110265072A1 (en) | Dynamic Installation of Files for Running Programs | |
JP2011008460A (ja) | ダンプ出力制御装置、ダンプ出力制御プログラム、ダンプ出力制御方法 | |
JP5292706B2 (ja) | コンピュータシステム | |
WO2009098737A1 (ja) | 外部デバイスアクセス装置、その制御方法及びシステムlsi | |
US9442724B2 (en) | Start control apparatus for controlling a start of an information device by using an interrupt generation code, information device, and start control method | |
EP2194458A2 (en) | Request processing device, request processing system, and access testing method | |
US7836277B2 (en) | Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions | |
JP6726136B2 (ja) | データアクセス装置及びアクセスエラーの通知方法 | |
JP2008140124A (ja) | データ処理装置 | |
JP2009230479A (ja) | マイクロプロセッサ | |
CN117215819B (zh) | 一种机器异常检查中断的处理方法及装置 | |
CN111666094B (zh) | 一种实时固件升级系统与方法 | |
JP6940283B2 (ja) | Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム | |
JP2005275703A (ja) | プロセッサ及びコンテキスト切り替え方法 | |
JP2002366378A (ja) | プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体 | |
JP5679263B2 (ja) | 情報処理装置及びマイクロ命令処理方法 | |
US8533565B2 (en) | Cache controller and cache controlling method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090602 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090623 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120703 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120703 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |