(57)【要約】    【課題】期待値を必要とせず入力データのみにより演算器の自己診断を可能にして実装した自己診断回路の規模を小さくする。    【解決手段】自己診断機能を備えたプロセッサであり、診断対象となる加減算器１２を備えた演算回路１０−１と、自己診断用データを格納するデータ格納部１４と、自己診断用データを入力して演算回路により演算結果が全ビットがオール０（はオール１）となるように診断処理を実行させる自己診断処理部１０−２とを備える。    【選択図】            図１
2006286015.tif 000002
【特許請求の範囲】
【請求項１】
診断対象の加減算器と、
第１サイクルにおいて前記加減算器に、第１の演算処理として自己診断用被減数Ｘから自己診断用減数Ｙの減算を行わせるとともに、第２サイクルにおいて前記加減算器に、第２の演算処理として前記診断用被減数Ｘと前記診断用減数Ｙとを入れ替えたことにより減算を行わせる制御部と、
前記第１の演算処理の結果であるＺ＝Ｘ−Ｙと、前記第２の演算処理の結果であるＺ’＝Ｙ−Ｘの加算Ｚ''＝Ｚ＋Ｚ'を行う加算器と、
前記加算器の加算結果Ｚ''の全ビットが０であることを検出する検出器と、
を備えたことを特徴とする演算処理装置。
【請求項２】
診断対象の加減算器と、
第１サイクルにおいて前記加減算器に、第１の演算処理として自己診断用被減数Ｘから自己診断用減数Ｙの減算を行わせるとともに、第２サイクルにおいて前記加減算器に、第２の演算処理として前記診断用被減数Ｘと前記診断用減数Ｙとを入れ替えたことにより減算を行わせる制御部と、
前記第１の演算処理の結果であるＺ＝Ｘ−Ｙと、前記第２の演算処理の結果であるＺ'＝Ｙ−Ｘの加算Ｚ''＝Ｚ＋Ｚ'を行う加算器と、
前記加算器の加算結果Ｚ''の反転を行う反転器と、
前記反転器の反転結果の全ビットが１であることを検出する検出器と、
を備えたことを特徴とする演算処理装置。
【請求項３】
前記加減算器は、補数回路と増分器と加算器とを有し、
前記第１の演算処理は、前記補数回路により前記Ｙの１の補数Ｙ１'ｓを生成するとともに、前記増分器により前記Ｙ１'ｓに１を加算した結果である前記Ｙの２の補数Ｙ２'ｓを生成し、前記加算器を用いて前記Ｘと前記Ｙ２'ｓの加算を行うことにより、前記自己診断用被減数Ｘから前記自己診断用減数Ｙの減算を行い、
前記第２の演算処理は、前記補数回路により前記Ｘの１の補数Ｘ１'ｓを生成するとともに、前記増分器により前記Ｘ１'ｓに１を加算した結果である前記Ｘの２の補数Ｘ２'ｓを生成し、前記加算器を用いて前記Ｙと前記Ｘ２'ｓの加算を行うことにより、前記診断用被減数Ｘと前記診断用減数Ｙとを入れ替えた減算を行うことを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
自己診断用データＸ又はＹを反転して、前記Ｘの反転値Ｘ１'ｓ又は前記Ｙの反転値Ｙ１'ｓを生成する補数回路と、
第１サイクルにおいて、第１の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ＝（Ｘ＋Ｙ１'ｓ ＋１）を行うとともに、第２サイクルにおいて、第２の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ'＝（Ｘ１'ｓ＋Ｙ＋１）を行う診断対象である第１のキャリー入力付き加算器と、
前記第１の演算処理の結果であるＺと前記第２の演算処理の結果であるＺ'の加算Ｚ''＝Ｚ＋Ｚ'を行う第２の加算器と、
前記第２の加算器の加算結果Ｚ''の全ビットが０であることを検出する検出器と、
を備えたことを特徴とする演算処理装置。
【請求項５】
自己診断用データＸ又はＹを反転して、前記Ｘの反転値Ｘ１'ｓ又は前記Ｙの反転値Ｙ１'ｓを生成する補数回路と、
第１サイクルにおいて、第１の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ＝（Ｘ＋Ｙ１'ｓ ＋１）を行うとともに、第２サイクルにおいて、第２の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ'＝（Ｘ１'ｓ＋Ｙ＋１）を行う診断対象である第１のキャリー入力付き加算器と、
前記第１の演算処理の結果であるＺと前記第２の演算処理の結果であるＺ'の加算Ｚ''＝Ｚ＋Ｚ'を行う第２の加算器と、
前記第２の加算器の加算結果Ｚ''の反転を行う反転器と、
前記反転器の反転結果の全ビットが１であることを検出する検出器と、
を備えたことを特徴とする演算処理装置。
【請求項６】
前記演算処理装置はさらに、データ格納部を有し、
前記自己診断用減数Ｘと前記自己診断用被減数Ｙは前記データ格納部に格納されることを特徴とする請求項１乃至５記載の演算処理装置。
【請求項７】
前記演算処理装置はさらに、乱数発生手段を有し、
前記自己診断用減数Ｘと前記自己診断用被減数Ｙは前記乱数発生手段により生成されることを特徴とする請求項１乃至５記載の演算処理装置。
【請求項８】
診断対象である加減算器と、加算を行う加算器と、全ビットが０であることを検出する検出器とを有する演算処理装置の自己診断方法において、
前記加減算器が、第１の演算処理として自己診断用被減数Ｘから自己診断用減数Ｙの減算を行うステップと、
前記加減算器が、第２の演算処理として前記診断用被減数Ｘと前記診断用減数Ｙとを入れ替えたことにより減算を行うステップと、
前記加算器が、前記第１の演算処理の結果であるＸ−Ｙと、前記第２の演算処理の結果であるＹ−Ｘの加算を行うステップと、
前記検出器が、前記加算器の加算結果の全ビットが０であることの検出を行うステップと、
を備えたことを特徴とする演算処理装置の自己診断方法。
【請求項９】
診断対象である加減算器と、加算を行う加算器と、入力値の反転を行う反転器と、全ビットが１であることを検出する検出器とを有する演算処理装置の自己診断方法において、
前記加減算器が、第１の演算処理として自己診断用被減数Ｘから自己診断用減数Ｙの減算を行うステップと、
前記加減算器が、第２の演算処理として前記診断用被減数Ｘと前記診断用減数Ｙとを入れ替えたことにより減算を行うステップと、
前記加算器が、前記第１の演算処理の結果であるＸ−Ｙと、前記第２の演算処理の結果であるＹ−Ｘの加算を行うステップと、
前記反転器が、前記加算器の加算結果の反転を行うステップと、
前記検出器が、前記反転器の反転結果の全ビットが１であることの検出を行うステップと、
を備えたことを特徴とする演算処理装置の自己診断方法。
【請求項１０】
入力データの反転を行う補数回路と、診断対象である第１のキャリー入力付き加算器と、加算を行う第２の加算器と、全ビットが０であることを検出する検出器とを有する演算処理装置の自己診断方法において、
前記補数回路が、自己診断用データＹを反転して、前記Ｙの反転値Ｙ１'ｓを生成するステップと、
前記第１のキャリー入力付き加算器が、第１の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ＝（Ｘ＋Ｙ１'ｓ ＋１）を行うステップと、
前記補数回路が、自己診断用データＸを反転して、前記Ｘの反転値Ｘの反転値Ｘ１'ｓを生成するステップと、
前記第１のキャリー入力付き加算器が、第２の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ'＝（Ｘ１'ｓ＋Ｙ＋１）を行うステップと、
前記第２の加算器が、前記第１の演算処理の結果であるＺと、前記第２の演算処理の結果であるＺ'の加算Ｚ''＝Ｚ＋Ｚ''を行うステップと、
前記検出器が、前記加算器の加算結果Ｚ''の全ビットが０であることの検出を行うステップと、
を備えたことを特徴とする演算処理装置の自己診断方法。
【請求項１１】
入力データの反転を行う補数回路と、診断対象である第１のキャリー入力付き加算器と、加算を行う第２の加算器と、入力値の反転を行う反転器と、全ビットが１であることを検出する検出器とを有する演算処理装置の自己診断方法において、
前記補数回路が、自己診断用データＹを反転して、前記Ｙの反転値Ｙ１'ｓを生成するステップと、
前記第１のキャリー入力付き加算器が、第１の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ＝（Ｘ＋Ｙ１'ｓ ＋１）を行うステップと、
前記補数回路が、自己診断用データＸを反転して、前記Ｘの反転値Ｘの反転値Ｘ１'ｓを生成するステップと、
前記第１のキャリー入力付き加算器が、第２の演算処理として自己診断用データＸと前記補数回路により生成された前記Ｙ１'ｓとキャリー入力１についての加算Ｚ'＝（Ｘ１'ｓ＋Ｙ＋１）を行うステップと、
前記第２の加算器が、前記第１の演算処理の結果であるＺと、前記第２の演算処理の結果であるＺ'の加算Ｚ''＝Ｚ＋Ｚ'を行うステップと、
前記反転器が、前記加算器の加算結果Ｚ''の反転を行うステップと、
前記検出器が、前記反転器の反転結果の全ビットが１であることの検出を行うステップと、
を備えたことを特徴とする演算処理装置の自己診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自己診断機能を内蔵したプロセッサに関し、特に診断結果を評価する期待値データを必要とすることなく加減算器の自己診断を可能とするプロセッサなどの演算処理装置及びその自己診断方法に関する。
【背景技術】
【０００２】
従来、自己診断機能を内蔵したプロセッサ等の集積回路の製造工程にあっては、集積回路に自己診断回路としてＴＡＰコントローラ(Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ  Ｃｏｎｔｒｏｌｅｒ)を内蔵し、ウェハー製造段階やパッケージ製造段階において、内蔵ＲＡＭや内蔵演算器に対する自己診断テストを実施することにより、製造不具合を起している集積回路を発見して取除き、自己診断テストをパスした集積回路を使用することで、ＬＳＩパッケージ組上げやプロセッサ・モジュール組上げの無駄を防止し、ウェハー製造後の工程における歩留りを向上するようにしている。
【０００３】
図２２はプロセッサの基本的なハードェア構成である。図２２において、命令メモリマネジメントユニット（ＩＭＭＵ）は、命令ＴＬＢ(Ｉｎｓｔｒｕｃｔｉｏｎ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）を使用して論理アドレスと部率アドレスの間の変換を行い、プリフェッチユニット１０４により分岐予測１０８による命令フィ−ルド１０６に命令キャッシュ１１０からプリフェッチを行う。命令キュッシュ１１０とプロセッサロ−カルタンタ−コネクタ１１４との間には更に２次キャッシュ１１２が設けられ、プロセッサロ−カルタンタ−コネクタ１１４を介して外部ユニットと接続される。
【０００４】
命令キャッシュ１１０から取出された命令は、プリデコードユニット１１６でプリデコードされた後、命令バッファ１１８に格納され、ディスパッチユニット１２０により分岐ユニット１２２、整数演算器レジスタファイル（ＩＥＵレジスタファイル）１２４、浮動小数点演算器レジスタファイル（ＦＰＵレジスタファイル）１２８に分配される。
【０００５】
ＩＥＵレジスタファイル１２４に続いては整数演算器（ＩＥ  ＡＬＵ）１３０−１，１３０−２が設けられ、整数演算命令を実行して完了ユニット１３４に出力し、ロードストアユニット１２６からの指示でロード又はストアが行われる。
【０００６】
また浮動小数点演算器レジスタファイル１２８に続いては浮動小数点演算器（ＦＰ  ＡＬＵ）１３２−１，１３２−２が設けられ、浮動小数点演算命令を実行して完了ユニット１３６に出力し、ロードストアユニット１２６からの指示でロード又はストアが行われる。
【０００７】
図２３は、図２２のプロセッサにおける命令デコーダを含む整数演算器の基本構成である。ディスパッチユニット１３８から整数演算命令はステージングラッチ１４４でラッチされ、デコーダ１５０で解読される。ソースレジスタ１４０は命令の第１オペランドを格納し、ソースレジスタ１４２は第２オペランドを格納し、各々のステージングラッチ１４６，１４８でラッチし、演算器（ＡＬＵ）１５２に入力する。
【０００８】
演算器１５２はデコーダ１５０で解読された加算命令ＡＤＤ又は減算命令ＳＵＢの演算指示を受けて、２つの入力データの加算又は減算を実行してステージングラッチ１５６にラッチさせる。ステージングラッチ１５６の演算結果は、マルチプレクサ１６４からステージングラッチ１６６を介してディスティネーションレジスタ１６８に格納される。
【０００９】
デコーダ１５０で解読された加算命令ＡＤＤと減算名一実施例ＳＵＢ以外の演算命令は、ステージングラッチ１５４でラッチされた後に論理命令ユニット１６２に与エラーれ、このときステージジングラッチ１５８，１６０を介して入力する２つのデータについて、ＡＮＤ、ＯＲ、ＮＡＮＤ、ＮＰＲ、ＸＯＲ又はＸＮＯＲの論理演算を実行し、演算結果はマルチプレクサ１６４及びステージングラッチ１６６を介してディスティネーションレジスタ１６８に格納される。
【００１０】
このような演算器を内蔵したプロセッサは、例えば図２４の演算器１５２に設けた加減算器を対象とする自己診断回路を実装し、ウェハー製造段階やパッケージ製造段階において、内蔵演算器に対する自己診断テストを実施する。
【００１１】
図２４は、自己診断回路を実装した従来の加減算回路の構成である。図２４において、試験対象部２００には例えばキャリー入力Ｃｉｎ付きの２入力の加減算器２０２が実装されている。
【００１２】
加減算器２０２の入力側には、汎用レジスタファイル２０４、セレクタ２１０，２１２、ソースレジスタ２１４，２１５が設けられる。ソースレジスタ２１５の出力は２つに分岐されセレクタ２１８の一方に直接入力されると共に、インバータ２１６で反転してセレクタ２１８の他方に入力される。セレクタ２１８は加減算器２０２に対する加算入力と減算入力を切替える。加減算器２００の演算結果はディストネーションレジスタ２２０に格納される。
【００１３】
また加減算器２０２の加算と減算は、オペコード２３２を解読したデコーダ２３０の加算命令ＡＤＤ又は減算命令ＳＵＢに基づいて行われる。いまソースレジスタ２１４，２１６のデータを各々Ａ，Ｂとすると、デコーダ２３０から加算命令ＡＤＤが出された場合、セレクタ２１８はソースレジスタ２１５の値Ｂを選択して加減算器２０２に入力し、同時に加減算器２０２のキャリー入力をＣｉｎ＝０として、このため加減算器２０２はＣ＝Ａ＋Ｂの加算を実行する。
【００１４】
またデコーダ２３０から減算命令ＳＵＢが出された場合、セレクタ２１８はソースレジスタ２１５の値Ｂを反転したインバータ２１６の出力を選択して加減算器２０２に入力し、同時に加減算器２０２のキャリー入力をＣｉｎ＝１として、このため加減算器２０２はＣ＝Ａ−Ｂの減算を実行する。尚、加減算器２０２によるＣ＝Ａ−Ｂの減算は、インバータ２１６によるＢの反転値は１の補数Ｂ１’ｓであり、これにキャリー入力Ｃｉｎ＝１を加減算器２０２の内部で加算するこで２の補数Ｂ２’ｓを求め、これをＡに加算することでＣ＝Ａ−Ｂ＝Ａ＋Ｂ１’ｓ＋１＝Ａ＋Ｂ２’ｓとて減算を行っている。
【００１５】
このような加減算回路に対する自己診断回路として、ＴＡＰコントローラ(Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ  コントローラ）２２６と比較器２３４を備えた自己診断コントローラ２２８が設けられる。
【００１６】
この自己診断回路を実装したプロセッサにあっては、自己診断の開始に先だち、ＴＡＰコントローラ２２６は外部のＲＡＭ等から膨大な量の自己診断用の入力データと、入力データを用いた自己診断により演算器が正常に動作したときに得られる膨大な量の期待値データを汎用レジスタファイル２０４に読込んで準備する。
【００１７】
次にＴＡＰコントローラ２２６は自己診断コントローラ２２８を起動し、最初のサイクルで汎用レジスタファイル２０４から第１オペランドとしてのソースデータ２０６、第１オペランドしてのソースデータ２０８、更に期待値２２５を読み出し、ソースデータ２０６，２０８はセレクタ２１０，２１２を介してソースレジスタ２１４，２１５に格納する。また期待値２２５は自己診断コントローラ２２８の比較器２３４の一方の入力にセットする。
【００１８】
次のサイクルでは、例えば加算命令ＡＤＤによって２つのソースデータの加算を行ってディストネーションレジスタ２２０に格納し、この加算結果２２４を自己診断コントローラ２２８の比較器２３４で既に読み出している期待値２２５と比較する。
【００１９】
比較２３４により両者が一致すれば演算器２０２は正常であり、不一致の場合は演算器２０２の異常と判断しエラーを外部に出力し、エラーを起したプロセッサを製造工程から取除く。
【００２０】
このような自己診断処理を汎用レジスタファイル２０４に準備した全ての入力データと期待値について実行して異常がなけば、そのプロセッサは試験にパスし、次の工程に送られる。
【００２１】
また図２４の演算回路には、擬似乱数発生器として動作するリニアフィードバックレジスタ（ＬＦＳＲ：  ＬｉｎｅＡｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）２３６，２３８が設けられ、汎用レジスタファイル２０４から読み出したデータＸ，Ｙをソースレジスタ２１４，２１５を介して初期値としてセットした後に、自己診断コントローラ２２８からの制御で擬似乱数を発生して自己診断を行うことができる。
【００２２】
この擬似乱数を発生する自己診断にあっても、診断時に発生する乱数に対応した期待値を予め準備して汎用レジスタファイル２０４に読み込んでおく必要があり、入力データの準備と読込みは不要にできるが、期待値を必要とする。
【特許文献１】特開昭６２−２０６６４３号公報
【特許文献２】特開平０１−１８００４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２３】
しかしながら、このような演算器を内蔵したプロセッサ等の集積回路において、集積回路に演算器の自己診断機能を実装した場合、自己診断テストを実施する際に、外部のＲＡＭ等から膨大な量の自己診断用の入力データと、入力データを用いた自己診断により演算器が正常に動作したときに得られる膨大な量の期待値データを読み込み、入力データに基づく演算結果が格納されるシグネチャ・レジスタの値と期待値とを比較する処理を繰り返しており、大規模で且つ複雑な自己診断回路を必要としている。
【００２４】
このため集積回路に演算器の自己診断機能を実装した場合には、集積回路の本体であるシリコン半導体の部分のサイズを小型化してウェハーから製造できるチップの数を増すことで歩留りを向上しようとしても、大規模で且つ複雑な自己診断回路の実装によってダイサイズを小さくすることができず、歩留りの低下を招いている。
【００２５】
またダイサイズの小型化によってプロセッサの低消費電力化を計ろうとしても、自己診断回路が大規模で複雑になるため、ダイサイズを小さくすることができず、低消費電力化が十分に実現できない問題があった。
【００２６】
更に、プロセッサ等の集積回路の製造にあっては、その月の生産台数によってプロセッサ１台辺りの自己診断テストに割当てることのできる時間が決まり、この割当て時間に合せて自己診断に使用する入力データとその期待値データを作り直しており、その準備に手間と時間がかかる問題があった。
【００２７】
本発明は、期待値データを必要とせずに入力データのみを使用して演算器の自己診断ができるプロセッサ等の演算処理装置及びその方法を提供することを目的とする。
【課題を解決するための手段】
【００２８】
図１は本発明の原理説明図である。本発明は、自己診断機能を備えた集積回路を対象とし、診断対象となる加減算器１２を備えた演算回路１０−１と、自己診断用データを格納するデータ格納部１４と、自己診断用データを入力して演算回路１０−１により演算結果が全ビットがオール０（はオール１）となるように診断処理を実行させる自己診断処理部１０−２とを備えたことを特徴とする。
【００２９】
本発明は、任意の自己診断用の入力データに対して、演算結果として検査が容易な全てビットがオール０（又はオール１）が得られるように演算回路及び自己診断処理部を構成したことにより、期待値および期待値の比較回路を不要にして、自己診断を実現するために必要な回路規模を小さくし、これによってダイサイズの小形化を実現し、プロセッサの歩留り向上や低消費電力化に寄与する自己診断機能を実装したプロセッサ等の集積回路を実現する。
【００３０】
ここで自己診断処理部は、２つの入力データをＸ，Ｙとすると、次の加減算により演算結果をオール０とした自己診断を行う。
（１）Ｘを被減数、Ｙを減数とする減算    Ｚ＝Ｘ−Ｙ
（２）Ｙを被減数、Ｘを減数とする減算    Ｚ’＝Ｙ−Ｘ
（３）２つの減算結果の加算              Ｚ’’＝Ｚ’＋Ｚ
（４）加算結果がオール０で正常、オール０でなければ異常
【００３１】
具体的な例としては、まず演算回路１０−１として、図１（Ｂ）のように、第１オペランドＡを格納する第１ソースレジスタ２４と、第２オペランドＢを格納する第２ソースレジスタ２６と、第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する補数回路（インバータ）３０と、第１オペランドＡを被減数として入力し、補数回路３０の出力値Ｂ１’ｓを減数としてキャリーＣｉｎと共に入力し、１の補数Ｂ１’ｓに１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する試験対象となるキャリー入力付きの第１加減算器１２と、第１加減算器１２の次段に設けられた第２加減算器３６とを備える。
【００３２】
このような演算回路１０−１を対象に自己診断処理部１０−２は、第１及び第２ソースレジスタ２４，２６に格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用して次の診断処理を行う。
（１）第１サイクルで補数回路３０及び第１加減算器１２を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行する。
（２）第２サイクルで被減数Ｘと減数Ｙを入れ替えて補数回路３０及び第１加減算器１２を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行する。
（３）第３サイクルで第２加減算器３６を用いて第１及び第２サイクルの減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行する。
（４）加算結果が全ビット０であれば正常と判断し、全ビット０以外の場合は異常と判断する。
【００３３】
また自己診断処理部１０−２は、別の形態として、２つの入力データをＸ，Ｙとすると、次の減算、変換、比較判定により自己診断を行う。
（１）Ｘを被減数、Ｙを減数とする減算    Ｚ＝Ｘ−Ｙ
（２）Ｙを被減数、Ｘを減数とする減算    Ｚ’＝Ｙ−Ｘ
（３）減算結果Ｚ’につき２の補数Ｚ２’ｓを算出
Ｚ’２’ｓ＝Ｚ１’ｓ＋１
（３）比較                              Ｚ＝Ｚ’２’ｓ
（４）一致で正常、不一致で異常
【００３４】
この場合の具体的な例としては、まず演算回路は、第１オペランドＡを格納する第１ソースレジスタと、第２オペランドＢを格納する第２ソースレジスタと、第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する第１補数回路と、第１オペランドＡを被減数として入力し、反転回路の出力値Ｂ１’ｓを減数としてキャリーＣｉｎ＝１と共に入力して１の補数Ｂ１’ｓに１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する試験対象となるキャリー入力付きの加減算器と、加減算器の減算値Ｃを反転して１を加算することで２の補数Ｃ２’ｓを出力する第２補数回路と、加減算器と第２補数回路の出力を比較する比較器とを備える。
【００３５】
このような演算回路を対象に自己診断回路は、第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用して次の処理を実行する。
（１）第１サイクルで前記第１補数回路及び加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行する。
（２）第２サイクルで被減数Ｘと減数Ｙを入れ替えて第１補数回路及び加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行し、第２補数回路から減算結果Ｚ’の補数Ｚ’２’＝（Ｚ１’ｓ＋１）を出力して第１サイクルの減算結果Ｚと比較し、両者が一致（Ｚ’２’ｓ＝Ｙ２’ｓ−Ｘ２’ｓ＝Ｘ＋Ｙ２’ｓ＝Ｚ）すれば正常と判断し、不一致であれば異常と判断する。
【００３６】
ここで比較器で判断する
Ｚ’２’ｓ＝Ｙ２’ｓ−Ｘ２’ｓ＝Ｘ＋Ｙ２’ｓ＝Ｚ              （１）
の成立を証明すると次のようになる。
Ｚ＝Ｘ−Ｙ＝Ｘ＋Ｙ１’ｓ＋１＝Ｘ＋Ｙ２’ｓ                    （２）
Ｚ’＝Ｙ−Ｘ＝Ｙ＋Ｘ１’ｓ＋１＝Ｙ＋Ｘ２’ｓ                  （３）
（２）より
Ｙ２’ｓ＝−Ｙ                                                （４）
（３）より
Ｘ２’ｓ＝−Ｘ                                                （５）
従って（４）（５）を（１）に代入して変形すると、
Ｚ’２’ｓ＝Ｙ２’ｓ−Ｘ２’ｓ
＝−Ｙ−（−Ｘ）
＝−Ｙ＋Ｘ
＝Ｘ−Ｙ
となる。ここで右辺第２項の−Ｙに（２）式を代入すると、
Ｚ’２’ｓ＝Ｘ＋Ｙ２’ｓ
＝Ｚ
となり、（１）のＺ’２’ｓ＝Ｚの関係が成立する。
【００３７】
このような自己診断の演算結果をオール０もしくは２つの演算結果を一致させる具体的な演算回路の構成と自己診断処理については、様々な変形がある。
【発明の効果】
【００３８】
本発明によれば、任意の自己診断用の入力データに対し、演算結果として検査が容易な全ビットがオールゼロまたはオール１が得られるように演算回路及び自己診断処理部を構成したことで、従来の自己診断に必要な期待値及び期待値の比較回路を不要とし、これによって自己診断を実現するための必要な回路規模を小さくし、結果として大サイズを小型化し、プロセッサの歩留り向上や低消費電力化に寄与した自己診断機能を実装したプロセッサなどのプロセッサを実現することができる。
【００３９】
またテストデータを外部から読み込む場合については、期待値を必要としないことから外部データの読み込みが短時間にでき、且つプロセッサなどのプロセッサの生産計画により１台当たりの自己診断に要する時間が変わるような場合にも、期待値の準備を必要としない分、柔軟に且つ容易に対応することができる。
【発明を実施するための最良の形態】
【００４０】
図２は本発明によるプロセッサの基本構成を示した回路ブロック図である。
【００４１】
図２において、本発明による自己診断機能付きのプロセッサは、診断対象とする加減算器１２を備えた演算回路１０−１、自己診断用データを格納するデータ格納部としての汎用レジスタファイル１４、オペコードを入力して解読することにより加算命令ＡＤＤまたは減算命令ＳＵＢを出力するデコーダ５０を備える。
【００４２】
このような試験対象としての加減算器１２を含む演算回路１０−１に対し、自己診断処理部１０−２が設けられる。自己診断処理部１０−２にはＴＡＰコントローラ(Ｔｅｓｔ  Ａｃｃｅｓｓ  Ｐｏｒｔ  Ｃｏｎｔｒｏｌｌｅｒ）４２と自己診断コントローラ４４が設けられる。ＴＡＰコントローラ４２はＬＳＩ製造工程におけるウェハー製造段階やパッケージ製造段階において、ＬＳＩに内蔵しているＲＡＭや内蔵演算器に対する自己診断テストを自己診断コントローラ４４の制御により行う。
【００４３】
即ち、自己診断対象となる加減算器１２を備えた演算回路１０−１にあっては、入力テストデータＸ，Ｙについて２の補数を生成できるように構成しており、自己診断処理の際には２つの入力テストデータＸ，Ｙについて
（１）Ｘを被減数、Ｙを減数とする減算Ｚ＝Ｘ−Ｙ
（２）Ｙを被減数、Ｘを減数とする減算Ｚ’＝Ｙ−Ｘ
（３）２つの減算結果の加算Ｚ’’＝Ｚ＋Ｚ’＝０
を実行し、最終的な演算結果ＺＺの全ビットが０となることを確認することにより演算結果と期待値との比較を不要とした演算回路１０−１の自己診断処理を実行する。
【００４４】
また本発明の自己診断処理の別の形態にあっては、２つの入力テストデータＸ，Ｙにつき次の減算、変換、比較判定を行う。
（１）Ｘを被減数、Ｙを減数とする減算Ｚ＝Ｘ−Ｙ
（２）Ｙを被減数、Ｘを減数とする減算Ｚ’＝Ｙ−Ｘ
（３）減算結果Ｚ’につき２の補数Ｚ２’ｓを算出する。Ｚ２’ｓ＝Ｚ１’ｓ＋１
（４）減算結果と変換結果の比較Ｚ＝Ｚ２’ｓ
そして、この比較結果の一致を確認することにより演算結果と期待値の比較を不要とするような自己診断を実行する。
【００４５】
図３は、本発明による自己診断機能付きプロセッサの第１実施形態であり、この第１実施形態にあっては演算回路に対し演算結果が全ビットにつきオール０となるように演算して、この演算結果を確認するようにしたことを特徴とする。
【００４６】
図３において、第１実施形態のプロセッサは、演算回路部１０−１と自己診断処理部１０−２から構成される。自己診断処理部１０−２にはＴＡＰコントローラ４２と自己診断コントローラ４４が設けられている。ＴＡＰコントローラ４２はＬＳＩ製造工程におけるウェハー製造段階やパッケージ製造段階において、演算回路１０−１に内蔵している試験対象１１としての加減算器１２に対する自己診断テストを制御する。具体的には自己診断コントローラ４４に対するＢＩＳＴ  ＳＴＡＲＴ信号により起動をみか、診断終了をＢＩＳＴ  ＤＯＮＥ  信号により受け取る。
【００４７】
自己診断コントローラ４４は、ＴＡＰコントローラ４２からのＢＩＳＴ  ＳＴＡＲＴ信号により動作し、演算回路１０−１側を制御して自己診断テストを実行する。この自己診断コントローラ４４にはオールゼロ検出器４８が設けられており、演算回路１０−１からの自己診断テストによる演算結果４０を入力し、演算結果４０の全ビットがオールゼロであれば試験対象１１としての加減算器１２は正常であると判断し、一方、全ビットがオールゼロでなかった場合には試験対象１１としての加減算器１２の異常と判断し、エラー信号Ｅ４を外部に出力してエラーの検出通知を行う。
【００４８】
次に自己診断テストの対象となる演算回路１０−１側を説明する。演算回路１０−１には、汎用レジスタファイル１４、マルチプレクサ２０，２２、第１ソースレジスタ２４、第２ソースレジスタ２６、１の補数を生成する補数回路としてのインバータ３０、マルチプレクサ２８、試験対象１１となるキャリーＣｉｎ付きの２入力の加減算器１２、ディストネーションレジスタ３２，３４，３８、キャリー入力を持たない２入力の加減算器３６及びデコーダ５０が設けられる。
【００４９】
デコーダ５０はプログラムのオペコード５２を入力し、演算器に対する命令として加算命令ＡＤＤまたは減算命令ＳＵＢをデコードする。汎用レジスタファイル１４は、プロセッサ内部で使用する整数データ、アドレスなどのデータを保持するレジスタの集合であり、本発明の自己診断テストにあっては、自己診断に使用する予め準備されたテストデータが外部のＲＡＭなどからライトポートＷＲを通じて予め読み込まれている。
【００５０】
この汎用レジスタファイル１４の格納データは第１ソースデータ１６及び第２ソースデータ１８としてリードポートRDから読み出され、マルチプレクサ２０，２２を介して第１ソースレジスタ２４と第２ソースレジスタ２６に格納される。自己診断テストの際には、汎用レジスタファイル１４より第１テストデータＸと第２テストデータＹが読み出され、第１ソースレジスタ２４及び第２ソースレジスタ２６にそれぞれ格納される。ここで、この実施形態で扱うデータは例えば３２ビット幅のデータである。
【００５１】
マルチプレクサ２０は、自己診断コントローラ４４からの制御信号Ｅ２により第１ソースデータ１６の値と第１ソースレジスタ２４の値を選択して出力する。同様にマルチプレクサ２２は自己診断コントローラ４４からの制御信号Ｅ２により第２ソースデータ１８の値と第２ソースレジスタ２６の値を選択して出力する。
【００５２】
ここで第１ソースレジスタ２４は加減算器の第１オペランドの値を保持し、また第２ソースレジスタ２６は加減算器の第２オペランドの値を保持する。
【００５３】
インバータ３０は、第２ソースレジスタ２６に保持されている値を反転し、１の補数を生成する補数回路として機能する。マルチプレクサ２８はデコーダ５０からの演算命令により第２ソースレジスタ２６の値とインバータ３０の値を選択して出力する。本発明の自己診断テストにあっては、デコーダ５０からの減算命令ＳＵＢが出力され、マルチプレクサ２８はインバータ３０から出力を選択し、第２ソースレジスタ２６の値を反転した１の補数を出力する。
【００５４】
この第１実施形態の試験対象１１となる加減算器１２は、デコーダ５０の出力をキャリー入力Ｃｉｎとしたキャリー入力付きの２入力の加減算器であり、加算命令ＡＤＤの場合にはキャリー入力はＣｉｎ＝０となり、一方、減算命令ＳＵＢの際にはキャリー入力はＣｉｎ＝１となる。
【００５５】
このため通常の加算命令ＡＤＤの際には、加減算器１２の第１オペランドをＡ、第２オペランドをＢ、加算出力をＣとすると、Ｃ＝Ａ＋Ｂの加算を行う。また加減算器１２は自己診断テストの際にはデコーダ５０より減算命令ＳＵＢを受けることから、第１ソースレジスタ２４の値を第１オペランドＡ、第２ソースレジスタ２６の値を第２オペランドＢとすると、マルチプレクサ２８により第２オペランドＢを反転した１の補数Ｂ１’ｓを生成し、更に加減算器１２に対するキャリー入力Ｃｉｎ＝１により第２オペランドＢの２の補数Ｂ２’ｓ（＝Ｂ１’ｓ＋１）を生成することによりＣ’＝Ａ＋Ｂ２’ｓ＝Ａ−Ｂの減算命令を実行する。
【００５６】
図３のキャリー入力Ｃｉｎ付きの２入力の加減算器１２は、具体的には図４の回路構成を持っている。演算器１０は加減算器１２−１と加減算器１２−２で構成され、加減算器１２−１の一方に命令の第１オペランドＡを入力し、他方には加減算器１２−２の加算結果を入力している。加減算器１２−２は命令の第２オペランドＢとキャリー入力Ｃｉｎを加算して出力する。したがって加減算器１２の加算出力ＣはＣ＝Ａ＋Ｂ＋Ｃｉｎとなり、このキャリー入力Ｃｉｎはデコーダ５０からの加算命令ＡＤＤでＣｉｎ＝０、減算命令ＳＵＢでＣｉｎ＝１となっている。
【００５７】
再び図３を参照するに、加減算器１２の出力側に設けたディストネーションレジスタ３２は、通常の演算処理にあっては加減算器１２の演算結果を保持し、保持した演算結果の値をデータフォワ−ドパス３５に出力し、最終的に汎用レジスタファイル１４に演算結果を反映させる。
【００５８】
また本発明による自己診断テストの際には、２サイクル目の演算結果である減算結果Ｚ’＝Ｙ−Ｘ（＝Ｙ＋Ｘ２’ｓ＝Ｙ＋Ｘ１’ｓ＋１）の値が保持される。また次のディストネーションレジスタ３４は、自己診断テストの際には１サイクル目の減算結果となるＺ＝Ｘ−Ｙ（＝Ｘ＋Ｙ２’ｓ＝Ｘ＋Ｙ１’ｓ＋１）の値が保持される。
【００５９】
２入力の加減算器３６は、自己診断テストの際にのみ有効となり、自己診断コントローラ４４からの制御信号Ｅ３を受けて減算器１２による２回の減算で得られたディストネーションレジスタ３４の減算結果Ｚとディストネーションレジスタ３２の減算結果Ｚ’の加算により、Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓを演算する。
【００６０】
加減算器３６の出力段のディストネーションレジスタ３８は、自己診断テストの最終的な演算結果Ｚ’’＝Ｚ＋Ｚ’を保持するもので、この演算結果４０は自己診断コントローラ４４のオールゼロ検出器４８に与エラーれ、オールゼロの確認が行われる。
【００６１】
次に図３の第１実施形態における通常の演算命令である加算命令ＡＤＤによるＣ＝Ａ＋Ｂ及び減算命令ＳＵＢによるＣ’＝Ａ−Ｂに対する動作を説明する。
【００６２】
まず演算命令の第１オペランドＡ及び第２オペランドＢが汎用レジスタファイル１４のリードポートからそれぞれ第１ソースデータ１６及び第２ソースデータ１８として読み出され、マルチプレクサ２０，２２を介して第１ソースレジスタ２４と第２ソースレジスタ２６に格納される。
【００６３】
一方、演算命令のオペコード５２はデコーダ５０で解読され、加算命令ＡＤＤであればマルチプレクサ２８により第１ソースレジスタ２６の第２オペランドＢがそのまま選択されることから、加減算器１２には第１オペランドＡ、第２オペランドＢ及びキャリー入力Ｃｉｎ＝０が入力され、Ｃ＝Ａ＋Ｂが演算される。
【００６４】
また減算命令ＳＵＢであればマルチプレクサ２８はインバータ３０の出力を選択し、このため加減算器１２には第１オペランドＡ、第２オペランドＢを反転した１の補数Ｂ１’ｓ及びキャリー入力Ｃｉｎ＝１が入力され、Ｃ’＝Ａ−Ｂ＝Ａ＋Ｂ２’ｓ＝Ａ＋Ｂ１’ｓ＋１が演算される。
【００６５】
加減算器１２の演算結果となるＣやＣ’の値はディストネーションレジスタ３２に保持され、データフォワ−ドパス３５に出力され、最終的にはライトポートから汎用レジスタファイル１４に反映される。
【００６６】
次に本発明の自己診断テストによる動作を説明する。自己診断テストの際にはＴＡＰコントローラ４２が自己診断コントローラ４４に対するＢＩＳＴ  ＳＴＡＲＴ信号をアサートし、自己診断テストの動作が開始される。この自己診断テストの開始により、汎用レジスタファイル１４に既に格納されているテストデータである演算の第１オペランドＸ及び第２オペランドＹがリードポートから読み出され、マルチプレクサ２０，２２により選択され、第１ソースレジスタ２４及び第２ソースレジスタ２６に保持される。
【００６７】
一方、自己診断コントローラ４４は制御信号Ｅ１によりデコーダ５０を制御し、オペコード５２のデコードによって減算命令ＳＵＢを出力する。このデコーダ５０からの減算命令ＳＵＢによりマルチプレクサ２８はインバータ３０の出力を選択し、これによって加減算器１２には第１オペランドＸ、第２オペランドＹを反転した１の補数Ｙ１’ｓ及びキャリー入力Ｃｉｎ＝１が入力される。
【００６８】
この結果、自己診断処理の第１サイクルにおいては、加減算器１２は減算結果Ｚとして
Ｚ＝Ｘ−Ｙ＝Ｘ＋Ｙ２’ｓ＝Ｘ＋Ｙ１’ｓ＋１
を演算し、ディストネーションレジスタ３２に演算結果Ｚを保持する。
【００６９】
次に１クロック後の自己診断テストの第２サイクル目にあっては、自己診断コントローラ４４はマルチプレクサ２０，２２を制御して第１ソースレジスタ２４と第２ソースレジスタ２６の値Ｘ，Ｙを入れ替えるように入力する選択を行い、これによって第１ソースレジスタ２４に第１オペランドＹが、また第２ソースレジスタ２６に第２オペランドＸが、第１サイクル目の値とは入れ替わって保持される。
【００７０】
またマルチプレクサ２８はデコーダ５０の減算命令ＳＵＢによって継続してインバータ３０の出力を選択している。このため加減算器１２には、第１オペランドＹ，第２オペランドＸ、キャリー入力Ｃｉｎ＝１が入力され、
Ｚ’＝Ｙ−Ｘ＝Ｙ＋Ｘ２’ｓ＝Ｙ＋Ｘ１’ｓ＋１
が演算される。このとき前回の演算結果であるＺ＝Ｘ−Ｙの値は１クロック経過しているためにディストネーションレジスタ３４に保持されており、今回の減算結果であるＺ’＝Ｙ−Ｘの値がディストネーションレジスタ３２に保持される。
【００７１】
このようにディストネーションレジスタ３２，３４に保持された減算結果Ｚ’，Ｚは、第１オペランドＺ’及び第２オペランドＺとして２入力の加減算器３６に入力され、Ｚ’’＝Ｚ＋Ｚ’が演算される。この演算結果Ｚ’’はディストネーションレジスタ３８に保持され、演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に出力される。
【００７２】
ここで試験対象１１としての加減算器１２が正常であった場合には、減算結果Ｚ’’は次の関係となる。
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ  ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ  ）＋（Ｙ＋Ｙ２’ｓ  ）
＝０＋０
＝０
【００７３】
そのため自己診断コントローラ４４のオールゼロ検出器４８は演算結果４０の全ビットがオール０であることを検査すればよく、従来のようにテストデータＸ，Ｙの演算結果としての期待値を用意して実際の演算結果との比較を行う必要がない。このためオールゼロ検出器４８としては、例えば全ビットのＯＲ論理をとる回路構成とすれば良く、このような全ビットＯＲ入力の論理回路のＯＲ出力によって、もし全ビットがオール０でなければエラー信号Ｅ４を出力して外部に演算器１２の異常を通知できる。
【００７４】
このような自己診断テストを汎用レジスタファイル１４に前もって格納している残りの２つの入力データの組について複数回繰り返すことにより、自己診断を完了する。
【００７５】
図５は、演算結果と期待値の比較を不要とした本発明の自己診断機能付きプロセッサの第２実施形態の回路ブロック図である。この第２実施形態にあっては、２つの入力テストデータＸ，Ｙについて減算Ｚ＝Ｘ−ＹとＺ’＝Ｙ−Ｘを減算した後、１回目の演算結果Ｚと２回目の演算結果Ｚ’の２の補数Ｚ’２’ｓを比較し、この比較結果から入力データＸ，Ｙの期待値との比較を必要としない自己診断テストを行うようにしたことを特徴とする。
【００７６】
図５において、演算回路１０−１側の汎用レジスタファイル１４からディストネーションレジスタ３４までの構成は図３の第１実施形態と同じである。このため自己診断テストの際には、汎用レジスタファイル１４から２つのテストデータＸ，Ｙが読み出されて第１ソースレジスタ２４，第２ソースレジスタ２６に保持された後、第１サイクルで減算Ｚ＝Ｘ−Ｙ＝Ｘ＋Ｙ２’ｓ＝（Ｘ＋Ｙ１’ｓ＋１）を実行し、ディストネーションレジスタ３２に保持する第１サイクル目の処理を行う。
【００７７】
次の第２サイクル目では入力データＸ，Ｙを入れ替えた減算Ｚ’＝（Ｙ−Ｘ）＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）を行い、第１サイクル目の演算結果を１クロック後であることからディストネーションレジスタ３４に保持し、２回目の演算結果はディストネーションレジスタ３２に保持する。
【００７８】
このようなディストネーションレジスタ３２，３４に続いて、第２実施形態にあっては比較器５４を設けている。比較器５４の一方の入力にはディストネーションレジスタ３４に保持した１回目の減算結果Ｚが入力される。また比較器５４の他方の入力にはインバータ５６と＋１インクリメント回路５８が設けられている。
【００７９】
このためディストネーションレジスタ３２に保持された２回目の減算結果Ｚ’はインバータ５６で反転されて１の補数Ｚ１’ｓとなり、続いて＋１インクリメント回路５８で１を加えることによりＺ’の２の補数Ｚ’２’ｓ＝Ｚ’１’ｓ＋１に変換されて比較器５４に入力される。
【００８０】
このため比較器５４は、ディストネーションレジスタ３４の値となる第１オペランドＺと、インバータ５６と＋１インクリメント回路５８により変換された第２オペランドＺ’２’ｓとの比較を実行し、比較結果４０−１を出力する。
【００８１】
一方、自己診断処理部１０−２側にはＴＡＰコントローラ４２と自己診断コントローラ４４−１が設けられており、自己診断コントローラ４４−１にはエラー検出器６０が設けられている。エラー検出器６０は演算回路部１０−１の比較器５４からの比較結果４０−１を入力し、比較器５４における第１オペランドＺと第１オペランドＺ’２’ｓが一致していれば試験対象１０の加減算器１２は正常と判断し、一方、比較結果が不一致であればエラーを検出して外部に加減算器１２の異常を示すエラー信号Ｅ４を出力する。
【００８２】
ここで比較器５４における第１オペランドＺと第２オペランドＺ’２’ｓの一致関係の成立を証明すると次のようになる。
【００８３】
まず最終的な演算結果は次のようになる。
Ｚ’２’ｓ＝Ｙ２’Ｓ−Ｘ２’Ｓ＝Ｘ＋Ｙ２’Ｓ＝Ｚ          （６）
この成立を証明すると次のようになる。ここで
Ｚ＝Ｘ−Ｙ＝Ｘ＋Ｙ１’ｓ＋１＝Ｘ＋Ｙ２’Ｓ                （７）
Ｚ’＝Ｙ−Ｘ＝Ｙ＋Ｘ１’ｓ＋１＝Ｙ＋Ｘ２’Ｓ              （８）
である。そこで（７）より
Ｙ２’ｓ＝−Ｙ                                            （９）
となり、（８）より
Ｘ２’ｓ＝−Ｘ                                          （１０）
となる。従って（９）（１０）を（６）に代入して変形すると、
Ｚ’２’ｓ＝Ｘ＋Ｙ２’ｓ
＝−Ｙ−（−Ｘ）
＝−Ｙ＋Ｘ
＝Ｘ−Ｙ
となる。ここで右辺第２項の−Ｙに（７）式を代入すると、
Ｚ’２‘ｓ＝Ｘ＋Ｙ２’ｓ
＝Ｚ
となり、（５）のＺ’２’ｓ＝Ｚの関係が成立する。
【００８４】
また比較器５４としては、演算器１２の演算動作が正しいときに第１オペランドＺ’と第２オペランドＺ’２’ｓは一致していることから、第１オペランドＺと第２オペランドＺ’２’ｓのそれぞれについて全ビットのＥＸＯＲ論理をとった後に全ビットのＥＸＯＲ出力のＯＲ論理をとれば良く、比較器５４そのものも簡単な論理データで構成できる。
【００８５】
図６は本発明の自己診断機能を備えたプロセッサの第３実施形態の回路ブロック図である。この第３実施形態にあっては、試験対象としてキャリー入力を持たない２入力の加減算器を備えたことを特徴とする。
【００８６】
図６において、自己診断処理部１０−２は、図３の第１実施形態と同様、ＴＡＰコントローラ４２と自己診断コントローラ４４で構成され、自己診断コントローラ４４にはオールゼロ検出器４８が設けられている。
【００８７】
演算回路１０−１は試験対象１０としてキャリー入力を持たない２入力の加減算器６５を備えている。この加減算器６５の入力側にはレジスタファイル１４、マルチプレクサ２０，２２及び第１ソースレジスタ２４及び第２ソースレジスタ２６、インバータ３０及びマルチプレクサ２８が設けられている点は図３の第１実施形態と同じであるが、加減算器６５をキャリー入力なしとしたことに伴い、インバータ３０に続いて＋１インクリメント回路６１を設けている。
【００８８】
このインバータ３０と＋１インクリメント回路６１によって第２ソースレジスタ２６の第２オペランドＢをインバータ３０で反転して１の補数Ｂ１’ｓに変換した後、＋１インクリメント回路６１で１を加えることによって２の補数Ｂ２’ｓに変換して加減算器６５に出力するようにしている。
【００８９】
このため加減算器６５にあっては、デコーダ５０からの減算命令ＳＵＢによるマルチプレクサ２８の第２オペランドＢ２’ｓの選択による出力で第１オペランドＡを入力し、Ｃ＝Ａ＋Ｂ２’ｓ＝Ａ−Ｂの減算を実行することになる。
【００９０】
加減算器６５の出力段にはディストネーションレジスタ３２，３４、２入力の加減算器３６及びディストネーションレジスタ３８が設けられており、これは図３の第１実施形態と同じである。
【００９１】
次に図６の第３実施形態について自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が動作し、自己診断テストを開始する。まず汎用レジスタファイル１４よりテストデータとしてのオペランドＸ，Ｙを読み出し、マルチプレクサ２０，２２を介して第１ソースレジスタ２４と第２ソースレジスタ２６に保持する。
【００９２】
このときデコーダ５０の制御によって減算命令ＳＵＢが出力されていることから、マルチプレクサ２８は＋１インクリメント回路６１の出力を選択している。このため試験対象１０としての加減算器６５には第１オペランドＸと第２オペランドＢ２’ｓが入力され、
Ｚ＝Ｘ＋Ｙ２’ｓ＝Ｘ＋Ｙ１’ｓ＋１＝Ｘ−Ｙ
が演算され、ディストネーションレジスタ３２に保持される。
【００９３】
次の第２サイクル目では、自己診断コントローラ４４の制御信号Ｅ２によってマルチプレクサ２０が第２ソースレジスタ２６のテストデータＸを選択して出力し、同時にマルチプレクサ２２が第１ソースレジスタ２４のテストデータＸを選択して出力し、これによってソースレジスタ２４と２６の値が入れ替わる。
【００９４】
このときマルチプレクサ２８はデコーダ５０の減算命令ＳＵＢを継続して受けている。このため加減算器６５には第１オペランドＹとインバータ３０及び＋１インクリメント回路６１で変換された第２オペランドＸ２’ｓが入力し、
Ｚ’＝Ｙ＋Ｘ２’ｓ＝Ｙ＋Ｘ１’ｓ＋１＝Ｙ−Ｘ
を実行する。この２回目の減算結果は１クロック後であることからディストネーションレジスタ３２に保持され、１つ前の減算結果Ｚは次のディストネーションレジスタ３４に保持されている。
【００９５】
このため加減算器３６には第１オペランドＺ’と第２オペランドＺが入力し、Ｚ’’＝Ｚ＋Ｚ’の演算を実行してディストネーションレジスタ３８に保持する。この加減算器３６における演算結果Ｚ’’は、加減算器６５が正常であれば、
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０
となる。
【００９６】
加減算器３６の加算結果４０は自己診断コントローラ４４のオールゼロ検出器４８に与えられ、全ビットがオールゼロであれば加減算器６５は正常と判断し、オールゼロでなければ加減算器６５の異常と判断してエラー信号Ｅ４を外部に出力する。
【００９７】
この図６の第３実施形態にあっては、試験対象の加減算器として図３の第１実施形態のようにキャリー入力付きの２入力の加減算器１２ではなく、キャリー入力を持たない加減算器を使用している場合の自己診断テストに対応することができる。
【００９８】
図７は、本発明による自己診断機能付きプロセッサの第４実施形態の回路ブロック図である。この第４実施形態にあっては、図３の第１実施形態で出力段に設けている加減算器３６を廃止し、この加減算器３６による２回目の演算を試験対象１０として設けているキャリー入力付きの２入力の加減算器１２で行うように構成したことを特徴とする。このように２回目の演算に専用の加減算器を必要としない分、演算回路の構成を簡単にすることができる。
【００９９】
図７において、試験対象１１となるキャリー入力付きの２入力の加減算器１２の入力側には、汎用レジスタファイル１４、マルチプレクサ２０，２２、第１ソースレジスタ２４、第２ソースレジスタ２６、インバータ３０、マルチプレクサ２８が設けられ、続いて新たにマルチプレクサ６４，６６を設けている。
【０１００】
マルチプレクサ６４，６６は、自己診断コントローラ４４からの制御信号Ｅ５によって、第１サイクル目では第１ソースレジスタ２４及びマルチプレクサ２８の出力を選択しているが、第２サイクル目については加減算器１２の出力側のディストネーションレジスタ３４，３２の値を選択して出力するようにしたことを特徴とする。また加減算器１２に対してはキャリー入力Ｃｉｎに加え、１回目の演算と２回目の演算を制御する制御信号Ｅ３も入力されている。
【０１０１】
次に図７の第４実施形態における自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすることで自己診断コントローラ４４が動作すると、まず汎用レジスタファイル１４から任意のテストデータＸ，Ｙを読み出し、マルチプレクサ２０，２２を介して第１ソースレジスタ２４に第１オペランドＸを保持し、同時に第２ソースレジスタ２６に第２オペランドＹを保持する。
【０１０２】
このときマルチプレクサ２８はインバータ３０の出力を選択しており、またマルチプレクサ６４，６６は第１ソースレジスタ２４の出力及びマルチプレクサ２８の出力を選択している。もちろん、デコーダ５０は減算命令ＳＵＢを出力している。このため試験対象１０の加減算器１２には第１オペランドＸ、第２オペランドＹ２’ｓ及びキャリー入力Ｃｉｎ＝１が入力し、
Ｚ＝Ｘ＋Ｙ２’ｓ＝Ｘ＋Ｙ１’ｓ＋１＝Ｘ−Ｙ
の減算を実行し、減算結果Ｚをディストネーションレジスタ３２に保持する。
【０１０３】
第２サイクル目にあっては、自己診断コントローラ４４はデコーダ５０の減算命令ＳＵＢを維持したままマルチプレクサ２０，２２を制御して第１ソースレジスタ２４と第２ソースレジスタ２６のオペランドＸ，Ｙを入れ替えて保持し、マルチプレクサ２８及びマルチプレクサ６４，６６の制御は第１サイクル目と同じであることから、加減算器１２には第１オペランドＹ、第２オペランドＸ２’ｓ及びキャリー入力Ｃｉｎ＝１が入力し、
Ｚ’＝Ｙ＋Ｘ２’ｓ＝Ｙ＋Ｘ１’ｓ＋１＝Ｙ−Ｘ
の減算を実行する。
【０１０４】
この２回目の減算結果Ｚ’はディストネーションレジスタ３２に保持され、１回目の減算結果Ｚは１クロック後であることから次のディストネーションレジスタ３４に保持されている。
【０１０５】
次の第３サイクル目にあっては、自己診断コントローラ４４はデコーダ５０を制御して加算命令ＡＤＤを出力させ、また制御信号Ｅ５によってマルチプレクサ６４，６６を制御して加減算器１２の出力側を選択させる。
【０１０６】
このため加減算器１２には、ディストネーションレジスタ３４に保持している第１オペランドＺ、ディストネーションレジスタ３２に保持している第２オペランドＺ’、及びキャリー入力Ｃｉｎ＝０が入力し、Ｚ’’＝Ｚ＋Ｚ’の加算を実行する。
【０１０７】
この３サイクル目の加算結果Ｚ’’はディストネーションレジスタ３２に保持され、自己診断コントローラ４４のオールゼロ検出器４８に演算結果４０として出力される。この最終的に得られた演算結果Ｚ’’は、加減算器１２が正常であれば、
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０
となる。
【０１０８】
このため自己診断コントローラ４４のオールゼロ検出器４８は加算結果４０がオールゼロであれば加減算器１２は正常と判断し、一方、オールゼロでなければ加減算器１２の異常と判断し、エラー信号Ｅ４を外部に出力する。
【０１０９】
この図７の第４実施形態にあっては、加減算器１２の出力段に別の加減算器を必要としない分、図３の第１実施形態に比べ演算回路１０−１の回路構成を簡単にできる。一方、図３の第１実施形態にあっては、加減算器３６を設けた分、回路構成は複雑になるが、自己診断動作が２サイクルで済む点で高速にでき、これに対し図７の第４実施形態は自己診断動作を３サイクルで行うことから、その分、時間が掛かることになる。したがって図３の第１実施形態と図７の第４実施形態は、回路構成の簡略化をとるか自己診断動作の高速化をとるかのいずれかの要求に応じて使用すれば良い。
【０１１０】
図８は、本発明による自己診断機能付きプロセッサの第５実施形態の回路ブロック図である。この第５実施形態にあっては、図６の第３実施形態について出力側に設けている加減算器３６を省略し、図７の第４実施形態と同様、試験対象１０に設けている加減算器６５を使用して２回目の加算を行うようにしたことを特徴とする。
【０１１１】
図８において、演算回路１０−１は、試験対象１０となる２入力の加減算器６５の入力側に汎用レジスタファイル１４、マルチプレクサ２０，２２、第１ソースレジスタ２４、第２ソースレジスタ２６、インバータ３０、＋１インクリメント回路６１、マルチプレクサ２８を設けている点は図６の第３実施形態と同じであるが、これに加えて加減算器６５の入力側に図７の第４実施形態と同様、マルチプレクサ６４，６６を新たに設けている。
【０１１２】
マルチプレクサ６４，６６は自己診断テストの第１サイクル目及び第２サイクル目の減算動作の際には第１ソースレジスタ２４の第１オペランドとマルチプレクサ２８の第２オペランドを選択して出力するが、第３サイクル目の加算動作では加減算器６５の出力側を選択するように制御される。
【０１１３】
また自己診断処理部１０−２側は、図６の第３実施形態と同様、ＴＡＰコントローラ４２及びオールゼロ検出器４８を備えた自己診断コントローラ４４で構成される。
【０１１４】
次に図８の第５実施形態の自己診断テストの動作を説明する。ＴＡＰコントローラ４２からのＢＩＳＴ  ＳＴＡＲＴ信号がアサートされ、自己診断コントローラ４４が自己診断動作を開始すると、まず汎用レジスタファイル１４から任意のテストデータＸ，Ｙが読み出され、マルチプレクサ２０，２２で選択されて第１ソースレジスタ２４と第２ソースレジスタ２６に格納される。
【０１１５】
このときデコーダ５０は自己診断コントローラ４４による制御で減算命令ＳＵＢを出力しており、マルチプレクサ２８は第２ソースレジスタ２６に保持したテストデータＹをインバータ３０で反転して１の補数Ｙ１’ｓとした後、＋１インクリメント回路６１で１を加えることで２の補数Ｙ２’ｓとした出力を選択している。
【０１１６】
またマルチプレクサ６４，６６は制御信号Ｅ５によって第１ソースレジスタ２４とマルチプレクサ２８の出力を選択している。このため第１サイクル目にあっては、試験対象１０の加減算器６５には第１オペランドＸと第２オペランドＹ２’ｓが入力し、
Ｚ＝Ｘ＋Ｙ２’ｓ＝Ｘ＋Ｙ１’ｓ＋１＝Ｘ−Ｙ
の演算を実行し、演算結果Ｚをディストネーションレジスタ３２に保持する。
【０１１７】
次の第２サイクル目にあっては、自己診断コントローラ４４の制御信号Ｅ２によってマルチプレクサ２０が第２ソースレジスタ２６の値Ｙを選択して出力し、同時にマルチプレクサ２２が第１ソースレジスタ２４の値Ｘを選択して出力し、入力データＸ，Ｙが入れ替わる。
【０１１８】
またマルチプレクサ２８及びマルチプレクサ６４，６６の選択状態は同じである。このため試験対象１０の加減算器６５には第１オペランドＹと第２オペランドＸ２’ｓが入力し、
Ｚ’’＝Ｙ＋Ｘ２’ｓ＝Ｙ＋Ｘ１’ｓ＋１＝Ｙ−Ｘ
の減算を実行する。この２回目の減算結果Ｚ’’はディストネーションレジスタ３２に保持され、１クロック後であることから、１回目の減算結果Ｚはデストネーションレジスタ３４に保持される。
【０１１９】
次の第３サイクル目にあっては、自己診断コントローラ４４の制御によりデコーダ５０は加算命令ＡＤＤを出力し、また制御信号Ｅ５によってマルチプレクサ６４はディストネーションレジスタ３４に保持した値Ｚを選択して出力し、同時にマルチプレクサ６６はディストネーションレジスタ３２に保持した値Ｚ’を選択して出力する。
【０１２０】
このため３回目について加減算器６５は第１オペランドＺと第２オペランドＺ’を入力し、Ｚ’’＝Ｚ＋Ｚ’の演算を実行し、演算結果Ｚ’’をディストネーションレジスタ３２に保持する。このような３サイクル目の演算結果４０は自己診断コントローラ４４のオールゼロ検出器４８に与えられ、オールゼロの有無がチェックされる。
【０１２１】
このときの自己診断による最終的な演算結果Ｚ’’は加減算器６５が正常であれば、
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０
となる。このためオールゼロ検出器４８で演算結果４０から全ビットのオールゼロを検出すると加減算器４５は正常と判断し、一方、オールゼロでなかった場合には加減算器６５の異常と判断し、エラー信号Ｅ４を外部に出力する。
【０１２２】
この図８の第５実施形態にあっては、図６の第３実施形態と対比すると、第３実施形態が自己診断テストの動作を２サイクルで終了するのに対し３サイクルを必要とするため、その分、遅くなるが、試験対象１０となる加減算器６５の出力段に別の加減算器を必要とせず、その分、演算回路１０−１の回路構成を簡単にできる利点がある。
【０１２３】
図９は、本発明による自己診断機能付きプロセッサの第６実施形態の回路ブロック図である。この第６実施形態にあっては、自己診断テストの１サイクルで２つのテストデータの減算Ｚ＝Ｘ−Ｙとテストデータを入れ替えた減算Ｚ’＝Ｙ−Ｘを同時に実行して、２つの減算結果の加算結果Ｚ’’＝Ｚ＋Ｚ’を実行するようにしたことを特徴とする。
【０１２４】
図９の第６実施形態において、試験対象１０となるキャリー入力付きの２入力の加減算器１２の入力側には汎用レジスタファイル１４に続いて直接、第１ソースレジスタ２４、第２ソースレジスタ２６を設け、図３の第１実施形態におけるマルチプレクサ２０，２２は除いている。
【０１２５】
試験対象１０となる加減算器１２の第１オペランドとしては第１ソースレジスタ２４の値が入力され、第２オペランドとしては第２ソースレジスタ２６の値またはインバータ３０で反転した値のいずれかをマルチプレクサ２８で選択している。加減算器１２の出力にはディストネーションレジスタ３２が設けられ、ディストネーションレジスタ３２の値は次の加減算器３６に入力されている。
【０１２６】
この第１ソースレジスタ２４，２６、インバータ３０、マルチプレクサ２８、加減算器１２及びディストネーションレジスタ３２の系統によって減算Ｚ＝Ｘ−Ｙを実行する。一方、この演算Ｚの演算系統と並列にインバータ７０、マルチプレクサ６８、加減算器７２及びディストネーションレジスタ３４が設けられている。
【０１２７】
マルチプレクサ６８は第１ソースレジスタ２４の値またはインバータ７０で反転した値を選択して出力する。加減算器７２は第２ソースレジスタ２６の値を第１オペランド、マルチプレクサ６８で選択した値を第２オペランド、更にキャリー入力Ｃｉｎによる入力を受けて、Ｚ’＝Ｙ−Ｘの減算を実行してディストネーションレジスタ７４に格納する。
【０１２８】
加減算器３６はディストネーションレジスタ３２と７４のそれぞれに並列的な演算により格納された演算結果Ｚ，Ｚ’をオペランドとして入力し、Ｚ’’＝Ｚ＋Ｚ’の加算を実行し、ディストネーションレジスタ３８に格納する。
【０１２９】
一方、自己診断処理部１０−２側はＴＡＰコントローラ４２とオールゼロ検出器４８を備えた自己診断コントローラ４４により構成されている。
【０１３０】
次に図９の第６実施形態の自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると自己診断コントローラ４４が動作し、自己診断テストを開始する。まず汎用レジスタファイル１４に格納されている任意のテストデータＸ，Ｙをリードポートから読み出し、第１ソースレジスタ２４及び第２ソースレジスタ２６のそれぞれに保持する。
【０１３１】
このときデコーダ５０は自己診断コントローラ４４の制御信号Ｅ１によって減算命令ＳＵＢを出力しており、このためマルチプレクサ６８，２８はインバータ７０，３０の出力を選択している。また加減算器１２，７２に対するキャリー入力ＣｉｎはＣｉｎ＝１となっている。
【０１３２】
したがって加減算器１２には第１オペランドＸ、第２オペランドＹ１’ｓ、キャリー入力Ｃｉｎ＝１が入力し、Ｚ＝Ｘ＋Ｙ１’ｓ＋１の演算を実行し、ディストネーションレジスタ３２に保持する。同時に加減算器７２には第１オペランドＹ、第２オペランドＸ１’ｓ及びキャリー入力Ｃｉｎ＝１が入力し、Ｚ’＝Ｙ＋Ｘ１’ｓ＋１の演算を実行してディストネーションレジスタ７４に保持する。
【０１３３】
この結果、加減算器３６はディストネーションレジスタ７４の値Ｚ’を第１オペランド、ディストネーションレジスタ７３２値Ｚを第２オペランドとする加算Ｚ’’＝Ｚ’＋Ｚを実行し、ディストネーションレジスタ３８に加算結果Ｚ’’を保持する。
【０１３４】
このため自己診断処理の第１サイクル目で得られた演算結果４０が自己診断コントローラ４４のオールゼロ検出器４８に与えられる。ここで加減算器３６からの演算結果４０Ｚ’’は、試験対象１０となる加減算器１２が正常であれば、
Ｚ’’＝Ｚ＋Ｚ’
＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０
となっている。
【０１３５】
このため自己診断コントローラ４４のオールゼロ検出器４８が演算結果４０の全ビットゼロを検出すると、試験対象１０の加減算器１２は正常と判断し、一方、オールゼロでないことを判別すると加減算器１２の異常と判断し、エラー実行Ｅ４を外部に出力する。
【０１３６】
この図９の第６実施形態にあっては、２つのテストデータＸ，Ｙの減算とこれを入れ替えた減算を同時に行い、その減算結果を加算することで自己診断動作を１サイクルで終了することができ、より高速の自己診断処理が実行できる。
【０１３７】
図１０は、本発明による自己診断処理機能を備えたプロセッサの第７実施形態の回路ブロック図である。この第７実施形態にあっては、図４の第２実施形態における２サイクルの自己診断テストの処理を１サイクルで終了させる高速化を図ったことを特徴とする。
【０１３８】
図１０において、第７実施形態の演算回路部１０−１にあっては、汎用レジスタファイル１４に続いて直接、第１ソースレジスタ２４と第２ソースレジスタ２６が設けられ、図５の第２実施形態のマルチプレクサ２０，２２は除かれている。第１及び第２ソースレジスタ２４，２６、インバータ３０、マルチプレクサ２８、試験対象１０としてのキャリー入力付きの加減算器１２及びディストネーションレジスタ３２によって、Ｚ＝Ｘ−Ｙの演算系統を構成している。
【０１３９】
一方、第１及び第２ソースレジスタ２４，２６、インバータ７０、マルチプレクサ６８、キャリー入力Ｃｉｎ付きの加減算器７２及びディストネーションレジスタ７４によって、テストデータＸ，Ｙを入れ替えたＺ’＝Ｙ−Ｘの演算系統を構成している。この点は図９の第６実施形態と同じであることが分かる。
【０１４０】
この第７実施形態にあっては、図５の第２実施形態に対応していることから、減算結果Ｚ，Ｚ’の２系統の演算結果に続いて比較器５４を設けている。比較器５４の一方にはディストネーションレジスタ３２の減算結果Ｚが入力される。また比較器５４の他方の入力にはディストネーションレジスタ７４に保持した減算結果Ｚ’をインバータ５６で反転して１の補数Ｚ’１’ｓを求め、次に＋１インクリメント回路５８で１を加えた２の補数Ｚ’２’ｓに変換して入力している。
【０１４１】
このため比較器５４は減算結果Ｚと減算結果Ｚ’の２の補数Ｚ’２’ｓを比較し、比較結果４０−１を自己診断コントローラ４４−１のエラー検出器６０に入力している。比較器５４における演算結果Ｚと演算結果Ｚ’の２の補数Ｚ’２’ｓが一致していれば試験対象１０となる加減算器１２は正常であり、不一致であれば加減算器１２は異常であり、これをエラー検出器６０で検出して加減算器１２の異常を示すエラー信号Ｅ４を外部に出力することになる。
【０１４２】
また自己診断処理部１０−２はＴＡＰコントローラ４２と自己診断コントローラ４４−１を備え、図５の第１実施形態と異なる点は第１及び第２ソースレジスタ２４，２６側のマルチプレクサ２０，２２に対する制御信号がない点である。
【０１４３】
次に図１０の第７実施形態における自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４−１が起動して演算回路１０−１の自己診断テストが開始される。まず汎用レジスタファイル１４より任意のテストデータＸ，Ｙをリードポートから読み出し、第１ソースレジスタ２４にテストデータＸを、また第２ソースレジスタ２６にテストデータＹを保持する。
【０１４４】
このときデコーダ５０は自己診断コントローラ４４−１の制御信号Ｅ１によってオペコード５２を解読して減算命令ＳＵＢを出力している。これによってマルチプレクサ６８，２８はインバータ７０，３０の出力を選択している。
【０１４５】
このとき試験対象１０としての加減算器１２を見ると、第１オペランドＸ、第２オペランドＹ２’ｓ及びキャリー入力Ｃｉｎ＝１を入力しており、Ｚ＝Ｘ＋Ｙ１’ｓ及びキャリー入力Ｃｉｎ＝１を入力し、Ｚ＝Ｘ＋Ｙ１’ｓ＋１の減算を実行し、減算結果Ｚをディストネーションレジスタ３２に保持する。
【０１４６】
同時に加減算器７２は第１オペランドＹ，第２オペランドＸ１’ｓ及びキャリー入力Ｃｉｎ＝１を入力し、Ｚ’＝Ｙ＋Ｘ１’ｓ＋１の演算を実行し、演算結果をディストネーションレジスタ７４に保持する。
【０１４７】
更に比較器５４はディストネーションレジスタ３２に保持した演算結果Ｚを入力し、またディストネーションレジスタ３４に保持した演算結果Ｚ’をインバータ５６で反転して１の補数Ｚ’１’ｓとした後、＋１インクリメント回路５８で１を加えることで２の補数Ｚ’２’ｓに変換して入力し、両者を比較している。
【０１４８】
このとき試験対象１０の加減算器１２が正常であれば比較器５４に入力しているＺとＺ’２’ｓは一致し、この比較一致を自己診断コントローラのエラー検出器６０で検出し、加減算器１２が正常であることを認識する。一方、比較器５４でＺとＺ’２’ｓが不一致であった場合には、エラー検出器６０は試験対象１０の加減算器１２の異常と判断し、外部にエラー信号Ｅ４出力する。
【０１４９】
この図１０の第７実施形態にあっては、図５の第２実施形態と比較すると、比較処理に必要な減算Ｚ＝Ｘ−Ｙと減算Ｚ’＝Ｙ−Ｘの２の補数Ｚ’２’ｓが自己診断テストの１サイクルで演算されて比較結果を得ることができ、より高速の自己診断動作を行うことができる。
【０１５０】
図１１は、本発明による自己診断機能付きのプロセッサの第８実施形態の回路ブロック図である。この第８実施形態は、図６の第３実施形態における試験対象１０のキャリー入力Ｃｉｎを持たない加減算器６５について、図９の第６実施形態と同様、テストデータＸ，Ｙの減算とこれを入れ替えた減算を並列的に行って１サイクルで動作を終了するようにしたことを特徴とする。
【０１５１】
図１１において、演算回路部１０−１は汎用レジスタファイル１４に続いて直接、第１ソースレジスタ２４と第２ソースレジスタ２６を設けている。第１ソースレジスタ２４及び第２ソースレジスタ２６、インバータ３０、＋１インクリメント回路６１、マルチプレクサ２８、試験対象１０の加減算器６５及びディストネーションレジスタ３２によって、減算Ｚ＝Ｘ−Ｙの演算系統を構成している。
【０１５２】
また第１及び第２ソースレジスタ２４，２６、インバータ７６、＋１インクリメント回路７８、マルチプレクサ６８、加減算器７２及びディストネーションレジスタ７４によって、テストデータＸ，Ｙを入れ替えた減算Ｚ’＝Ｙ−Ｘの演算系統を構成している。
【０１５３】
この並列的に行われるディストネーションレジスタ３２，７４に保持される減算結果Ｚ，Ｚ’は加減算器３６に入力され、Ｚ’’＝Ｚ＋Ｚ’の加算が行われてディストネーションレジスタ３８に保持され、演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に出力される。もちろん自己診断処理部１０−２側には、ＴＡＰコントローラ４２が自己診断コントローラ４４と共に設けられている。
【０１５４】
次に図１１の実施形態における自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が起動し、まず汎用レジスタファイル１４より任意のテストデータＸ，Ｙをリードポートから読み出して第１ソースレジスタ２４と第２ソースレジスタ２６のそれぞれに保持する。このときデコーダ５４は自己診断コントローラ４４の制御信号Ｅ１によって減算命令ＳＵＢを出力している。
【０１５５】
これによってマルチプレクサ６８，６１は＋１インクリメント回路７８，６１の出力を選択している。まず加減算器１２側の動作を見ると、加減算器１２には第１ソースレジスタ２４の第１オペランドＸと第１ソースレジスタ２６のテストデータＹをインバータ３０で反転して１の補数Ｙ１’ｓに変換した後、＋１インクリメント回路６１で１を加えることで２の補数Ｙ２’ｓに変換した第２オペランドが入力される。
【０１５６】
このため加減算器１２はＺ＝Ｘ＋Ｙ２‘ｓ＝Ｘ＋Ｙ１’ｓ＋１＝Ｘ−Ｙの演算を実行し、演算結果Ｚをディストネーションレジスタ３２に保持する。同時に加減算器７２は、第２ソースレジスタ２６のオペランドＹと第１ソースレジスタ２４の入力データＹをインバータ７６で反転して１の補数Ｙ１’ｓに変換した後、＋１インクリメント回路７８で１を加５て２の補数Ｘ２’ｓに変換した第２オペランドを入力し、Ｚ’＝Ｙ＋Ｘ２’ｓ＝Ｙ＋Ｘ１’ｓ＋１＝Ｙ−Ｘの演算を実行し、演算結果Ｚ’をディストネーションレジスタ７４に保持する。
【０１５７】
このため加減算器３６は、ディストネーションレジスタ７４の第１オペランドＺ’とディストネーションレジスタ３２の第２オペランドＺを入力してＺ’’＝Ｚ’＋Ｚの加算を実行し、演算結果、Ｚ’’をディストネーションレジスタ３８に保持し、演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に出力する。
【０１５８】
このような演算結果４０としてのＺ’’は、試験対象１０の加減算器１２が正常である場合は
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０                                                （１１）
となる。このため自己診断コントローラ４４のオールゼロ検出器４８は、演算結果４０のＺ’’がオールゼロであれば加減算器１２は正常と判断し、オールゼロでなければ加減算器１２の異常と判断してエラー信号Ｅ４を外部に出力する。
【０１５９】
図１２は、本発明による自己診断機能を備えたプロセッサの第９実施形態の回路ブロック図である。この第９実施形態にあっては、図９の第６実施形態における加減算器３６を省略し、この加算を試験対象１０の加減算器１２で行うようにしたことを特徴とする。
【０１６０】
即ち図９の第６実施形態にあっては、第１サイクルで全ての演算を終了するが、図１２の第９実施形態にあっては２サイクルを必要とし、その分、第６実施形態の加減算器３６を不要として回路構成を簡単にしている。
【０１６１】
図１２において、演算回路１０−１でレジスタファイル１４から読み出した任意の２つのテストデータＸ，Ｙについての減算Ｚ＝Ｘ−Ｙは、第１ソースレジスタ２４、第２ソースレジスタ２６、インバータ３０、マルチプレクサ２８、試験対象１０としての加減算器１２及びディストネーションレジスタ３２の系統で行われる。この系統には加減算器１２の入力段に新たにマルチプレクサ８０，８２を設けている。
【０１６２】
また汎用レジスタファイル１４から読み出した任意のテストデータＸ，Ｙを入れ替えた減算Ｚ’＝Ｙ−Ｘは第１ソースレジスタ２４，第２ソースレジスタ２６、インバータ７０、マルチプレクサ６８、加減算器７２及びディストネーションレジスタ３４の系統で演算が実行される。
【０１６３】
マルチプレクサ８０，８２はデコーダ５０からの加算命令ＡＤＤと減算命令ＳＵＢにより切り替エラーれる。減算命令ＳＵＢの出力時にはマルチプレクサ６８，２８の出力を選択している。一方、加算命令ＡＤＤの際にはディストネーションレジスタ７４，３２の値を選択して出力する。自己診断処理部１０−２側はＴＡＰコントローラ４２及びオールゼロ検出器４８を備えた自己診断コントローラ４４で構成される。
【０１６４】
次に図１２の第９実施形態の自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が自己診断テストを開始する。まず汎用レジスタファイル１４から任意のテストデータＸ，Ｙを読み出し、第１ソースレジスタ２４に第１オペランドＸとして保持し、第２ソースレジスタ２６に第２オペランドＹとして保持する。
【０１６５】
このときデコーダ５０は自己診断コントローラ４４からの制御信号Ｅ１によってオペコード５２を解読して減算命令ＳＵＢを出力している。このためマルチプレクサ６８，２８はインバータ７０，３０の出力をそれぞれ選択している。またマルチプレクサ８０，８２の第１ソースレジスタ２４の出力とマルチプレクサ２８の出力を選択している。
【０１６６】
これによって試験対象１１となる加減算器１２には第１オペランドＸ、第２オペランドとしてテストデータＹをインバータ３０で反転した１の補数Ｙ１’ｓ、更にキャリー入力Ｃｉｎ＝１が入力している。これによって加減算器１２はＺ＝Ｘ＋Ｙ１’ｓ＋１の演算を実行し、演算結果Ｚをディストネーションレジスタ３２に保持する。
【０１６７】
同時に加減算器７２は、第１オペランドＸ、第２オペランドとして第１ソースレジスタ２４のテストデータＸをインバータ７０で反転して得た１の補数Ｘ１’ｓ、更にキャリー入力Ｃｉｎ＝１を入力している。このため加減算器７２はＺ’＝Ｙ＋Ｘ１’ｓ＋１の演算を実行し、演算結果をディストネーションレジスタ７４に保持する。
【０１６８】
次の第２サイクル目にあっては、自己診断コントローラ４４は制御信号Ｅ１によりデコーダ５０を制御して加算命令ＡＤＤを出力し、制御信号Ｅ３により加減算器１２の加算動作を指示する。このデコーダ５０からの加算命令ＡＤＤにより、マルチプレクサ８０はディストネーションレジスタ３４の出力を選択し、またマルチプレクサ８２はディストネーションレジスタ３２の出力を選択する。
【０１６９】
このため加減算器１２は、第１オペランドＺ’、第２オペランドＺ、キャリー入力Ｃｉｎ＝０を入力し、Ｚ’’＝Ｚ’＋Ｚの演算を実行し、ディストネーションレジスタ３２に保持する。このディストネーションレジスタ３２の値Ｚ’’は演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に与えられる。
【０１７０】
ここで試験対象１０としての加減算器１２が正常な場合は
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０                                                  （１１）
となる。
【０１７１】
このため自己診断コントローラ４４のオールゼロ検出器４８は演算結果４０の全ビットがオールゼロであれば加減算器１２は正常と判断し、一方、オールゼロでなければ加減算器１２の異常と判断し、外部にエラー信号Ｅ４を外部に出力する。
【０１７２】
図１３は、本発明による自己診断機能付きのプロセッサの第１０実施形態の回路ブロック図である。この第１０実施形態にあっては、図１１の第８実施形態の出力に設けた加減算器３６を省略し、試験対象１０の加減算器１２により加算処理を行うようにしたことを特徴とし、図１１の加減算器３６を設けていない分、回路構成を簡単にすることができる。
【０１７３】
図１３の第１０実施形態において、演算回路１０−１は図１１の第８実施形態の試験対象１０の加減算器１２の前段に新たにマルチプレクサ８０，８２を設けており、このマルチプレクサ８０，８２によってディストネーションレジスタ３４，３８の出力を選択して加減算器１２に入力できるようにしたことを特徴とし、それ以外の構成は図８の実施形態と同じである。
【０１７４】
この図１３の第１０実施形態の自己診断処理の動作を説明すると次のようになる。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が動作し、自己診断テストが開始される。まず汎用レジスタファイル１４から任意のテストデータＸ，Ｙを読み出し、第１，第２ソースレジスタ２４，２６のそれぞれに保持する。
【０１７５】
このときデコーダ５０は減算命令ＳＵＢを出力しており、マルチプレクサ６８，２８は＋１インクリメント回路７８，６１の出力を選択している。またマルチプレクサ８０，８２は制御信号Ｅ６により第１ソースレジスタ２４及びマルチプレクサ２８の出力を選択している。
【０１７６】
このため試験対象１０の加減算器１２には、第１オペランドＸと第２オペランドとしてインバータ３０で反転することで１の補数Ｙ１’ｓに変換した後、＋１インクリメント回路６１で１を加えて２の補数Ｙ２’ｓに変換した値が入力される。これによって加減算器１２はＺ＝Ｘ＋Ｙ２’ｓの演算を実行し、ディストネーションレジスタ３８に保持する。
【０１７７】
同時に加減算器７２には第１オペランドＹとテストデータＸをインバータ７６で反転した１の補数Ｘ１’ｓに＋１インクリメント回路７８で１を加えた２の補数Ｘ２’ｓを入力している。これによって加減算器７２はＺ’＝Ｙ＋Ｘ２’ｓの演算を実行し、演算結果Ｚ’をディストネーションレジスタ７４に保持する。
【０１７８】
次の第２サイクル目にあっては、自己診断コントローラ４４はデコーダ５０の制御で加算命令ＡＤＤを出力させ、また制御信号Ｅ６によってマルチプレクサ８０，８２をディストネーションレジスタ３８，７４の選択状態に切り替える。このため加減算器１２は、マルチプレクサ８０から第１オペランドＺ’を入力すると同時にマルチプレクサ８２より第２オペランドＺを入力し、これによって減算Ｚ’’＝Ｚ’＋Ｚを実行し、演算結果Ｚ’’をディストネーションレジスタ３８に保持し、演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に出力する。
【０１７９】
ここで最終的な演算結果４０としてのＺ’’は、加減算器１２が正常であれば、
Ｚ’’＝Ｚ＋Ｚ’＝（Ｘ−Ｙ）＋（Ｙ−Ｘ）
＝Ｘ＋Ｙ２’ｓ＋Ｙ＋Ｘ２’ｓ
＝（Ｘ＋Ｘ２’ｓ）＋（Ｙ＋Ｙ２’ｓ）
＝０＋０
＝０                                                （１１）
となる。
【０１８０】
このため自己診断コントローラ４４のオールゼロ検出器４８はオールゼロを検出すれば試験対象１０としての加減算器１２が正常であると判断し、一方、オールゼロでなければ加減算器１２の異常と判断し、外部にエラー信号Ｅ４を出力する。
【０１８１】
図１４は、本発明による自己診断機能を備えたプロセッサの第１１実施形態を示した回路ブロック図である。この第１１実施形態にあっては、自己診断テストのためのテストデータとしてリニアフィードバックシフトレジスタ(ＬＦＳＲ)を使用して疑似乱数発生を行うようにしたことを特徴とする。
【０１８２】
図１４の第１１実施形態は、図３の第１実施形態に対し疑似乱数発生用のリニアフィードバックシフトレジスタ８４，８６を追加した構成としている。このリニアフィードバックシフトレジスタ８４，８６を加えたことに伴い、第１ソースレジスタ２４と第２ソースレジスタ２６の入力段に３入力のマルチプレクサ８８，９０を設け、レジスタファイル１４、ソースレジスタ２４，２６またはリニアフィードバックシフトレジスタ８４，８６のいずれかを選択できるようにしている。それ以外の演算回路１０−１及び自己診断処理部１０−２の構成は図３の第１実施形態と同じである。
【０１８３】
図１５は図１４に使用している疑似乱数発生用のリニアフィードバックシフトレジスタの回路構成の一例である。リニアフィードバックシフトレジスタ８４は、例えば３２ビット幅のシフトレジスタ９２とＥＸ−ＯＲ回路９４で構成される。ＥＸ−ＯＲ回路９４はシフトレジスタ９２におけるＢ０〜Ｂ３１の３２ビットの内の任意の位置の２つのビット、例えば第１９ビットＢ１８と第２６ビットＢ２５を入力して、その排他論理和をとって例えば最上位ビットＢ３１（最下位ビットＢ０に入力してもよい）にシフト入力する構成をとる。
【０１８４】
シフトレジスタ９２には、例えば図１４にあっては汎用レジスタファイル１４から読み出した任意のテストデータＸが初期値としてロードされ、ロード後にシフトクロックを供給することでＥＸ−ＯＲ９４の出力をシフト入力しながら３２ビットシフトデータとしてテストデータを疑似乱数データとして出力して自己診断テストを実行することになる。
【０１８５】
次に図１４の第１実施形態について自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が起動し、演算回路１０−１の自己診断テストの動作を開始する。まず汎用レジスタファイル１４より任意のテストデータＸ，Ｙが読み出され、マルチプレクサ８８，９０で選択され、第１ソースレジスタ２４及び第２ソースレジスタ２６を介してリニアフィードバックシフトレジスタ８４，８６のシフトレジスタに初期データとしてセットされる。
【０１８６】
このようにしてリニアフィードバックシフトレジスタ８４，８６に対する初期データのセットで準備が整うと、自己診断コントローラ４４は制御信号Ｅ２によりマルチプレクサ８８，９０をリニアフィードバックシフトレジスタ８４，８６の出力の選択状態とし、リニアフィードバックシフトレジスタ８４，８６からシフトクロックに同期して出力される疑似乱数のテストデータを使用した自己診断動作を開始する。この自己診断動作は図３の第１実施形態と同じである。
【０１８７】
図１６は、本発明による自己診断機能を備えたプロセッサの第１２実施形態の回路ブロック図である。この第１２実施形態にあっては、図５の２つの減算結果を比較する第２実施形態について、図１５の第１１実施形態と同様、疑似乱数データを発生するリニアフィードバックシフトレジスタ８４，８６を設け、マルチプレクサ８８，９０により疑似乱数データを発生しながら自己診断テストを繰り返し行うようにしたことを特徴とする。これ以外の点は図５の第２実施形態と同じである。
【０１８８】
図１７は、本発明による自己診断機能を備えたプロセッサの第１３実施形態の回路ブロック図である。この第１３実施形態は、図７の第４実施形態について疑似乱数データを発生するリニアフィードバックシフトレジスタ８４，８６と、その選択出力を行うマルチプレクサ８８，９０を設けたことを特徴とし、それ以外の点は図７の第４実施形態と同じである。
【０１８９】
図１８は、本発明による自己診断機能を備えたプロセッサの第１４実施形態の回路ブロック図である。この第１４実施形態は図９の第６実施形態について、疑似乱数発生用のリニアフィードバックシフトレジスタ８４，８６と、その出力を選択するマルチプレクサ８８，９０を設けたことを特徴とし、それ以外の点は図９の第６実施形態と同じである。
【０１９０】
図１９は、本発明による自己診断機能を備えたプロセッサの第１５実施形態の回路ブロック図である。この第１５実施形態にあっては、図８の第５実施形態について疑似乱数発生用のリニアフィードバックシフトレジスタ８４，８６と、その出力を選択するマルチプレクサ８８，９０を設けたことを特徴とし、それ以外の構成及び動作は図８の第５実施形態と同じである。
【０１９１】
図２０は、本発明による自己診断機能を備えたプロセッサの第１６実施形態の回路ブロック図である。この第１６実施形態にあっては、単一のリニアフィードバックシフトレジスタから疑似乱数としてテストデータＸを発生し、１つのテストデータＸについて反転することで１の補数Ｘ１’ｓを求め、減算Ｚ＝Ｘ−Ｙの演算を、その補数Ｘ２’ｓの生成で行い、減算結果Ｚがオールゼロであれば試験対象１０の加減算器１２は正常、オールゼロでなければ加減算器１２の異常を判断する。
【０１９２】
そこで、まず演算回路１０−１を説明すると、レジスタファイル１４に続いてマルチプレクサ２０，２２、第１ソースレジスタ２４及び第２ソースレジスタ２６を設け、更に疑似乱数発生用のリニアフィードバックシフトレジスタ８４を設けている。
【０１９３】
マルチプレクサ２０は汎用レジスタファイル１４からの第１オペランドとしてのソースデータ１６またはリニアフィードバックシフトレジスタ８４からのテストデータのいずれかを選択して出力する。マルチプレクサ２２は汎用レジスタファイル１４からの第２オペランドのソースデータ１８かまたはリニアフィードバックシフトレジスタ８４のテストデータをインバータ９６で反転して１の補数に変換した出力を選択して出力する。
【０１９４】
ここでリニアフィードバックシフトレジスタ８４から出力されるテストデータをＸとすると、自己診断テストの際には第１ソースレジスタ２４にはテストデータＸが保持され、同時に第２ソースレジスタ２６にはインバータ９６で反転して１の補数Ｘ１’ｓに変換した値が保持される。
【０１９５】
第１ソースレジスタ２４と第２ソースレジスタ２６に続いては、キャリー入力Ｃｉｎ付きの２入力の加減算器１２が試験対象１０として設けられている。加減算器１２は第１オペランドＡと第２オペランドＢ、更にキャリー入力Ｃｉｎを入力し、デコーダ５０が加算命令ＡＤＤを出力している場合にはＣ＝Ａ＋Ｂ＋０＝Ａ＋Ｂの演算を実行し、また減算命令ＳＵＢが出力されている場合にはＣ’＝Ａ＋Ｂ＋１＝Ａ＋Ｂ１’ｓの演算を実行する。
【０１９６】
このとき第２ソースレジスタ２６から第２オペランドとして１の補数Ｂ１’ｓが入力されている場合には、Ｃ’＝Ａ＋Ｂ１’ｓ＋１＝Ａ＋Ｂ２’ｓ＝Ａ−Ｂの演算を実行することになる。
【０１９７】
この加減算器１２の演算結果はディストネーションレジスタ３２に保持され、通常の演算処理にあってはデータフォワ−ドパス３５により最終的に汎用レジスタファイル１４に書き込まれて反映される。これに対し本発明による自己診断テストの際には、演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に出力される。
【０１９８】
次に図２０の第１６実施形態における自己診断テストの動作を説明する。ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が動作し、汎用レジスタファイル１４から任意のテストデータＸ，Ｙを読み出し、この内、第１ソースデータ１６としての入力データＸがマルチプレクサ２０、第１ソースレジスタ２４を介してリニアフィードバックシフトレジスタ８４に初期値としてセットされる。
【０１９９】
それ以降は処理サイクルごとに疑似乱数のテストデータとして発生され、マルチプレクサ２０，２２により選択されて第１ソースレジスタ２４に第１オペランドＸとして保持され、一方、第２ソースレジスタ２６にはインバータ９６で反転された第２オペランドＸ１’ｓとして保持される。
【０２００】
加減算器１２は、デコーダ５０が自己診断コントローラ４４の制御により加算命令ＳＵＢを出力していることから、第１オペランドＸ、第２オペランドＸ１’ｓ及びキャリー入力Ｃｉｎ＝１を入力し、
Ｚ＝Ｘ＋Ｘ１’ｓ＋１＝Ｘ＋Ｘ２’ｓ＝Ｘ−Ｘ
の演算を実行し、演算結果Ｚをディストネーションレジスタ３２に保持する。
【０２０１】
ディストネーションレジスタ３２に保持した値は演算結果４０として自己診断コントローラのオールゼロ検出器４８に出力され、全ビットがオール０であれば加減算器１２は正常に動作したものと判断し、オールゼロでなければ加減算器１２に異常があることからエラー実行Ｅ４を外部に出力する。
【０２０２】
この第１６実施形態にあっては、試験対象１０となる加減算器１２を使用した１回目の減算で正常に動作している場合にはオール０となる演算結果を得ているため、図３乃至図１９の実施形態に比べ演算回路１０−１の回路構成が大幅に簡略化できる。また演算回路１０−１の構成が簡単となることに加え、演算処理のサイクルも短いことから、より高速の処理ができる。
【０２０３】
なお、図２０の第１６実施形態にあっては、１回の自己診断テストで試験対象１１となる加減算器１２の演算は１回しか行っておらず、図３〜図１９の実施形態における試験対象１０となる加減算器１２の演算動作が２回行われている場合に比べ、自己診断テストの評価の信頼性はその分、低くなる。これを解消するためには自己診断の演算繰返し数を２倍とすれば、図３乃至図１９の実施形態と同等な自己診断テストの評価結果を得ることができる。
【０２０４】
図２１は、本発明による自己診断機能を備えたプロセッサの第１７実施形態の回路ブロック図である。この第１７実施形態にあっては、基本的には図２０の第１６実施形態と同じ演算回路１０−１の構成を簡略化したものであり、試験対象１０としてキャリー入力のない加減算器６５を対象とした点が相違している。
【０２０５】
この試験対象１１としてキャリー入力Ｃｉｎを持たない加減算器６５を使用したことで、第２ソースレジスタ２６側のマルチプレクサ２２に対するリニアフィードバックシフトレジスタ８４の出力ラインに、テストデータＸを反転して１の補数Ｘ１’ｓを設けるインバータ９６に続いて＋１インクリメント回路９８を設け、１の補数Ｘ１’ｓに１を加えることで２の補数Ｘ２’ｓに変換するようにしている。それ以外の構成は図２０の第６実施形態と同じである。この第１７実施形態の動作は次のようになる。
【０２０６】
ＴＡＰコントローラ４２がＢＩＳＴ  ＳＴＡＲＴ信号をアサートすると、自己診断コントローラ４４が動作し、汎用レジスタファイル１４から読み出した第１ソースデータ１６をマルチプレクサ２０、第１ソースレジスタ２４を介してリニアフィードバックシフトレジスタ８４にセットし、それ以降はリニアフィードバックシフトレジスタ８４からの疑似乱数をテストデータとして自己診断動作が行われる。
【０２０７】
即ち自己診断動作の際には、制御実行Ｅ２によってマルチプレクサ２０，２２はリニアフィードバックシフトレジスタ８４側の出力を選択した状態にある。このときリニアフィードバックシフトレジスタ８４がテストデータＸを出力していたとすると、第１ソースレジスタ２４にはテストデータＸが第１オペランドとして保持され、一方、第２ソースレジスタ２６にはテストデータＸをインバータ９６で反転して１の補数Ｘ１’ｓに変換した後、＋１インクリメント回路９８で１を加えて２の補数Ｘ２’ｓに変換した値が保持される。
【０２０８】
これによって試験対象１０としての加減算器６５は第１オペランドＸと第２オペランドＹ２’ｓを入力し、
Ｚ＝Ｘ＋Ｘ２’ｓ＝Ｘ＋Ｘ１’ｓ＋１＝Ｘ−Ｘ
の演算を実行し、ディストネーションレジスタ３２に保持する。
【０２０９】
このディストネーションレジスタ３２に保持された値Ｚは演算結果４０として自己診断コントローラ４４のオールゼロ検出器４８に入力される。オールゼロ検出器４８は演算結果４０の値Ｚが全ビット０であれば試験対象１０としての加減算器６５は正常と判断する。一方、演算結果４０としての値Ｚが全ビット０でなければ試験対象１０としての加減算器６５は異常と判断し、エラー信号Ｅ４を外部に出力する。
【０２１０】
尚、上記の実施形態にあっては、自己診断テストにおける演算結果がオールゼロとなるように演算回路を構成し且つ自己診断処理を行うようにした実施形態を例にとるものであったが、同様に期待値を使用しなくとも演算結果の検査が容易なオール１が得られるように演算回路及び自己診断処理部を構成するようにしても良い。
【０２１１】
この演算結果としてオール１が得られるようにする構成は、上記の各実施形態の負論理の構成をとった場合である。また本発明は上記の実施形態に限定されず、その目的と利点を損なわない適宜の変形を含む。更に本発明は上記の実施形態に示した数値による限定は受けない。
【０２１２】
以上、本発明の実施形態を説明したが、本発明の実施の形態は、以下に記載する発明を同様に開示している。
【０２１３】
自己診断機能を備えたプロセッサに於いて、
演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
第１又は第２オペランドのいずれか一方を初期値として入力した後の演算周期毎の乱数発生処理により新たなオペランドを発生して第１ソースレジスタに格納する擬似乱数発生器と、
前記乱数発生器が出力する例えばオペランドＢを反転して１を加算するで２の補数Ｂ２’ｓを生成して前記第２ソースレジスタに格納する補数回路と、
減算（Ａ−Ｂ）を実行する場合に、前記補正回路で生成した２の補数Ｂ２’ｓを第１オペランドＡに加算するキャリー入力なしの診断対象となる２入力の加減算器と、
を備え、
自己診断処理部は、擬似乱数発生器から第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，及び補数回路で生成したＸの２の補数Ｘ２’ｓを前記加減算器に入力して減算Ｚ＝（Ｘ−Ｘ）をＺ＝（Ｘ＋Ｘ２’ｓ）＝（Ｘ＋Ｘ１’ｓ＋１）として実行し、減算結果Ｚが全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断する。
【０２１４】
（付記）
（付記１）
診断対象とする加減算器を備えた演算回路と、
自己診断用データを格納するデータ格納部と、
前記自己診断用データを入力して前記演算回路により演算結果がオール０又はオ
−ル１となるように診断処理を実行させる自己診断処理部と、
を備えたことを特徴とするプロセッサ。（１）
【０２１５】
（付記２）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する補数回路と、
前記第１オペランドＡを被減数として入力し、前記補数回路の出力値Ｂ１’ｓを減数としてキャリーと共に入力し、前記１の補数Ｂ１’ｓに１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象となるキャリー入力付きの第１加減算器と、
前記第１加減算器の次段に設けられた第２加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行し、
第２サイクルで前記被減数Ｘと減数Ｙを入れ替えて前記補数回路及び第１加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ’＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行し、
第３サイクルで前記第２加減算器を用いて前記第１及び第２サイクルの減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。（２）
【０２１６】
（付記３）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する第１補数回路と、
前記第１オペランドＡを被減数として入力し、前記第１補数回路の出力値Ｂ１’ｓを減数としてキャリーと共に入力し、前記１の補数Ｂ１’ｓに１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象となるキャリー付きの加減算器と、
前記加減算器の減算値Ｃを反転して１を加算することで２の補数Ｃ２‘ｓを出力する第２補数回路と、
前記加減算器と第２補数回路の出力を比較する比較器と、
を備え、
前記演算回路は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記第１補数回路及び加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行し、
第２サイクルで前記被減数Ｘと減数Ｙを入れ替えて前記第１補数回路及び加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行し、前記第２補数回路から減算結果Ｚ’の補数Ｚ’２ｓ＝（Ｚ１’ｓ＋１）を出力して前記第１サイクルの減算結果Ｚと比較し、両者が一致（Ｚ’２’ｓ＝Ｙ２’ｓ−Ｘ２’ｓ＝Ｘ＋Ｙ２’ｓ＝Ｚ）すれば正常と判断し、不一致であれば異常と判断することを特徴とするプロセッサ。（３）
【０２１７】
（付記４）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１を加えることで２の補数Ｂ２’ｓを出力する補数回路と、
前記第１オペランドＡを被加数として入力し、前記補数回路の出力値Ｂ２’ｓを加数として入力して加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象の第１加減算器と、
前記第１加減算器の次段に設けられた第２加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行し、
第２サイクルで前記被減数Ｘと減数Ｙを入れ替えて前記補数回路及び第１加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行し、
第３サイクルで前記第２加減算器を用いて前記第１及び第２サイクルの減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。（４）
【０２１８】
（付記５）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する補数回路と、
前記第１オペランドＡを被減数として入力し、前記補数回路の出力値Ｂ１’ｓを減数としてキャリーと共に入力し、前記１の補数Ｂ１’ｓに１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象となるキャリー入力付きの加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記補数回路及び加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行し、
第２サイクルで前記被減数Ｘと減数Ｙを入れ替えて前記補数回路及び加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行し、
第３サイクルで前記加減算器を用いて前記第１及び第２サイクルの減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。（５）
【０２１９】
（付記６）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１を加えることで２の補数Ｂ２’ｓを出力する補数回路と、
前記第１オペランドＡを被加数として入力し、前記補数回路の出力値Ｂ２’ｓを加数として入力して加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象の加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記補数回路及び加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行し、
第２サイクルで前記被減数Ｘと減数Ｙを入れ替えて前記補数回路及び加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として実行し、
第３サイクルで前記加減算器を用いて前記第１及び第２サイクルの減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【０２２０】
（付記７）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する第１補数回路と、
前記第１オペランドＡを反転して１の補数Ａ１’ｓを出力する第２補数回路と、
前記第１オペランドＡを被減数として入力し、前記第２補数回路の出力値Ｂ１’ｓを減数としてキャリーと共に入力し、１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象となるキャリー入力付きの第１加減算器と、
前記第２オペランドＢを被減数として入力し、前記第１補数回路のの出力値Ａ１’ｓを減数としてキャリーと共に入力して１を加算した２の補数Ａ２’ｓを内部生成して第２オペランドＢに加算することにより減算Ｃ’＝（Ｂ−Ａ）を実行すキャリー入力付き第２加減算器と、
前記第１加減算器と第２加減算器の出力を加算する第３加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記第１補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行すると同時に、前記第２補数回路及び第２加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として並列に実行し、
第２サイクルで前記第３加減算器を用いて前記第１加減算器と第２加減算器の減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【０２２１】
（付記８）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する第１補数回路と、
前記第１オペランドＡを反転して１の補数Ａ１’ｓを出力する第２補数回路と、
前記第１オペランドＡを被減数として入力し、前記第２補数回路のの出力値Ｂ１’ｓを減数としてキャリーと共に入力し、１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象となるキャリー入力付きの第１加減算器と、
前記第２オペランドＢを被減数として入力し、前記第１補数回路の出力値Ａ１’ｓを減数としてキャリーと共に入力し、１を加算した２の補数Ａ２’ｓを内部生成して第２オペランドＢに加算することにより減算Ｃ’＝（Ｂ−Ａ）を実行する診断対象となるキャリー入力付き第２加減算器と、
前記第２加減算器の減算値Ｃ’を反転して１を加算することで２の補数Ｃ’２’ｓを出力する第３補数回路と、
前記加減算器と第３補数回路の出力を比較する比較器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、第１サイクルで前記第１補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行すると同時に、前記第２補数回路及び第２加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として並列に実行し、
第２サイクルで前記第３補数回路から前記第２加減算器の減算結果Ｚ’の補数Ｚ‘２’＝（Ｚ１’ｓ＋１）を出力して前記第１加減算器の減算結果Ｚとを前記比較器で比較し、両者が一致（Ｚ’２’ｓ＝Ｙ２’ｓ−Ｘ２’ｓ＝Ｘ＋Ｙ２’ｓ＝Ｚ）すれば正常と判断し、不一致であれば異常と判断することを特徴とするプロセッサ。
【０２２２】
（付記９）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１を加算することで２の補数Ｂ２’ｓを出力する第１補数回路と、
前記第１オペランドＡを反転して１を加算することで２の補数Ａ２’ｓを出力する第２補数回路と、
前記第１オペランドＡを被減数として入力し、前記第１補数回路の出力値Ｂ２’ｓを減数として入力して減算Ｃ＝（Ａ−Ｂ）を実行する診断対象の第１加減算器と、
前記第２オペランドＢを被減数として入力し、前記第２補数回路の出力値Ａ２’ｓを減数として入力して減算Ｃ’＝（Ｂ−Ａ）を実行する第２加減算器と、
前記第１加減算器と第２加減算器の出力を加算する第３加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記第１補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行すると同時に、前記第２補数回路及び第２加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として並列に実行し、
第２サイクルで前記第３加減算器を用いて前記第１加減算器と第２加減算器の減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【０２２３】
（付記１０）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１の補数Ｂ１’ｓを出力する第１補数回路と、
前記第１オペランドＡを反転して１の補数Ａ１’ｓを出力する第２補数回路と、
前記第１オペランドＡを被減数として入力し、前記第２補数回路のの出力値Ｂ１’ｓを減数としてキャリーと共に入力し、１を加算した２の補数Ｂ２’ｓを内部生成して第１オペランドＡに加算することにより減算Ｃ＝（Ａ−Ｂ）を実行する診断対象となるキャリー入力付きの第１加減算器と、
前記第２オペランドＢを被減数として入力し、前記第１補数回路の出力値Ａ１’ｓを減数としてキャリーと共に入力し、１を加算した２の補数Ａ２’ｓを内部生成して第２オペランドＢに加算することにより減算Ｃ’＝（Ｂ−Ａ）を実行するキャリー入力付き第２加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記第１補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行すると同時に、前記第２補数回路及び第２加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）＝（Ｙ＋Ｘ１’ｓ＋１）として並列に実行し、
第２サイクルで前記第１加減算器を用いて第１サイクル目の前記第１加減算器と第２加減算器の減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【０２２４】
（付記１１）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドＡを格納する第１ソースレジスタと、
第２オペランドＢを格納する第２ソースレジスタと、
前記第２オペランドＢを反転して１を加算することで２の補数Ｂ２’ｓを出力する第１補数回路と、
前記第１オペランドＡを反転して１を加算することで２の補数Ａ２’ｓを出力する第２補数回路と、
前記第１オペランドＡを被減数として入力し、前記第１補数回路の出力値Ｂ２’ｓを減数として入力して減算Ｃ＝（Ａ−Ｂ）を実行する診断対象の第１加減算器と、
前記第２オペランドＢを被減数として入力し、前記第２補数回路の出力値Ａ２’ｓを減数として入力して減算Ｃ’＝（Ｂ−Ａ）を実行する第２加減算器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用し、
第１サイクルで前記第１補数回路及び第１加減算器を用いて減算Ｚ＝（Ｘ−Ｙ）をＺ＝（Ｘ＋Ｙ２’ｓ）＝（Ｘ＋Ｙ１’ｓ＋１）として実行すると同時に、前記第２補数回路及び第２加減算器を用いて減算Ｚ’＝（Ｙ−Ｘ）をＺ＝（Ｙ＋Ｘ２’ｓ）
＝（Ｙ＋Ｘ１’ｓ＋１）として並列に実行し、
第２サイクルで前記第１加減算器を用いて第１サイクル目の前記第１加減算器と第２加減算器の減算結果Ｚ，Ｚ’の加算Ｚ’’＝（Ｚ＋Ｚ’）＝（Ｘ＋Ｘ１’ｓ＋１＋Ｙ＋Ｙ１’ｓ＋１）を実行し、加算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【０２２５】
（付記１１）
付記２乃至１０のいずれかに記載のプロセッサに於いて、
前記演算回路は、更に、
前記第１ソースレジスタに格納した第１オペランドＡを初期値して入力した後の演算周期毎に新たな第１オペランドを乱数処理により発生して前記第１ソースレジスタに格納する第１擬似乱数発生器と、
前記第２ソースレジスタに格納した第２オペランドＢを初期値として入力した後の演算周期毎に新たな第２オペランドを乱数処理により発生して前記第２ソースレジスタに格納する第２擬似乱数発生器と、
を備え、
前記自己診断処理部は、前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｙを使用した自己診断処理が正常終了する毎に、前記第１及び第２擬似乱数発生器に新たな自己診断用データＸ，Ｙを生成させて自己診断処理を繰返し実行することを特徴とするプロセッサ。
【０２２６】
（付記１２）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドを格納する第１ソースレジスタと、
第２オペランドを格納する第２ソースレジスタと、
前記第１又は第２オペランドのいずれか一方を初期値として入力した後の演算周期毎の乱数発生処理により新たなオペランドＡを発生して第１ソースレジスタに格納する擬似乱数発生器と、
前記乱数発生器が発生するオペランドＡを反転した１の補数Ａ１’ｓを前記第２ソースレジスタに格納する補数回路と、
前記第１オペランドＢを被減数として入力し、前記２オペランドＡ１’ｓを減数としてキャリーと共に入力して１を加算した２の補数Ａ２’ｓを内部生成して加算することにより減算Ｃ＝（Ａ−Ａ）を実行する診断対象となるキャリー入力付きの加減算器と、
を備え、
前記自己診断処理部は、前記擬似乱数発生器から前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｘ１’ｓをキャリーと共に前記加減算器に入力して減算Ｚ＝（Ｘ−Ｘ）をＺ＝（Ｘ＋Ｘ２’ｓ）＝（Ｘ＋Ｘ１’ｓ＋１）として実行し、減算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【０２２７】
（付記１３）
付記１記載のプロセッサに於いて、
前記演算回路は、
第１オペランドを格納する第１ソースレジスタと、
第２オペランドを格納する第２ソースレジスタと、
前記第１又は第２オペランドのいずれか一方を初期値として入力した後の演算周期毎の乱数発生処理により新たなオペランドＡを発生して第１ソースレジスタに格納する擬似乱数発生器と、
前記乱数発生器が出力するオペランドＡを反転して１を加算するで２の補数Ａ２‘ｓを生成して前記第２ソースレジスタに格納する補数回路と、
前記第１オペランドＡを被減数として入力し、前記第２オペランドＡ２’ｓを減数として入力して減算Ｃ＝（Ａ−Ａ）を実行する診断対象となる加減算器と、
を備え、
前記自己診断処理部は、前記擬似乱数発生器から前記第１及び第２ソースレジスタに格納した所定ビット長の任意の自己診断用データＸ，Ｘ１’ｓを前記加減算器に入力して減算Ｚ＝（Ｘ−Ｘ）をＺ＝（Ｘ＋Ｘ２’ｓ）＝（Ｘ＋Ｘ１’ｓ＋１）として実行し、減算結果が全ビット０の場合は正常と判断し、全ビット０以外の場合には異常と判断することを特徴とするプロセッサ。
【図面の簡単な説明】
【０２２８】
【図１】本発明の原理説明図
【図２】本発明の基本構成を示したブロック図
【図３】本発明の第１実施形態の回路ブロック図
【図４】図３のキャリー入力つき２入力加減算器の回路図
【図５】本発明の第２実施形態の回路ブロック図
【図６】本発明の第３実施形態の回路ブロック図
【図７】本発明の第４実施形態の回路ブロック図
【図８】本発明の第５実施形態の回路ブロック図
【図９】本発明の第６実施形態の回路ブロック図
【図１０】本発明の第７実施形態の回路ブロック図
【図１１】本発明の第８実施形態の回路ブロック図
【図１２】本発明の第９実施形態の回路ブロック図
【図１３】本発明の第１０実施形態の回路ブロック図
【図１４】擬似乱数発生を用いた本発明の第１１実施形態の回路ブロック図
【図１５】図１４で擬似乱数を発生するリニアフィードバックシフトレジスタの回路図
【図１６】擬似乱数発生を用いた本発明の第１２実施形態の回路ブロック図
【図１７】擬似乱数発生を用いた本発明の第１３実施形態の回路ブロック図
【図１８】擬似乱数発生を用いた本発明の第１４実施形態の回路ブロック図
【図１９】擬似乱数発生を用いた本発明の第１５実施形態の回路ブロック図
【図２０】擬似乱数発生を用いた本発明の第１６実施形態の回路ブロック図
【図２１】擬似乱数発生を用いた本発明の第１７実施形態の回路ブロック図
【図２２】従来のプロセッサの基本的なハードェア構成のブロック図
【図２３】図２２のプロセッサにおける命令デコーダを含む整数演算器の基本構成のブロック図
【図２４】自己診断回路を内蔵した従来の加減算回路のブロック図
【符号の説明】
【０２２９】
１０−１：演算回路
１０−２：自己診断処理部
１１：試験対象
１２，７２：加減算器（キャリー入力付き２入力加減算器）
１４：汎用レジスタファイル
１６：ソースデータ（第１オペランド）
１８：ソースデータ（第２オペランド）
２０，２２，２８，６４，６６，６８，８０，８２，８８，９０：セレクタ
２４：第１ソースレジスタ
２６：第２ソースレジスタ
３０，５６，７０，７６，９６：インバータ
３２，３４，３８，７４：ディスティネーションレジスタ
３６：加減算器
４０：演算結果
４２：テストアクセスポートコントローラ（ＴＡＰコントローラ）
４４：自己診断コントローラ（ＢＩＳＴコントローラ）
４８：オールゼロ検出器
５０：デコーダ
５２：オペコード
５４：比較器
５８，６１，７８，９８：＋１インクリメント
６０：エラー検出器
６５：加減算器（キャリー入力なし）
８４，８８：リニアフィードバックシフトレジスタ（ＬＦＳＲ）
９２：シフトレジスタ
９４：ＥＸ−ＯＲ
【図１】
2006286015.tif 000003
【図２】
2006286015.tif 000004
【図３】
2006286015.tif 000005
【図４】
2006286015.tif 000006
【図５】
2006286015.tif 000007
【図６】
2006286015.tif 000008
【図７】
2006286015.tif 000009
【図８】
2006286015.tif 000010
【図９】
2006286015.tif 000011
【図１０】
2006286015.tif 000012
【図１１】
2006286015.tif 000013
【図１２】
2006286015.tif 000014
【図１３】
2006286015.tif 000015
【図１４】
2006286015.tif 000016
【図１５】
2006286015.tif 000017
【図１６】
2006286015.tif 000018
【図１７】
2006286015.tif 000019
【図１８】
2006286015.tif 000020
【図１９】
2006286015.tif 000021
【図２０】
2006286015.tif 000022
【図２１】
2006286015.tif 000023
【図２２】
2006286015.tif 000024
【図２３】
2006286015.tif 000025
【図２４】
2006286015.tif 000026