JP2002099447A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP2002099447A
JP2002099447A JP2000287950A JP2000287950A JP2002099447A JP 2002099447 A JP2002099447 A JP 2002099447A JP 2000287950 A JP2000287950 A JP 2000287950A JP 2000287950 A JP2000287950 A JP 2000287950A JP 2002099447 A JP2002099447 A JP 2002099447A
Authority
JP
Japan
Prior art keywords
adder
self
complement
operand
subtraction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000287950A
Other languages
English (en)
Inventor
Akihiko Owada
昭彦 大和田
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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2000287950A priority Critical patent/JP2002099447A/ja
Priority to US09/814,856 priority patent/US6721905B2/en
Publication of JP2002099447A publication Critical patent/JP2002099447A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Microcomputers (AREA)

Abstract

(57)【要約】 【課題】期待値を必要とせず入力データのみにより演算
器の自己診断を可能にして実装した自己診断回路の規模
を小さくする。 【解決手段】自己診断機能を備えたプロセッサであり、
診断対象となる加減算器12を備えた演算回路10−1
と、自己診断用データを格納するデータ格納部14と、
自己診断用データを入力して演算回路により演算結果が
全ビットがオール0(はオール1)となるように診断処
理を実行させる自己診断処理部10−2とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、自己診断機能を内
蔵したプロセッサに関し、特に診断結果を評価する期待
値データを必要とすることなく加減算器の自己診断を可
能とするプロセッサに関する。
【0002】
【従来の技術】従来、自己診断機能を内蔵したプロセッ
サ等の集積回路の製造工程にあっては、集積回路に自己
診断回路としてTAPコントローラ(Test Access Port
Controler)を内蔵し、ウェハー製造段階やパッケージ
製造段階において、内蔵RAMや内蔵演算器に対する自
己診断テストを実施することにより、製造不具合を起し
ている集積回路を発見して取除き、自己診断テストをパ
スした集積回路を使用することで、LSIパッケージ組
上げやプロセッサ・モジュール組上げの無駄を防止し、
ウェハー製造後の工程における歩留りを向上するように
している。
【0003】図22はプロセッサの基本的なハードウェ
ア構成である。図22において、命令メモリマネジメン
トユニット(IMMU)は、命令TLB(Instruction T
ranslation Lookaside Buffer)を使用して論理アドレ
スと部率アドレスの間の変換を行い、プリフェッチユニ
ット104により分岐予測108による命令フィールド
106に命令キャッシュ110からプリフェッチを行
う。命令キュッシュ110とプロセッサローカルタンタ
ーコネクタ114との間には更に2次キャッシュ112
が設けられ、プロセッサローカルタンターコネクタ11
4を介して外部ユニットと接続される。
【0004】命令キャッシュ110から取出された命令
は、プリデコードユニット116でプリデコードされた
後、命令バッファ118に格納され、ディスパッチユニ
ット120により分岐ユニット122、整数演算器レジ
スタファイル(IEUレジスタファイル)124、浮動
小数点演算器レジスタファイル(FPUレジスタファイ
ル)128に分配される。
【0005】IEUレジスタファイル124に続いては
整数演算器(IE ALU)130−1,130−2が
設けられ、整数演算命令を実行して完了ユニット134
に出力し、ロードストアユニット126からの指示でロ
ード又はストアが行われる。
【0006】また浮動小数点演算器レジスタファイル1
28に続いては浮動小数点演算器(FP ALU)13
2−1,132−2が設けられ、浮動小数点演算命令を
実行して完了ユニット136に出力し、ロードストアユ
ニット126からの指示でロード又はストアが行われ
る。
【0007】図23は、図22のプロセッサにおける命
令デコーダを含む整数演算器の基本構成である。ディス
パッチユニット138から整数演算命令はステージング
ラッチ144でラッチされ、デコーダ150で解読され
る。ソースレジスタ140は命令の第1オペランドを格
納し、ソースレジスタ142は第2オペランドを格納
し、各々のステージングラッチ146,148でラッチ
し、演算器(ALU)152に入力する。
【0008】演算器152はデコーダ150で解読され
た加算命令ADD又は減算命令SUBの演算指示を受け
て、2つの入力データの加算又は減算を実行してステー
ジングラッチ156にラッチさせる。ステージングラッ
チ156の演算結果は、マルチプレクサ164からステ
ージングラッチ166を介してディスティネーションレ
ジスタ168に格納される。
【0009】デコーダ150で解読された加算命令AD
Dと減算名一実施例SUB以外の演算命令は、ステージ
ングラッチ154でラッチされた後に論理命令ユニット
162に与えられ、このときステージジングラッチ15
8,160を介して入力する2つのデータについて、A
ND、OR、NAND、NPR、XOR又はXNORの
論理演算を実行し、演算結果はマルチプレクサ164及
びステージングラッチ166を介してディスティネーシ
ョンレジスタ168に格納される。
【0010】このような演算器を内蔵したプロセッサ
は、例えば図24の演算器152に設けた加減算器を対
象とする自己診断回路を実装し、ウェハー製造段階やパ
ッケージ製造段階において、内蔵演算器に対する自己診
断テストを実施する。
【0011】図24は、自己診断回路を実装した従来の
加減算回路の構成である。図24において、試験対象部
200には例えばキャリー入力Cin付きの2入力の加減
算器202が実装されている。
【0012】加減算器202の入力側には、汎用レジス
タファイル204、セレクタ210,212、ソースレ
ジスタ214,215が設けられる。ソースレジスタ2
15の出力は2つに分岐されセレクタ218の一方に直
接入力されると共に、インバータ216で反転してセレ
クタ218の他方に入力される。セレクタ218は加減
算器202に対する加算入力と減算入力を切替える。加
減算器200の演算結果はディストネーションレジスタ
220に格納される。
【0013】また加減算器202の加算と減算は、オペ
コード232を解読したデコーダ230の加算命令AD
D又は減算命令SUBに基づいて行われる。いまソース
レジスタ214,216のデータを各々A,Bとする
と、デコーダ230から加算命令ADDが出された場
合、セレクタ218はソースレジスタ215の値Bを選
択して加減算器202に入力し、同時に加減算器202
のキャリー入力をCin=0として、このため加減算器2
02はC=A+Bの加算を実行する。
【0014】またデコーダ230から減算命令SUBが
出された場合、セレクタ218はソースレジスタ215
の値Bを反転したインバータ216の出力を選択して加
減算器202に入力し、同時に加減算器202のキャリ
ー入力をCin=1として、このため加減算器202はC
=A−Bの減算を実行する。尚、加減算器202による
C=A−Bの減算は、インバータ216によるBの反転
値は1の補数B1's であり、これにキャリー入力Cin=
1を加減算器202の内部で加算するこで2の補数B2'
s を求め、これをAに加算することでC=A−B=A+
B1's +1=A+B2's とて減算を行っている。
【0015】このような加減算回路に対する自己診断回
路として、TAPコントローラ(Test Access Port コ
ントローラ)226と比較器234を備えた自己診断コ
ントローラ228が設けられる。
【0016】この自己診断回路を実装したプロセッサに
あっては、自己診断の開始に先だち、TAPコントロー
ラ226は外部のRAM等から膨大な量の自己診断用の
入力データと、入力データを用いた自己診断により演算
器が正常に動作したときに得られる膨大な量の期待値デ
ータを汎用レジスタファイル204に読込んで準備す
る。
【0017】次にTAPコントローラ226は自己診断
コントローラ228を起動し、最初のサイクルで汎用レ
ジスタファイル204から第1オペランドとしてのソー
スデータ206、第1オペランドしてのソースデータ2
08、更に期待値225を読み出し、ソースデータ20
6,208はセレクタ210,212を介してソースレ
ジスタ214,215に格納する。また期待値225は
自己診断コントローラ228の比較器234の一方の入
力にセットする。
【0018】次のサイクルでは、例えば加算命令ADD
によって2つのソースデータの加算を行ってディストネ
ーションレジスタ220に格納し、この加算結果224
を自己診断コントローラ228の比較器234で既に読
み出している期待値225と比較する。
【0019】比較234により両者が一致すれば演算器
202は正常であり、不一致の場合は演算器202の異
常と判断しエラーを外部に出力し、エラーを起したプロ
セッサを製造工程から取除く。
【0020】このような自己診断処理を汎用レジスタフ
ァイル204に準備した全ての入力データと期待値につ
いて実行して異常がなけば、そのプロセッサは試験にパ
スし、次の工程に送られる。
【0021】また図24の演算回路には、擬似乱数発生
器として動作するリニアフィードバックレジスタ(LFS
R: LineAr Feedback Shift Register)236,238
が設けられ、汎用レジスタファイル204から読み出し
たデータX,Yをソースレジスタ214,215を介し
て初期値としてセットした後に、自己診断コントローラ
228からの制御で擬似乱数を発生して自己診断を行う
ことができる。
【0022】この擬似乱数を発生する自己診断にあって
も、診断時に発生する乱数に対応した期待値を予め準備
して汎用レジスタファイル204に読み込んでおく必要
があり、入力データの準備と読込みは不要にできるが、
期待値を必要とする。
【0023】
【発明が解決しようとする課題】しかしながら、このよ
うな演算器を内蔵したプロセッサ等の集積回路におい
て、集積回路に演算器の自己診断機能を実装した場合、
自己診断テストを実施する際に、外部のRAM等から膨
大な量の自己診断用の入力データと、入力データを用い
た自己診断により演算器が正常に動作したときに得られ
る膨大な量の期待値データを読み込み、入力データに基
づく演算結果が格納されるシグネチャ・レジスタの値と
期待値とを比較する処理を繰り返しており、大規模で且
つ複雑な自己診断回路を必要としている。
【0024】このため集積回路に演算器の自己診断機能
を実装した場合には、集積回路の本体であるシリコン半
導体の部分のサイズを小型化してウェハーから製造でき
るチップの数を増すことで歩留りを向上しようとして
も、大規模で且つ複雑な自己診断回路の実装によってダ
イサイズを小さくすることができず、歩留りの低下を招
いている。
【0025】またダイサイズの小型化によってプロセッ
サの低消費電力化を計ろうとしても、自己診断回路が大
規模で複雑になるため、ダイサイズを小さくすることが
できず、低消費電力化が十分に実現できない問題があっ
た。
【0026】更に、プロセッサ等の集積回路の製造にあ
っては、その月の生産台数によってプロセッサ1台辺り
の自己診断テストに割当てることのできる時間が決ま
り、この割当て時間に合せて自己診断に使用する入力デ
ータとその期待値データを作り直しており、その準備に
手間と時間がかかる問題があった。
【0027】本発明は、期待値データを必要とせずに入
力データのみを使用して演算器の自己診断ができるプロ
セッサ等の自己診断機能付きの集積回路を提供すること
を目的とする。
【0028】
【課題を解決するための手段】図1は本発明の原理説明
図である。本発明は、自己診断機能を備えた集積回路を
対象とし、診断対象となる加減算器12を備えた演算回
路10−1と、自己診断用データを格納するデータ格納
部14と、自己診断用データを入力して演算回路10−
1により演算結果が全ビットがオール0(はオール1)
となるように診断処理を実行させる自己診断処理部10
−2とを備えたことを特徴とする。
【0029】本発明は、任意の自己診断用の入力データ
に対して、演算結果として検査が容易な全てビットがオ
ール0(又はオール1)が得られるように演算回路及び
自己診断処理部を構成したことにより、期待値および期
待値の比較回路を不要にして、自己診断を実現するため
に必要な回路規模を小さくし、これによってダイサイズ
の小形化を実現し、プロセッサの歩留り向上や低消費電
力化に寄与する自己診断機能を実装したプロセッサ等の
集積回路を実現する。
【0030】ここで自己診断処理部は、2つの入力デー
タをX,Yとすると、次の加減算により演算結果をオー
ル0とした自己診断を行う。
【0031】 (1)Xを被減数、Yを減数とする減算 Z =X−Y (2)Yを被減数、Xを減数とする減算 Z´=Y−X (3)2つの減算結果の加算 Z''=Z´+Z (4)加算結果がオール0で正常、オール0でなければ異常 具体的な例としては、まず演算回路10−1として、図
1(B)のように、第1オペランドAを格納する第1ソ
ースレジスタ24と、第2オペランドBを格納する第2
ソースレジスタ26と、第2オペランドBを反転して1
の補数B1's を出力する補数回路(インバータ)30
と、第1オペランドAを被減数として入力し、補数回路
30の出力値B1's を減数としてキャリーCinと共に入
力し、1の補数B1's に1を加算した2の補数B2's を
内部生成して第1オペランドAに加算することにより減
算C=(A−B)を実行する試験対象となるキャリー入
力付きの第1加減算器12と、第1加減算器12の次段
に設けられた第2加減算器36とを備える。
【0032】このような演算回路10−1を対象に自己
診断処理部10−2は、第1及び第2ソースレジスタ2
4,26に格納した所定ビット長の任意の自己診断用デ
ータX,Yを使用して次の診断処理を行う。 (1)第1サイクルで補数回路30及び第1加減算器1
2を用いて減算Z=(X−Y)をZ=(X+Y2's )=
(X+Y1's +1)として実行する。 (2)第2サイクルで被減数Xと減数Yを入れ替えて補
数回路30及び第1加減算器12を用いて減算Z’=
(Y−X)をZ=(Y+X2's )=(Y+X1's +1)
として実行する。 (3)第3サイクルで第2加減算器36を用いて第1及
び第2サイクルの減算結果Z,Z’の加算Z''=(Z+
Z’)=(X+X1's +1+Y+Y1's +1)を実行す
る。 (4)加算結果が全ビット0であれば正常と判断し、全
ビット0以外の場合は異常と判断する。
【0033】また自己診断処理部10−2は、別の形態
として、2つの入力データをX,Yとすると、次の減
算、変換、比較判定により自己診断を行う。
【0034】 (1)Xを被減数、Yを減数とする減算 Z =X−Y (2)Yを被減数、Xを減数とする減算 Z´=Y−X (3)減算結果Z´につき2の補数Z2's を算出 Z'2's=Z1's +1 (3)比較 Z=Z'2's (4)一致で正常、不一致で異常 この場合の具体的な例としては、まず演算回路は、第1
オペランドAを格納する第1ソースレジスタと、第2オ
ペランドBを格納する第2ソースレジスタと、第2オペ
ランドBを反転して1の補数B1's を出力する第1補数
回路と、第1オペランドAを被減数として入力し、反転
回路の出力値B1's を減数としてキャリーCin=1と共
に入力して1の補数B1's に1を加算した2の補数B2'
s を内部生成して第1オペランドAに加算することによ
り減算C=(A−B)を実行する試験対象となるキャリ
ー入力付きの加減算器と、加減算器の減算値Cを反転し
て1を加算することで2の補数C2's を出力する第2補
数回路と、加減算器と第2補数回路の出力を比較する比
較器とを備える。
【0035】このような演算回路を対象に自己診断回路
は、第1及び第2ソースレジスタに格納した所定ビット
長の任意の自己診断用データX,Yを使用して次の処理
を実行する。 (1)第1サイクルで前記第1補数回路及び加減算器を
用いて減算Z=(X−Y)をZ=(X+Y2's )=(X
+Y1's +1)として実行する。 (2)第2サイクルで被減数Xと減数Yを入れ替えて第
1補数回路及び加減算器を用いて減算Z’=(Y−X)
をZ=(Y+X2's )=(Y+X1's +1)として実行
し、第2補数回路から減算結果Z´の補数Z'2' =(Z
1's +1)を出力して第1サイクルの減算結果Zと比較
し、両者が一致(Z'2's=Y2's −X2's=X+Y2's
=Z)すれば正常と判断し、不一致であれば異常と判断
する。
【0036】ここで比較器で判断する Z'2's=Y2's −X2's =X+Y2's =Z (1) の成立を証明すると次のようになる。
【0037】 Z =X−Y=X+Y1's +1=X+Y2's (2) Z´=Y−X=Y+X1's +1=Y+X2's (3) (2)より Y2's =−Y (4) (3)より X2's =−X (5) 従って(4)(5)を(1)に代入して変形すると、 Z'2's=Y2's −X2's =−Y−(−X) =−Y+X =X−Y となる。ここで右辺第2項の−Yに(2)式を代入する
と、 Z'2's=X+Y2's =Z となり、(1)のZ'2's=Zの関係が成立する。
【0038】このような自己診断の演算結果をオール0
もしくは2つの演算結果を一致させる具体的な演算回路
の構成と自己診断処理については、様々な変形がある。
【0039】
【発明の実施の形態】図2は本発明によるプロセッサの
基本構成を示した回路ブロック図である。
【0040】図2において、本発明による自己診断機能
付きのプロセッサは、診断対象とする加減算器12を備
えた演算回路10−1、自己診断用データを格納するデ
ータ格納部としての汎用レジスタファイル14、オペコ
ードを入力して解読することにより加算命令ADDまた
は減算命令SUBを出力するデコーダ50を備える。
【0041】このような試験対象としての加減算器12
を含む演算回路10−1に対し、自己診断処理部10−
2が設けられる。自己診断処理部10−2にはTAPコ
ントローラ(Test Access Port controller )42と自
己診断コントローラ44が設けられる。TAPコントロ
ーラ42はLSI製造工程におけるウェハー製造段階や
パッケージ製造段階において、LSIに内蔵しているR
AMや内蔵演算器に対する自己診断テストを自己診断コ
ントローラ44の制御により行う。
【0042】即ち、自己診断対象となる加減算器12を
備えた演算回路10−1にあっては、入力テストデータ
X,Yについて2の補数を生成できるように構成してお
り、自己診断処理の際には2つの入力テストデータX,
Yについて (1)Xを被減数、Yを減数とする減算Z=X−Y (2)Yを被減数、Xを減数とする減算Z´=Y−X (3)2つの減算結果の加算Z''=Z+Z´=0 を実行し、最終的な演算結果ZZの全ビットが0となる
ことを確認することにより演算結果と期待値との比較を
不要とした演算回路10−1の自己診断処理を実行す
る。
【0043】また本発明の自己診断処理の別の形態にあ
っては、2つの入力テストデータX,Yにつき次の減
算、変換、比較判定を行う。 (1)Xを被減数、Yを減数とする減算Z=X−Y (2)Yを被減数、Xを減数とする減算Z´=Y−X (3)減算結果Z´につき2の補数Z2's を算出する。
Z2's =Z1's +1 (4)減算結果と変換結果の比較Z=Z2's そして、この比較結果の一致を確認することにより演算
結果と期待値の比較を不要とするような自己診断を実行
する。
【0044】図3は、本発明による自己診断機能付きプ
ロセッサの第1実施形態であり、この第1実施形態にあ
っては演算回路に対し演算結果が全ビットにつきオール
0となるように演算して、この演算結果を確認するよう
にしたことを特徴とする。
【0045】図3において、第1実施形態のプロセッサ
は、演算回路部10−1と自己診断処理部10−2から
構成される。自己診断処理部10−2にはTAPコント
ローラ42と自己診断コントローラ44が設けられてい
る。TAPコントローラ42はLSI製造工程における
ウェハー製造段階やパッケージ製造段階において、演算
回路10−1に内蔵している試験対象11としての加減
算器12に対する自己診断テストを制御する。具体的に
は自己診断コントローラ44に対するBIST START 信号
により起動をみか、診断終了をBIST DONE 信号により受
け取る。
【0046】自己診断コントローラ44は、TAPコン
トローラ42からのBIST START信号により動作し、演算
回路10−1側を制御して自己診断テストを実行する。
この自己診断コントローラ44にはオールゼロ検出器4
8が設けられており、演算回路10−1からの自己診断
テストによる演算結果40を入力し、演算結果40の全
ビットがオールゼロであれば試験対象11としての加減
算器12は正常であると判断し、一方、全ビットがオー
ルゼロでなかった場合には試験対象11としての加減算
器12の異常と判断し、エラー信号E4を外部に出力し
てエラーの検出通知を行う。
【0047】次に自己診断テストの対象となる演算回路
10−1側を説明する。演算回路10−1には、汎用レ
ジスタファイル14、マルチプレクサ20,22、第1
ソースレジスタ24、第2ソースレジスタ26、1の補
数を生成する補数回路としてのインバータ30、マルチ
プレクサ28、試験対象11となるキャリーインCin
付きの2入力の加減算器12、ディストネーションレジ
スタ32,34,38、キャリー入力を持たない2入力
の加減算器36及びデコーダ50が設けられる。
【0048】デコーダ50はプログラムのオペコード5
2を入力し、演算器に対する命令として加算命令ADD
または減算命令SUBをデコードする。汎用レジスタフ
ァイル14は、プロセッサ内部で使用する整数データ、
アドレスなどのデータを保持するレジスタの集合であ
り、本発明の自己診断テストにあっては、自己診断に使
用する予め準備されたテストデータが外部のRAMなど
からライトポートWRを通じて予め読み込まれている。
【0049】この汎用レジスタファイル14の格納デー
タは第1ソースデータ16及び第2ソースデータ18と
してリードポートRDから読み出され、マルチプレクサ2
0,22を介して第1ソースレジスタ24と第2ソース
レジスタ26に格納される。自己診断テストの際には、
汎用レジスタファイル14より第1テストデータXと第
2テストデータYが読み出され、第1ソースレジスタ2
4及び第2ソースレジスタ26にそれぞれ格納される。
ここで、この実施形態で扱うデータは例えば32ビット
幅のデータである。
【0050】マルチプレクサ20は、自己診断コントロ
ーラ44からの制御信号E2により第1ソースデータ1
6の値と第1ソースレジスタ24の値を選択して出力す
る。同様にマルチプレクサ22は自己診断コントローラ
44からの制御信号E2により第2ソースデータ18の
値と第2ソースレジスタ26の値を選択して出力する。
【0051】ここで第1ソースレジスタ24は加減算器
の第1オペランドの値を保持し、また第2ソースレジス
タ26は加減算器の第2オペランドの値を保持する。
【0052】インバータ30は、第2ソースレジスタ2
6に保持されている値を反転し、1の補数を生成する補
数回路として機能する。マルチプレクサ28はデコーダ
50からの演算命令により第2ソースレジスタ26の値
とインバータ30の値を選択して出力する。本発明の自
己診断テストにあっては、デコーダ50からの減算命令
SUBが出力され、マルチプレクサ28はインバータ3
0から出力を選択し、第2ソースレジスタ26の値を反
転した1の補数を出力する。
【0053】この第1実施形態の試験対象11となる加
減算器12は、デコーダ50の出力をキャリー入力Ci
nとしたキャリー入力付きの2入力の加減算器であり、
加算命令ADDの場合にはキャリー入力はCin=0と
なり、一方、減算命令SUBの際にはキャリー入力はC
in=1となる。
【0054】このため通常の加算命令ADDの際には、
加減算器12の第1オペランドをA、第2オペランドを
B、加算出力をCとすると、C=A+Bの加算を行う。
また加減算器12は自己診断テストの際にはデコーダ5
0より減算命令SUBを受けることから、第1ソースレ
ジスタ24の値を第1オペランドA、第2ソースレジス
タ26の値を第2オペランドBとすると、マルチプレク
サ28により第2オペランドBを反転した1の補数B1'
s を生成し、更に加減算器12に対するキャリー入力C
in=1により第2オペランドBの2の補数B2's (=
B1's +1)を生成することにより C´=A+B2's =A−B の減算命令を実行する。
【0055】図3のキャリー入力Cin付きの2入力の
加減算器12は、具体的には図4の回路構成を持ってい
る。演算器10は加減算器12−1と加減算器12−2
で構成され、加減算器12−1の一方に命令の第1オペ
ランドAを入力し、他方には加減算器12−2の加算結
果を入力している。加減算器12−2は命令の第2オペ
ランドBとキャリー入力Cinを加算して出力する。し
たがって加減算器12の加算出力CはC=A+B+Ci
nとなり、このキャリー入力Cinはデコーダ50から
の加算命令ADDでCin=0、減算命令SUBでCi
n=1となっている。
【0056】再び図3を参照するに、加減算器12の出
力側に設けたディストネーションレジスタ32は、通常
の演算処理にあっては加減算器12の演算結果を保持
し、保持した演算結果の値をデータフォワードパス35
に出力し、最終的に汎用レジスタファイル14に演算結
果を反映させる。
【0057】また本発明による自己診断テストの際に
は、2サイクル目の演算結果である減算結果Z´=Y−
X(=Y+X2's =Y+X1's +1)の値が保持され
る。また次のディストネーションレジスタ34は、自己
診断テストの際には1サイクル目の減算結果となるZ=
X−Y(=X+Y2's =X+Y1's +1)の値が保持さ
れる。
【0058】2入力の加減算器36は、自己診断テスト
の際にのみ有効となり、自己診断コントローラ44から
の制御信号E3を受けて減算器12による2回の減算で
得られたディストネーションレジスタ34の減算結果Z
とディストネーションレジスタ32の減算結果Z´の加
算により、Z''=Z+Z´=(X−Y)+(Y−X)=
X+Y2's +Y+X2's を演算する。
【0059】加減算器36の出力段のディストネーショ
ンレジスタ38は、自己診断テストの最終的な演算結果
Z''=Z+Z´を保持するもので、この演算結果40は
自己診断コントローラ44のオールゼロ検出器48に与
えられ、オールゼロの確認が行われる。
【0060】次に図3の第1実施形態における通常の演
算命令である加算命令ADDによるC=A+B及び減算
命令SUBによるC´=A−Bに対する動作を説明す
る。
【0061】まず演算命令の第1オペランドA及び第2
オペランドBが汎用レジスタファイル14のリードポー
トからそれぞれ第1ソースデータ16及び第2ソースデ
ータ18として読み出され、マルチプレクサ20,22
を介して第1ソースレジスタ24と第2ソースレジスタ
26に格納される。
【0062】一方、演算命令のオペコード52はデコー
ダ50で解読され、加算命令ADDであればマルチプレ
クサ28により第1ソースレジスタ26の第2オペラン
ドBがそのまま選択されることから、加減算器12には
第1オペランドA、第2オペランドB及びキャリー入力
Cin=0が入力され、C=A+Bが演算される。
【0063】また減算命令SUBであればマルチプレク
サ28はインバータ30の出力を選択し、このため加減
算器12には第1オペランドA、第2オペランドBを反
転した1の補数B1's 及びキャリー入力Cin=1が入
力され、C´=A−B=A+B2's =A+B1's +1が
演算される。
【0064】加減算器12の演算結果となるCやC´の
値はディストネーションレジスタ32に保持され、デー
タフォワードパス35に出力され、最終的にはライトポ
ートから汎用レジスタファイル14に反映される。
【0065】次に本発明の自己診断テストによる動作を
説明する。自己診断テストの際にはTAPコントローラ
42が自己診断コントローラ44に対するBIST START信
号をアサートし、自己診断テストの動作が開始される。
この自己診断テストの開始により、汎用レジスタファイ
ル14に既に格納されているテストデータである演算の
第1オペランドX及び第2オペランドYがリードポート
から読み出され、マルチプレクサ20,22により選択
され、第1ソースレジスタ24及び第2ソースレジスタ
26に保持される。
【0066】一方、自己診断コントローラ44は制御信
号E1によりデコーダ50を制御し、オペコード52の
デコードによって減算命令SUBを出力する。このデコ
ーダ50からの減算命令SUBによりマルチプレクサ2
8はインバータ30の出力を選択し、これによって加減
算器12には第1オペランドX、第2オペランドYを反
転した1の補数Y1's 及びキャリー入力Cin=1が入
力される。
【0067】この結果、自己診断処理の第1サイクルに
おいては、加減算器12は減算結果Zとして Z=X−Y=X+Y2's =X+Y1's +1 を演算し、ディストネーションレジスタ32に演算結果
Zを保持する。
【0068】次に1クロック後の自己診断テストの第2
サイクル目にあっては、自己診断コントローラ44はマ
ルチプレクサ20,22を制御して第1ソースレジスタ
24と第2ソースレジスタ26の値X,Yを入れ替える
ように入力する選択を行い、これによって第1ソースレ
ジスタ24に第1オペランドYが、また第2ソースレジ
スタ26に第2オペランドXが、第1サイクル目の値と
は入れ替わって保持される。
【0069】またマルチプレクサ28はデコーダ50の
減算命令SUBによって継続してインバータ30の出力
を選択している。このため加減算器12には、第1オペ
ランドY,第2オペランドX、キャリー入力Cin=1
が入力され、 Z´=Y−X=Y+X2's =Y+X1's +1 が演算される。このとき前回の演算結果であるZ=X−
Yの値は1クロック経過しているためにディストネーシ
ョンレジスタ34に保持されており、今回の減算結果で
あるZ´=Y−Xの値がディストネーションレジスタ3
2に保持される。
【0070】このようにディストネーションレジスタ3
2,34に保持された減算結果Z´,Zは、第1オペラ
ンドZ´及び第2オペランドZとして2入力の加減算器
36に入力され、Z''=Z+Z´が演算される。この演
算結果Z''はディストネーションレジスタ38に保持さ
れ、演算結果40として自己診断コントローラ44のオ
ールゼロ検出器48に出力される。
【0071】ここで試験対象11としての加減算器12
が正常であった場合には、減算結果Z''は次の関係とな
る。
【0072】 Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 そのため自己診断コントローラ44のオールゼロ検出器
48は演算結果40の全ビットがオール0であることを
検査すればよく、従来のようにテストデータX,Yの演
算結果としての期待値を用意して実際の演算結果との比
較を行う必要がない。このためオールゼロ検出器48と
しては、例えば全ビットのOR論理をとる回路構成とす
れば良く、このような全ビットOR入力の論理回路のO
R出力によって、もし全ビットがオール0でなければエ
ラー信号E4を出力して外部に演算器12の異常を通知
できる。
【0073】このような自己診断テストを汎用レジスタ
ファイル14に前もって格納している残りの2つの入力
データの組について複数回繰り返すことにより、自己診
断を完了する。
【0074】図5は、演算結果と期待値の比較を不要と
した本発明の自己診断機能付きプロセッサの第2実施形
態の回路ブロック図である。この第2実施形態にあって
は、2つの入力テストデータX,Yについて減算Z=X
−YとZ´=Y−Xを減算した後、1回目の演算結果Z
と2回目の演算結果Z´の2の補数Z´2's を比較し、
この比較結果から入力データX,Yの期待値との比較を
必要としない自己診断テストを行うようにしたことを特
徴とする。
【0075】図5において、演算回路10−1側の汎用
レジスタファイル14からディストネーションレジスタ
34までの構成は図3の第1実施形態と同じである。こ
のため自己診断テストの際には、汎用レジスタファイル
14から2つのテストデータX,Yが読み出されて第1
ソースレジスタ24,第2ソースレジスタ26に保持さ
れた後、第1サイクルで減算Z=X−Y=X+Y2's =
(X+Y1's +1)を実行し、ディストネーションレジ
スタ32に保持する第1サイクル目の処理を行う。
【0076】次の第2サイクル目では入力データX,Y
を入れ替えた減算Z´=(Y−X)=(Y+X2's )=
(Y+X1's +1)を行い、第1サイクル目の演算結果
を1クロック後であることからディストネーションレジ
スタ34に保持し、2回目の演算結果はディストネーシ
ョンレジスタ32に保持する。
【0077】このようなディストネーションレジスタ3
2,34に続いて、第2実施形態にあっては比較器54
を設けている。比較器54の一方の入力にはディストネ
ーションレジスタ34に保持した1回目の減算結果Zが
入力される。また比較器54の他方の入力にはインバー
タ56と+1インクリメント回路58が設けられてい
る。
【0078】このためディストネーションレジスタ32
に保持された2回目の減算結果Z´はインバータ56で
反転されて1の補数Z1's となり、続いて+1インクリ
メント回路58で1を加えることによりZ´の2の補数
Z´2's =Z´1's +1に変換されて比較器54に入力
される。
【0079】このため比較器54は、ディストネーショ
ンレジスタ34の値となる第1オペランドZと、インバ
ータ56と+1インクリメント回路58により変換され
た第2オペランドZ´2's との比較を実行し、比較結果
40−1を出力する。
【0080】一方、自己診断処理部10−2側にはTA
Pコントローラ42と自己診断コントローラ44−1が
設けられており、自己診断コントローラ44−1にはエ
ラー検出器60が設けられている。エラー検出器60は
演算回路部10−1の比較器54からの比較結果40−
1を入力し、比較器54における第1オペランドZと第
1オペランドZ´2's が一致していれば試験対象10の
加減算器12は正常と判断し、一方、比較結果が不一致
であればエラーを検出して外部に加減算器12の異常を
示すエラー信号E4を出力する。
【0081】ここで比較器54における第1オペランド
Zと第2オペランドZ´2's の一致関係の成立を証明す
ると次のようになる。
【0082】まず最終的な演算結果は次のようになる。
【0083】 Z'2's=Y2'S −X2'S =X+Y2'S =Z (6) この成立を証明すると次のようになる。ここで Z =X−Y=X+Y1's +1=X+Y2'S (7) Z´=Y−X=Y+X1's +1=Y+X2'S (8) である。そこで(7)より Y2's =−Y (9) となり、(8)より X2's =−X (10) となる。従って(9)(10)を(6)に代入して変形
すると、 Z'2's=X+Y2's =−Y−(−X) =−Y+X =X−Y となる。ここで右辺第2項の−Yに(7)式を代入する
と、 Z'2's=X+Y2's =Z となり、(5)のZ'2's=Zの関係が成立する。
【0084】また比較器54としては、演算器12の演
算動作が正しいときに第1オペランドZ´と第2オペラ
ンドZ'2'sは一致していることから、第1オペランドZ
と第2オペランドZ'2'sのそれぞれについて全ビットの
EXOR論理をとった後に全ビットのEXOR出力のO
R論理をとれば良く、比較器54そのものも簡単な論理
データで構成できる。
【0085】図6は本発明の自己診断機能を備えたプロ
セッサの第3実施形態の回路ブロック図である。この第
3実施形態にあっては、試験対象としてキャリー入力を
持たない2入力の加減算器を備えたことを特徴とする。
【0086】図6において、自己診断処理部10−2
は、図3の第1実施形態と同様、TAPコントローラ4
2と自己診断コントローラ44で構成され、自己診断コ
ントローラ44にはオールゼロ検出器48が設けられて
いる。
【0087】演算回路10−1は試験対象10としてキ
ャリー入力を持たない2入力の加減算器65を備えてい
る。この加減算器65の入力側にはレジスタファイル1
4、マルチプレクサ20,22及び第1ソースレジスタ
24及び第2ソースレジスタ26、インバータ30及び
マルチプレクサ28が設けられている点は図3の第1実
施形態と同じであるが、加減算器65をキャリー入力な
しとしたことに伴い、インバータ30に続いて+1イン
クリメント回路61を設けている。
【0088】このインバータ30と+1インクリメント
回路61によって第2ソースレジスタ26の第2オペラ
ンドBをインバータ30で反転して1の補数B1's に変
換した後、+1インクリメント回路61で1を加えるこ
とによって2の補数B2's に変換して加減算器65に出
力するようにしている。
【0089】このため加減算器65にあっては、デコー
ダ50からの減算命令SUBによるマルチプレクサ28
の第2オペランドB2's の選択による出力で第1オペラ
ンドAを入力し、C=A+B2's =A−Bの減算を実行
することになる。
【0090】加減算器65の出力段にはディストネーシ
ョンレジスタ32,34、2入力の加減算器36及びデ
ィストネーションレジスタ38が設けられており、これ
は図3の第1実施形態と同じである。
【0091】次に図6の第3実施形態について自己診断
テストの動作を説明する。TAPコントローラ42がBI
ST START信号をアサートすると、自己診断コントローラ
44が動作し、自己診断テストを開始する。まず汎用レ
ジスタファイル14よりテストデータとしてのオペラン
ドX,Yを読み出し、マルチプレクサ20,22を介し
て第1ソースレジスタ24と第2ソースレジスタ26に
保持する。
【0092】このときデコーダ50の制御によって減算
命令SUBが出力されていることから、マルチプレクサ
28は+1インクリメント回路61の出力を選択してい
る。このため試験対象10としての加減算器65には第
1オペランドXと第2オペランドB2's が入力され、 Z=X+Y2's =X+Y1's +1=X−Y が演算され、ディストネーションレジスタ32に保持さ
れる。
【0093】次の第2サイクル目では、自己診断コント
ローラ44の制御信号E2によってマルチプレクサ20
が第2ソースレジスタ26のテストデータXを選択して
出力し、同時にマルチプレクサ22が第1ソースレジス
タ24のテストデータXを選択して出力し、これによっ
てソースレジスタ24と26の値が入れ替わる。
【0094】このときマルチプレクサ28はデコーダ5
0の減算命令SUBを継続して受けている。このため加
減算器65には第1オペランドYとインバータ30及び
+1インクリメント回路61で変換された第2オペラン
ドX2's が入力し、 Z´=Y+X2's =Y+X1's +1=Y−X を実行する。この2回目の減算結果は1クロック後であ
ることからディストネーションレジスタ32に保持さ
れ、1つ前の減算結果Zは次のディストネーションレジ
スタ34に保持されている。
【0095】このため加減算器36には第1オペランド
Z´と第2オペランドZが入力し、Z''=Z+Z´の演
算を実行してディストネーションレジスタ38に保持す
る。この加減算器36における演算結果Z''は、加減算
器65が正常であれば、 Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 となる。
【0096】加減算器36の加算結果40は自己診断コ
ントローラ44のオールゼロ検出器48に与えられ、全
ビットがオールゼロであれば加減算器65は正常と判断
し、オールゼロでなければ加減算器65の異常と判断し
てエラー信号E4を外部に出力する。 この図6の第3
実施形態にあっては、試験対象の加減算器として図3の
第1実施形態のようにキャリー入力付きの2入力の加減
算器12ではなく、キャリー入力を持たない加減算器を
使用している場合の自己診断テストに対応することがで
きる。 図7は、本発明による自己診断機能付きプロセ
ッサの第4実施形態の回路ブロック図である。この第4
実施形態にあっては、図3の第1実施形態で出力段に設
けている加減算器36を廃止し、この加減算器36によ
る2回目の演算を試験対象10として設けているキャリ
ー入力付きの2入力の加減算器12で行うように構成し
たことを特徴とする。このように2回目の演算に専用の
加減算器を必要としない分、演算回路の構成を簡単にす
ることができる。
【0097】図7において、試験対象11となるキャリ
ー入力付きの2入力の加減算器12の入力側には、汎用
レジスタファイル14、マルチプレクサ20,22、第
1ソースレジスタ24、第2ソースレジスタ26、イン
バータ30、マルチプレクサ28が設けられ、続いて新
たにマルチプレクサ64,66を設けている。
【0098】マルチプレクサ64,66は、自己診断コ
ントローラ44からの制御信号E5によって、第1サイ
クル目では第1ソースレジスタ24及びマルチプレクサ
28の出力を選択しているが、第2サイクル目について
は加減算器12の出力側のディストネーションレジスタ
34,32の値を選択して出力するようにしたことを特
徴とする。また加減算器12に対してはキャリー入力C
inに加え、1回目の演算と2回目の演算を制御する制
御信号E3も入力されている。
【0099】次に図7の第4実施形態における自己診断
テストの動作を説明する。TAPコントローラ42がBI
ST START信号をアサートすることで自己診断コントロー
ラ44が動作すると、まず汎用レジスタファイル14か
ら任意のテストデータX,Yを読み出し、マルチプレク
サ20,22を介して第1ソースレジスタ24に第1オ
ペランドXを保持し、同時に第2ソースレジスタ26に
第2オペランドYを保持する。
【0100】このときマルチプレクサ28はインバータ
30の出力を選択しており、またマルチプレクサ64,
66は第1ソースレジスタ24の出力及びマルチプレク
サ28の出力を選択している。もちろん、デコーダ50
は減算命令SUBを出力している。このため試験対象1
0の加減算器12には第1オペランドX、第2オペラン
ドY2's 及びキャリー入力Cin=1が入力し、 Z=X+Y2's =X+Y1's +1=X−Y の減算を実行し、減算結果Zをディストネーションレジ
スタ32に保持する。
【0101】第2サイクル目にあっては、自己診断コン
トローラ44はデコーダ50の減算命令SUBを維持し
たままマルチプレクサ20,22を制御して第1ソース
レジスタ24と第2ソースレジスタ26のオペランド
X,Yを入れ替えて保持し、マルチプレクサ28及びマ
ルチプレクサ64,66の制御は第1サイクル目と同じ
であることから、加減算器12には第1オペランドY、
第2オペランドX2's 及びキャリー入力Cin=1が入
力し、 Z´=Y+X2's =Y+X1's +1=Y−X の減算を実行する。
【0102】この2回目の減算結果Z´はディストネー
ションレジスタ32に保持され、1回目の減算結果Zは
1クロック後であることから次のディストネーションレ
ジスタ34に保持されている。
【0103】次の第3サイクル目にあっては、自己診断
コントローラ44はデコーダ50を制御して加算命令A
DDを出力させ、また制御信号E5によってマルチプレ
クサ64,66を制御して加減算器12の出力側を選択
させる。
【0104】このため加減算器12には、ディストネー
ションレジスタ34に保持している第1オペランドZ、
ディストネーションレジスタ32に保持している第2オ
ペランドZ´、及びキャリー入力Cin=0が入力し、
Z''=Z+Z´の加算を実行する。
【0105】この3サイクル目の加算結果Z''はディス
トネーションレジスタ32に保持され、自己診断コント
ローラ44のオールゼロ検出器48に演算結果40とし
て出力される。この最終的に得られた演算結果Z''は、
加減算器12が正常であれば、 Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 となる。
【0106】このため自己診断コントローラ44のオー
ルゼロ検出器48は加算結果40がオールゼロであれば
加減算器12は正常と判断し、一方、オールゼロでなけ
れば加減算器12の異常と判断し、エラー信号E4を外
部に出力する。
【0107】この図7の第4実施形態にあっては、加減
算器12の出力段に別の加減算器を必要としない分、図
3の第1実施形態に比べ演算回路10−1の回路構成を
簡単にできる。一方、図3の第1実施形態にあっては、
加減算器36を設けた分、回路構成は複雑になるが、自
己診断動作が2サイクルで済む点で高速にでき、これに
対し図7の第4実施形態は自己診断動作を3サイクルで
行うことから、その分、時間が掛かることになる。した
がって図3の第1実施形態と図7の第4実施形態は、回
路構成の簡略化をとるか自己診断動作の高速化をとるか
のいずれかの要求に応じて使用すれば良い。
【0108】図8は、本発明による自己診断機能付きプ
ロセッサの第5実施形態の回路ブロック図である。この
第5実施形態にあっては、図6の第3実施形態について
出力側に設けている加減算器36を省略し、図7の第4
実施形態と同様、試験対象10に設けている加減算器6
5を使用して2回目の加算を行うようにしたことを特徴
とする。
【0109】図8において、演算回路10−1は、試験
対象10となる2入力の加減算器65の入力側に汎用レ
ジスタファイル14、マルチプレクサ20,22、第1
ソースレジスタ24、第2ソースレジスタ26、インバ
ータ30、+1インクリメント回路61、マルチプレク
サ28を設けている点は図6の第3実施形態と同じであ
るが、これに加えて加減算器65の入力側に図7の第4
実施形態と同様、マルチプレクサ64,66を新たに設
けている。
【0110】マルチプレクサ64,66は自己診断テス
トの第1サイクル目及び第2サイクル目の減算動作の際
には第1ソースレジスタ24の第1オペランドとマルチ
プレクサ28の第2オペランドを選択して出力するが、
第3サイクル目の加算動作では加減算器65の出力側を
選択するように制御される。
【0111】また自己診断処理部10−2側は、図6の
第3実施形態と同様、TAPコントローラ42及びオー
ルゼロ検出器48を備えた自己診断コントローラ44で
構成される。
【0112】次に図8の第5実施形態の自己診断テスト
の動作を説明する。TAPコントローラ42からのBIST
START信号がアサートされ、自己診断コントローラ44
が自己診断動作を開始すると、まず汎用レジスタファイ
ル14から任意のテストデータX,Yが読み出され、マ
ルチプレクサ20,22で選択されて第1ソースレジス
タ24と第2ソースレジスタ26に格納される。
【0113】このときデコーダ50は自己診断コントロ
ーラ44による制御で減算命令SUBを出力しており、
マルチプレクサ28は第2ソースレジスタ26に保持し
たテストデータYをインバータ30で反転して1の補数
Y1's とした後、+1インクリメント回路61で1を加
えることで2の補数Y2's とした出力を選択している。
【0114】またマルチプレクサ64,66は制御信号
E5によって第1ソースレジスタ24とマルチプレクサ
28の出力を選択している。このため第1サイクル目に
あっては、試験対象10の加減算器65には第1オペラ
ンドXと第2オペランドY2's が入力し、 Z=X+Y2's =X+Y1's +1=X−Y の演算を実行し、演算結果Zをディストネーションレジ
スタ32に保持する。
【0115】次の第2サイクル目にあっては、自己診断
コントローラ44の制御信号E2によってマルチプレク
サ20が第2ソースレジスタ26の値Yを選択して出力
し、同時にマルチプレクサ22が第1ソースレジスタ2
4の値Xを選択して出力し、入力データX,Yが入れ替
わる。
【0116】またマルチプレクサ28及びマルチプレク
サ64,66の選択状態は同じである。このため試験対
象10の加減算器65には第1オペランドYと第2オペ
ランドX2's が入力し、 Z''=Y+X2's =Y+X1's +1=Y−X の減算を実行する。この2回目の減算結果Z''はディス
トネーションレジスタ32に保持され、1クロック後で
あることから、1回目の減算結果Zはデストネーション
レジスタ34に保持される。
【0117】次の第3サイクル目にあっては、自己診断
コントローラ44の制御によりデコーダ50は加算命令
ADDを出力し、また制御信号E5によってマルチプレ
クサ64はディストネーションレジスタ34に保持した
値Zを選択して出力し、同時にマルチプレクサ66はデ
ィストネーションレジスタ32に保持した値Z´を選択
して出力する。
【0118】このため3回目について加減算器65は第
1オペランドZと第2オペランドZ´を入力し、Z''=
Z+Z´の演算を実行し、演算結果Z''をディストネー
ションレジスタ32に保持する。このような3サイクル
目の演算結果40は自己診断コントローラ44のオール
ゼロ検出器48に与えられ、オールゼロの有無がチェッ
クされる。
【0119】このときの自己診断による最終的な演算結
果Z''は加減算器65が正常であれば、 Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 となる。このためオールゼロ検出器48で演算結果40
から全ビットのオールゼロを検出すると加減算器45は
正常と判断し、一方、オールゼロでなかった場合には加
減算器65の異常と判断し、エラー信号E4を外部に出
力する。
【0120】この図8の第5実施形態にあっては、図6
の第3実施形態と対比すると、第3実施形態が自己診断
テストの動作を2サイクルで終了するのに対し3サイク
ルを必要とするため、その分、遅くなるが、試験対象1
0となる加減算器65の出力段に別の加減算器を必要と
せず、その分、演算回路10−1の回路構成を簡単にで
きる利点がある。
【0121】図9は、本発明による自己診断機能付きプ
ロセッサの第6実施形態の回路ブロック図である。この
第6実施形態にあっては、自己診断テストの1サイクル
で2つのテストデータの減算Z=X−Yとテストデータ
を入れ替えた減算Z´=Y−Xを同時に実行して、2つ
の減算結果の加算結果Z''=Z+Z´を実行するように
したことを特徴とする。
【0122】図9の第6実施形態において、試験対象1
0となるキャリー入力付きの2入力の加減算器12の入
力側には汎用レジスタファイル14に続いて直接、第1
ソースレジスタ24、第2ソースレジスタ26を設け、
図3の第1実施形態におけるマルチプレクサ20,22
は除いている。
【0123】試験対象10となる加減算器12の第1オ
ペランドとしては第1ソースレジスタ24の値が入力さ
れ、第2オペランドとしては第2ソースレジスタ26の
値またはインバータ30で反転した値のいずれかをマル
チプレクサ28で選択している。加減算器12の出力に
はディストネーションレジスタ32が設けられ、ディス
トネーションレジスタ32の値は次の加減算器36に入
力されている。
【0124】この第1ソースレジスタ24,26、イン
バータ30、マルチプレクサ28、加減算器12及びデ
ィストネーションレジスタ32の系統によって減算Z=
X−Yを実行する。一方、この演算Zの演算系統と並列
にインバータ70、マルチプレクサ68、加減算器72
及びディストネーションレジスタ34が設けられてい
る。 マルチプレクサ68は第1ソースレジスタ24の
値またはインバータ70で反転した値を選択して出力す
る。加減算器72は第2ソースレジスタ26の値を第1
オペランド、マルチプレクサ68で選択した値を第2オ
ペランド、更にキャリー入力Cinによる入力を受け
て、Z´=Y−Xの減算を実行してディストネーション
レジスタ74に格納する。
【0125】加減算器36はディストネーションレジス
タ32と74のそれぞれに並列的な演算により格納され
た演算結果Z,Z´をオペランドとして入力し、Z''=
Z+Z´の加算を実行し、ディストネーションレジスタ
38に格納する。
【0126】一方、自己診断処理部10−2側はTAP
コントローラ42とオールゼロ検出器48を備えた自己
診断コントローラ44により構成されている。
【0127】次に図9の第6実施形態の自己診断テスト
の動作を説明する。TAPコントローラ42がBIST STA
RT信号をアサートすると自己診断コントローラ44が動
作し、自己診断テストを開始する。まず汎用レジスタフ
ァイル14に格納されている任意のテストデータX,Y
をリードポートから読み出し、第1ソースレジスタ24
及び第2ソースレジスタ26のそれぞれに保持する。
【0128】このときデコーダ50は自己診断コントロ
ーラ44の制御信号E1によって減算命令SUBを出力
しており、このためマルチプレクサ68,28はインバ
ータ70,30の出力を選択している。また加減算器1
2,72に対するキャリー入力CinはCin=1とな
っている。
【0129】したがって加減算器12には第1オペラン
ドX、第2オペランドY1's 、キャリー入力Cin=1
が入力し、Z=X+Y1's +1の演算を実行し、ディス
トネーションレジスタ32に保持する。同時に加減算器
72には第1オペランドY、第2オペランドX1's 及び
キャリー入力Cin=1が入力し、Z´=Y+X1's+
1の演算を実行してディストネーションレジスタ74に
保持する。
【0130】この結果、加減算器36はディストネーシ
ョンレジスタ74の値Z´を第1オペランド、ディスト
ネーションレジスタ732値Zを第2オペランドとする
加算Z''=Z´+Zを実行し、ディストネーションレジ
スタ38に加算結果Z''を保持する。
【0131】このため自己診断処理の第1サイクル目で
得られた演算結果40が自己診断コントローラ44のオ
ールゼロ検出器48に与えられる。ここで加減算器36
からの演算結果40Z''は、試験対象10となる加減算
器12が正常であれば、 Z''=Z+Z´ =(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 となっている。
【0132】このため自己診断コントローラ44のオー
ルゼロ検出器48が演算結果40の全ビットゼロを検出
すると、試験対象10の加減算器12は正常と判断し、
一方、オールゼロでないことを判別すると加減算器12
の異常と判断し、エラー実行E4を外部に出力する。
【0133】この図9の第6実施形態にあっては、2つ
のテストデータX,Yの減算とこれを入れ替えた減算を
同時に行い、その減算結果を加算することで自己診断動
作を1サイクルで終了することができ、より高速の自己
診断処理が実行できる。
【0134】図10は、本発明による自己診断処理機能
を備えたプロセッサの第7実施形態の回路ブロック図で
ある。この第7実施形態にあっては、図4の第2実施形
態における2サイクルの自己診断テストの処理を1サイ
クルで終了させる高速化を図ったことを特徴とする。
【0135】図10において、第7実施形態の演算回路
部10−1にあっては、汎用レジスタファイル14に続
いて直接、第1ソースレジスタ24と第2ソースレジス
タ26が設けられ、図5の第2実施形態のマルチプレク
サ20,22は除かれている。第1及び第2ソースレジ
スタ24,26、インバータ30、マルチプレクサ2
8、試験対象10としてのキャリー入力付きの加減算器
12及びディストネーションレジスタ32によって、Z
=X−Yの演算系統を構成している。
【0136】一方、第1及び第2ソースレジスタ24,
26、インバータ70、マルチプレクサ68、キャリー
イン入力Cin付きの加減算器72及びディストネーシ
ョンレジスタ74によって、テストデータX,Yを入れ
替えたZ´=Y−Xの演算系統を構成している。この点
は図9の第6実施形態と同じであることが分かる。
【0137】この第7実施形態にあっては、図5の第2
実施形態に対応していることから、減算結果Z,Z´の
2系統の演算結果に続いて比較器54を設けている。比
較器54の一方にはディストネーションレジスタ32の
減算結果Zが入力される。また比較器54の他方の入力
にはディストネーションレジスタ74に保持した減算結
果Z´をインバータ56で反転して1の補数Z'1'sを求
め、次に+1インクリメント回路58で1を加えた2の
補数Z'2'sに変換して入力している。
【0138】このため比較器54は減算結果Zと減算結
果Z´の2の補数Z'2'sを比較し、比較結果40−1を
自己診断コントローラ44−1のエラー検出器60に入
力している。比較器54における演算結果Zと演算結果
Z´の2の補数Z'2'sが一致していれば試験対象10と
なる加減算器12は正常であり、不一致であれば加減算
器12は異常であり、これをエラー検出器60で検出し
て加減算器12の異常を示すエラー信号E4を外部に出
力することになる。
【0139】また自己診断処理部10−2はTAPコン
トローラ42と自己診断コントローラ44−1を備え、
図5の第1実施形態と異なる点は第1及び第2ソースレ
ジスタ24,26側のマルチプレクサ20,22に対す
る制御信号がない点である。
【0140】次に図10の第7実施形態における自己診
断テストの動作を説明する。TAPコントローラ42が
BIST START信号をアサートすると、自己診断コントロー
ラ44−1が起動して演算回路10−1の自己診断テス
トが開始される。まず汎用レジスタファイル14より任
意のテストデータX,Yをリードポートから読み出し、
第1ソースレジスタ24にテストデータXを、また第2
ソースレジスタ26にテストデータYを保持する。
【0141】このときデコーダ50は自己診断コントロ
ーラ44−1の制御信号E1によってオペコード52を
解読して減算命令SUBを出力している。これによって
マルチプレクサ68,28はインバータ70,30の出
力を選択している。
【0142】このとき試験対象10としての加減算器1
2を見ると、第1オペランドX、第2オペランドY2's
及びキャリー入力Cin=1を入力しており、Z=X+
Y1's 及びキャリー入力Cin=1を入力し、Z=X+
Y1's +1の減算を実行し、減算結果Zをディストネー
ションレジスタ32に保持する。
【0143】同時に加減算器72は第1オペランドY,
第2オペランドX1's 及びキャリー入力Cin=1を入
力し、Z´=Y+X1's +1の演算を実行し、演算結果
をディストネーションレジスタ74に保持する。
【0144】更に比較器54はディストネーションレジ
スタ32に保持した演算結果Zを入力し、またディスト
ネーションレジスタ34に保持した演算結果Z´をイン
バータ56で反転して1の補数Z'1'sとした後、+1イ
ンクリメント回路58で1を加えることで2の補数Z'
2'sに変換して入力し、両者を比較している。
【0145】このとき試験対象10の加減算器12が正
常であれば比較器54に入力しているZとZ'2'sは一致
し、この比較一致を自己診断コントローラのエラー検出
器60で検出し、加減算器12が正常であることを認識
する。一方、比較器54でZとZ'2'sが不一致であった
場合には、エラー検出器60は試験対象10の加減算器
12の異常と判断し、外部にエラー信号E4出力する。
【0146】この図10の第7実施形態にあっては、図
5の第2実施形態と比較すると、比較処理に必要な減算
Z=X−Yと減算Z´=Y−Xの2の補数Z'2'sが自己
診断テストの1サイクルで演算されて比較結果を得るこ
とができ、より高速の自己診断動作を行うことができ
る。
【0147】図11は、本発明による自己診断機能付き
のプロセッサの第8実施形態の回路ブロック図である。
この第8実施形態は、図6の第3実施形態における試験
対象10のキャリー入力Cinを持たない加減算器65
について、図9の第6実施形態と同様、テストデータ
X,Yの減算とこれを入れ替えた減算を並列的に行って
1サイクルで動作を終了するようにしたことを特徴とす
る。
【0148】図11において、演算回路部10−1は汎
用レジスタファイル14に続いて直接、第1ソースレジ
スタ24と第2ソースレジスタ26を設けている。第1
ソースレジスタ24及び第2ソースレジスタ26、イン
バータ30、+1インクリメント回路61、マルチプレ
クサ28、試験対象10の加減算器65及びディストネ
ーションレジスタ32によって、減算Z=X−Yの演算
系統を構成している。
【0149】また第1及び第2ソースレジスタ24,2
6、インバータ76、+1インクリメント回路78、マ
ルチプレクサ68、加減算器72及びディストネーショ
ンレジスタ74によって、テストデータX,Yを入れ替
えた減算Z´=Y−Xの演算系統を構成している。
【0150】この並列的に行われるディストネーション
レジスタ32,74に保持される減算結果Z,Z´は加
減算器36に入力され、Z''=Z+Z´の加算が行われ
てディストネーションレジスタ38に保持され、演算結
果40として自己診断コントローラ44のオールゼロ検
出器48に出力される。もちろん自己診断処理部10−
2側には、TAPコントローラ42が自己診断コントロ
ーラ44と共に設けられている。
【0151】次に図11の実施形態における自己診断テ
ストの動作を説明する。TAPコントローラ42がBIST
START信号をアサートすると、自己診断コントローラ4
4が起動し、まず汎用レジスタファイル14より任意の
テストデータX,Yをリードポートから読み出して第1
ソースレジスタ24と第2ソースレジスタ26のそれぞ
れに保持する。このときデコーダ54は自己診断コント
ローラ44の制御信号E1によって減算命令SUBを出
力している。
【0152】これによってマルチプレクサ68,61は
+1インクリメント回路78,61の出力を選択してい
る。まず加減算器12側の動作を見ると、加減算器12
には第1ソースレジスタ24の第1オペランドXと第1
ソースレジスタ26のテストデータYをインバータ30
で反転して1の補数Y1's に変換した後、+1インクリ
メント回路61で1を加えることで2の補数Y2's に変
換した第2オペランドが入力される。
【0153】このため加減算器12はZ=X+Y2 's=
X+Y1's +1=X−Yの演算を実行し、演算結果Zを
ディストネーションレジスタ32に保持する。同時に加
減算器72は、第2ソースレジスタ26のオペランドY
と第1ソースレジスタ24の入力データYをインバータ
76で反転して1の補数Y1's に変換した後、+1イン
クリメント回路78で1を加5て2の補数X2's に変換
した第2オペランドを入力し、Z´=Y+X2's =Y+
X1's +1=Y−Xの演算を実行し、演算結果Z´をデ
ィストネーションレジスタ74に保持する。
【0154】このため加減算器36は、ディストネーシ
ョンレジスタ74の第1オペランドZ´とディストネー
ションレジスタ32の第2オペランドZを入力してZ''
=Z´+Zの加算を実行し、演算結果、Z''をディスト
ネーションレジスタ38に保持し、演算結果40として
自己診断コントローラ44のオールゼロ検出器48に出
力する。
【0155】このような演算結果40としてのZ''は、
試験対象10の加減算器12が正常である場合は Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 (11) となる。このため自己診断コントローラ44のオールゼ
ロ検出器48は、演算結果40のZ''がオールゼロであ
れば加減算器12は正常と判断し、オールゼロでなけれ
ば加減算器12の異常と判断してエラー信号E4を外部
に出力する。
【0156】図12は、本発明による自己診断機能を備
えたプロセッサの第9実施形態の回路ブロック図であ
る。この第9実施形態にあっては、図9の第6実施形態
における加減算器36を省略し、この加算を試験対象1
0の加減算器12で行うようにしたことを特徴とする。
【0157】即ち図9の第6実施形態にあっては、第1
サイクルで全ての演算を終了するが、図12の第9実施
形態にあっては2サイクルを必要とし、その分、第6実
施形態の加減算器36を不要として回路構成を簡単にし
ている。
【0158】図12において、演算回路10−1でレジ
スタファイル14から読み出した任意の2つのテストデ
ータX,Yについての減算Z=X−Yは、第1ソースレ
ジスタ24、第2ソースレジスタ26、インバータ3
0、マルチプレクサ28、試験対象10としての加減算
器12及びディストネーションレジスタ32の系統で行
われる。この系統には加減算器12の入力段に新たにマ
ルチプレクサ80,82を設けている。
【0159】また汎用レジスタファイル14から読み出
した任意のテストデータX,Yを入れ替えた減算Z´=
Y−Xは第1ソースレジスタ24,第2ソースレジスタ
26、インバータ70、マルチプレクサ68、加減算器
72及びディストネーションレジスタ34の系統で演算
が実行される。
【0160】マルチプレクサ80,82はデコーダ50
からの加算命令ADDと減算命令SUBにより切り替え
られる。減算命令SUBの出力時にはマルチプレクサ6
8,28の出力を選択している。一方、加算命令ADD
の際にはディストネーションレジスタ74,32の値を
選択して出力する。自己診断処理部10−2側はTAP
コントローラ42及びオールゼロ検出器48を備えた自
己診断コントローラ44で構成される。
【0161】次に図12の第9実施形態の自己診断テス
トの動作を説明する。TAPコントローラ42がBIST S
TART信号をアサートすると、自己診断コントローラ44
が自己診断テストを開始する。まず汎用レジスタファイ
ル14から任意のテストデータX,Yを読み出し、第1
ソースレジスタ24に第1オペランドXとして保持し、
第2ソースレジスタ26に第2オペランドYとして保持
する。
【0162】このときデコーダ50は自己診断コントロ
ーラ44からの制御信号E1によってオペコード52を
解読して減算命令SUBを出力している。このためマル
チプレクサ68,28はインバータ70,30の出力を
それぞれ選択している。またマルチプレクサ80,82
の第1ソースレジスタ24の出力とマルチプレクサ28
の出力を選択している。
【0163】これによって試験対象11となる加減算器
12には第1オペランドX、第2オペランドとしてテス
トデータYをインバータ30で反転した1の補数Y1's
、更にキャリー入力Cin=1が入力している。これ
によって加減算器12はZ=X+Y1 's+1の演算を実
行し、演算結果Zをディストネーションレジスタ32に
保持する。
【0164】同時に加減算器72は、第1オペランド
X、第2オペランドとして第1ソースレジスタ24のテ
ストデータXをインバータ70で反転して得た1の補数
X1's、更にキャリー入力Cin=1を入力している。
このため加減算器72はZ´=Y+X1's +1の演算を
実行し、演算結果をディストネーションレジスタ74に
保持する。
【0165】次の第2サイクル目にあっては、自己診断
コントローラ44は制御信号E1によりデコーダ50を
制御して加算命令ADDを出力し、制御信号E3により
加減算器12の加算動作を指示する。このデコーダ50
からの加算命令ADDにより、マルチプレクサ80はデ
ィストネーションレジスタ34の出力を選択し、またマ
ルチプレクサ82はディストネーションレジスタ32の
出力を選択する。
【0166】このため加減算器12は、第1オペランド
Z´、第2オペランドZ、キャリー入力Cin=0を入
力し、Z''=Z´+Zの演算を実行し、ディストネーシ
ョンレジスタ32に保持する。このディストネーション
レジスタ32の値Z''は演算結果40として自己診断コ
ントローラ44のオールゼロ検出器48に与えられる。
【0167】ここで試験対象10としての加減算器12
が正常な場合は Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 (11) となる。
【0168】このため自己診断コントローラ44のオー
ルゼロ検出器48は演算結果40の全ビットがオールゼ
ロであれば加減算器12は正常と判断し、一方、オール
ゼロでなければ加減算器12の異常と判断し、外部にエ
ラー信号E4を外部に出力する。
【0169】図13は、本発明による自己診断機能付き
のプロセッサの第10実施形態の回路ブロック図であ
る。この第10実施形態にあっては、図11の第8実施
形態の出力に設けた加減算器36を省略し、試験対象1
0の加減算器12により加算処理を行うようにしたこと
を特徴とし、図11の加減算器36を設けていない分、
回路構成を簡単にすることができる。
【0170】図13の第10実施形態において、演算回
路10−1は図11の第8実施形態の試験対象10の加
減算器12の前段に新たにマルチプレクサ80,82を
設けており、このマルチプレクサ80,82によってデ
ィストネーションレジスタ34,38の出力を選択して
加減算器12に入力できるようにしたことを特徴とし、
それ以外の構成は図8の実施形態と同じである。
【0171】この図13の第10実施形態の自己診断処
理の動作を説明すると次のようになる。TAPコントロ
ーラ42がBIST START信号をアサートすると、自己診断
コントローラ44が動作し、自己診断テストが開始され
る。まず汎用レジスタファイル14から任意のテストデ
ータX,Yを読み出し、第1,第2ソースレジスタ2
4,26のそれぞれに保持する。
【0172】このときデコーダ50は減算命令SUBを
出力しており、マルチプレクサ68,28は+1インク
リメント回路78,61の出力を選択している。またマ
ルチプレクサ80,82は制御信号E6により第1ソー
スレジスタ24及びマルチプレクサ28の出力を選択し
ている。
【0173】このため試験対象10の加減算器12に
は、第1オペランドXと第2オペランドとしてインバー
タ30で反転することで1の補数Y1's に変換した後、
+1インクリメント回路61で1を加えて2の補数Y2'
s に変換した値が入力される。これによって加減算器1
2はZ=X+Y2's の演算を実行し、ディストネーショ
ンレジスタ38に保持する。
【0174】同時に加減算器72には第1オペランドY
とテストデータXをインバータ76で反転した1の補数
X1's に+1インクリメント回路78で1を加えた2の
補数X2's を入力している。これによって加減算器72
はZ´=Y+X2's の演算を実行し、演算結果Z´をデ
ィストネーションレジスタ74に保持する。
【0175】次の第2サイクル目にあっては、自己診断
コントローラ44はデコーダ50の制御で加算命令AD
Dを出力させ、また制御信号E6によってマルチプレク
サ80,82をディストネーションレジスタ38,74
の選択状態に切り替える。このため加減算器12は、マ
ルチプレクサ80から第1オペランドZ´を入力すると
同時にマルチプレクサ82より第2オペランドZを入力
し、これによって減算Z''=Z´+Zを実行し、演算結
果Z''をディストネーションレジスタ38に保持し、演
算結果40として自己診断コントローラ44のオールゼ
ロ検出器48に出力する。
【0176】ここで最終的な演算結果40としてのZ''
は、加減算器12が正常であれば、 Z''=Z+Z´=(X−Y)+(Y−X) =X+Y2's +Y+X2's =(X+X2's )+(Y+Y2's ) =0+0 =0 (11) となる。
【0177】このため自己診断コントローラ44のオー
ルゼロ検出器48はオールゼロを検出すれば試験対象1
0としての加減算器12が正常であると判断し、一方、
オールゼロでなければ加減算器12の異常と判断し、外
部にエラー信号E4を出力する。 図14は、本発明に
よる自己診断機能を備えたプロセッサの第11実施形態
を示した回路ブロック図である。この第11実施形態に
あっては、自己診断テストのためのテストデータとして
リニアフィードバックシフトレジスタ(LFSR)を使
用して疑似乱数発生を行うようにしたことを特徴とす
る。
【0178】図14の第11実施形態は、図3の第1実
施形態に対し疑似乱数発生用のリニアフィードバックシ
フトレジスタ84,86を追加した構成としている。こ
のリニアフィードバックシフトレジスタ84,86を加
えたことに伴い、第1ソースレジスタ24と第2ソース
レジスタ26の入力段に3入力のマルチプレクサ88,
90を設け、レジスタファイル14、ソースレジスタ2
4,26またはリニアフィードバックシフトレジスタ8
4,86のいずれかを選択できるようにしている。それ
以外の演算回路10−1及び自己診断処理部10−2の
構成は図3の第1実施形態と同じである。
【0179】図15は図14に使用している疑似乱数発
生用のリニアフィードバックシフトレジスタの回路構成
の一例である。リニアフィードバックシフトレジスタ8
4は、例えば32ビット幅のシフトレジスタ92とEX
−OR回路94で構成される。EX−OR回路94はシ
フトレジスタ92におけるb0〜b31の32ビットの
内の任意の位置の2つのビット、例えば第19ビットb
18と第26ビットb25を入力して、その排他論理和
をとって例えば最上位ビットb31(最下位ビットb0
に入力してもよい)にシフト入力する構成をとる。
【0180】シフトレジスタ92には、例えば図14に
あっては汎用レジスタファイル14から読み出した任意
のテストデータXが初期値としてロードされ、ロード後
にシフトクロックを供給することでEX−OR94の出
力をシフト入力しながら32ビットシフトデータとして
テストデータを疑似乱数データとして出力して自己診断
テストを実行することになる。
【0181】次に図14の第1実施形態について自己診
断テストの動作を説明する。TAPコントローラ42が
BIST START信号をアサートすると、自己診断コントロー
ラ44が起動し、演算回路10−1の自己診断テストの
動作を開始する。まず汎用レジスタファイル14より任
意のテストデータX,Yが読み出され、マルチプレクサ
88,90で選択され、第1ソースレジスタ24及び第
2ソースレジスタ26を介してリニアフィードバックシ
フトレジスタ84,86のシフトレジスタに初期データ
としてセットされる。
【0182】このようにしてリニアフィードバックシフ
トレジスタ84,86に対する初期データのセットで準
備が整うと、自己診断コントローラ44は制御信号E2
によりマルチプレクサ88,90をリニアフィードバッ
クシフトレジスタ84,86の出力の選択状態とし、リ
ニアフィードバックシフトレジスタ84,86からシフ
トクロックに同期して出力される疑似乱数のテストデー
タを使用した自己診断動作を開始する。この自己診断動
作は図3の第1実施形態と同じである。
【0183】図16は、本発明による自己診断機能を備
えたプロセッサの第12実施形態の回路ブロック図であ
る。この第12実施形態にあっては、図5の2つの減算
結果を比較する第2実施形態について、図15の第11
実施形態と同様、疑似乱数データを発生するリニアフィ
ードバックシフトレジスタ84,86を設け、マルチプ
レクサ88,90により疑似乱数データを発生しながら
自己診断テストを繰り返し行うようにしたことを特徴と
する。これ以外の点は図5の第2実施形態と同じであ
る。
【0184】図17は、本発明による自己診断機能を備
えたプロセッサの第13実施形態の回路ブロック図であ
る。この第13実施形態は、図7の第4実施形態につい
て疑似乱数データを発生するリニアフィードバックシフ
トレジスタ84,86と、その選択出力を行うマルチプ
レクサ88,90を設けたことを特徴とし、それ以外の
点は図7の第4実施形態と同じである。
【0185】図18は、本発明による自己診断機能を備
えたプロセッサの第14実施形態の回路ブロック図であ
る。この第14実施形態は図9の第6実施形態につい
て、疑似乱数発生用のリニアフィードバックシフトレジ
スタ84,86と、その出力を選択するマルチプレクサ
88,90を設けたことを特徴とし、それ以外の点は図
9の第6実施形態と同じである。
【0186】図19は、本発明による自己診断機能を備
えたプロセッサの第15実施形態の回路ブロック図であ
る。この第15実施形態にあっては、図8の第5実施形
態について疑似乱数発生用のリニアフィードバックシフ
トレジスタ84,86と、その出力を選択するマルチプ
レクサ88,90を設けたことを特徴とし、それ以外の
構成及び動作は図8の第5実施形態と同じである。
【0187】図20は、本発明による自己診断機能を備
えたプロセッサの第16実施形態の回路ブロック図であ
る。この第16実施形態にあっては、単一のリニアフィ
ードバックシフトレジスタから疑似乱数としてテストデ
ータXを発生し、1つのテストデータXについて反転す
ることで1の補数X1's を求め、減算Z=X−Yの演算
を、その補数X2's の生成で行い、減算結果Zがオール
ゼロであれば試験対象10の加減算器12は正常、オー
ルゼロでなければ加減算器12の異常を判断する。
【0188】そこで、まず演算回路10−1を説明する
と、レジスタファイル14に続いてマルチプレクサ2
0,22、第1ソースレジスタ24及び第2ソースレジ
スタ26を設け、更に疑似乱数発生用のリニアフィード
バックシフトレジスタ84を設けている。
【0189】マルチプレクサ20は汎用レジスタファイ
ル14からの第1オペランドとしてのソースデータ16
またはリニアフィードバックシフトレジスタ84からの
テストデータのいずれかを選択して出力する。マルチプ
レクサ22は汎用レジスタファイル14からの第2オペ
ランドのソースデータ18かまたはリニアフィードバッ
クシフトレジスタ84のテストデータをインバータ96
で反転して1の補数に変換した出力を選択して出力す
る。
【0190】ここでリニアフィードバックシフトレジス
タ84から出力されるテストデータをXとすると、自己
診断テストの際には第1ソースレジスタ24にはテスト
データXが保持され、同時に第2ソースレジスタ26に
はインバータ96で反転して1の補数X1's に変換した
値が保持される。
【0191】第1ソースレジスタ24と第2ソースレジ
スタ26に続いては、キャリー入力Cin付きの2入力
の加減算器12が試験対象10として設けられている。
加減算器12は第1オペランドAと第2オペランドB、
更にキャリー入力Cinを入力し、デコーダ50が加算
命令ADDを出力している場合にはC=A+B+0=A
+Bの演算を実行し、また減算命令SUBが出力されて
いる場合にはC´=A+B+1=A+B1's の演算を実
行する。
【0192】このとき第2ソースレジスタ26から第2
オペランドとして1の補数B1's が入力されている場合
には、C´=A+B1's +1=A+B2's =A−Bの演
算を実行することになる。
【0193】この加減算器12の演算結果はディストネ
ーションレジスタ32に保持され、通常の演算処理にあ
ってはデータフォワードパス35により最終的に汎用レ
ジスタファイル14に書き込まれて反映される。これに
対し本発明による自己診断テストの際には、演算結果4
0として自己診断コントローラ44のオールゼロ検出器
48に出力される。
【0194】次に図20の第16実施形態における自己
診断テストの動作を説明する。TAPコントローラ42
がBIST START信号をアサートすると、自己診断コントロ
ーラ44が動作し、汎用レジスタファイル14から任意
のテストデータX,Yを読み出し、この内、第1ソース
データ16としての入力データXがマルチプレクサ2
0、第1ソースレジスタ24を介してリニアフィードバ
ックシフトレジスタ84に初期値としてセットされる。
【0195】それ以降は処理サイクルごとに疑似乱数の
テストデータとして発生され、マルチプレクサ20,2
2により選択されて第1ソースレジスタ24に第1オペ
ランドXとして保持され、一方、第2ソースレジスタ2
6にはインバータ96で反転された第2オペランドX1'
s として保持される。
【0196】加減算器12は、デコーダ50が自己診断
コントローラ44の制御により加算命令SUBを出力し
ていることから、第1オペランドX、第2オペランドX
1's及びキャリー入力Cin=1を入力し、 Z=X+X1's +1=X+X2's =X−X の演算を実行し、演算結果Zをディストネーションレジ
スタ32に保持する。
【0197】ディストネーションレジスタ32に保持し
た値は演算結果40として自己診断コントローラのオー
ルゼロ検出器48に出力され、全ビットがオール0であ
れば加減算器12は正常に動作したものと判断し、オー
ルゼロでなければ加減算器12に異常があることからエ
ラー実行E4を外部に出力する。
【0198】この第16実施形態にあっては、試験対象
10となる加減算器12を使用した1回目の減算で正常
に動作している場合にはオール0となる演算結果を得て
いるため、図3乃至図19の実施形態に比べ演算回路1
0−1の回路構成が大幅に簡略化できる。また演算回路
10−1の構成が簡単となることに加え、演算処理のサ
イクルも短いことから、より高速の処理ができる。
【0199】なお、図20の第16実施形態にあって
は、1回の自己診断テストで試験対象11となる加減算
器12の演算は1回しか行っておらず、図3〜図19の
実施形態における試験対象10となる加減算器12の演
算動作が2回行われている場合に比べ、自己診断テスト
の評価の信頼性はその分、低くなる。これを解消するた
めには自己診断の演算繰返し数を2倍とすれば、図3乃
至図19の実施形態と同等な自己診断テストの評価結果
を得ることができる。
【0200】図21は、本発明による自己診断機能を備
えたプロセッサの第17実施形態の回路ブロック図であ
る。この第17実施形態にあっては、基本的には図20
の第16実施形態と同じ演算回路10−1の構成を簡略
化したものであり、試験対象10としてキャリー入力の
ない加減算器65を対象とした点が相違している。
【0201】この試験対象11としてキャリー入力Ci
nを持たない加減算器65を使用したことで、第2ソー
スレジスタ26側のマルチプレクサ22に対するリニア
フィードバックシフトレジスタ84の出力ラインに、テ
ストデータXを反転して1の補数X1's を設けるインバ
ータ96に続いて+1インクリメント回路98を設け、
1の補数X1's に1を加えることで2の補数X2's に変
換するようにしている。それ以外の構成は図20の第6
実施形態と同じである。この第17実施形態の動作は次
のようになる。
【0202】TAPコントローラ42がBIST START信号
をアサートすると、自己診断コントローラ44が動作
し、汎用レジスタファイル14から読み出した第1ソー
スデータ16をマルチプレクサ20、第1ソースレジス
タ24を介してリニアフィードバックシフトレジスタ8
4にセットし、それ以降はリニアフィードバックシフト
レジスタ84からの疑似乱数をテストデータとして自己
診断動作が行われる。
【0203】即ち自己診断動作の際には、制御実行E2
によってマルチプレクサ20,22はリニアフィードバ
ックシフトレジスタ84側の出力を選択した状態にあ
る。このときリニアフィードバックシフトレジスタ84
がテストデータXを出力していたとすると、第1ソース
レジスタ24にはテストデータXが第1オペランドとし
て保持され、一方、第2ソースレジスタ26にはテスト
データXをインバータ96で反転して1の補数X1's に
変換した後、+1インクリメント回路98で1を加えて
2の補数X2's に変換した値が保持される。
【0204】これによって試験対象10としての加減算
器65は第1オペランドXと第2オペランドY2's を入
力し、 Z=X+X2's =X+X1's +1=X−X の演算を実行し、ディストネーションレジスタ32に保
持する。
【0205】このディストネーションレジスタ32に保
持された値Zは演算結果40として自己診断コントロー
ラ44のオールゼロ検出器48に入力される。オールゼ
ロ検出器48は演算結果40の値Zが全ビット0であれ
ば試験対象10としての加減算器65は正常と判断す
る。一方、演算結果40としての値Zが全ビット0でな
ければ試験対象10としての加減算器65は異常と判断
し、エラー信号E4を外部に出力する。
【0206】尚、上記の実施形態にあっては、自己診断
テストにおける演算結果がオールゼロとなるように演算
回路を構成し且つ自己診断処理を行うようにした実施形
態を例にとるものであったが、同様に期待値を使用しな
くとも演算結果の検査が容易なオール1が得られるよう
に演算回路及び自己診断処理部を構成するようにしても
良い。
【0207】この演算結果としてオール1が得られるよ
うにする構成は、上記の各実施形態の負論理の構成をと
った場合である。また本発明は上記の実施形態に限定さ
れず、その目的と利点を損なわない適宜の変形を含む。
更に本発明は上記の実施形態に示した数値による限定は
受けない。
【0208】以上、本発明の実施形態を説明したが、本
発明の実施の形態は、以下に記載する発明を同様に開示
している。
【0209】自己診断機能を備えたプロセッサに於い
て、演算回路は、第1オペランドAを格納する第1ソー
スレジスタと、第2オペランドBを格納する第2ソース
レジスタと、第1又は第2オペランドのいずれか一方を
初期値として入力した後の演算周期毎の乱数発生処理に
より新たなオペランドを発生して第1ソースレジスタに
格納する擬似乱数発生器と、前記乱数発生器が出力する
例えばオペランドBを反転して1を加算するで2の補数
B2's を生成して前記第2ソースレジスタに格納する補
数回路と、減算(A−B)を実行する場合に、前記補正
回路で生成した2の補数B2's を第1オペランドAに加
算するキャリー入力なしの診断対象となる2入力の加減
算器と、を備え、自己診断処理部は、擬似乱数発生器か
ら第1及び第2ソースレジスタに格納した所定ビット長
の任意の自己診断用データX,及び補数回路で生成した
Xの2の補数X2's を前記加減算器に入力して減算Z=
(X−X)をZ=(X+X2's )=(X+X1's +1)
として実行し、減算結果Zが全ビット0の場合は正常と
判断し、全ビット0以外の場合には異常と判断する。 (付記) (付記1)診断対象とする加減算器を備えた演算回路
と、自己診断用データを格納するデータ格納部と、前記
自己診断用データを入力して前記演算回路により演算結
果がオール0又はオール1となるように診断処理を実行
させる自己診断処理部と、を備えたことを特徴とするプ
ロセッサ。(1) (付記2)付記1記載のプロセッサに於いて、前記演算
回路は、第1オペランドAを格納する第1ソースレジス
タと、第2オペランドBを格納する第2ソースレジスタ
と、前記第2オペランドBを反転して1の補数B1's を
出力する補数回路と、前記第1オペランドAを被減数と
して入力し、前記補数回路の出力値B1's を減数として
キャリーと共に入力し、前記1の補数B1's に1を加算
した2の補数B2's を内部生成して第1オペランドAに
加算することにより減算C=(A−B)を実行する診断
対象となるキャリー入力付きの第1加減算器と、前記第
1加減算器の次段に設けられた第2加減算器と、を備
え、前記自己診断処理部は、前記第1及び第2ソースレ
ジスタに格納した所定ビット長の任意の自己診断用デー
タX,Yを使用し、第1サイクルで前記補数回路及び第
1加減算器を用いて減算Z=(X−Y)をZ=(X+Y
2's )=(X+Y1's +1)として実行し、第2サイク
ルで前記被減数Xと減数Yを入れ替えて前記補数回路及
び第1加減算器を用いて減算Z’=(Y−X)をZ´=
(Y+X2's )=(Y+X1's +1)として実行し、第
3サイクルで前記第2加減算器を用いて前記第1及び第
2サイクルの減算結果Z,Z’の加算Z''=(Z+
Z’)=(X+X1's +1+Y+Y1's +1)を実行
し、加算結果が全ビット0の場合は正常と判断し、全ビ
ット0以外の場合には異常と判断することを特徴とする
プロセッサ。(2) (付記3)(オリジナル2) 付記1記載のプロセッサに於いて、前記演算回路は、第
1オペランドAを格納する第1ソースレジスタと、第2
オペランドBを格納する第2ソースレジスタと、前記第
2オペランドBを反転して1の補数B1's を出力する第
1補数回路と、前記第1オペランドAを被減数として入
力し、前記第1補数回路の出力値B1'sを減数としてキ
ャリーと共に入力し、前記1の補数B1's に1を加算し
た2の補数B2's を内部生成して第1オペランドAに加
算することにより減算C=(A−B)を実行する診断対
象となるキャリー付きの加減算器と、前記加減算器の減
算値Cを反転して1を加算することで2の補数C2's を
出力する第2補数回路と、前記加減算器と第2補数回路
の出力を比較する比較器と、を備え、前記演算回路は、
前記第1及び第2ソースレジスタに格納した所定ビット
長の任意の自己診断用データX,Yを使用し、第1サイ
クルで前記第1補数回路及び加減算器を用いて減算Z=
(X−Y)をZ=(X+Y2's )=(X+Y1's +1)
として実行し、第2サイクルで前記被減数Xと減数Yを
入れ替えて前記第1補数回路及び加減算器を用いて減算
Z’=(Y−X)をZ=(Y+X2's )=(Y+X1's
+1)として実行し、前記第2補数回路から減算結果Z
´の補数Z'2s =(Z1's +1)を出力して前記第1サ
イクルの減算結果Zと比較し、両者が一致(Z'2's=Y
2's −X2's =X+Y2's =Z)すれば正常と判断し、
不一致であれば異常と判断することを特徴とするプロセ
ッサ。(3) (付記4)付記1記載のプロセッサに於いて、前記演算
回路は、第1オペランドAを格納する第1ソースレジス
タと、第2オペランドBを格納する第2ソースレジスタ
と、前記第2オペランドBを反転して1を加えることで
2の補数B2's を出力する補数回路と、前記第1オペラ
ンドAを被加数として入力し、前記補数回路の出力値B
2's を加数として入力して加算することにより減算C=
(A−B)を実行する診断対象の第1加減算器と、前記
第1加減算器の次段に設けられた第2加減算器と、を備
え、前記自己診断処理部は、前記第1及び第2ソースレ
ジスタに格納した所定ビット長の任意の自己診断用デー
タX,Yを使用し、第1サイクルで前記補数回路及び第
1加減算器を用いて減算Z=(X−Y)をZ=(X+Y
2's )=(X+Y1's +1)として実行し、第2サイク
ルで前記被減数Xと減数Yを入れ替えて前記補数回路及
び第1加減算器を用いて減算Z’=(Y−X)をZ=
(Y+X2's )=(Y+X1's +1)として実行し、第
3サイクルで前記第2加減算器を用いて前記第1及び第
2サイクルの減算結果Z,Z’の加算Z''=(Z+
Z’)=(X+X1's +1+Y+Y1's +1)を実行
し、加算結果が全ビット0の場合は正常と判断し、全ビ
ット0以外の場合には異常と判断することを特徴とする
プロセッサ。(4) (付記5)付記1記載のプロセッサに於いて、前記演算
回路は、第1オペランドAを格納する第1ソースレジス
タと、第2オペランドBを格納する第2ソースレジスタ
と、前記第2オペランドBを反転して1の補数B1's を
出力する補数回路と、前記第1オペランドAを被減数と
して入力し、前記補数回路の出力値B1's を減数として
キャリーと共に入力し、前記1の補数B1's に1を加算
した2の補数B2's を内部生成して第1オペランドAに
加算することにより減算C=(A−B)を実行する診断
対象となるキャリー入力付きの加減算器と、を備え、前
記自己診断処理部は、前記第1及び第2ソースレジスタ
に格納した所定ビット長の任意の自己診断用データX,
Yを使用し、第1サイクルで前記補数回路及び加減算器
を用いて減算Z=(X−Y)をZ=(X+Y2's )=
(X+Y1's +1)として実行し、第2サイクルで前記
被減数Xと減数Yを入れ替えて前記補数回路及び加減算
器を用いて減算Z’=(Y−X)をZ=(Y+X2's )
=(Y+X1's +1)として実行し、第3サイクルで前
記加減算器を用いて前記第1及び第2サイクルの減算結
果Z,Z’の加算Z''=(Z+Z’)=(X+X1's +
1+Y+Y1's +1)を実行し、加算結果が全ビット0
の場合は正常と判断し、全ビット0以外の場合には異常
と判断することを特徴とするプロセッサ。(5) (付記6)付記1記載のプロセッサに於いて、前記演算
回路は、第1オペランドAを格納する第1ソースレジス
タと、第2オペランドBを格納する第2ソースレジスタ
と、前記第2オペランドBを反転して1を加えることで
2の補数B2's を出力する補数回路と、前記第1オペラ
ンドAを被加数として入力し、前記補数回路の出力値B
2's を加数として入力して加算することにより減算C=
(A−B)を実行する診断対象の加減算器と、を備え、
前記自己診断処理部は、前記第1及び第2ソースレジス
タに格納した所定ビット長の任意の自己診断用データ
X,Yを使用し、第1サイクルで前記補数回路及び加減
算器を用いて減算Z=(X−Y)をZ=(X+Y2's )
=(X+Y1's +1)として実行し、第2サイクルで前
記被減数Xと減数Yを入れ替えて前記補数回路及び加減
算器を用いて減算Z’=(Y−X)をZ=(Y+X2's
)=(Y+X1's +1)として実行し、第3サイクル
で前記加減算器を用いて前記第1及び第2サイクルの減
算結果Z,Z’の加算Z''=(Z+Z’)=(X+X1'
s +1+Y+Y1's +1)を実行し、加算結果が全ビッ
ト0の場合は正常と判断し、全ビット0以外の場合には
異常と判断することを特徴とするプロセッサ。
【0210】(付記7)付記1記載のプロセッサに於い
て、前記演算回路は、第1オペランドAを格納する第1
ソースレジスタと、第2オペランドBを格納する第2ソ
ースレジスタと、前記第2オペランドBを反転して1の
補数B1's を出力する第1補数回路と、前記第1オペラ
ンドAを反転して1の補数A1's を出力する第2補数回
路と、前記第1オペランドAを被減数として入力し、前
記第2補数回路の出力値B1'sを減数としてキャリーと
共に入力し、1を加算した2の補数B2's を内部生成し
て第1オペランドAに加算することにより減算C=(A
−B)を実行する診断対象となるキャリー入力付きの第
1加減算器と、前記第2オペランドBを被減数として入
力し、前記第1補数回路のの出力値A1's を減数として
キャリーと共に入力して1を加算した2の補数A2's を
内部生成して第2オペランドBに加算することにより減
算C´=(B−A)を実行すキャリー入力付き第2加減
算器と、前記第1加減算器と第2加減算器の出力を加算
する第3加減算器と、を備え、前記自己診断処理部は、
前記第1及び第2ソースレジスタに格納した所定ビット
長の任意の自己診断用データX,Yを使用し、第1サイ
クルで前記第1補数回路及び第1加減算器を用いて減算
Z=(X−Y)をZ=(X+Y2's )=(X+Y1's +
1)として実行すると同時に、前記第2補数回路及び第
2加減算器を用いて減算Z’=(Y−X)をZ=(Y+
X2's )=(Y+X1's +1)として並列に実行し、第
2サイクルで前記第3加減算器を用いて前記第1加減算
器と第2加減算器の減算結果Z,Z’の加算Z''=(Z
+Z’)=(X+X1's +1+Y+Y1's +1)を実行
し、加算結果が全ビット0の場合は正常と判断し、全ビ
ット0以外の場合には異常と判断することを特徴とする
プロセッサ。
【0211】(付記8)付記1記載のプロセッサに於い
て、前記演算回路は、第1オペランドAを格納する第1
ソースレジスタと、第2オペランドBを格納する第2ソ
ースレジスタと、前記第2オペランドBを反転して1の
補数B1's を出力する第1補数回路と、前記第1オペラ
ンドAを反転して1の補数A1's を出力する第2補数回
路と、前記第1オペランドAを被減数として入力し、前
記第2補数回路のの出力値B1's を減数としてキャリー
と共に入力し、1を加算した2の補数B2's を内部生成
して第1オペランドAに加算することにより減算C=
(A−B)を実行する診断対象となるキャリー入力付き
の第1加減算器と、前記第2オペランドBを被減数とし
て入力し、前記第1補数回路の出力値A1'sを減数とし
てキャリーと共に入力し、1を加算した2の補数A2's
を内部生成して第2オペランドBに加算することにより
減算C´=(B−A)を実行する診断対象となるキャリ
ー入力付き第2加減算器と、前記第2加減算器の減算値
C´を反転して1を加算することで2の補数C'2'sを出
力する第3補数回路と、前記加減算器と第3補数回路の
出力を比較する比較器と、を備え、前記自己診断処理部
は、前記第1及び第2ソースレジスタに格納した所定ビ
ット長の任意の自己診断用データX,Yを使用し、第1
サイクルで前記第1補数回路及び第1加減算器を用いて
減算Z=(X−Y)をZ=(X+Y2's )=(X+Y1'
s +1)として実行すると同時に、前記第2補数回路及
び第2加減算器を用いて減算Z’=(Y−X)をZ=
(Y+X2's )=(Y+X1's +1)として並列に実行
し、第2サイクルで前記第3補数回路から前記第2加減
算器の減算結果Z´の補数Z'2' =(Z1's +1)を出
力して前記第1加減算器の減算結果Zとを前記比較器で
比較し、両者が一致(Z'2's=Y2's −X2's =X+Y
2's =Z)すれば正常と判断し、不一致であれば異常と
判断することを特徴とするプロセッサ。
【0212】(付記9)付記1記載のプロセッサに於い
て、前記演算回路は、第1オペランドAを格納する第1
ソースレジスタと、第2オペランドBを格納する第2ソ
ースレジスタと、前記第2オペランドBを反転して1を
加算することで2の補数B2's を出力する第1補数回路
と、前記第1オペランドAを反転して1を加算すること
で2の補数A2's を出力する第2補数回路と、前記第1
オペランドAを被減数として入力し、前記第1補数回路
の出力値B2'sを減数として入力して減算C=(A−
B)を実行する診断対象の第1加減算器と、前記第2オ
ペランドBを被減数として入力し、前記第2補数回路の
出力値A2'sを減数として入力して減算C´=(B−
A)を実行する第2加減算器と、前記第1加減算器と第
2加減算器の出力を加算する第3加減算器と、を備え、
前記自己診断処理部は、前記第1及び第2ソースレジス
タに格納した所定ビット長の任意の自己診断用データ
X,Yを使用し、第1サイクルで前記第1補数回路及び
第1加減算器を用いて減算Z=(X−Y)をZ=(X+
Y2's )=(X+Y1's +1)として実行すると同時
に、前記第2補数回路及び第2加減算器を用いて減算
Z’=(Y−X)をZ=(Y+X2's )=(Y+X1's
+1)として並列に実行し、第2サイクルで前記第3加
減算器を用いて前記第1加減算器と第2加減算器の減算
結果Z,Z’の加算Z''=(Z+Z’)=(X+X1's
+1+Y+Y1's +1)を実行し、加算結果が全ビット
0の場合は正常と判断し、全ビット0以外の場合には異
常と判断することを特徴とするプロセッサ。
【0213】(付記10)付記1記載のプロセッサに於
いて、前記演算回路は、第1オペランドAを格納する第
1ソースレジスタと、第2オペランドBを格納する第2
ソースレジスタと、前記第2オペランドBを反転して1
の補数B1's を出力する第1補数回路と、前記第1オペ
ランドAを反転して1の補数A1's を出力する第2補数
回路と、前記第1オペランドAを被減数として入力し、
前記第2補数回路のの出力値B1's を減数としてキャリ
ーと共に入力し、1を加算した2の補数B2's を内部生
成して第1オペランドAに加算することにより減算C=
(A−B)を実行する診断対象となるキャリー入力付き
の第1加減算器と、前記第2オペランドBを被減数とし
て入力し、前記第1補数回路の出力値A1'sを減数とし
てキャリーと共に入力し、1を加算した2の補数A2's
を内部生成して第2オペランドBに加算することにより
減算C´=(B−A)を実行するキャリー入力付き第2
加減算器と、を備え、前記自己診断処理部は、前記第1
及び第2ソースレジスタに格納した所定ビット長の任意
の自己診断用データX,Yを使用し、第1サイクルで前
記第1補数回路及び第1加減算器を用いて減算Z=(X
−Y)をZ=(X+Y2's )=(X+Y1's +1)とし
て実行すると同時に、前記第2補数回路及び第2加減算
器を用いて減算Z’=(Y−X)をZ=(Y+X2's )
=(Y+X1's +1)として並列に実行し、第2サイク
ルで前記第1加減算器を用いて第1サイクル目の前記第
1加減算器と第2加減算器の減算結果Z,Z’の加算
Z''=(Z+Z’)=(X+X1's +1+Y+Y1's +
1)を実行し、加算結果が全ビット0の場合は正常と判
断し、全ビット0以外の場合には異常と判断することを
特徴とするプロセッサ。
【0214】(付記11)付記1記載のプロセッサに於
いて、前記演算回路は、第1オペランドAを格納する第
1ソースレジスタと、第2オペランドBを格納する第2
ソースレジスタと、前記第2オペランドBを反転して1
を加算することで2の補数B2's を出力する第1補数回
路と、前記第1オペランドAを反転して1を加算するこ
とで2の補数A2's を出力する第2補数回路と、前記第
1オペランドAを被減数として入力し、前記第1補数回
路の出力値B2'sを減数として入力して減算C=(A−
B)を実行する診断対象の第1加減算器と、前記第2オ
ペランドBを被減数として入力し、前記第2補数回路の
出力値A2'sを減数として入力して減算C´=(B−
A)を実行する第2加減算器と、を備え、前記自己診断
処理部は、前記第1及び第2ソースレジスタに格納した
所定ビット長の任意の自己診断用データX,Yを使用
し、第1サイクルで前記第1補数回路及び第1加減算器
を用いて減算Z=(X−Y)をZ=(X+Y2's )=
(X+Y1's +1)として実行すると同時に、前記第2
補数回路及び第2加減算器を用いて減算Z’=(Y−
X)をZ=(Y+X2's )=(Y+X1's +1)として
並列に実行し、第2サイクルで前記第1加減算器を用い
て第1サイクル目の前記第1加減算器と第2加減算器の
減算結果Z,Z’の加算Z''=(Z+Z’)=(X+X
1's +1+Y+Y1's +1)を実行し、加算結果が全ビ
ット0の場合は正常と判断し、全ビット0以外の場合に
は異常と判断することを特徴とするプロセッサ。
【0215】(付記11)付記2乃至10のいずれかに
記載のプロセッサに於いて、前記演算回路は、更に、前
記第1ソースレジスタに格納した第1オペランドAを初
期値して入力した後の演算周期毎に新たな第1オペラン
ドを乱数処理により発生して前記第1ソースレジスタに
格納する第1擬似乱数発生器と、前記第2ソースレジス
タに格納した第2オペランドBを初期値として入力した
後の演算周期毎に新たな第2オペランドを乱数処理によ
り発生して前記第2ソースレジスタに格納する第2擬似
乱数発生器と、を備え、前記自己診断処理部は、前記第
1及び第2ソースレジスタに格納した所定ビット長の任
意の自己診断用データX,Yを使用した自己診断処理が
正常終了する毎に、前記第1及び第2擬似乱数発生器に
新たな自己診断用データX,Yを生成させて自己診断処
理を繰返し実行することを特徴とするプロセッサ。
【0216】(付記12)付記1記載のプロセッサに於
いて、前記演算回路は、第1オペランドを格納する第1
ソースレジスタと、第2オペランドを格納する第2ソー
スレジスタと、前記第1又は第2オペランドのいずれか
一方を初期値として入力した後の演算周期毎の乱数発生
処理により新たなオペランドAを発生して第1ソースレ
ジスタに格納する擬似乱数発生器と、前記乱数発生器が
発生するオペランドAを反転した1の補数A1's を前記
第2ソースレジスタに格納する補数回路と、前記第1オ
ペランドBを被減数として入力し、前記2オペランドA
1's を減数としてキャリーと共に入力して1を加算した
2の補数A2's を内部生成して加算することにより減算
C=(A−A)を実行する診断対象となるキャリー入力
付きの加減算器と、を備え、前記自己診断処理部は、前
記擬似乱数発生器から前記第1及び第2ソースレジスタ
に格納した所定ビット長の任意の自己診断用データX,
X1's をキャリーと共に前記加減算器に入力して減算Z
=(X−X)をZ=(X+X2's )=(X+X1's +
1)として実行し、減算結果が全ビット0の場合は正常
と判断し、全ビット0以外の場合には異常と判断するこ
とを特徴とするプロセッサ。
【0217】(付記13)付記1記載のプロセッサに於
いて、前記演算回路は、第1オペランドを格納する第1
ソースレジスタと、第2オペランドを格納する第2ソー
スレジスタと、前記第1又は第2オペランドのいずれか
一方を初期値として入力した後の演算周期毎の乱数発生
処理により新たなオペランドAを発生して第1ソースレ
ジスタに格納する擬似乱数発生器と、前記乱数発生器が
出力するオペランドAを反転して1を加算するで2の補
数A2's を生成して前記第2ソースレジスタに格納する
補数回路と、前記第1オペランドAを被減数として入力
し、前記第2オペランドA2's を減数として入力して減
算C=(A−A)を実行する診断対象となる加減算器
と、を備え、前記自己診断処理部は、前記擬似乱数発生
器から前記第1及び第2ソースレジスタに格納した所定
ビット長の任意の自己診断用データX,X1's を前記加
減算器に入力して減算Z=(X−X)をZ=(X+X2'
s )=(X+X1's +1)として実行し、減算結果が全
ビット0の場合は正常と判断し、全ビット0以外の場合
には異常と判断することを特徴とするプロセッサ。
【0218】
【発明の効果】以上説明してきたように本発明によれ
ば、任意の自己診断用の入力データに対し、演算結果と
して検査が容易な全ビットがオールゼロまたはオール1
が得られるように演算回路及び自己診断処理部を構成し
たことで、従来の自己診断に必要な期待値及び期待値の
比較回路を不要とし、これによって自己診断を実現する
ための必要な回路規模を小さくし、結果として大サイズ
を小型化し、プロセッサの歩留り向上や低消費電力化に
寄与した自己診断機能を実装したプロセッサなどのプロ
セッサを実現することができる。
【0219】またテストデータを外部から読み込む場合
については、期待値を必要としないことから外部データ
の読み込みが短時間にでき、且つプロセッサなどのプロ
セッサの生産計画により1台当たりの自己診断に要する
時間が変わるような場合にも、期待値の準備を必要とし
ない分、柔軟に且つ容易に対応することができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の基本構成を示したブロック図
【図3】本発明の第1実施形態の回路ブロック図
【図4】図3のキャリー入力つき2入力加減算器の回路
【図5】本発明の第2実施形態の回路ブロック図
【図6】本発明の第3実施形態の回路ブロック図
【図7】本発明の第4実施形態の回路ブロック図
【図8】本発明の第5実施形態の回路ブロック図
【図9】本発明の第6実施形態の回路ブロック図
【図10】本発明の第7実施形態の回路ブロック図
【図11】本発明の第8実施形態の回路ブロック図
【図12】本発明の第9実施形態の回路ブロック図
【図13】本発明の第10実施形態の回路ブロック図
【図14】擬似乱数発生を用いた本発明の第11実施形
態の回路ブロック図
【図15】図14で擬似乱数を発生するリニアフィード
バックシフトレジスタの回路図
【図16】擬似乱数発生を用いた本発明の第12実施形
態の回路ブロック図
【図17】擬似乱数発生を用いた本発明の第13実施形
態の回路ブロック図
【図18】擬似乱数発生を用いた本発明の第14実施形
態の回路ブロック図
【図19】擬似乱数発生を用いた本発明の第15実施形
態の回路ブロック図
【図20】擬似乱数発生を用いた本発明の第16実施形
態の回路ブロック図
【図21】擬似乱数発生を用いた本発明の第17実施形
態の回路ブロック図
【図22】従来のプロセッサの基本的なハードウェア構
成のブロック図
【図23】図22のプロセッサにおける命令デコーダを
含む整数演算器の基本構成のブロック図
【図24】自己診断回路を内蔵した従来の加減算回路の
ブロック図
【符号の説明】
10−1:演算回路 10−2:自己診断処理部 11:試験対象 12,72:加減算器(キャリー入力付き2入力加減算
器) 14:汎用レジスタファイル 16:ソースデータ(第1オペランド) 18:ソースデータ(第2オペランド) 20,22,28,64,66,68,80,82,8
8,90:セレクタ 24:第1ソースレジスタ 26:第2ソースレジスタ 30,56,70,76,96:インバータ 32,34,38,74:ディスティネーションレジス
タ 36:加減算器 40:演算結果 42:テストアクセスポートコントローラ(TAPコン
トローラ) 44:自己診断コントローラ(BISTコントローラ) 48:オールゼロ検出器 50:デコーダ 52:オペコード 54:比較器 58,61,78,98:+1インクリメント 60:エラー検出器 65:加減算器(キャリー入力なし) 84,88:リニアフィードバックシフトレジスタ(L
FSR) 92:シフトレジスタ 94:EX−OR
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 15/78 510 G06F 7/00 A Fターム(参考) 5B016 AA02 BA02 BB01 CA01 CB03 HA01 5B022 AA00 BA02 CA01 CA04 EA08 EA09 FA03 FA08 FA10 5B048 AA02 AA03 AA11 AA20 CC02 CC11 DD05 DD06 5B062 AA08 DD10 JJ05

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】診断対象とする加減算器を備えた演算回路
    と、 自己診断用データを格納するデータ格納部と、 前記自己診断用データを入力して前記演算回路により演
    算結果がオール0又はオール1となるように診断処理を
    実行させる自己診断処理部と、を備えたことを特徴とす
    るプロセッサ。
  2. 【請求項2】請求項1記載のプロセッサに於いて、 前記演算回路は、 第1オペランドAを格納する第1ソースレジスタと、 第2オペランドBを格納する第2ソースレジスタと、 前記第2オペランドBを反転して1の補数B1's を出力
    する補数回路と、 前記第1オペランドAを被減数として入力し、前記補数
    回路の出力値B1's を減数としてキャリーと共に入力
    し、前記1の補数B1's に1を加算した2の補数B2's
    を内部生成して第1オペランドAに加算することにより
    減算C=(A−B)を実行する診断対象となるキャリー
    入力付きの第1加減算器と、 前記第1加減算器の次段に設けられた第2加減算器と、
    を備え、 前記自己診断処理部は、前記第1及び第2ソースレジス
    タに格納した所定ビット長の任意の自己診断用データ
    X,Yを使用し、 第1サイクルで前記補数回路及び第1加減算器を用いて
    減算Z=(X−Y)をZ=(X+Y2's )=(X+Y1'
    s +1)として実行し、 第2サイクルで前記被減数Xと減数Yを入れ替えて前記
    補数回路及び第1加減算器を用いて減算Z’=(Y−
    X)をZ´=(Y+X2's )=(Y+X1's +1)とし
    て実行し、 第3サイクルで前記第2加減算器を用いて前記第1及び
    第2サイクルの減算結果Z,Z’の加算Z''=(Z+
    Z’)=(X+X1's +1+Y+Y1's +1)を実行
    し、加算結果が全ビット0の場合は正常と判断し、全ビ
    ット0以外の場合には異常と判断することを特徴とする
    プロセッサ。
  3. 【請求項3】請求項1記載のプロセッサに於いて、 前記演算回路は、 第1オペランドAを格納する第1ソースレジスタと、 第2オペランドBを格納する第2ソースレジスタと、 前記第2オペランドBを反転して1の補数B1's を出力
    する第1補数回路と、 前記第1オペランドAを被減数として入力し、前記第1
    補数回路の出力値B1's を減数としてキャリーと共に入
    力し、前記1の補数B1's に1を加算した2の補数B2'
    s を内部生成して第1オペランドAに加算することによ
    り減算C=(A−B)を実行する診断対象となるキャリ
    ー付きの加減算器と、 前記加減算器の減算値Cを反転して1を加算することで
    2の補数C2's を出力する第2補数回路と、 前記加減算器と第2補数回路の出力を比較する比較器
    と、を備え、 前記演算回路は、前記第1及び第2ソースレジスタに格
    納した所定ビット長の任意の自己診断用データX,Yを
    使用し、 第1サイクルで前記第1補数回路及び加減算器を用いて
    減算Z=(X−Y)をZ=(X+Y2's )=(X+Y1'
    s +1)として実行し、 第2サイクルで前記被減数Xと減数Yを入れ替えて前記
    第1補数回路及び加減算器を用いて減算Z’=(Y−
    X)をZ=(Y+X2's )=(Y+X1's +1)として
    実行し、前記第2補数回路から減算結果Z´の補数Z'2
    s =(Z1's +1)を出力して前記第1サイクルの減算
    結果Zと比較し、両者が一致(Z'2's=Y2's −X2's
    =X+Y2's =Z)すれば正常と判断し、不一致であれ
    ば異常と判断することを特徴とするプロセッサ。
  4. 【請求項4】請求項1記載のプロセッサに於いて、 前記演算回路は、 第1オペランドAを格納する第1ソースレジスタと、 第2オペランドBを格納する第2ソースレジスタと、 前記第2オペランドBを反転して1を加えることで2の
    補数B2's を出力する補数回路と、 前記第1オペランドAを被加数として入力し、前記補数
    回路の出力値B2's を加数として入力して加算すること
    により減算C=(A−B)を実行する診断対象の第1加
    減算器と、 前記第1加減算器の次段に設けられた第2加減算器と、
    を備え、 前記自己診断処理部は、前記第1及び第2ソースレジス
    タに格納した所定ビット長の任意の自己診断用データ
    X,Yを使用し、 第1サイクルで前記補数回路及び第1加減算器を用いて
    減算Z=(X−Y)をZ=(X+Y2's )=(X+Y1'
    s +1)として実行し、 第2サイクルで前記被減数Xと減数Yを入れ替えて前記
    補数回路及び第1加減算器を用いて減算Z’=(Y−
    X)をZ=(Y+X2's )=(Y+X1's +1)として
    実行し、 第3サイクルで前記第2加減算器を用いて前記第1及び
    第2サイクルの減算結果Z,Z’の加算Z''=(Z+
    Z’)=(X+X1's +1+Y+Y1's +1)を実行
    し、加算結果が全ビット0の場合は常と判断し、全ビッ
    ト0以外の場合には異常と判断することを特徴とするプ
    ロセッサ。
  5. 【請求項5】請求項1記載のプロセッサに於いて、 前記演算回路は、 第1オペランドAを格納する第1ソースレジスタと、 第2オペランドBを格納する第2ソースレジスタと、 前記第2オペランドBを反転して1の補数B1's を出力
    する補数回路と、 前記第1オペランドAを被減数として入力し、前記補数
    回路の出力値B1's を減数としてキャリーと共に入力
    し、前記1の補数B1's に1を加算した2の補数B2's
    を内部生成して第1オペランドAに加算することにより
    減算C=(A−B)を実行する診断対象となるキャリー
    入力付きの加減算器と、を備え、 前記自己診断処理部は、前記第1及び第2ソースレジス
    タに格納した所定ビット長の任意の自己診断用データ
    X,Yを使用し、 第1サイクルで前記補数回路及び加減算器を用いて減算
    Z=(X−Y)をZ= (X+Y2's )=(X+Y1's +1)として実行し、 第2サイクルで前記被減数Xと減数Yを入れ替えて前記
    補数回路及び加減算器を用いて減算Z’=(Y−X)を
    Z=(Y+X2's )=(Y+X1's +1)として実行
    し、 第3サイクルで前記加減算器を用いて前記第1及び第2
    サイクルの減算結果Z,Z’の加算Z''=(Z+Z’)
    =(X+X1's +1+Y+Y1's +1)を実行し、加算
    結果が全ビット0の場合は正常と判断し、全ビット0以
    外の場合には異常と判断することを特徴とするプロセッ
    サ。
JP2000287950A 2000-09-22 2000-09-22 プロセッサ Withdrawn JP2002099447A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000287950A JP2002099447A (ja) 2000-09-22 2000-09-22 プロセッサ
US09/814,856 US6721905B2 (en) 2000-09-22 2001-03-23 Processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000287950A JP2002099447A (ja) 2000-09-22 2000-09-22 プロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2006158758A Division JP3897356B2 (ja) 2006-06-07 2006-06-07 演算処理装置及びその自己診断方法

Publications (1)

Publication Number Publication Date
JP2002099447A true JP2002099447A (ja) 2002-04-05

Family

ID=18771615

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000287950A Withdrawn JP2002099447A (ja) 2000-09-22 2000-09-22 プロセッサ

Country Status (2)

Country Link
US (1) US6721905B2 (ja)
JP (1) JP2002099447A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2011142015A1 (ja) * 2010-05-12 2013-07-22 トヨタ自動車株式会社 演算器異常判定装置及び方法
WO2015186170A1 (ja) * 2014-06-02 2015-12-10 三菱電機株式会社 演算回路診断装置および演算回路診断プログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8229108B2 (en) * 2003-08-15 2012-07-24 Broadcom Corporation Pseudo-random number generation based on periodic sampling of one or more linear feedback shift registers
US7467343B2 (en) * 2003-11-05 2008-12-16 Texas Instruments Incorporated Apparatus and method for performing a multi-value polling operation in a JTAG data stream
US7240267B2 (en) * 2004-11-08 2007-07-03 Marvell International Ltd. System and method for conducting BIST operations
JP4147423B2 (ja) * 2004-11-12 2008-09-10 セイコーエプソン株式会社 任意精度演算器、任意精度演算方法、および電子機器
KR101418467B1 (ko) * 2008-08-15 2014-07-10 엘에스아이 코포레이션 니어 코드워드들의 ram 리스트-디코딩
US9043673B2 (en) * 2012-02-23 2015-05-26 International Business Machines Corporation Techniques for reusing components of a logical operations functional block as an error correction code correction unit
CN104183272B (zh) * 2014-08-18 2018-01-19 广州泰瑞捷电子科技有限公司 一种邮票孔封装的核心板自检与烧录装置、方法
DE102019203352A1 (de) * 2019-03-12 2020-09-17 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben eines Kommunikationssystems

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991175A (en) * 1989-10-06 1991-02-05 Hewlett-Packard Signature analysis
JP3151787B2 (ja) 1992-09-24 2001-04-03 日本電信電話株式会社 集積回路の組み込み自己試験回路及びその評価方法及び設計方法
US5485471A (en) * 1993-10-15 1996-01-16 Mitsubishi Electric Research Laboratories, Inc. System for testing of digital integrated circuits
US5668947A (en) * 1996-04-18 1997-09-16 Allen-Bradley Company, Inc. Microprocessor self-test apparatus and method
US5668817A (en) * 1996-07-11 1997-09-16 Northern Telecom Limited Self-testable digital signal processor and method for self-testing of integrating circuits including DSP data paths
US6154857A (en) * 1997-04-08 2000-11-28 Advanced Micro Devices, Inc. Microprocessor-based device incorporating a cache for capturing software performance profiling data
US6108798A (en) * 1997-07-02 2000-08-22 International Business Machines Corporation Self programmed built in self test
US6249892B1 (en) * 1998-10-29 2001-06-19 Advantest Corp. Circuit structure for testing microprocessors and test method thereof
US6249893B1 (en) * 1998-10-30 2001-06-19 Advantest Corp. Method and structure for testing embedded cores based system-on-a-chip
US6510531B1 (en) * 1999-09-23 2003-01-21 Lucent Technologies Inc. Methods and systems for testing parallel queues
US6421794B1 (en) * 2000-03-09 2002-07-16 John T. Chen Method and apparatus for diagnosing memory using self-testing circuits

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2011142015A1 (ja) * 2010-05-12 2013-07-22 トヨタ自動車株式会社 演算器異常判定装置及び方法
WO2015186170A1 (ja) * 2014-06-02 2015-12-10 三菱電機株式会社 演算回路診断装置および演算回路診断プログラム

Also Published As

Publication number Publication date
US20020062462A1 (en) 2002-05-23
US6721905B2 (en) 2004-04-13

Similar Documents

Publication Publication Date Title
KR950003200B1 (ko) 정확한 부동 소숫점 예외를 처리할 수 있는 방법 및 장치
TWI515649B (zh) 響應於輸入資料値以降低在積和熔加運算(fma)單元中的功率消耗之技術
JPH0414366B2 (ja)
JPH02294730A (ja) 浮動小数点数演算処理装置
US4926374A (en) Residue checking apparatus for detecting errors in add, subtract, multiply, divide and square root operations
JP2002091792A (ja) 通常モードでの命令実行中にハードウェア・テストを実行するプロセッサおよび方法
EP0487814A2 (en) Overflow determination for three-operand alus in a scalable compound instruction set machine
EP0529101B1 (en) Floating-point dividing circuit
JP2002099447A (ja) プロセッサ
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
JPS6347827A (ja) 妥当性応答発生装置
US4773035A (en) Pipelined data processing system utilizing ideal floating point execution condition detection
US6101621A (en) Logic circuit and method for designing the same
JP3897356B2 (ja) 演算処理装置及びその自己診断方法
TWI220960B (en) Locking source registers in a data processing apparatus
US6263424B1 (en) Execution of data dependent arithmetic instructions in multi-pipeline processors
US6519621B1 (en) Arithmetic circuit for accumulative operation
US7058678B2 (en) Fast forwarding ALU
US6760738B2 (en) Exponent unit of data processing system
JP2003202981A (ja) アドレス範囲チェック回路及び動作方法
US8473541B2 (en) M-bit race delay adder and method of operation
US7191432B2 (en) High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit
JPH02213938A (ja) 演算装置
JP2532083B2 (ja) フラグ発生回路
US6772318B1 (en) Bypass control circuit

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050726

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050926

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060404

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060609

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060707

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20061201