説明

誤り検出装置

【課題】デジタル演算処理装置におけるフリップフロップの遅延エラーを、回路占有面積を増大させることなく確実に検出する。
【解決手段】特定のフリップフロップ(FF(i))の入力および出力を受ける誤り判定回路(EDK)を設ける。この特定のフリップフロップ前段のフリップフロップ(FF(i−1))をラッチ状態に設定して、直後のサイクルで、誤り判定回路において、特定フリップフロップの入出力データの論理レベルの一致/判定を行ない、判定結果指示信号(Err)を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、デジタル信号/データ処理装置における誤り検出装置に関し、特に、クロック信号に同期して処理を実行するロジック回路において、処理信号/データの遅延変動に起因する誤りを検出するための回路技術に関する。
【背景技術】
【0002】
デジタル信号/データを処理する演算処理装置においては、動作サイクルがクロック信号により規定される。クロック信号に従って、フリップフロップまたはラッチを介して処理データ/信号を伝送する。フリップフロップ間において、それぞれ予め割当てられた演算処理を行なうロジック回路が設けられる。したがって、「パイプライン的」に演算処理を実行することにより、高速処理を実現することができる。また、信号/データの転送タイミングが、クロック信号により規定されるため、正確なタイミングで信号/データを転送することができ、入力信号/データの画定タイミングに対するマージンを考慮する必要がなく、高速処理が実現される。
【0003】
このようなマイクロプロセッサまたはデジタル信号処理装置(DSP)などの演算処理装置においては、電源電圧変化、温度変化および素子の製造工程時の構成ばらつきなどの影響により、論理ゲート(ロジック回路)における処理時間がばらつき、この論理ゲートの遅延時間が変動する。この遅延時間の変動幅が、許容値を超えた場合、次段のフリップフロップにおいてクロック信号に従ってデータ/信号をキャプチャする場合、論理ゲートの出力信号が確定状態となっておらず、この結果を受取るフリップフロップの保持値が、期待値と異なり、誤動作が生じる。
【0004】
このようなフリップフロップにおけるキャプチャデータのエラーを回避する構成が、Subhasish Mitra et al., “Robust System Design with Built-In Soft-Error Resilience,” Computer, IEEE Computer Society, February 2005, pp.43-52.(非特許文献1)、およびShidhartha Das et al., “A Self-Tuning DVS Processor Using Delay-Error Detection and Correction,” 2005 Symposium on VLSI Circuits, Digest of Technical Papers, pp.258-261.(非特許文献2)に開示されている。
【0005】
非特許文献1に示される構成においては、演算処理を実行するロジック回路と直列に結合されて演算データを転送するシステムフリップフロップと並行して、スキャンパスを構成するスキャンフリップフロップが設けられる。これらのシステムフリップフロップおよびスキャンフリップフロップにおいては、各々、相補的に動作するDラッチが縦続接続される。システムフリップフロップおよびスキャンフリップフロップに同一のデータが転送される。システムフリップフロップおよびスキャンフリップフロップの出力段のラッチの出力データの一致/不一致を検出して、フリップフロップにおいてソフトエラーが発生したかを判定する。
【0006】
この非特許文献1においては、Cエレメントを用いて、これらのデータの比較を行ない、不一致時に出力ハイインピーダンス状態として、エラーデータが次段以降に転送されるのを防止する構成が示される。また、別の構成としては、一致/不一致の判定結果を、スキャンフリップフロップにフィードバックして、所定クロックサイクル経過後に、このエラー信号を、スキャンフリップフロップを介して順次転送して、外部でエラーの発生/非発生を検出して、エラー訂正を、同一データについて再演算処理を実行することにより行なう構成が示される。
【0007】
非特許文献2においては、レザー(RAZOR)フリップフロップ構成が用いられる。このレザーフリップフロップは、データをクロック信号に同期してキャプチャして転送するメインのフリップフロップと、メインフリップフロップのデータキャプチャより反クロックサイクル遅れてデータのキャプチャを行うシャドウラッチとを含む。メインフリップフロップの出力データとシャドウラッチの出力データとの一致/不一致を検出して、遅延エラーが発生したかを検出する。このシャドウラッチは、メインフリップフロップの入力データのキャプチャよりも半クロック周期遅れて、このデータをキャプチャする。従って、メインフリップフロップのキャプチャデータが、シャドウラッチのキャプチャデータと一致していない場合には、遅延変動による誤りが発生したと判断して、演算の再実行などの誤り訂正処理に入る。
【0008】
この非特許文献2においては、エラー検出は、本来の動作タイミングより、少なくとも半周期遅れている。したがって、エラー検出時、一旦演算処理を停止し、正しく動作を再実行することができるところまで処理を戻って、再処理を実行する。具体的に、この非特許文献2においては、エラー発生時、このシャドウラッチのキャプチャデータを、対応のメインフリップフロップに再書込みして、正しいパイプライン状態を復元する。一例として、パイプライン構成のスーパースカラにおいて、エラー検出信号に従って、プログラムカウンタのカウント値を復元し、再び、命令フェッチステージからの再実行を行なう例が示される。
【0009】
この非特許文献2は、この誤り訂正機能により、エラー率が小さい状態で、動作電源電圧を下限値以下にまで低下させて、消費電力を削減することを図る。
【0010】
また、演算処理装置において、演算処理のクリティカルパスにおいて、エラーが発生するのを回避する構成が、特許第3450814号公報(特開2002−99410号公報:特許文献1)に示される。この特許文献1においては、高速演算処理を実行するALUと、低速動作するALUを並列に設ける。低速ALUは、複数個並列に設けられ、インタリーブ態様で、高速クロック信号に同期して与えられるデータに対して演算処理を実行する。高速ALUと低速ALUの対応の演算結果データを比較し、不一致時においては、低速ALUのデータを選択して、演算処理のクリティカルパスにおけるエラー発生を回避する。
【特許文献1】特許第3450814号公報(特開2002−99410号公報)
【非特許文献1】Subhasish Mitra et al., “Robust System Design with Built-In Soft-Error Resilience,” Computer, IEEE Computer Society, February 2005, pp.43-52.
【非特許文献2】Shidhartha Das et al., “A Self-Tuning DVS Processor Using Delay-Error Detection and Correction,” 2005 Symposium on VLSI Circuits, Digest of Technical Papers, pp.258-261.
【発明の開示】
【発明が解決しようとする課題】
【0011】
上述の非特許文献2に示されるように、電源電圧を、エラー発生に応じて調整することにより、電力削減を実現することができるなどの効果が得られる。したがって、エラー発生時の再処理等により、多少の処理性能の低下はあるものの、誤り検出機能を追加するメリットは大きい。
【0012】
前述の非特許文献1においては、テスト用スキャンパスを構成するフリップフロップを、通常動作時のシャドウフリップフロップとして利用する。このスキャンフリップフロップは、システムフリップフロップと同様、2段の縦続接続されるDラッチを備え、システムフリップフロップと並行して動作して、冗長データを格納する。したがって、クロック信号に従って、同じタイミングで、同じ入力データをキャプチャしている。テスト用のスキャンパスフリップフロップを利用するため、エラー検出用に専用のフリップフロップを設ける必要がなく、面積増大は抑制することができる。しかしながら、同一タイミングでシステムフリップフロップおよびスキャンフリップフロップが同一データのキャプチャを行なっており、クリティカルパスにおける遅延に起因するエラーの検出は困難である。この非特許文献1は、フリップフロップにおいて、データ保持状態におけるソフトエラーの発生を検出することをその主要目的としており、クリティカルパスにおける遅延変動によるエラー検出は考慮していない。
【0013】
非特許文献2に示される構成においては、シャドウラッチが、メインフリップフロップと並列に設けられて、レザーフリップフロップが構成される。通常、ORゲートなどの単純論理ゲートよりも、ラッチの方が回路面積が大きい。したがって、各フリップフロップにエラー検出用に専用のシャドウラッチを設ける場合、回路面積が増大する。
【0014】
また、特許文献1に示される構成においては、複数のALUが並列に設けられ、高速ALUと低速ALUの出力データの一致/不一致が判定され、クリティカルパスの遅延エラーを検出する。しかしながら、低速ALUが複数個並列に設けられるため、特定のクリティカルパスにおいてのみ、このような低速ALUを複数設ける場合においても、面積オーバーヘッドが大きいという問題が生じる。
【0015】
それゆえ、この発明の目的は、小占有面積で確実に誤りを検出することのできる誤り検出装置を提供することである。
【0016】
この発明の他の目的は、シャドウラッチなどの冗長回路を用いることなく、確実に誤りを検出することのできる誤り検出装置を提供することである。
【課題を解決するための手段】
【0017】
この発明の第1の観点に係る誤り検出装置は、第1および第2のロジック回路間に配置され、クロック信号に従って第1のロジック回路の出力データを第2のロジック回路の入力に転送する第1のフリップフロップと、この第1のロジック回路に対して設けられ、与えられたクロック信号に従って、第1のロジック回路へデータを転送する第2のフリップフロップと、第2のフリップフロップに対して設けられ、イネーブル信号に従って基本クロック信号を選択的にクロック信号として第2のフリップフロップへ転送するゲート回路と、第2のフリップフロップへのクロック信号のディスエーブル時、第1のフリップフロップの入力のデータと第1のフリップフロップの出力のデータの論理レベルが一致しているかを判定する誤り判定回路を備える。
【0018】
この発明の第2の観点に係る誤り検出装置は、複数のロジック回路と、各ロジック回路に対応して縦列態様で設けられ、各々が与えられたクロック信号に従って、与えられたデータを次段のロジック回路に転送する複数のフリップフロップと、これら複数のフリップフロップに対応して設けられ、各々が基本クロック信号とそれぞれの個別イネーブル信号とに従って対応のフリップフロップに対してクロック信号を供給する複数のゲート回路と、これら複数のフリップフロップの少なくとも1個の所定のフリップフロップに対して設けられ、該所定のフリップフロップの前段のフリップフロップに対するクロック信号のディスエーブル時に、対応のフリップフロップの入力データと出力データとの一致/不一致を判定する誤り判定回路を備える。
【発明の効果】
【0019】
この発明の第1および第2の観点に係る誤り検出装置においては、対象フリップフロップの前段のフリップフロップのクロック信号をディスエーブル状態として、前段のフリップフロップがラッチ状態として、直後のサイクルにおける対象フリップフロップの入力および出力の信号の一致/不一致を検出している。これにより、対象フリップフロップにおいて遅延エラーが生じないクロックサイクルを利用して、誤り判定を行なうことができる。したがって、シャドウラッチなどの、期待値を保存するための追加回路が不必要とされ、小さなエリアペナルティで、誤り検出を行なうことができる。
【発明を実施するための最良の形態】
【0020】
[実施の形態1]
図1は、この発明の実施の形態1に従う誤り検出装置の構成を概略的に示す図である。図1においては、演算処理装置を構成するロジック回路LGK(i)およびLGK(i+1)の間に設けられるフリップフロップFF(i)のデータ更新に着目し、このフリップフロップFF(i)に対して遅延エラーが発生したかを検出する。
【0021】
演算処理装置の構成としては、基本クロック信号CLKに従って、順次処理データを転送する構成であればよく、画像データの復号/符号化処理を行う装置、RISCなどのパイプライン的に演算処理を実行するプロセッサ、およびパストランジスタなどにより構成されて加減算などの処理を実行する演算回路装置などのいずれであってもよい。図1においては、2段のロジック回路LGK(i)およびLGK(i+1)を代表的に示すが、このロジック回路の段数は、演算処理装置の構成に応じて適宜定められ、また、その演算内容についても、同様、処理内容に応じて、適宜予め割当てられる。また、ロジック回路LGK(i)およびLGK(i+1)は、演算処理を行えばよく、例えば、2項演算処理を実行する構成の場合には、前段のフリップフロップから2項データが転送される。従って、ロジック回路LGK(i)等は、各々、1つのまとまりのある演算を実行する論理処理段であればよい。
【0022】
ロジック回路LGK(i)およびLGK(i+1)は、それぞれ、与えられた信号/データに、予め割当てられた処理を実行する。ロジック回路LGK(i)へは、フリップフロップFF(i−1)からのデータD(i−1)が与えられる。ロジックLGK(i+1)は、フリップフロップFF(i)の出力データD(i)を受け、その演算処理結果データL(i+1)を、次段のフリップフロップFF(i+1)へ与える。ロジック回路LGK(i)およびLGK(i+1)は、多ビットデータの演算処理を実行する。
【0023】
フリップフロップFF(i−1)、FF(i)、およびFF(i+1)それぞれに対応して、クロック信号を与えるゲート回路AG(i−1)、AG(i)、およびAG(i+1)が設けられる。これらのゲート回路AG(i−1)、AG(i)、およびAG(i+1)は、それぞれ基本クロック信号CLKと制御回路CTRKからの個別イネーブル信号EN(i−1)、EN(i)およびEN(i+1)とに従って、対応のフリップフロップに対するクロック信号を生成して供給する。
【0024】
ゲート回路AG(i−1)−AG(i+1)は、各々、AND回路で一例として構成され、対応のイネーブル信号EN(i−1)、EN(i)およびEN(i+1)がHレベルのアサート状態のとき、基本クロック信号CLKに従って対応のフリップフロップに対するクロック信号を生成する。
【0025】
これらのイネーブル信号EN(i)、EN(i−1)およびEN(i+1)は、動作モードに応じて、制御回路CTRKにより、個別的にアサート/デアサートされる。例えば、演算データの転送停止時、各イネーブル信号をデアサートして、各フリップフロップをラッチ状態に維持して、データ転送を停止させる。
【0026】
フリップフロップFF(i−1)−FF(i+1)は、対応のゲート回路AG(i−1)−AG(i+1)からのクロック信号の立上がりに同期して、与えられたデータを取込み(キャプチャし)、内部状態が更新(アップデート)され、かつ、そのクロックサイクルにおいてクロック信号CLKの立上がりに同期して更新されたデータを出力する。
【0027】
誤り検出装置は、さらに、フリップフロップFF(i)の入力部のデータL(i)と出力部のデータD(i)を受け、それらの論理レベルが一致しているか否かを判定する誤り判定回路EDKを含む。これらのデータL(i)およびD(i)は、多ビットデータであり、各ビットごとに一致/不一致判定を行なって、全ビットの論理値が一致しているときに、正常であり、遅延エラーは発生していないと判断する。この誤り判定回路EDKからの判定結果指示信号Errは、外部へ出力されてもよく、また、制御回路CTRKへ与えられ、制御回路CTRKの制御の下に、エラー発生時、特定の区切りのよい(演算データを再投入することのできる)演算ステージから演算処理を再実行してもよい。誤り検出装置は、従って、誤り判定回路EDKおよび制御回路CTRLで構成され、演算処理装置を構成するフリップフロップFF(フリップフロップFF(i−1)−FF(i+1)を総称的に示す)およびロジック回路LGK(ロジック回路LGK(i−1)−LGK(i+1)を総称的に示す)における遅延エラーを検出する。
【0028】
図2は、図1に示す誤り検出装置の、エラー非発生時の動作を示すタイミング図である。以下、図2を参照して、図1に示す誤り検出装置の動作について説明する。サイクル♯1から♯3において、イネーブル信号EN(i−1)−EN(i+1)は、すべてHレベルのアサート状態に設定される。したがって、ゲート回路AG(i−1)からAG(i+1)の出力信号は、基本クロック信号CLKに従って変化する。応じて、フリップフロップFF(i−1)−FF(i+1)が、それぞれ与えられたクロック信号に同期して信号のキャプチャおよびアップデートを実行する。
【0029】
フリップフロップFF(i−1)においては、入力データIN(i−1)に従って出力信号D(i−1)が、クロック信号CLKの立上がりに同期して出力される。図2においては、フリップフロップFF(i−1)の出力データD(i−1)が、サイクル♯1から♯3において、A、BおよびCに変化する。ロジック回路LGK(i)は、フリップフロップFF(i−1)の出力データD(i−1)に予め割当てられた論理処理を施して、処理結果データL(i)を生成する。したがって、サイクル♯1から♯3それぞれにおいて、データA−Bに従って、処理結果データAA、BBおよびCCが、ロジック回路LGK(i)により生成される。遅延エラーは発生しない正常状態であり、これらの処理結果データAA、BB、およびCCは、基本クロック信号CLKの立ち上がり前に確定状態に設定されている。
【0030】
フリップフロップFF(i)においては、クロックサイクル♯2から♯4それぞれにおいて基本クロック信号CLKの立上がりに同期して、ロジック回路LGK(i)の出力データ(処理結果データ)L(i)を取込み、これらの取り込んだデータに従って、対応の出力データAA、BBおよびCCを生成する。
【0031】
ロジック回路LGK(i+1)は、このフリップフロップFF(i)の出力データD(i)に、予め割当てられた演算処理を施して、処理結果データL(i+1)を生成する。したがって、サイクル♯2から♯3それぞれにおいて、ロジック回路LGK(i+1)の処理結果データL(i+1)が、それぞれAAA、BBB、およびCCCに変化する。このロジック回路LGK(i+1)においても、遅延エラーが生じていないため、データAAA、BBB、およびCCCは、各々、基本クロック信号CLKの立上り前に確定状態となっている。
【0032】
フリップフロップFF(i+1)が、ゲート回路AG(i+1)の出力するクロック信号の立上がりに同期して、ロジック回路LGK(i+1)の処理結果データL(i+1)を順次取り込み出力する。従って、このフリップフロップFF(i+1)から、クロックサイクル♯3から♯5それぞれにおいて、データAAA、BBB、およびCCCが生成されて出力される。
【0033】
クロックサイクル♯4の後半部分において、基本クロック信号CLKがLレベルのときに、イネーブル信号EN(i−1)が、Lレベルのデアサート状態に設定される。イネーブル信号EN(i)およびEN(i+1)は、Hレベルのアサート状態である。したがって、ゲート回路AG(i−1)からのクロック信号は、ディスエーブル状態に固定され、フリップフロップFF(i−1)の出力データは、クロックサイクル♯4において与えられた入力データIN(i−1)のデータDに固定される。応じて、ロジック回路LGK(i)の出力データL(i)は、その演算処理結果DDに維持される。
【0034】
一方、フリップフロップFF(i)は、ゲート回路AG(i)からのクロック信号に従ってデータの取込および出力を行なっている。誤り判定回路EDKは、次のサイクル♯5において、このフリップフロップFF(i)の入力部のデータL(i)と出力部のデータD(i)の論理レベル(値)の一致/不一致を判定する。クロックサイクル♯5においては、ロジック回路LGK(i)において、入力データD(i−1)および出力データL(i)は、共にデータDDに維持される。
【0035】
ロジック回路LGK(i−1)においてクロックサイクル♯4において遅延エラーが発生していない。従って、フリップフロップFF(i)においては、クロックサイクル♯5において取り込んだデータと出力するデータにおいて、これらのデータL(i)およびD(i)の論理値は一致しており、エラー判定結果指示信号Errは、正常状態を示すLレベルに固定される。この判定動作時において、ロジック回路LGK(i+1)、フリップフロップFF(i+1)は、それぞれ演算処理を実行しており、以降の各サイクルにおいて、データDDDおよびDDDが連続的に出力される。
【0036】
すなわち、イネーブル信号EN(i−1)を、非活性状態として、フリップフロップFF(i−1)に対するクロック信号をディスエーブル状態に設定する。この状態においては、フリップフロップFF(i−1)は、次のクロックサイクル♯5において、出力データは変化せず、ラッチ状態を維持するため、フリップフロップFF(i)において、入力データの遅延エラーは発生していない。したがって、前のサイクルにおいて、キャプチャしたデータと固定状態の入力データL(i)とを比較することにより、正確に、このフリップフロップFF(i)においてエラーが発生しているかを判定することができる。
【0037】
図3は、遅延エラー発生時の図1に示す誤り検出装置の動作を示すタイミング図である。以下、図3を参照して、図1に示す誤り検出装置の遅延エラー検出時の動作について説明する。クロックサイクル♯1から♯3においては、図2に示すタイミング図と同様の動作が行なわれる。
【0038】
クロックサイクル♯4において、ロジック回路LGK(i)において、その処理時間が長くなり、クロックサイクル♯5のクロック信号CLKの立上がりにおいて、その出力データは未だ変化せず不確定状態にある。このクロックサイクル♯4において、後半部において、イネーブル信号EN(i−1)がLレベルに設定される。残りのイネーブル信号EN(i)およびEN(i+1)は、Hレベルを維持する。したがって、フリップフロップFF(i)およびFF(i+1)は、対応のゲート回路AG(i)およびAG(i+1)からのクロック信号に従ってデータのキャプチャを行なっている。
【0039】
このクロックサイクル♯5において、基本クロック信号CLKの立上り時において、ロジック回路LGK(i)の出力データL(i)が不確定状態であり、フリップフロップFF(i)が、基本クロック信号CLKに従って、その出力データの更新を行なっており、したがって、このフリップフロップFF(i)の出力データD(i)は、期待値と異なる不確定状態のデータに対応するエラーデータErrDDとなる。
【0040】
クロックサイクル♯5において、基本クロック信号CLKのネガティブエッジ(立下がりエッジ)において、誤り判定回路EDKが判定動作を行なった場合、このフリップフロップFF(i)の入力データL(i)と出力データD(i)の論理レベルが異なり、エラー判定結果指示信号Errがアサートされ、エラーが発生したことが示される。
【0041】
このフリップフロップFF(i)からのエラーデータErrddに従って、次段のロジック回路LGK(i+1)およびフリップフロップFF(i+1)の出力データが順次更新され、エラーデータErdddが伝達され、エラーが伝搬する。
【0042】
クロックサイクル♯6においては、このフリップフロップFF(i)の入力データL(i)、データDDに維持されており、その出力データD(i)と入力データL(i)の論理レベルが一致する。したがって、このサイクル♯6において、誤り判定回路EDKからのエラー判定結果指示信号Errがデアサートされ、エラー状態が解消されたことが示される。
【0043】
したがって、エラー判定クロックサイクル期間のエラー判定結果指示信号Errのアサートに従って、エラー検出を行なうことができる。このエラー判定結果指示信号Errのアサートに従って、図1に示す制御回路CTRKにおいて、エラー発生データについての再演算などの必要な誤り訂正処理が行なわれればよい。
【0044】
なお、イネーブル信号EN(i−1)は、判定サイクル以後持続的にLレベルに維持される。このイネーブル信号EN(i−1)は、エラー訂正処理後Hレベルに設定されればよい。設計段階において、このエラー信号Errに従って、遅延エラーの発生するクリティカルパスを検出して、対応のロジック回路の再設計(ロジック回路の分割等によるフリップフロップの挿入位置の変更)等が行われても良い。また、実使用時においては、所定サイクル毎にエラー判定を行なって、エラー訂正処理を行う構成が用いられてもよい。
【0045】
図4は、図1に示すフリップフロップFF(i−1)−FF(i+1)の構成の一例を示す図である。これらのフリップフロップFF(i−1)−FF(i+1)は、同一構成を有するため、図4においては、符号FFで、これらのフリップフロップを代表的に示す。
【0046】
図4において、フリップフロップFFは、相補クロック信号ZCLKおよびCLKDに従って選択的に導通するCMOSトランスミッションゲートTG1と、CMOSトランスミッションゲートTG1を介して伝達される入力信号INを反転するインバータIV1と、インバータIV1の出力信号INを反転して、インバータIV1の入力へ転送するインバータIV2と、2相クロック信号CLKDおよびZCLKに従って、CMOSトランスミッションゲートTG1と相補的に導通し、導通時、インバータIV1の出力信号IMを伝達するCMOSトランスミッションゲートTG2と、CMOSトランスミッションゲートTG2を通過した信号IMを反転して出力信号OTを生成するインバータIV3と、インバータIV3の出力信号OTを反転してインバータIV3への入力へ伝達するインバータIV4を含む。
【0047】
クロック信号CLKDおよびZCLKは、基本クロック信号CLKを受ける2段の縦続接続されるインバータIV5およびIV6により生成される。すなわち、クロック信号ZCLKが、インバータIV5から生成され、クロック信号CLKDが、インバータIV6から出力される。
【0048】
図5は、図4に示すフリップフロップFFの動作を示すタイミング図である。以下、図5を参照して、図4に示すフリップフロップFFの動作について簡単に説明する。
【0049】
クロック信号CLKおよびCLKDは、同相のクロック信号であり、クロック信号ZCLKは、これらのクロック信号CLKおよびCLKDと逆相のクロック信号である。
【0050】
入力信号INが、前段のロジック回路の演算結果により、各クロックサイクルにおいて後半部分において非確定状態から確定状態に変化する。クロック信号CLKおよびCLKDがHレベルのときには、CMOSトランスミッションゲートTG1は、非導通状態であり、このフリップフロップFFはラッチ状態であり、その出力信号OTは、前のサイクルの状態を維持する(CMOSトランスミッションゲートTG2が導通状態であり、内部信号IMに従って出力信号OTを生成する)。
【0051】
クロック信号CLKおよびCLKDがLレベルとなると、CMOSトランスミッションゲートTG1が導通状態、CMOSトランスミッションゲートTG2が非導通状態となる。この状態においては、したがって、インバータIV1の出力信号IMが、入力信号INに従って変化する。一方、フリップフロップFFの出力信号OTは、この内部信号IMの状態にかかわらず、前のサイクルの状態を維持する。
【0052】
クロック信号CLKおよびCLKDがHレベルとなると、再び、CMOSトランスミッションゲートTG1が非導通状態となり、一方、CMOSトランスミッションゲートTG2が導通状態となる。したがって、このサイクルにおいて、フリップフロップFFの出力信号OTが、内部信号IMの状態に従って変化する。一方、内部信号IMは、クロック信号CLKおよびCLKDの立上がり時にラッチ状態とされ、入力信号INと分離される。
【0053】
したがって、このクロック信号CLKの立上がり前において、入力信号INの論理レベルが確定状態にあれば、正確に、フリップフロップFFにおいて、データ/信号のキャプチャを行なって、次段のロジック回路へ伝達することができる。一方、この入力信号INが、クロック信号CLKの立上がり時において、不確定状態にあれば、このフリップフロップFFの内部信号IMも不確定状態となり、エラーが発生する。
【0054】
なお、図4に示すフリップフロップFFの構成は単なる一例であり、内部ノードの初期化時のリセットを行なうための構成がさらに設けられてもよく、また、インバータIV2およびIV14が、各々、ラッチ状態時においてインバータとして動作するクロックドトライステートインバータで構成されてもよい。
【0055】
図6は、図1に示す誤り判定回路EDKの構成の一例を示す図である。図6において、誤り判定回路EDKは、ロジック回路LGKおよびフリップフロップFFにおいて4ビットデータを順次処理転送する場合の構成が一例として示される。処理データのビット数は、4ビットに限定されず、16ビット、64ビット等のいずれであってもよい。
【0056】
図6において、誤り判定回路EDKは、対応のフリップフロップFF(i)の入力データビットLi(0)−Li(3)と対応の出力データビットDi(0)−Di(3)をそれぞれ受ける、2力EXORゲートXG0−XG3と、これらのEXORゲートXG0−XG3の出力信号を受けるORゲートOGと、ORゲートOGの出力信号を、クロック信号CLKの立下りに従って取込み、誤り判定結果指示信号Errを生成する1ビットフリップフロップFFKを含む。
【0057】
データビットLi(0)−Li(3)は、図1に示すデータビットL(i)に対応し、データビットDi(0)−Di(3)は、フリップフロップの出力データビットD(i)に対応する(4ビット処理データの場合)。
【0058】
これらのEXORゲートXG0−XG3は、それぞれ与えられたデータの論理レベルが不一致のときに、“1(Hレベル)”の信号を生成する。
【0059】
フリップフロップFFKは、基本クロック信号CLKがLレベルのときに、ORゲートOGの出力信号に従って、エラー判定結果指示信号Errを出力する。
【0060】
したがって、遅延エラーが発生している場合には、EXORゲートXG0−XG3の少なくとも1つの出力信号がHレベルとなり、応じてORゲートOGの出力信号がHレベルとなる。フリップフロップFFKにおいて、OAゲートOGの出力信号がHレベルのときにキャプチャし、基本クロック信号CLKの立下がりに同期して、そのキャプチャした信号に従って、エラー判定結果指示信号Errを生成することにより、基本クロック信号CLKがLレベルのとき同期して、誤り発生時、エラー判定結果指示信号ErrがHレベルに立上がる。
【0061】
なお、フリップフロップFFKは、単に基本クロック信号CLKがLレベルのときにスルー状態となり、基本クロック信号CLKがHのときにラッチ状態となる1段のDラッチで構成されてもよい。
【0062】
以上のように、この発明の実施の形態に従えば、遅延エラー検出対象のフリップフロップの前段のフリップフロップを対応のクロック信号をディスエーブルしてラッチ状態とし、対象フリップフロップにおいて、その直後のクロックサイクルにおいて入力および出力のデータの論理レベルの一致/不一致を判定するように構成している。したがって、エラー判定用のコピーデータ(冗長データ)を格納するシャドウラッチなどの回路要素が不要となり、回路占有面積の増大を抑制して、確実に、遅延エラーを検出することができる。
【0063】
[実施の形態2]
図7は、この発明の実施の形態2に従う誤り検出装置の要部の構成を概略的に示す図である。この図7に示す誤り検出装置の構成は、図1に示す誤り検出装置と以下の点でその構成が異なる。すなわち、誤り検出対象のフリップフロップFF(i)の次段のフリップフロップFF(i+1)に対し、クロック信号を供給するゲート回路AG(i+1)に対し、制御回路CTRKからのイネーブル信号EN(i+1)と、誤り判定回路EDKの出力信号の反転信号/Errを受けるゲート回路AAGが設けられる。このゲート回路AAGの出力信号EEN(i+1)が、フリップフロップFF(i+1)に対するクロック信号を供給するゲート回路AG(i+1)に対するクロックイネーブル信号として供給される。この図7に示す誤り検出装置の他の構成は、図1に示す誤り検出装置の構成と同じであり、対応する部分には同一参照番号を付し、その詳細説明は省略する。
【0064】
反転エラー判定結果指示信号/Errは、エラー検出時、Lレベルとなり、正常時にはHレベルとなる。従って、ゲート回路AAGは、エラー発生時、対応のイネーブル信号EN(i+1)をデアサートし、ゲート回路AG(i+1)へ供給されるイネーブル信号EEN(i+1)をデアサートする。したがって、エラー判定結果指示信号ErrがHレベルのときには、ゲート回路AG(i+1)からフリップフロップFF(i+1)へ供給されるクロック信号がディスエーブルされ、フリップフロップFF(i+1)は、ロジック回路LGK(i+1)の演算処理結果データL(i+1)のキャプチャは行なわない。
【0065】
図8は、図7に示す誤り検出装置の遅延エラー発生時の動作を示すタイミング図である。以下、図8を参照して、図7に示す誤り検出装置の遅延エラー発生時の動作について説明する。
【0066】
クロックサイクル♯1から♯4において、先の図3に示す動作と同様の動作が行なわれる。この状態においては遅延エラーは発生していない。
【0067】
クロックサイクル♯4の後半において、ロジック回路LGK(i)が、通常動作時においては、その出力データが確定状態にあるタイミングで、フリップフロップFF(i−1)に対するイネーブル信号EN(i−1)がLレベルに設定され、フリップフロップFF(i−1)はラッチ状態に設定される。このクロックサイクル♯4において、ロジック回路LGK(i)において遅延エラーが発生し、その出力信号L(i)は、次のクロックサイクル♯5において確定状態のデータDDとなる。クロックサイクルサイクル♯5の基本クロック信号CLKの立上り時において、ロジック回路LGK(i)の出力データL(i)は、不確定状態である。
【0068】
この状態で、クロックサイクル♯5において、フリップフロップFF(i)が、不確定状態のデータに従って、エラーデータErrDDをキャプチャして出力する。したがって、フリップフロップFF(i)において、入力データL(i)と出力データD(i)の論理値が不一致である。クロックサイクル♯5において、基本クロック信号CLKの立下りに同期して、誤り判定が、誤り判定回路EDKにおいて行なわれる。基本クロック信号CLKの立下がりに同期して、エラー判定結果指示信号ErrがHレベルに立上がり、反転エラー判定結果指示信号/ErrがLレベルに立下がる。応じて、ゲート回路AAGの出力信号EEN(i+1)がLレベルとなり、フリップフロップFF(i+1)に対するクロック信号がLレベルに維持される。したがって、クロックサイクル♯5においてロジック回路LGK(i+1)の演算処理結果データL(i+1)が、フリップフロップFF(i)における遅延エラーにより、エラーデータErrDDDとなっても、フリップフロップFF(i+1)は、ゲート回路AG(i+1)から与えられるクロック信号がLレベルであり、ラッチ状態にあり、このエラーデータErrDDのキャプチャは行なわず、出力データD(i+1)は、サイクル♯5のデータCCCを維持する。
【0069】
クロックサイクル♯6において、エラー判定結果指示信号Errが、クロック信号CLKの立下がりに同期してLレベルに立下がると、反転エラー判定結果指示信号/ErrがHレベルとなる。このとき、また基本クロック信号CLKがLレベルであるため、フリップフロップFF(i+1)はラッチ状態にあり、その出力データOUT(i+1)(データD(i+1))は、クロックサイクル♯5においてラッチしたデータCCCを維持する。
【0070】
一方、このクロックサイクル♯6においては、フリップフロップFF(i)は、遅延エラーが生じない状態であり(入力データL(i)が、データDDに維持された状態)であり、この遅延エラーが解消された正常データが、フリップフロップFF(i)からロジック回路LGK(i+1)へ与えられる。このクロックサイクル♯6において、フリップフロップFF(i+1)が、基本クロック信号CLKの立下がり時に与えられたデータを取込み、次のクロックサイクル♯7において、基本クロック信号CLKの立上がりに同期して、取込んだデータ(DDD)を出力する。
【0071】
この図8に示すようにフリップフロップFF(i)においてエラー発生時、その次のクロックサイクル♯6においては、正常な前のサイクルのデータが保持されており、エラーデータErrDDDの伝搬が防止される。したがって、制御回路CTRKにおいて、このクロックサイクル♯6において、1クロックサイクル分データが保持された期間を補正する1サイクル遅延補正処理を行なうことにより、正常なデータを継続して出力することができる。
【0072】
たとえば、エラー判定サイクルの次のクロックサイクル♯6におけるエラーデータが、対象フリップフロップの次段のフリップフロップに取り込まれる(キャプチャされる)ときに、たとえば図1に示す制御回路CTRKにおいてエラー信号Errに従ってフラグを生成し、このサイクル♯6においてフリップフロップFF(i+1)から出力されるデータが、冗長データであり、無効であることが示されてもよい。
【0073】
また、これに代えて、ロジック回路とフリップフロップ列で構成される演算処理回路の最終段においてさらに1段のフリップフロップを設け、クロックサイクル♯6における処理データCCCが最終フリップフロップ段に到達したときに、この最終段フリップフロップをバイパスする構成とすることにより、以後のデータを1クロックサイクル等価的に前進させることができ、この遅延エラー発生による1サイクル遅延分を補正することができる。
【0074】
なお、この遅延エラー発生時において、処理データを適当な演算処理段(フリップフロップおよびロジック回路の組)に再投入して演算を再実行する構成が用いられてもよい。また、イネーブル信号EN(i−1)のLレベルに設定される期間は、エラー判定期間(サイクル♯4の後半からサイクル♯5)だけであってもよい。
【0075】
以上のように、この発明の実施の形態2に従えば、遅延エラーが発生した場合、次段のフリップフロップをディスエーブル状態にしており(ラッチ状態に設定しており)、実施の形態1の効果に加えて、エラーデータが次段以降のロジック回路へ伝搬されるのを防止することができ、このエラーによる冗長データ再出力の1サイクル分を補正することにより、正常動作を継続させることができる。
【0076】
[実施の形態3]
図9は、この発明の実施の形態3に従う誤り検出装置の構成を概略的に示す図である。図9においては、演算処理を行なう回路装置が、複数の縦続接続されるサブ論理処理ユニットSLU1−SLUnに分割される。サブ論理処理ユニットSLU1−SLUnの各々は、フリップフロップFF1−FFkと、これらのフリップフロップの間に配置されるロジック回路LGKを含む。
【0077】
サブ論理処理ユニットSLU1−SLUnそれぞれにおいて、誤り判定回路EDK1−EDKnが設けられる。これらの誤り判定回路EDK1−EDKnの各々は、対応のサブ論理処理ユニットSLU1−SLUnにおいて、遅延エラーが発生しやすいクリティカルパスに対するフリップフロップFFiの入力と出力のデータの論理レベルの一致/不一致を判定する。これらの誤り判定回路EDK1−EDKnの出力するエラー信号Err1−Errnを受けるOR回路OGKから、グローバルエラー判定結果指示信号ERRが生成される。
【0078】
これらのサブ論理処理ユニットSLU1−SLUnの動作は、制御回路CTRKにより制御される。図9においては、各サブ論理処理ユニットSLU1−SLUnに対するイネーブル信号群ENG1−ENGnを示す。これらのイネーブル信号群ENG1−ENGnは、それぞれ対応のサブ論理処理ユニットに含まれるフリップフロップに対する個別のイネーブル信号を含む。
【0079】
この図9に示す誤り検出装置の構成においては、サブ論理処理ユニット単位で、遅延エラーの発生の有無を検出する。したがって、遅延エラーの発生する可能性の高いクリティカルパスが複数個存在する場合、各クリティカルパスにおいて、対応のフリップフロップの入力/出力データの論理レベルの一致/不一致を見ることにより、エラー発生を正確に検出することができる。
【0080】
OR回路OGKからのグローバルエラー判定結果指示信号ERRに従って、エラー検出時、入力データINを再投入して処理を再開する処理が行なわれてもよい。また、サブ論理処理ユニットSLU1−SLUnにおいて、先の実施の形態2に示すように、エラーデータの伝搬が防止する構成が設けられていてもよい。この構成の場合、以下の構成が用いられてもよい。制御回路CTRKが、誤り判定回路EDKnのエラー判定結果指示信号Err1−Errnを個々にモニタして、エラーが発生したサブ論理処理ユニットを検出し、冗長データが出力されるサイクルを検出する。このエラー検出サイクルから例えば冗長データが出力されるフリップフロップと最終出力段との間の段数を検出して、冗長データ伝播サイクル数を検出する。これにより、最終出力FOUTに冗長データが出力されるサイクルを検出して、エラー発生による冗長データの補正(1サイクル遅延補正)を行なう。また、先の非特許文献1に示されるように、スーパースカラなどのパイプライン処理装置が、命令フェッチステージIF、命令デコードステージID、命令実行ステージEXT、およびライトバックステージWBに分割されてパイプライン動作を行ない、各段において、誤り判定回路を設ける場合、エラー検出信号に従ってプログラムカウンタのカウン値を補正して、再度、命令フェッチを行なって、パイプラインステージに投入される構成が用いられてもよい。
【0081】
以上のように、この発明の実施の形態3に従えば、複数グループに分割される論理処理部それぞれに、誤り判定回路を設けており、実施の形態1および2の効果に加えて、クリティカルパスが複数個存在する場合においても、レイアウト面積を増大させることなく、正確に、遅延エラーを検出することができる。
【0082】
また、実施の形態2および3においても、誤り検出時、イネーブル信号を固定的にLレベルに設定している。しかしながら、所定の数クロックサイクルごとに、このイネーブル信号を、誤り検出判定サイクルおよびその前のサイクルにおいて、デアサート状態に設定する構成が用いられてもよい。
【産業上の利用可能性】
【0083】
この発明は、一般に、ロジック回路の入力および出力に、フリップフロップが設けられて、パイプライン的に演算処理を実行する処理装置に対して適用することができる。たとえば、RISC(縮小命令セットコンピュータ)などのパイプライン的に演算処理を実行する処理装置に対しても適用することができ、チップ面積を増大させることなく、確実に、クリティカルパスにおける遅延エラーを検出することができる。
【図面の簡単な説明】
【0084】
【図1】この発明の実施の形態1に従う誤り検出装置の構成を概略的に示す図である。
【図2】図1に示す誤り検出装置の正常時の動作シーケンスを示すタイミング図である。
【図3】図1に示す誤り検出装置の遅延エラー発生時の動作を示すタイミング図である。
【図4】図1に示すフリップフロップの構成の一例を示す図である。
【図5】図4に示すフリップフロップの動作を示すタイミング図である。
【図6】図1に示す誤り検出装置の構成の一例を示す図である。
【図7】この発明の実施の形態2に従う誤り検出装置の要部の構成を概略的に示す図である。
【図8】図7に示す誤り検出装置の異常発生時の動作を示すタイミング図である。
【図9】この発明の実施の形態3に従う誤り検出装置の構成を概略的に示す図である。
【符号の説明】
【0085】
FF,FF(i−1)−FF(i+1),FF1,FFi,FFk フリップフロップ、LGK,LGK(i),LGK(i+1) ロジック回路、EDK,EDK1−EDKn 誤り判定回路、AG(i−1)−AG(i+1),AAG ゲート回路、CTRK 制御回路、SLU1−SLUn サブ論理処理ユニット。

【特許請求の範囲】
【請求項1】
第1および第2のロジック回路間に配置され、与えられたクロック信号に従って、前記第1のロジック回路の出力データを前記第2のロジック回路の入力に転送する第1のフリップフロップ、
前記第1のロジック回路に対して設けられ、与えられたクロック信号に従って前記第1のロジック回路へデータを転送する第2のフリップフロップ、
前記第2のフリップフロップに対して設けられ、イネーブル信号に従って基本クロック信号を選択的に前記クロック信号として前記第2のフリップフロップへ転送するゲート回路、および
前記第2のフリップフロップへのクロック信号のディスエーブル時、前記第1のフリップフロップの入力の信号と前記第1のフリップフロップの出力のデータの論理レベルが一致しているかを判定する誤り判定回路を備える、誤り検出装置。
【請求項2】
前記第2のロジック回路の出力データを、与えられたクロック信号に従って転送する第3のフリップフロップと、
前記第3のフリップフロップに対応して設けられ、少なくとも前記誤り判定回路の出力信号と前記基本クロック信号とに従って前記第3のフリップフロップに対してクロック信号を伝達する第2のゲート回路をさらに備える、請求項1記載の誤り検出装置。
【請求項3】
複数のロジック回路、
各ロジック回路に対応して縦列態様で設けられ、各々が、与えられたクロック信号に従って、与えられたデータを次段のロジック回路に転送する複数のフリップフロップ、
前記複数のフリップフロップに対応して設けられ、各々が基本クロック信号とそれぞれの個別イネーブル信号とに従って対応のフリップフロップに対してクロック信号を供給する複数のゲート回路、および
前記複数のフリップフロップの少なくとも1個の所定のフリップフロップに対して設けられ、各々が、対応のフリップフロップの前段のフリップフロップに対するクロック信号のディスエーブル時に、対応のフリップフロップの入力データと出力データとの一致/不一致を判定する誤り判定回路を備える、誤り検出装置。
【請求項4】
前記所定のフリップフロップの次段のフリップフロップに対して設けられるゲート回路は、対応の個別イネーブル信号と前記誤り判定回路の出力信号と前記基本クロック信号とに従って、前記次段のフリップフロップに対してクロック信号を供給する、請求項3記載の誤り検出装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2008−42639(P2008−42639A)
【公開日】平成20年2月21日(2008.2.21)
【国際特許分類】
【出願番号】特願2006−215796(P2006−215796)
【出願日】平成18年8月8日(2006.8.8)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】