JP5245237B2 - エラー処理方法 - Google Patents

エラー処理方法 Download PDF

Info

Publication number
JP5245237B2
JP5245237B2 JP2006269635A JP2006269635A JP5245237B2 JP 5245237 B2 JP5245237 B2 JP 5245237B2 JP 2006269635 A JP2006269635 A JP 2006269635A JP 2006269635 A JP2006269635 A JP 2006269635A JP 5245237 B2 JP5245237 B2 JP 5245237B2
Authority
JP
Japan
Prior art keywords
instruction
error
bus
unit
bus error
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
Application number
JP2006269635A
Other languages
English (en)
Other versions
JP2008090542A (ja
Inventor
勲 笹▲崎▼
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2006269635A priority Critical patent/JP5245237B2/ja
Priority to US11/878,778 priority patent/US8032794B2/en
Priority to TW096127259A priority patent/TWI338836B/zh
Priority to CNB2007101420274A priority patent/CN100547554C/zh
Publication of JP2008090542A publication Critical patent/JP2008090542A/ja
Application granted granted Critical
Publication of JP5245237B2 publication Critical patent/JP5245237B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hardware Redundancy (AREA)
  • Bus Control (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、エラー処理方法及び情報処理装置に係り、特に命令バス又はデータバスで発生したバスエラーを処理するエラー処理方法、及びハーバードアーキテキチャを有するCPU等の情報処理装置に関する。
車載用途等で、メモリ部のパリティチェックやECCチェック機能をマイクロプロセッサのCPUに搭載する要求がある。従来のCPUでは、バスアクセス時にエラーが発生した場合、正しい命令コードをCPUに供給することができず、CPUを停止(HALT)させるしかない。このようなCPUの停止を回避する1つの方法として、バスアクセス時にエラーが発生した場合には外部割込みをCPUに入力する方法があるが、割込みルーチンにジャンプする前にバスエラーが発生した命令コードを実行してしまう可能性がある。又、CPUは、ジャンプ命令の場合のように、バスアクセスした命令コードを必ず実行するわけではないので、無意味な割込みを発生させる可能性もある。
更に、CPUが命令バスとデータバスとが分かれたハーバードアーキテキチャを有する場合、命令バスでバスエラーが発生した後、その命令の前に実行した命令にてデータバスエラーが発生する可能性があるため、命令バスエラーよりもデータバスエラーを優先処理することを考慮する必要がある。ハーバードアーキテキチャを有するCPUを備えたマイクロプロセッサとしては、例えば富士通株式会社製のFRシリーズのRISC(Reduced Instruction Set Computer)型マイクロコントローラがある。このようなCPUでは、未定義命令が発生した場合には、命令デコード部にある命令シーケンサ中の例外ハンドラが起動され、未定義割込みルーチンの先頭アドレスのフェッチ、CPUの状態(ステータス)を示すプロセッサステータス(PS:Processor Status)レジスタとプログラムカウンタ(PC:Program Counter)レジスタの内容退避のための命令を例外・割込み・トラップ(EIT:Exception, Interrupt, Trap)処理により発生させて、割込みルーチンへジャンプする。
図1は、従来のCPUの要部の構成を示すブロック図である。従来のCPUは、大きく分けてフェッチ(F:Fetch)部101、デコード(D:Decode)部102、実行(E:Execute)部103、メモリアクセス(M:Memory access)部104及び汎用レジスタ部105から構成される。
F部101は、内部の命令バスIbusを用いて命令コードを取得する命令フェッチを行う。フェッチした命令コードは中間レジスタTfにセットする。又、その時のアドレスを中間レジスタTia_fにセットする。F部101には、Ibusアクセス制御部111が設けられている。
D部102は、フェッチされた命令コードを解析して、E部103で実行すべき演算モード(足し算、引き算等)、演算に必要なデータの準備等を行う。具体的には、フェッチした命令コードからE部103内の演算器(ALU)132の演算モードをデコードし、演算に使用するレジスタ値を中間レジスタTa,Tbにセットする。又、内部のデータバスDbusにライトする場合は、中間レジスタTddにライトすべき値をセットする。外部割込みや、未定義命令等による内部エラーが発生した場合は、命令シーケンサ121中の例外ハンドラ122により割込みルーチンにジャンプするため、D部102は割込みベクタテーブルのリードや汎用レジスタ部105のPSレジスタ及びPCレジスタの退避を行う命令を自動的に供給する。命令シーケンサ121内には、デコーダ123及びマルチプレクサ124が設けられている。又、D部102は、命令シーケンサ121でデコードされた演算モードをラッチする中間レジスタTdec、マトリクス(又は、セレクタ)125及びマルチプレクサ126を有する。
図2は、従来のCPUのD部102内の命令シーケンサ121の動作を説明するフローチャートである。新たに命令をフェッチ後、命令コードをD部102に入力し(ステップS1)、命令コードをデコードする(ステップS2)。デコードの結果、命令コードが正常であれば、その命令の演算モードと、演算に必要な汎用レジスタ部105の内容を中間レジスタTdec,Ta,Tb,Tddにセットし、E部103に渡す(ステップS3)。その後、次のサイクルで、次の命令を取り込み、デコードを開始する。
デコードした結果が未定義命令、又は、外部からの割込みを受け付けた場合は、その例外割込みのルーチンにジャンプするため、ベクタテーブルからベクタアドレスを取得し、そのアドレスを計算するための演算モードと、演算に必要な汎用レジスタ部105の内容をE部103に渡す(ステップS4)。例外処理へ移る方法として、ベクタテーブルを用いる手法がよく使われており、このベクタテーブル中の各アドレスのデータは、夫々の例外処理の開始番地を指し示しているので、ベクタアドレスと呼ばれる。次のサイクルで、PSレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部105の内容をE部103に渡す(ステップS5)。その後、PCレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部105の内容をE部103に渡す(ステップS6)。ステップS4〜S6は、EIT処理を構成する。その後、他の割込み又はエラーがあるか否かをチェックし(ステップS7)、割込み又はエラーがない場合は(ステップS7でNO)次の命令をデコードし、割込み又はエラーがある場合は(ステップS7でYES)EIT処理によるベクタアドレスの取得を繰り返す。
E部103は、D部102より演算モード信号や演算用データを受け取り、演算を行う。具体的には、命令の演算を行い、演算器132にて得られた結果を中間レジスタTeにセットする。命令の組合せによってレジスタハザードが発生した場合は、E部103はレジスタバイパスルート131により演算器132の出力から直接E部103への入力用の中間レジスタTa又はTb,Tddに伝える。E部103は、D部102内の中間レジスタTddの出力がセットされる中間レジスタTedを有する。
M部104は、E部103よりデータを受け取り、内部のデータバスDbusを用いてメモリ部へのライト又はリードを行う。具体的には、命令の演算結果のメモリ部又は汎用レジスタ部105(PC、R0〜R15)等へのライト又はリードを行う。M部104は、中間レジスタTia_m及びDbusアクセス制御部141を有する。
汎用レジスタ部105は、CPUの内部レジスタであり、PCレジスタ、PSレジスタ、演算用レジスタR0〜R15及びマルチプレクサ151を有する。
図1中、IDは命令コード、IAは命令コードのアドレス、iaccess,irdy, IRDY, ISIZEは夫々、命令コードのアクセス要求、命令コードのレディ出力、命令コードのレディ入力、命令コードのサイズを示す。又、DA,DDout,DDinは夫々データのアドレス、出力データ及び入力データを示す。更に、daccess,drdy,DRDY,DSIZEは夫々データのアクセス要求、データのレディ出力、データのレディ入力及びデータのサイズを示す。
各部101〜104の命令のアドレスは、中間レジスタTia_f→Tia_dec→Tia_e→Tia_mに保持される。ある命令で演算用レジスタRi(i=0〜15)に演算結果を代入後、次の命令でその演算用レジスタRiを使用する場合、D部102に間に合わないため、演算器132の出力を中間レジスタTa又はTbにセットできるルート、即ち、レジスタバイパス131を設ける。
命令は、CPUがフェッチした順番に処理を行う。1つの命令は、1クロック入力する毎にF部101、D部102、E部103、M部104へと進んでいき、CPUはその命令に従って動作する。命令I1がフェッチされ、次のクロックで命令I2がD部102に進んだ時に、平行してF部101にて命令I2のフェッチを行う。これを繰り返し、命令I1〜I5がパイプライン処理されて行く。この時の様子を図3〜図8に示す。図3は、従来のCPUの動作を説明するタイミングチャートである。又、図4は状態(1)を説明する図、図5は状態(2)を説明する図、図6は状態(3)を説明する図、図7は状態(4)を説明する図、図8は状態(5)を説明する図である。図4〜図8中、nopはノーオペレーション(no operation)を示す。
従来のCPUにはバスエラー入力手段が設けられておらず、メモリ部にてパリティエラー等のエラーが発生した場合、CPUが実行できる命令を外部にて用意することができず、CPUの実行が止まってしまう。又、CPUが命令をフェッチしてパリティエラーを検出し、それを外部割込みにした場合、バスエラーが発生した命令を実行してしまう可能性がある。更に、CPUが命令をフェッチしてパリティエラーを検出しても、ジャンプ命令実行等によりフェッチした命令が実行されなかった場合、無意味な割込みを上げてしまうことになる。命令バスでのバスエラー発生時には、直前の命令でのデータバスエラーが後で発生するので、処理の優先順位を考慮する必要がある。
尚、アドレス又はデータのパリティエラーを検出する構成の1チップマイクロプロセッサは、例えば特許文献1にて提案されている。
特開平6−242977号公報
従来のハーバードアーキテキチャを有するCPUの場合、命令バス又はデータバスで発生したバスエラーを適切に処理することは難しいという問題があった。
そこで、本発明は、ハーバードアーキテキチャを有するCPUの命令バス又はデータバスで発生したバスエラーを適切に処理可能なエラー処理方法及び情報処理装置を提供することを目的とする。
上記の課題は、CPUのバスで発生したエラーを処理するエラー処理方法であって、該CPUの命令バス及びデータバスのうち少なくとも一方のバスで発生したバスエラーをバスエラー入力手段により該CPUに入力するステップと、該バスエラーを該CPU内のバスエラーカウンタ手段でカウントするステップと、該バスエラーカウンタ手段の値に基づいて該CPUに接続されたメモリ部の領域を指定するステップとを含むことを特徴とするエラー処理方法によって達成できる。
上記の課題は、CPUを備えた情報処理装置であって、該CPUに接続されたメモリ部と、該CPUの命令バス及びデータバスのうち少なくとも一方のバスで発生したバスエラーを該CPUに入力するバスエラー入力手段と、該CPU内で該バスエラーをカウントするバスエラーカウンタ手段と、該バスエラーカウンタ手段の値に基づいて該メモリ部の領域を指定する手段とを備えたことを特徴とする情報処理装置によって達成できる。
本発明によれば、ハーバードアーキテキチャを有するCPUの命令バス又はデータバスで発生したバスエラーを適切に処理可能なエラー処理方法及び情報処理装置を実現することができる。
本発明では、CPUの命令バス及びデータバスにバスエラー入力手段を設ける。又、CPUにバスエラーカウンタ手段を設け、このバスエラーカウンタ手段の内容を出力することでメモリ部のページを指定する。バスエラーカウンタ手段の更新は、命令バスでバスエラーが発生した場合は例えば未定義命令の例外ベクタにジャンプすると判断した時、又、データバスでバスエラーが発生した場合は例えばバスエラー発生時に行う。命令バスでバスエラーが発生した場合は、直前の命令にてデータバスでバスエラーが発生していないことを確認後、未定義命令処理を行っても良く、データバスでバスエラーが発生した場合は、その命令以降の命令による汎用レジスタ部へのセットは禁止し、未定義命令処理を行っても良い。
命令をフェッチしたときに命令バスでパリティエラーが発生した場合、命令バスエラー信号を命令バスエラー入力手段に入力する。これにより、CPUはエラーとなった命令を実行すると判断した時点でEIT処理を行い、エラー処理ルーチンへジャンプすることができる。又、データバスでパリティエラーが発生した場合、データエラー信号をデータバスエラー入力手段に入力すると、以降の命令の処理をキャンセルすることができるので、命令バスでのエラー処理との優先順位をハード的に処理でき、ソフト的な処理を考慮する必要がなくなる。
以下に、本発明のエラー処理方法及び情報処理装置の各実施例を、図9以降と共に説明する。
図9は、本発明が適用されるマイクロプロセッサの要部を示すブロック図である。図9に示すマイクロプロセッサ1は、CPU2及びメモリ部3,4を有する。例えば、メモリ部3はフラッシュメモリ(flash memory)で構成され、メモリ部4はRAMで構成されている。CPU2とメモリ部3は命令バス5により接続され、CPU2とメモリ部4はデータバス6により接続されている。命令バス5は、命令アクセスサイズ信号線ISIZE、命令アドレス線IA、命令データ線ID、レディ信号線IRDY、命令バスエラー信号線IBERR及び命令バスエラーカウンタ信号線IBER_CNTRを有する。データバス6は、データアクセスサイズ信号線DSIZE、データアドレス線DA、データ線DD、レディ信号線DRDY、データバスエラー信号線DBERR及びデータバスエラーカウンタ信号線DBER_CNTRを有する。命令バスエラー信号線IBERR及びデータバスエラー信号線DBERRは、バスエラー入力手段を構成する。
図10は、メモリ部3の構成を示すブロック図である。メモリ部4の構成は、メモリ部3と同じで良い。メモリ部3(又は、メモリ部4)は、論理回路31、例えばページメモリ0〜4からなるページメモリ部32、及びパリティチェッカ33を有する。図10中、ADは命令又はデータのアドレス、ER_CNTRは対応するエラーカウンタからのエラーカウンタ信号、R/WXはリード信号又はライト信号、CS0X〜CS3Xは論理回路31が出力するチップセレクト信号、IBERR/DBERRはパリティチェッカ33から出力される命令バスエラー信号又はデータバスエラー信号、IDout/DDoutはページメモリ部32から出力される命令出力又はデータ出力を示す。論理回路31は、エラーカウンタ信号ER_CNTR、命令又はデータのアドレスAD、及びリード又はライト信号R/WXに基づいてチップセレクト信号CS0X〜CS3Xを生成する。ページメモリ部32を構成するページメモリの数は言うまでもなく4個に限定されるものではない。
図11は、メモリ部3(又は、メモリ部4)のライト/リードとチップセレクト信号CS0X〜CS3Xとの関係を示す図である。図11中、○印は制御信号のアクティブ(活性化)論理レベルを示し、×印は制御信号のインアクティブ(非活性化)論理レベルを示す。図11に示すように、ライト時にはページメモリ部32の全てのページメモリ0〜3に対して命令又はデータがライトされる。他方、リード時にはエラーカウンタ信号ER_CNTRで示される1つのページメモリから命令又はデータがリードされる。
図12は、本発明の第1実施例の要部を示すブロック図である。CPU2は、大きく分けてフェッチ(F:Fetch)部51、デコード(D:Decode)部52、実行(E:Execute)部53、メモリアクセス(M:Memory access)部54及び汎用レジスタ部55から構成される。
F部51は、内部の命令バスIbusを用いて命令コードを取得する命令フェッチを行う。フェッチした命令コードは中間レジスタTfにセットする。又、その時のアドレスを中間レジスタTia_fにセットする。F部51には、Ibusアクセス制御部511が設けられている。
D部52は、フェッチされた命令コードを解析して、E部53で実行すべき演算モード(足し算、引き算等)、演算に必要なデータの準備等を行う。具体的には、フェッチした命令コードからE部53内の演算器(ALU)532の演算モードをデコードし、演算に使用するレジスタ値を中間レジスタTa,Tbにセットする。又、内部のデータバスDbusにライトする場合は、中間レジスタTddにライトすべき値をセットする。外部割込みや、未定義命令等による内部エラーが発生した場合は、命令シーケンサ521中の例外ハンドラ522により割込みルーチンにジャンプするため、D部52は割込みベクタテーブルのリードや汎用レジスタ部55のPSレジスタ及びPCレジスタの退避を行う命令を自動的に供給する。命令シーケンサ521内には、デコーダ523及びマルチプレクサ524が設けられている。又、D部52は、命令シーケンサ521でデコードされた演算モードをラッチする中間レジスタTdec、マトリクス(又は、セレクタ)525及びマルチプレクサ526を有する。
E部53は、D部52より演算モード信号や演算用データを受け取り、演算を行う。具体的には、命令の演算を行い、演算器532にて得られた結果を中間レジスタTeにセットする。命令の組合せによってレジスタハザードが発生した場合は、E部53はレジスタバイパスルート531により演算器532の出力から直接E部53への入力用の中間レジスタTa又はTb,Tddに伝える。E部53は、F部51内の中間レジスタTia_fの出力及びD部52内の中間レジスタTia_eの出力が供給される中間レジスタEPCを有する。中間レジスタEPCは、エラーが発生したPCレジスタの値を退避するために設けられている。
M部54は、E部53よりデータを受け取り、内部のデータバスDbusを用いてメモリ部へのライト又はリードを行う。具体的には、命令の演算結果のメモリ部又は汎用レジスタ部55(PC、R0〜R15)等へのライト又はリードを行う。M部54は、中間レジスタTia_m及びDbusアクセス制御部541を有する。
汎用レジスタ部55は、CPUの内部レジスタであり、PCレジスタ、PSレジスタ、BEARレジスタ、BEDRレジスタ、バスエラーカウンタDBER_CNTR、命令バスエラーカウンタIBER_CNTR、演算用レジスタR0〜R15及びマルチプレクサ551を有する。本実施例では、PSレジスタは、命令バスエラーIBER及びデータバスエラーDBERを格納し、バスエラーBERRの発生を示す。BEARレジスタは、バスエラーBERRが発生した時のアドレスを格納する。BEDRレジスタは、バスエラーBERRが発生した時のデータを格納する。データバスエラーカウンタDBER_CNTRはデータバスエラーDBERRをカウントし、命令バスエラーカウンタIBER_CNTRは命令バスエラーIBERRをカウントする。命令バスエラーカウンタIBER_CNTR及びデータバスエラーカウンタDBER_CNTRは、バスエラーカウンタ手段を構成する。
図12中、IDは命令コード、IAは命令コードのアドレス、iberrは内部命令バスエラー出力、IBERRは図10に示すパリティチェッカ33からの命令バスエラー信号入力、iaccess,irdy, IRDY, ISIZEは夫々、命令コードの内部アクセス要求、命令コードの内部レディ信号出力、メモリ部3からの命令コードのレディ信号入力、メモリ部3に出力される命令コードのサイズを示す。又、DA,DDout,DDinは夫々データのアドレス、出力データ及び入力データを示し、dberrは内部データバスエラー信号出力、DBERRは図10に示すパリティチェッカ33からのデータバスエラー信号入力を示す。更に、daccess,drdy,DRDY,DSIZEは夫々データの内部アクセス要求、データの内部レディ信号出力、メモリ部4からのデータのレディ信号入力及びメモリ部4に出力されるデータのサイズを示す。
各部51〜54の命令のアドレスは、中間レジスタTia_f→Tia_dec→Tia_e→Tia_mに保持される。ある命令で演算用レジスタRi(i=0〜15)に演算結果を代入後、次の命令でその演算用レジスタRiを使用する場合、D部52に間に合わないため、演算器532の出力を中間レジスタTa又はTbにセットできるルート、即ち、レジスタバイパス531を設ける。
命令は、CPUがフェッチした順番に処理を行う。1つの命令は、1クロック入力する毎にF部51、D部52、E部53、M部54へと進んでいき、CPUはその命令に従って動作する。命令I1がフェッチされ、次のクロックで命令I2がD部52に進んだ時に、平行してF部51にて命令I2のフェッチを行う。これを繰り返し、命令I1〜I5がパイプライン処理されて行く。
本実施例では、命令バスエラーIBERR又はデータバスエラーDBERRが発生した場合、リトライを行わないで(EIT処理時は除く)バスエラー処理を行う。
命令バスエラーIBERRが発生した場合について説明すると、命令フェッチにて命令バスエラーIBERRが発生した場合、命令の前後性を維持するため、直前の命令でデータバスエラーDBERRが発生していないことを確認できるまで、D部52で待つ(waitする)。データバスエラーDBERRが発生していなかったら、本実施例では次のサイクルで、未定義例外へジャンプする命令を例外ハンドラ522が供給する。そして、命令バスエラーカウンタIBER_CNTRの値をカウントアップする。
データバスエラーDBERRが発生した場合について説明すると、M部54にてデータバスエラーDBERRが発生した場合、M部54のMステージで汎用レジスタ部55内の演算用レジスタR0〜R15に値がセットされるのを抑止する。このような演算用レジスタR0〜R15への値のセットは、データバスエラーDBERRが発生した命令後、割込みベクタをリードできるまでにフェッチした命令のM部54での処理が終了するまで禁止される。データバスエラーDBERR発生後、次のサイクルで例外ハンドラ522がEIT処理の命令を供給する。
図13は、第1実施例の命令シーケンサの動作を説明するフローチャートである。新たに命令をフェッチ後、命令コードをD部52に入力し(ステップS11)、命令コードをデコードする(ステップS12)。デコードの結果、命令コードが正常であれば、その命令の演算モードと、演算に必要な汎用レジスタ部55の内容を中間レジスタTdec,Ta,Tb,Tddにセットし、E部53に渡す(ステップS13)。その後、次のサイクルで、次の命令を取り込み、デコードを開始する。
デコードした結果が未定義命令、又は、外部からの割込みを受け付けた場合は、バスエラーに応じた処理、或いは、その他の割込みに応じた処理が行われる。命令バスエラーIBERR発生時には、処理はステップS14へ進む。データバスエラーDBERR発生時には、処理はステップS23又はステップS26へ進む。ベクタアクセス時にデータバスエラーDBERRが発生した場合、或いは、PSレジスタの内容退避時にデータバスエラーDBERRが発生した場合には、処理はステップS23へ進む。他方、PCレジスタの内容退避時にデータバスエラーDBERRが発生した場合には、処理はステップS26へ進む。その他の割込みが発生した場合には、処理はステップS29へ進む。
ステップS14はデータバスエラー出力dberrが入力されたか否かを判定し、判定結果がNOであると、ステップS15はNOP(No OPeration)を挿入する。ステップS16はデータバスエラー出力dberrが入力されたか否かを判定し、判定結果がNOであると、ステップS17はNOP(No OPeration)を挿入する。ステップS14又はステップS16の判定結果がYESであると、処理はステップS14へ戻る。ステップS18は、例外割込みのルーチン、即ち、命令バスエラーIBERR割込のルーチンにジャンプするため、ベクタテーブルからベクタアドレスを取得し、そのアドレスを計算するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS19は、次のサイクルで、PSレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS20は、PCレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS18〜S20は、EIT処理を構成する。その後、ステップS21はデータバスエラー出力dberrが入力されたか否かを判定し、判定結果がNOであると、ステップS22は他の割込み又はエラーがあるか否かをチェックし、割込み又はエラーがなくて判定結果がNOであると、処理はステップS11へ戻り次の命令をデコードする。ステップS21又はステップS22の判定結果がYESであると、処理はステップS14へ戻る。
ステップS23は、例外割込みのルーチン、即ち、データバスエラーDBERR割込のルーチンにジャンプするため、ベクタテーブルからベクタアドレスを取得し、そのアドレスを計算するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS24は、次のサイクルで、PSレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS25は、PCレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡し、処理はステップS21へ進む。ステップS23〜S25は、EIT処理を構成する。
ステップS26は、例外割込みのルーチン、即ち、データバスエラーDBERR割込のルーチンにジャンプするため、ベクタテーブルからベクタアドレスを取得し、そのアドレスを計算するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS27は、次のサイクルで、NOP(No OPeration)を挿入する。ステップS28は、PCレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡し、処理はステップS21へ進む。ステップS26〜S28は、EIT処理を構成する。
ステップS29は、その他の割込みのルーチンにジャンプするため、ベクタテーブルからベクタアドレスを取得し、そのアドレスを計算するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS30は、次のサイクルで、PSレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡す。ステップS31は、PCレジスタの内容を退避するための演算モードと、演算に必要な汎用レジスタ部55の内容をE部53に渡し、処理はステップS21へ進む。ステップS29〜S31は、EIT処理を構成する。
従って、命令シーケンサ521に投入される命令コードが正常な場合は、従来と同様の処理が行われる。しかし、デコード時に命令バスエラーIBERRが発生した場合、直前の命令にてデータバスDbusのエラーが発生しないことを確認できるまで、NOP(No OPeration)を挿入する。この間最長2サイクルかかる。その後、命令バスエラーIBERRに対応するEIT処理の命令を投入する。又、デコード時にデータバスエラーDBERRが発生した場合は、データバスエラーDBERRのEIT処理の命令を投入する。EIT処理中にデータバスエラーDBERRが発生した場合、ベクタアクセスでデータバスエラーDBERR又はPSレジスタの内容退避時にデータバスエラーDBERRが発生した場合も同様である。レジスタPCの内容退避時にDBERRが発生した場合は、ベクタアクセスとレジスタPCの内容退避のリトライを行うシーケンスルートを通る。
図14は、命令バスIbusでエラーが発生した場合の動作を説明するタイミングチャートである。図14及び後述する図15、図16、図19及び図20において、F,D,E,Mは夫々F部51、D部52、E部53及びM部54の処理(即ち、F,D,E,Mステージの処理)を示し、EDはDステージにおけるEIT処理、EEはEステージにおけるEIT処理、EMはMステージにおけるEIT処理を示す。縦長の四辺形はレジスタの処理、4つの四辺形で構成された正方形はデコーダの処理、+印が付された○印はALUの処理、nopはNo OPeration(NOP)、LDはロード(LoaD)命令、STはストア(STore)命令を示す。又、図14〜図16中、図12と同一部分には同一符号を付す。
図14に示すように、各サイクルcycle1〜cycle9では、以下の処理が行われる。
サイクルcycle1は、命令I1のフェッチサイクルである。この命令I1は、命令バスエラーIBERRが発生する命令の直前の命令である。
サイクルcycle2は、命令I1のデコードサイクルであり、又、命令I2のフェッチサイクルである。このサイクルcycle2で命令バスエラーIBERRがCPU2に入力される。
サイクルcycle3では、外部信号である命令バスエラーIBERRをラッチした内部信号である命令バスエラーiberrが命令シーケンサ521に入力されることにより、命令シーケンサ521は中間レジスタTfにセットされた命令ではなく、直前の命令I1のデータバスエラーDBERRがないことが確認されるまでNOP命令相当の演算モード信号をE部53に渡す。
サイクルcycle4では、D部52は引続きNOP命令相当の演算モード信号をE部53に渡す。この時、M部54では命令I1のデータバスDbusのアクセスが発生し、データバスエラーDBERRは発生しない。これにより、サイクルcycle5の先頭にて命令バスエラーカウンタIBER_CNTRがカウントアップされ、メモリ部3(又は、4)が切り替わる。尚、サイクルcycle4にてデータバスエラーDBERRが発生した場合は、図15と共に後述するデータバスエラー発生時の動作が行われる。
サイクルcycle5では、命令I1のデータバスDbusのアクセスサイクルでエラーが発生しなかったことを受け、D部52は命令バスIbusのエラー処理ルーチンへジャンプするため、ベクタアドレスを計算するための演算モードと汎用レジスタ部55の内容(TBR:ベクタテーブルの先頭アドレス、VectNo.:割込みの番号を表し、ベクタテーブルの先頭から何番目にアドレスがあるかを示す)を中間レジスタTa,Tbにセットし、E部53に渡す。
サイクルcycle6では、E部53にて命令バスIbusのエラー処理ルーチンのベクタアドレスがあるアドレスの計算を行う。これと同時に、D部52は命令シーケンサ521がPSレジスタの内容を退避するための演算モードと汎用レジスタ部55の内容を中間レジスタTa,Tbにセットし、E部53に渡す。
サイクルcycle7では、データバスDbusにてベクタアドレスがフェッチされ、サイクルcycle7の後にPCレジスタにロードされる。E部53はPSレジスタをライトすべきアドレスの計算が実行され、中間レジスタTeにセットする。D部52は、エラーのあったPCレジスタの値(EPCレジスタの内容)を退避するためのアドレスを計算するための演算モードと汎用レジスタ部55の内容をE部53に渡す。
サイクルcycle8では、命令バスIbusにベクタテーブルからロードされたPCレジスタの値が命令バスIbusのアドレスIAとして出力され、命令バスIbusのエラー処理ルーチンのアドレスから命令をフェッチする。データバスDbusでは、PSレジスタの値をメモリ部3(又は、4)へライトし、演算用レジスタR15の値を更新する。E部53では、エラーのあったPCレジスタの値(EPCレジスタの内容)を退避するためのアドレスの計算を行う。D部52では、次に受け付けるべき割込み等があるか否かをチェックし、なければNOPとする。他方。次に受け付けるべき割込み等がある場合は、その割込みのベクタアドレスをフェッチするための演算モードと汎用レジスタ部55の内容を準備する。図14では、受け付けるべき割込みがない状態を示している。
サイクルcycle9では、データバスDbusからエラーのあったPCレジスタの値(EPCレジスタの内容)をメモリ部3(又は、4)へ退避し、演算用レジスタR15の内容を更新する。E部53では、NOP操作を行う。D部52では、命令バスIbusのエラー処理ルーチンの命令のデコードが行われる。サイクルCycle9以降は、通常の命令の処理が行われる。
このように、命令バスエラーカウンタIBER_CNTRのカウントアップは、命令バスエラーIBERRが発生し、直前の命令にてデータバスエラーDBERRが発生しなかった場合に行う。全てのビットが「1」(all "1")の時に命令バスエラーIBERRが発生した時は、全てのビットが「0」(all "0")とならず、CPU2はHALT信号を出力して、HALT状態となる。命令バスエラーカウンタIBER_CNTRは、CPU2がリセットされたときにのみリセットされる。
図15は、データバスDbusでエラーが発生した場合の動作を説明するタイミングチャートである。ステップS101はLD @Rj, Riを実行し、ステップS102は命令I1をキャンセルし、ステップS103は命令I2をキャンセルする。ステップS104はLD @(TBR, VectNo), PCを実行し、ステップS105はST PS, @-R15を実行し、ステップS106はST EPC, @-R15を実行する。ステップS107はNOP1を実行して次のEIT処理があればステップS104〜S106を繰り返し、ステップS108は例外プログラムの命令を実行する。尚、TBRはベクタテーブルの先頭アドレスを示し、VectNo.は割込みの番号を表し、ベクタテーブルの先頭から何番目にアドレスがあるかを示す。図15に示すように、各サイクルcycle1〜cycle9では以下の処理が行われる。
サイクルcycle1は、データバスDbusのアクセスサイクルでデータバスエラーDBERRが発生する命令I1のフェッチサイクルである。この命令I1は、データバスDbusによりメモリ部3(又は、4)からデータをリードする命令である。
サイクルcycle2では、命令I2(命令I1)のフェッチを行う。D部52は、命令I1のデコードを行う。
サイクルcycle3では、E部53は命令I1のアドレスの計算を行う。D部52は、命令I2のデコードを行う。F部51は、命令I3のフェッチを行う。
サイクルcycle4では、データバスDbusにて命令I1のリードアクセスが行われるが、エラーが発生し、データバスエラーDBERRがCPU2に入力される。これにより、リードされたデータを汎用レジスタRiにセットしない。又、サイクルcycle6までの期間は、データバスDbusのアクセスによる内部汎用レジスタ部55への値のセットを禁止する。E部53では命令I2の実行が行われ、D部52では命令I3のデコードが行われる。
サイクルcycle5では、データバスDbusにて命令I2のアクセスが行われるが、その時に得たデータは、汎用レジスタ部55にロードされない。つまり、命令I2はキャンセルされたことになる。データバスエラーカウンタDBER_CNTRは、データバスエラーDBERRによりカウントアップし、メモリ部3(又は、4)が切り替わる。E部53では命令I3の実行が行われ、D部52ではデータバスエラーDBERRをラッチした内部信号であるデータバスエラーdberrにより、ベクタアドレスをフェッチするための演算モードと必要な汎用レジスタ部55の値がE部53に渡される。この時、サイクルcycle4でフェッチされた命令は破棄される。
サイクルcycle6では、データバスDbusにて命令I3のサイクルが行われるが、汎用レジスタ部55にはその結果は反映されない。E部53ではベクタのあるアドレスの計算が行われる。D部52では、PSレジスタの内容退避のための演算モードと必要な汎用レジスタ部55の内容が中間レジスタにセットされる。
サイクルcycle7では、データバスDbusにてベクタがあるアドレスよりベクタをリードし、PCレジスタにセットする。E部53では、PSレジスタの内容退避のためのアドレスの計算が行われる。D部52では、エラーのあったPCレジスタの値を退避するためのアドレスの計算のための演算モード、汎用レジスタ部55の内容を中間レジスタにセットする。
サイクルcycle8では、命令バスIbusにてPCレジスタにセットされたアドレスより命令コードをフェッチし、これがエラー処理ルーチンの先頭アドレスとなる。データバスDbusでは、PSレジスタの内容がメモリ部3(又は、4)へライトされる。E部53では、エラーのあったPCレジスタの値を退避するためのアドレスの計算が行われる。D部52では、命令シーケンサ521は他の例外割込みがあればそのEIT処理を投入するが、他の例外割込みがない場合にはNOPを投入する。図15は、NOPが投入された場合を示している。
サイクルcycle9では、データバスDbusでは、エラーのあったPCレジスタの値がメモリ部3(又は、4)へライトされ、E部53ではNOPとなる。D部53ではS108のデコードが行われ、サイクルcycle9以降は、通常の命令の処理が行われる。
このように、データバスエラーカウンタDBER_CNTRは、データバスDbusにてデータバスエラーDBERRが発生した時にカウントアップされ、全てのビットが「1」(all "1")の時にデータバスエラーDBERRが発生した時は全てのビットが「0」(all "0")とならず、CPU2はHALT信号を出力し、HALT状態となる。データバスエラーカウンタDBER_CNTRは、CPU2がリセットされたときにのみリセットされる。
図16は、EIT処理時のデータバスでエラーが発生した場合の動作を説明するタイミングチャートである。図16に示すように、各サイクルcycle1〜cycle13では以下の処理が行われる。
サイクルcycle1〜サイクルcycle8までは、通常の命令のデータバスDbusのアクセスサイクルでデータバスエラーDBERRが発生したことによるベクタフェッチ、PSレジスタの内容退避、PCレジスタの内容退避を行うシーケンスである。
サイクルcycle9では、PCレジスタの内容を退避するシーケンスにて、データバスDbusのアクセスサイクルでデータバスエラーDBERRが発生する。このため、演算用レジスタR15に対するレジスタ値の更新は禁止される。
サイクルcycle10では、データバスエラーカウンタDBER_CNTRの値がカウントアップされ、メモリ部3(又は、4)が切り替わる。データバスDbusでは、他の割込みがないので何もしない(NOP操作)。E部53では、既に読み込まれているジャンプ(JMP)先命令の演算が行われる。D部52ではJMP先命令I2のデコードを行わず、ベクタフェッチを再度リトライするための演算モードとレジスタの値を中間レジスタにセットする。
サイクルcycle11では、データバスDbusにてJMP先命令I1によるサイクルが行われるが、その結果は汎用レジスタ部55にはセットしない。E部53では、リトライされたベクタフェッチのアドレスの計算が行われる。D部52では、他に割込みがないかをチェックし、無ければNOPを挿入する。
サイクルcycle12では、データバスDbusにてベクタフェッチのアクセスが行われ、PCレジスタにセットされる。E部53では、他の割込みがなかったのでNOP操作となる。D部52では、エラーのあったPCレジスタの値を退避するための演算モードと汎用レジスタ部55の内容が中間レジスタにセットされる。
サイクルcycle13以降では、ベクタフェッチにてリードしたPCレジスタの値がロードされ、エラーのあったPCレジスタの値がデータバスDbusにてメモリ部3(又は、4)にライトされ、順次命令が実行される。
図17は、本発明の第2実施例の要部を示すブロック図である。図17中、図12と同一部分には同一符号を付し、その説明は省略する。CPU2AのF部51Aには、未定義コード差し替え部512が設けられている。この未定義コード差し替え部512は、セレクタで構成可能である。
本実施例では、命令バスエラーIBERR又はデータバスエラーDBERRが発生した場合、リトライを行い、それでもバスエラーが発生する場合にはバスエラー処理を行う。
命令バスエラーIBERRが発生した場合について説明すると、命令フェッチにて命令バスエラーIBERRが発生した場合、全パイプラインのステージを再実行し、F部51のFステージをリトライし、命令バスエラーカウンタIBER_CNTRの値を更新する。指定回数リトライしても命令バスエラーIBERRが発生する場合、例外ハンドラ522は未定義例外のEIT処理を行う。尚、命令バスエラーIBERRが発生した命令の前の命令でデータバスエラーDBERRが発生した場合は、未定義例外の処理はキャンセルする。
又、データバスエラーDBERRが発生した場合について説明すると、M部54にてデータバスエラーDBERRが発生した場合、M部54のMステージで汎用レジスタ部55内の演算用レジスタR0〜R15に値がセットされるのを抑止する。又、全パイプラインのステージを再実行し、M部54のMステージをリトライし、データバスエラーカウンタDBER_CNTRの値を更新する。指定回数リトライしてもデータバスエラーDBERRが発生する場合、例外ハンドラ522は未定義例外のEIT処理を行う。本実施例では、データバスエラーDBERRの発生時に、そのサイクルで例外ハンドラ522がEIT処理の命令を供給している。
EIT処理中にデータバスエラーDBERRが発生した場合には、EIT処理をリトライする。リトライの発生パターンは上記第1実施例の場合と同じである。
図18は、第2実施例の命令シーケンサの動作を説明するフローチャートである。図18中、図13と同一ステップには同一符号を付し、その説明は省略する。図18において、デコードした結果が未定義命令、又は、外部からの割込みを受け付けた場合は、バスエラーに応じた処理、或いは、その他の割込みに応じた処理が行われる。データバスエラーDBERR発生時には、処理はステップS23又はステップS26へ進む。ベクタアクセス時にデータバスエラーDBERRが発生した場合、或いは、PSレジスタの内容退避時にデータバスエラーDBERRが発生した場合には、処理はステップS23へ進む。他方、PCレジスタの内容退避時にデータバスエラーDBERRが発生した場合には、処理はステップS26へ進む。その他の割込みが発生した場合には、処理はステップS29へ進む。
ステップS25又はステップS28又はステップS31の後、ステップS41は他の割込み又はエラーがあるか否かをチェックし、割込み又はエラーがなくて判定結果がNOであると、処理はステップS11へ戻り次の命令をデコードする。ステップS41の判定結果がYESであると、処理はステップS12の判定結果がNOの場合の処理へ戻る。
従って、命令シーケンサ521に投入される命令コードが正常な場合は、従来と同様の処理が行われる。しかし、デコード時に命令バスエラーIBERRが発生した場合、命令シーケンサ521で対応をとるのではなく、未定義コード差し替え部512によりF部51とD部52との間にて未定義命令に置き換えられるので、特に命令シーケンサ521では扱わない。データバスエラーDBERRが発生した場合の処理は、上記第1実施例の場合の処理と同様である。
図19は、命令バスでエラーが発生した場合の動作を説明するタイミングチャートである。図19に示すように、各サイクルcycle1〜cycle7では、以下の処理が行われる。
サイクルcycle1では、命令I1のフェッチサイクルが始まる。
サイクルcycle2で命令I2のフェッチサイクルが始まったものの、命令バスエラーIBERRが発生し、それを受けてサイクルcycle3で命令バスエラーカウンタIBER_CNTRの値が更新されると、メモリ部3(又は、4)の同じアドレスから再度命令I2をフェッチする。この時、D部52では命令I1のデコード情報が中間レジスタTdec,Ta,Tb,Tddに保持されたままとなる。
サイクルcycle4では、サイクルcycle3にて命令バスエラーカウンタIBER_CNTRの全てのビットが「1」(All "1")の時に命令バスエラーIBERRが発生するため、D部52(デコーダ部523に入る命令コードが未定義命令コードに置き換えられる。このため、E部53に渡される演算情報としては、未定義命令割込みのベクタフェッチを行う演算情報が中間レジスタにセットされる。
サイクルcycle5では、データバスDbusにて命令I1のサイクルが行われ、データバスエラーDBERRが発生せず、次の命令がキャンセルされない。E部53では、ベクタをフェッチのためのアドレスの計算が行わる。D部52では、PSレジスタの内容退避のための演算情報が中間レジスタにセットされる。
サイクルcycle6では、データバスDbusにてベクタフェッチが行われ、メモリ部3(又は、4)よりリードしたデータがレジスタPCにセットされる。E部53では、レジスタPSの内容を退避するためのアドレスの計算が行われる。D部52では、エラーのあったPCレジスタの値(EPCレジスタの内容)を退避するためのアドレスの計算を行う演算情報を中間レジスタにセットする。
サイクルcycle7以降では、命令バスIbusではPCレジスタにセットされた値がアドレス値として出力され、処理ルーチンの先頭命令をフェッチする。データバスDbusではPSレジスタの内容がメモリ部3(又は、4)に退避され、演算用レジスタR15の値が更新される。E部53では、EPCレジスタの内容を退避するためのアドレスが計算される。D部52では、他に割込みがある場合はその割込みのベクタフェッチの演算情報が中間レジスタにセットされる。図19の場合には割込みがないため、NOPが投入される。以降のサイクルは、通常のCPUの命令のパイプライン処理と同様である。
図20は、データバスでエラーが発生した場合の動作を説明するタイミングチャートである。ステップS201はLD @Rj, Riを実行し、ステップS202は命令I1をキャンセルし、ステップS203は命令I2をキャンセルしてLD @(TBR, VectNo), PCを実行する。ステップS204はST PS, @-R15を実行し、ステップS205はST EPC, @-R15を実行する。ステップS206はNOP1を実行して次のEIT処理があればステップS203〜S205を繰り返し、ステップS207は例外プログラムの命令を実行する。図20に示すように、各サイクルcycle1〜cycle8では、以下の処理が行われる。
サイクルcycle1~cycle4では、データバスDbusにてエラーの発生するロード(LD:LoaD)命令、その次の命令I1、命令I2の処理がパイプライン処理にて順次行われる。サイクルcycle4の時にLD命令にてデータバスDbusでデータバスエラーDBERRが発生するものとする。
サイクルcycle5では、サイクルcycle4でデータバスエラーDBERRが発生したことにより、データバスエラーカウンタDBER_CNTRがカウントアップし、サイクルcycle5でデータバスDbusのサイクルのリトライを行う。この時、命令バスIbus、D部52及びE部53での結果を中間レジスタにロードせず、値はそのまま保持する。データバスエラーカウンタDBER_CNTRの全てのビットが「1」(All "1")の時にデータバスエラーDBERRが発生した場合は、データバスエラーDBERRのEIT処理を行う。データバスエラーDBERRが発生した命令の次の命令(命令I1)は、M部54のMステージでの結果を汎用レジスタ部55内の演算用レジスタR0〜R15に反映させないことにより、命令はキャンセルされる。又、その次の命令である命令I2は、命令シーケンサ521によりD部52にてベクタをフェッチする命令に置き換えられ、ベクタアドレスがあるアドレスの計算を行う情報をE部53に渡す。
サイクルcycle6では、E部53にて、ベクタアドレスがあるアドレスの計算を行う。又、PSレジスタの内容退避の演算情報が中間レジスタにセットされる。
サイクルcycle7では、データバスDbusではベクタアドレスのリードを行って、データバスエラーDBERRの処理ルーチンの先頭アドレスをリードし、それをPCレジスタにセットする。E部53では、PSレジスタの内容退避のためのアドレスの計算が行われる。D部52では、エラーのあったPCレジスタの値(EPCレジスタの内容)を退避するための演算情報をE部53に渡す。
サイクルcycle8以降では、命令バスIbusでは、PCレジスタの新しい値のアドレスより命令をリードする。データバスDbusではPSレジスタの内容がメモリ部3(又は、4)に退避される。E部53では、EPCレジスタの内容を退避するためのアドレスの計算が行われる。それ以降は、通常のCPUのアクセスと同様の動作となる。
このように、上記各実施例によれば、CPUにバスエラー入力手段であるバスエラー信号線が存在しているので、メモリ部にてパリティエラー等のエラーが発生した場合でも、エラー処理を行い、CPUの実行が続行できる。又、CPUが命令をフェッチしてパリティエラーを検出した場合、バスエラーが発生した命令を実行してしまうことはない。CPUが命令をフェッチしてパリティエラーを検出し、その命令が実行されなくても、無意味な例外は発生しない。更に、命令バスでのバスエラー発生時、直前の命令でのデータバスエラーが後で発生しても、ソフトにより処理の優先順位を考慮する必要がない。バスエラー発生後バスエラーカウンタ手段により直ちにメモリ部の交替を行うことが可能となる。
尚、本発明は、以下に付記する発明をも包含するものである。
(付記1) CPUのバスで発生したエラーを処理するエラー処理方法であって、
該CPUの命令バス及びデータバスのうち少なくとも一方のバスで発生したバスエラーをバスエラー入力手段により該CPUに入力するステップと、
該バスエラーを該CPU内のバスエラーカウンタ手段でカウントするステップと、
該バスエラーカウンタ手段の値に基づいて該CPUに接続されたメモリ部の領域を指定するステップとを含むことを特徴とするエラー処理方法。
(付記2) 該命令バスでバスエラーが発生し未定義命令の例外ベクタにジャンプすると判断した場合及び該データバスでバスエラーが発生した場合は前記バスエラー発生時に、該バスエラーカウンタ手段の値を更新するステップを含むことを特徴とする付記1記載のエラー処理方法。
(付記3) 該データバスでバスエラーが発生した場合は前記バスエラー発生時に該バスエラーカウンタ手段の値を更新するステップを含むことを特徴とする付記1記載のエラー処理方法。
(付記4) 該命令バスでバスエラーが発生した場合は直前の命令にて該データバスでバスエラーが発生していないことを確認後、未定義命令処理を行うステップを含むことを特徴とする付記1又は2記載のエラー処理方法。
(付記5) 該データバスでバスエラーが発生した場合は、その命令以降の命令による汎用レジスタ部へのセットは禁止し、未定義命令処理を行うステップを含むことを特徴とする付記1又は2記載のエラー処理方法。
(付記6) 命令をフェッチしたときに該メモリ部にてパリティエラーが発生した場合、エラー信号を該バスエラー入力手段に入力するステップを含み、
該CPUはエラーとなった命令を実行すると判断した時点で例外・割込み・トラップ(EIT:Exception, Interrupt, Trap)処理を行い、エラー処理ルーチンへジャンプすることを特徴とする付記1記載のエラー処理方法。
(付記7) 該データバスでパリティエラーが発生した場合、エラー信号を該バスエラー入力手段により該CPUに入力すると、以降の命令の処理をキャンセルするステップを含むことを特徴とする付記1記載のエラー処理方法。
(付記8) 該指定するステップは、バスエラーカウンタ手段の値、命令又はデータのアドレス、及びリード又はライト信号に基づいて該CPUに接続されたメモリ部のページを指定することを特徴とする付記1記載のエラー処理方法。
(付記9) 該CPUの状態を示すプロセッサステータスレジスタに、命令バスエラー及びデータバスエラーを格納してバスエラーの発生を示すステップを含むことを特徴とする付記1記載のエラー処理方法。
(付記10) 命令バスエラー又はデータバスエラーが発生した場合、リトライを行い、それでもバスエラーが発生する場合にはバスエラー処理を行うステップを含むことを特徴とする付記1記載のエラー処理方法。
(付記11) CPUを備えた情報処理装置であって、
該CPUに接続されたメモリ部と、
該CPUの命令バス及びデータバスのうち少なくとも一方のバスで発生したバスエラーを該CPUに入力するバスエラー入力手段と、
該CPU内で該バスエラーをカウントするバスエラーカウンタ手段と、
該バスエラーカウンタ手段の値に基づいて該メモリ部の領域を指定する手段とを備えたことを特徴とする情報処理装置。
(付記12) 該命令バスでバスエラーが発生し未定義命令の例外ベクタにジャンプすると判断した場合及び該データバスでバスエラーが発生した場合は前記バスエラー発生時に、該バスエラーカウンタ手段の値を更新する更新手段を備えたことを特徴とする付記11記載の情報処理装置。
(付記13) 該データバスでバスエラーが発生した場合は前記バスエラー発生時に該バスエラーカウンタ手段の値を更新する更新手段を備えたことを特徴とする付記11記載の情報処理装置。
(付記14) 該命令バスでバスエラーが発生した場合は直前の命令にて該データバスでバスエラーが発生していないことを確認後、未定義命令処理を行う手段を備えたことを特徴とする付記11又は12記載の情報処理装置。
(付記15) 該パスエラーカウンタ手段を含む汎用レジスタ部を備え、
該データバスでバスエラーが発生した場合は、その命令以降の命令による該汎用レジスタ部へのセットは禁止し、未定義命令処理を行う手段を備えたことを特徴とする付記11又は12記載の情報処理装置。
(付記16) 命令をフェッチしたときに該メモリ部にてパリティエラーが発生した場合、エラー信号を該バスエラー入力手段に入力する手段を備え、
該CPUはエラーとなった命令を実行すると判断した時点で例外・割込み・トラップ(EIT:Exception, Interrupt, Trap)処理を行い、エラー処理ルーチンへジャンプすることを特徴とする付記11記載の情報処理装置。
(付記17) 該データバスでパリティエラーが発生した場合、エラー信号を該バスエラー入力手段により該CPUに入力すると、以降の命令の処理をキャンセルする手段を含むことを特徴とする付記11記載の情報処理装置。
(付記18) 該指定する手段は、バスエラーカウンタ手段の値、命令又はデータのアドレス、及びリード又はライト信号に基づいて該メモリ部のページを指定する論理回路からなることを特徴とする付記11記載の情報処理装置。
(付記19) 該CPUの状態を示すプロセッサステータスレジスタを備え、
命令バスエラー及びデータバスエラーを該プロセッサステータスレジスタに格納してバスエラーの発生を示すことを特徴とする付記11記載の情報処理装置。
(付記20) 命令バスエラー又はデータバスエラーが発生した場合、リトライを行い、それでもバスエラーが発生する場合にはバスエラー処理を行う手段を備えたことを特徴とする付記11記載の情報処理装置。
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
従来のCPUの要部の構成を示すブロック図である。 従来のCPUのD部内の命令シーケンサの動作を説明するフローチャートである。 従来のCPUの動作を説明するタイミングチャートである。 状態(1)を説明する図である。 状態(2)を説明する図である。 状態(3)を説明する図である。 状態(4)を説明する図である。 状態(5)を説明する図である。 本発明が適用されるマイクロプロセッサの要部を示すブロック図である。 メモリ部の構成を示すブロック図である。 メモリ部のライト/リードと制御信号との関係を示す図である。 本発明の第1実施例の要部を示すブロック図である。 第1実施例の命令シーケンサの動作を説明するフローチャートである。 命令バスでエラーが発生した場合の動作を説明するタイミングチャートである。 データバスでエラーが発生した場合の動作を説明するタイミングチャートである。 EIT処理時のデータバスでエラーが発生した場合の動作を説明するタイミングチャートである。 本発明の第2実施例の要部を示すブロック図である。 第2実施例の命令シーケンサの動作を説明するフローチャートである。 命令バスでエラーが発生した場合の動作を説明するタイミングチャートである。 データバスでエラーが発生した場合の動作を説明するタイミングチャートである。
符号の説明
1 マイクロプロセッサ
2 CPU
3,4 メモリ部
5 命令バス
6 データバス
31 論理回路
32 ページメモリ部
33 パリティチェッカ
51 F部
52 D部
53 E部
54 M部
55 汎用レジスタ部

Claims (7)

  1. CPUのバスで発生したエラーを処理するエラー処理方法であって、
    前記CPUに接続された第1のメモリ部の複数のページに同一命令をライトし、前記CPUに接続された第2のメモリ部の複数のページに同一データをライトするステップと、
    前記CPUの命令バス及びデータバスで発生したバスエラーをバスエラー入力手段により前記CPUに入力するステップと、
    前記命令バスで発生し前記バスエラー入力手段により入力されたバスエラーを前記CPU内の第1のバスエラーカウンタ手段でカウントし、前記データバスで発生し前記バスエラー入力手段により入力されたバスエラーを前記CPU内の第2のバスエラーカウンタ手段でカウントするステップと、
    前記第1のバスエラーカウンタ手段でカウントされた値と、前記同一命令のアドレスと、リード信号に基づいて指定された、前記第1のメモリ部の前記複数のページのうち1つのページから前記同一命令をリードし、前記第2のバスエラーカウンタ手段でカウントされた値と、前記同一データのアドレスと、前記リード信号に基づいて指定された、前記第2のメモリ部の前記複数のページのうち1つのページから前記同一データをリードするステップと、
    前記命令バスでバスエラーが発生した場合は直前の命令にて前記データバスでバスエラーが発生していないことを確認後未定義命令処理を行うと判断した時に前記第1のバスエラーカウンタ手段の値を更新し、前記データバスでバスエラーが発生した場合は当該バスエラー発生時に前記第2のバスエラーカウンタ手段の値を更新するステップと、
    前記CPUのデコード部で命令をデコードした結果、前記命令バスでバスエラーが発生しており前記データバスでバスエラーが発生していないと、直前の命令にて前記データバスでバスエラーが発生しないことを確認できるまでNOP(No OPeration)を挿入し、前記CPUがエラーとなった命令を実行すると判断した時点で第1の例外・割込み・トラップ(EIT:Exception, Interrupt, Trap)処理を行うステップ
    を含み、
    前記第1のEIT処理を行うステップは、
    命令バスエラー割込ルーチンにジャンプするため、ベクタテーブルから前記命令バスエラー割込ルーチンの開始番地を示すベクタアドレスを取得して、前記命令バスエラー割込ルーチンのアドレスを演算するための演算モードと、当該演算モードで用いる前記CPUの汎用レジスタ部の内容を前記CPUの実行部に渡し、
    次のサイクルで、前記汎用レジスタ部内の、前記命令バスのバスエラー及び前記データバスのバスエラーを格納するプロセッサステータスレジスタの内容を退避するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡し、
    前記汎用レジスタ部内の、プログラムカウンタレジスタの内容を退避するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡す
    ことを特徴とするエラー処理方法。
  2. 前記データバスでバスエラーが発生した場合は、以降の命令による汎用レジスタ部へのセットは禁止し、未定義命令処理を行うステップを更に含むことを特徴とする請求項1記載のエラー処理方法。
  3. 命令をフェッチしたときに前記第1のメモリ部又は前記第2のメモリ部でパリティエラーが発生した場合、エラー信号を前記バスエラー入力手段に入力するステップを更に含むことを特徴とする請求項1記載のエラー処理方法。
  4. 前記データバスでパリティエラーが発生した場合、エラー信号を前記バスエラー入力手段により前記CPUに入力し、以降の命令の処理をキャンセルするステップを更に含むことを特徴とする請求項1記載のエラー処理方法。
  5. 前記命令バス又は前記データバスでバスエラーが発生した場合、リトライを行い、前記リトライ後もバスエラーが発生する場合には当該バスエラーを処理する各ステップを実行することを特徴とする請求項1記載のエラー処理方法。
  6. 前記CPUの前記デコード部で命令をデコードした結果、前記命令バスでバスエラーが発生しており前記ベクタテーブルのアクセス時又は前記プロセッサステータスレジスタの内容退避時に前記データバスでエラーが発生していると、第2の例外・割込み・トラップ(EIT:Exception, Interrupt, Trap)処理を行うステップ
    を更に含み、
    前記第2のEIT処理は、
    データバスエラー割込ルーチンにジャンプするため、前記ベクタテーブルからベクタアドレスを取得し、前記データバスエラー割込ルーチンのアドレスを演算するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡し、
    次のサイクルで、前記プロセッサステータスレジスタの内容を退避するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡し、
    前記プログラムカウンタレジスタの内容を退避するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡す
    ことを特徴とする請求項1記載のエラー処理方法。
  7. 前記CPUの前記デコード部で命令をデコードした結果、前記命令バスでバスエラーが発生しており前記プログラムカウンタレジスタの内容退避時に前記データバスでバスエラーが発生していると、第3の例外・割込み・トラップ(EIT:Exception, Interrupt, Trap)処理を行うステップ
    を更に含み、
    前記第3のEIT処理処理は、
    前記データバスエラー割込ルーチンにジャンプするため、前記ベクタテーブルからベクタアドレスを取得し、前記データバスエラー割込ルーチンのアドレスを演算するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡し、
    次のサイクルで、NOP(No OPeration)を挿入し、
    前記プログラムカウンタレジスタの内容を退避するための演算モードと、当該演算モードで用いる前記汎用レジスタ部の内容を前記実行部に渡す
    ことを特徴とする請求項6記載のエラー処理方法。
JP2006269635A 2006-09-29 2006-09-29 エラー処理方法 Expired - Fee Related JP5245237B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006269635A JP5245237B2 (ja) 2006-09-29 2006-09-29 エラー処理方法
US11/878,778 US8032794B2 (en) 2006-09-29 2007-07-26 Error processing method and information processing apparatus
TW096127259A TWI338836B (en) 2006-09-29 2007-07-26 Error processing method and information processing apparatus
CNB2007101420274A CN100547554C (zh) 2006-09-29 2007-08-20 错误处理方法和信息处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006269635A JP5245237B2 (ja) 2006-09-29 2006-09-29 エラー処理方法

Publications (2)

Publication Number Publication Date
JP2008090542A JP2008090542A (ja) 2008-04-17
JP5245237B2 true JP5245237B2 (ja) 2013-07-24

Family

ID=39255846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006269635A Expired - Fee Related JP5245237B2 (ja) 2006-09-29 2006-09-29 エラー処理方法

Country Status (4)

Country Link
US (1) US8032794B2 (ja)
JP (1) JP5245237B2 (ja)
CN (1) CN100547554C (ja)
TW (1) TWI338836B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2482701C (en) 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
CN103514058B (zh) * 2012-06-29 2016-06-15 华为技术有限公司 一种数据失效的处理方法、设备及系统
US10067827B2 (en) * 2016-06-29 2018-09-04 Micron Technology, Inc. Error correction code event detection
JP6726136B2 (ja) * 2017-06-22 2020-07-22 ルネサスエレクトロニクス株式会社 データアクセス装置及びアクセスエラーの通知方法
DE102018115100A1 (de) * 2018-06-22 2019-12-24 Krohne Messtechnik Gmbh Verfahren zur Fehlerbehandlung bei Buskommunikation und Buskommunikationssystem
WO2023107532A1 (en) * 2021-12-07 2023-06-15 Microchip Technology Incorporated Vector fetch bus error handling

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5995500A (ja) 1982-11-24 1984-06-01 株式会社東芝 沸騰水形原子炉
JPS5995500U (ja) * 1983-11-24 1984-06-28 富士通株式会社 記憶装置
JPH01226031A (ja) * 1988-03-07 1989-09-08 Oki Electric Ind Co Ltd 情報処理装置のパイプライン制御方式
JPH0212445A (ja) * 1988-06-30 1990-01-17 Mitsubishi Electric Corp 記憶装置
JPH03154929A (ja) * 1989-11-13 1991-07-02 Nec Corp 中央処理装置
US6757809B1 (en) * 1989-12-16 2004-06-29 Renesas Technology Corp. Data processor having 2n bits width data bus for context switching functions
JPH05100844A (ja) * 1991-10-08 1993-04-23 Nec Corp マイクロ・プロセツサのプログラムウエイト制御回路
JPH05108493A (ja) * 1991-10-17 1993-04-30 Shikoku Nippon Denki Software Kk メモリ制御方式
JPH06242977A (ja) * 1993-02-16 1994-09-02 Mitsubishi Electric Corp 1チップマイクロプロセッサ
JPH08305637A (ja) * 1995-05-10 1996-11-22 Hitachi Ltd 記憶装置
JPH09198257A (ja) * 1996-01-19 1997-07-31 Sanyo Electric Co Ltd プログラム実行方法およびこの方法を用いたプログラム実行装置
JPH10240306A (ja) * 1997-02-24 1998-09-11 Mitsubishi Electric Corp 制御命令演算処理装置
JP3014682B2 (ja) * 1997-11-21 2000-02-28 松下電器産業株式会社 プログラム制御方法及び装置
JP2000148499A (ja) * 1998-11-18 2000-05-30 Fujitsu Ltd スーパースカラ・プロセッサ
US6823448B2 (en) 2000-12-15 2004-11-23 Intel Corporation Exception handling using an exception pipeline in a pipelined processor
JP4063529B2 (ja) * 2001-11-28 2008-03-19 Necエレクトロニクス株式会社 バスシステムおよびリトライ方法
US7278062B2 (en) * 2003-01-09 2007-10-02 Freescale Semiconductor, Inc. Method and apparatus for responding to access errors in a data processing system
US7370260B2 (en) * 2003-12-16 2008-05-06 Freescale Semiconductor, Inc. MRAM having error correction code circuitry and method therefor

Also Published As

Publication number Publication date
TWI338836B (en) 2011-03-11
TW200815977A (en) 2008-04-01
CN100547554C (zh) 2009-10-07
US20080082861A1 (en) 2008-04-03
JP2008090542A (ja) 2008-04-17
CN101154171A (zh) 2008-04-02
US8032794B2 (en) 2011-10-04

Similar Documents

Publication Publication Date Title
US8095825B2 (en) Error correction method with instruction level rollback
JP3874022B2 (ja) コンピュータシステム
US8930657B2 (en) Method and apparatus for realtime detection of heap memory corruption by buffer overruns
JP3093624B2 (ja) 投機例外を処理する方法及び装置
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
JP5245237B2 (ja) エラー処理方法
CN108780397B (zh) 程序循环控制
EP2083352B1 (en) Processing unit
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
EP1770507A2 (en) Pipeline processing based on RISC architecture
JP5292706B2 (ja) コンピュータシステム
US20020147902A1 (en) Method for encoding an instruction set with a load with conditional fault instruction
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
JP2009230479A (ja) マイクロプロセッサ
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP2562838B2 (ja) プロセッサ及びストアバッファ制御方法
JP2532560B2 (ja) 高機能な例外処理を行うデ―タ処理装置
US20060047913A1 (en) Data prediction for address generation interlock resolution
JP3748191B2 (ja) 計算機とその制御方法
JPH04290130A (ja) プロセッサのエラー管理方式

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090619

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130213

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: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130325

R150 Certificate of patent or registration of utility model

Ref document number: 5245237

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees