(57)【特許請求の範囲】
【請求項１】
並列計算機における複数のルーティング・コントローラに対応する複数の集積回路を互いに接続して構成されるネットワークのスキャンパスを構成するスキャン装置であって、
前記複数の集積回路のうち２つ以上の集積回路の信号線にそれぞれ接続され、各集積回路の信号線を切り替える複数の集積回路スイッチ手段と、
前記複数の集積回路スイッチ手段の信号線に接続され、該複数の集積回路スイッチ手段の切り替え動作を制御することで、該複数の集積回路のうちの少なくとも１つ以上の集積回路を含む前記スキャンパスを構成する制御手段と、
前記スキャンパスを用いて、該スキャンパスに含まれる集積回路が有する情報をシフトするシフト手段とを備え、
各集積回路スイッチ手段は、各集積回路の信号線の切替を指示するための第１の切替データを保持する第１の格納手段と、該第１の切替データにより制御される第１のスイッチングマトリクス手段とを含み、
前記制御手段は、前記集積回路スイッチ手段の信号線の切り替えを指示するための第２の切替データを保持する第２の格納手段と、該第２の切替データにより制御される第２のスイッチングマトリクス手段とを含み、該第２のスイッチングマトリクス手段により前記複数の集積回路スイッチ手段の信号線を切り替えることで、該複数の集積回路スイッチ手段のうちの少なくとも１つ以上の集積回路スイッチ手段を含む第１のパスを構成し、該第１のパスを用いて、前記第１の切替データを該１つ以上の集積回路スイッチ手段にスキャンインするとともに、該１つ以上の集積回路スイッチ手段に制御信号を出力し、
前記１つ以上の集積回路スイッチ手段は、前記制御信号が特定の値のとき、それぞれ前記集積回路スイッチ手段の信号線を前記第１の格納手段に接続して、該第１の格納手段に前記第１の切替データを入力し、前記第１のスイッチングマトリクス手段により各集積回路の信号線を切り替えることで、１つ以上の集積回路からなる第２のパスを構成し、該第２のパスを該第１のパスに階層的に接続して、該集積回路スイッチ手段の信号線と該集積回路の信号線を含む前記スキャンパスを構成し、
前記シフト手段は、前記並列計算機の運用中に前記スキャンパスを用いてインストラクションをシフトすることで、前記スキャンパスに含まれる集積回路内のインストラクションレジスタに、ターゲットとなる集積回路内のデータレジスタの値をシフトし他の集積回路内のデータレジスタの値をシフトしないインストラクションを設定することを特徴とするスキャン装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数の半導体素子により構成される大規模なネットワークの試験方法に係り、いくつかの被試験半導体素子を結ぶスキャンパスを構成してネットワークの試験を行うスキャン装置に関する。
【０００２】
【従来の技術】
近年、計算機による処理の高速化のために、複数のＣＰＵ（中央処理装置）を接続して計算を行わせる並列計算機システムの利用が増えている。並列計算機は、複数のＣＰＵを接続するためのネットワークを持つが、ＣＰＵの台数が増えるに従い、このネットワークのために使用される配線も増える。また、ＣＰＵ間のネットワークの転送レートを上げて、より高い性能を得るために、配線を増やすことも行われている。
【０００３】
この結果として、並列計算機ではネットワーク上に複雑な配線が巡らされ、その接続関係を試験することは容易ではない。実用性やコストを考慮すれば、試験のためのハードウェア量の増加は極力抑えるべきであり、試験時間も短いことが望ましい。
【０００４】
こうした計算機システムの試験容易化および試験用ハードウェア量の削減を目的とする試験方式の標準として、ＩＥＥＥ  Ｓｔｄ  １１４９．１（Institute of Electrical and Electronics Engineers Standard Test Access Port and Boundary-Scan Architecture）がある。この標準に基づく試験方式は、通称ＪＴＡＧ−ＳＣＡＮ（Joint Test Action Group-Scan）方式と呼ばれている。
【０００５】
ＪＴＡＧ−ＳＣＡＮ方式は、ＴＡＰ（Test Access Port）と呼ばれる汎用ポートを用いることで、ＬＳＩ（Large Scale Integration ）回路内のレジスタ情報を引き出し、ＬＳＩの全状態を観測／制御できるという特徴を持つ。この方法によれば、ＬＳＩをプリント板に実装した状態でもこの機能が利用できるため、複数のＬＳＩ等の半導体素子を含むシステムの試験に適している。
【０００６】
ＴＡＰには、通常、ＴＣＫ（Test Clock）、ＴＭＳ（Test Mode Select）、ＴＤＩ（Test Data Input ）、ＴＤＯ（Test Data Output）、ＴＲＳＴ（Test Reset）の５本の信号線が含まれる。
【０００７】
ＴＣＫは試験用のクロック信号のポートを表し、ＴＭＳはＴＡＰコントローラの状態を変化させる信号のポートを表す。ＴＡＰコントローラとは、ＪＴＡＧ試験における回路動作のシーケンスを制御する有限状態機械である。
【０００８】
また、ＴＤＩは試験用のインストラクションやデータの入力ポートを表し、ＴＤＯはそれらの出力ポートを表し、ＴＲＳＴはＴＡＰコントローラを初期化する信号のポートを表す。このうち、ＴＲＳＴはオプショナルなポートであって、必ずしも利用する必要はない。
【０００９】
【発明が解決しようとする課題】
しかしながら、大規模なシステムにおける従来のＪＴＡＧ試験には次のような問題がある。
【００１０】
今、仮想的な被試験システムとして、図６８のような並列計算機ネットワークを考えることにする。図６８のネットワーク上の各ノードには、ＲＴＣ（Routing Controller）１と呼ばれるＬＳＩが配置されている。それぞれのＲＴＣ１は不図示の各ＣＰＵに接続され、それらのＣＰＵ間の通信を制御する。言い換えれば、ＲＴＣ１間の実線がＣＰＵ間のネットワークの配線を表していることになる。
【００１１】
また、各ＲＴＣ１は、上述のＴＡＰに対応する信号線から成るＪＴＡＧＩ／Ｆ（ＪＴＡＧインタフェース）を持つ。ただし、図６８では、ＪＴＡＧＩ／Ｆは単にＪＴＡＧと記され、各ＲＴＣ１のＴＤＩとＴＤＯに対応する信号線のみが示されている。
【００１２】
図６８の並列計算機ネットワークでは、ＲＴＣ１が２次元的に配置されているが、実際には、トーラス状に接続されていることが多い。しかし、ここでは簡単のために、このような模擬的な構成を用いてＪＴＡＧ試験の概要を説明する。
【００１３】
一般のＪＴＡＧ試験では、図６９に示すように、ＪＴＡＧスキャンの入出力ポートであるＴＤＩ、ＴＤＯを芋蔓（チェーン）状に接続してスキャンループ（スキャンパス）を構成する。そして、スキャンエンジン（ＳＣＡＮＥ）２の制御に従って、システム全体を同時に試験する。
【００１４】
しかし、図６９のようなＪＴＡＧ試験では、システム構成に自由度がないという問題がある。スキャンループはすべてのＲＴＣ１を含むように、回路設計時に決定されている。このため、ＲＴＣ１が実装されていないノードでは配線の変更が必要になり、容易にＲＴＣ１を削減することができない。また、ＲＴＣ１を追加してシステムを拡張する場合も、配線の変更が必要となる。したがって、システム構成の変更には多大なコストがかかる。
【００１５】
また、このようなＪＴＡＧ試験では、すべてのＲＴＣ１をスキャンループに入れているため、スキャン試験に時間がかかるという問題もある。例えば、ＡＰ３０００のような並列計算機の場合、最大１０２４台のＣＰＵを備え、対応するＲＴＣ１の数も同数になる。こうした大規模なシステムの一部のレジスタ情報を読み出したいときに、すべてのＲＴＣ１を経由するのは時間的に無駄が多い。
【００１６】
このように、大規模なシステムに対する、安価で高速なＪＴＡＧ試験の一般的方法は、まだ確立していない。
本発明の課題は、並列計算機等の巨大なシステムに対して、ＪＴＡＧ−ＳＣＡＮのようなスキャン試験を、効率的かつ安価に実施できるようなスキャン装置を提供することである。
【００１７】
【課題を解決するための手段】
図１は、本発明のスキャン装置の原理図である。
図１のスキャン装置はスキャンパス構成手段１１とシフト手段１２を備え、複数の集積回路１３を互いに接続して構成されるネットワーク１４のスキャンパスを構成する。
【００１８】
スキャンパス構成手段１１は、上記複数の集積回路１３の各々の入出力信号線に対応するスキャンチェーン１５を階層的に接続して、上記複数の集積回路１３のうちの少なくとも１つ以上の集積回路１３を含む上記スキャンパスを構成する。
【００１９】
シフト手段１２は、上記スキャンパスを用いて、上記１つ以上の集積回路が有する情報をシフトする。
集積回路１３は、例えばＲＴＣ１のようなＬＳＩに相当する。スキャンパス構成手段１１は、スキャンパスの一部分となるスキャンチェーン１５を、例えば第１の層と第２の層の２階層の部分チェーン（部分パス）に分割し、それぞれの層の部分チェーンを独立に接続／切断する。シフト手段１２は、部分チェーンを繋ぎ合わせて構成されたスキャンパスの入力側からデータをシフトインし、出力側からデータをシフトアウトして、スキャン動作を行う。
【００２０】
スキャンパス構成手段１１を設けることで、スキャンチェーン１５を柔軟に繋ぎ合わせることが可能になり、多様なスキャンパスを構成できる。したがって、試験に必要な集積回路１３のみを取り込んだ短いスキャンパスを構成することも可能になり、スキャン試験が効率化される。
【００２１】
また、スキャンパス構成手段１１は、複数の集積回路スイッチ手段１６と制御手段１７とを含む。制御手段１７は、上記複数の集積回路スイッチ手段１６の信号線１５に接続され、切替を指示するための切替データをそれらの集積回路スイッチ手段１６のうちの少なくとも１つ以上にスキャンインして、集積回路スイッチ手段１６の切り替え動作を制御する。
【００２２】
各集積回路スイッチ手段１６は２つ以上の集積回路１３の信号線１５に接続され、上記切替データを入力された集積回路スイッチ手段１６は、その切替データに従って、対応する集積回路１３の信号線１５を切り替える。
【００２３】
スキャンチェーン１５は集積回路スイッチ手段１６により、上記第１の層と第２の層に分割される。そして、制御手段１７から与えられる切替データに応じて、第１の層の部分チェーンの接続／切断を行う。制御手段１７は、切替データを変更することにより、スキャンパスに取り込まれる集積回路１３を変更することができる。
【００２４】
スキャンパス構成手段１１をこのように構成することで、すべての集積回路１３のスキャンチェーン１５を直接シフト手段１２に接続することなく、任意の集積回路１３を接続／切断することが可能になる。例えば１０００個以上の集積回路１３を含むシステムにおいても、適当な数の集積回路スイッチ手段１６を設けることで、任意の集積回路１３を選択的にスキャンパスに取り込むことができる。
【００２５】
さらに、図１のスキャン装置を用いれば、システムの変更を柔軟に行うことが可能になる。例えば、集積回路１３を削減する場合は、その集積回路１３の信号線１５を切断するような切替データを生成すればよく、配線を変更する作業が不要になる。
【００２６】
また、集積回路１３を追加してシステムを拡張する場合は、その集積回路１３の信号線１５を空いている集積回路スイッチ手段１６に接続すればよい。あるいは、集積回路スイッチ手段１６を１つ追加したとしても、追加に伴うハードウェアのコストは、システム全体のコストに比べてはるかに低い。
【００２７】
例えば、図１のスキャンパス構成手段１１は、後述する図３のスキャンエンジン３１とスキャンバッファ３２を含み、シフト手段１２はスキャンエンジン３１に対応する。また、例えば、集積回路スイッチ手段１６はスキャンバッファ３２に対応し、制御手段１７はスキャンエンジン３１と図１０のＣＰＵ部５２に対応する。
また、本発明の別のスキャン装置は、複数の集積回路スイッチ手段１６、制御手段１７、およびシフト手段１２を備え、並列計算機における複数のＲＴＣに対応する複数の集積回路１３を互いに接続して構成されるネットワーク１４のスキャンパスを構成する。各集積回路スイッチ手段１６は２つ以上の集積回路１３の信号線１５に接続され、各集積回路１３の信号線１５を切り替える。制御手段１７は、上記複数の集積回路スイッチ手段１６の信号線１５に接続され、それらの集積回路スイッチ手段１６の切り替え動作を制御することで、少なくとも１つ以上の集積回路１３を含む上記スキャンパスを構成する。シフト手段１２は、上記スキャンパスを用いて、スキャンパスに含まれる集積回路１３が有する情報をシフトする。
各集積回路スイッチ手段１６は、各集積回路１３の信号線１５の切替を指示するための第１の切替データを保持する第１の格納手段と、第１の切替データにより制御される第１のスイッチングマトリクス手段とを含む。制御手段１７は、集積回路スイッチ手段１６の信号線１５の切り替えを指示するための第２の切替データを保持する第２の格納手段と、第２の切替データにより制御される第２のスイッチングマトリクス手段とを含み、第２のスイッチングマトリクス手段により上記複数の集積回路スイッチ手段１６の信号線１５を切り替えることで、少なくとも１つ以上の集積回路スイッチ手段１６を含む第１のパスを構成し、第１のパスを用いて、第１の切替データをその集積回路スイッチ手段１６にスキャンインするとともに、その集積回路スイッチ手段１６に制御信号を出力する。その集積回路スイッチ手段１６は、上記制御信号が特定の値のとき、集積回路スイッチ手段１６の信号線１５を第１の格納手段に接続して、第１の格納手段に第１の切替データを入力し、第１のスイッチングマトリクス手段により各集積回路の信号線を切り替えることで、１つ以上の集積回路１３からなる第２のパスを構成し、第２のパスを第１のパスに階層的に接続して、集積回路スイッチ手段１６の信号線１５と集積回路１３の信号線１５を含む上記スキャンパスを構成する。シフト手段１２は、並列計算機の運用中に上記スキャンパスを用いてインストラクションをシフトすることで、スキャンパスに含まれる集積回路１３内のインストラクションレジスタに、ターゲットとなる集積回路１３内のデータレジスタの値をシフトし他の集積回路１３内のデータレジスタの値をシフトしないインストラクションを設定する。
【００２８】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
図２は、並列計算機の構成例を示す図である。図２の並列計算機は、ＣＮ個のＰＥ（Processing Element）キャビネット２１−０、２１−１、・・・、２１−ＣＮ、および対応するＣＮ個のネットワークキャビネット２２−０、２２−１、・・・、２２−ＣＮから成る。
【００２９】
各ＰＥキャビネット２１−ｉ（ｉ＝０，．．．，ＣＮ）は、複数のＣＰＵ２３、メモリ２４、およびメッセージコントローラ（ＭＳＣ）２５を有し、各ネットワークキャビネット２２−ｉは、複数のＲＴＣ２６を有する。
【００３０】
ＣＰＵ２３とメモリ２４はそれぞれＭＳＣ２５に接続され、ＭＳＣ２５は対応するＲＴＣ２６に接続されている。また、各ＲＴＣ２６は、配線のネットワーク２７（Ｔ−ｎｅｔ）を介して、他のネットワークキャビネット２２−ｉのＲＴＣ２６と接続されている。各ＣＰＵ２３は、ＭＳＣ２５、ＲＴＣ２６、およびネットワーク２７を介して他のＣＰＵ２３と通信しながら、並列処理を実行する。
【００３１】
図３は、図２のＲＴＣ２６を図６８のように接続した場合の、本発明に基づくＪＴＡＧ試験システムを示している。図３のシステムにおいては、ＪＴＡＧＩ／Ｆの信号線ＴＤＩ、ＴＤＯの繋ぎ替えを柔軟に行うため、ＲＴＣ２６とスキャンエンジン（ＳＣＡＮＥ）３１の間に、複数のスキャンバッファ（ＳＣＡＮＢ）３２を導入している。
【００３２】
ＳＣＡＮＥ３１は、接続された配線を繋ぎ替えるスイッチングマトリクス（マトリクススイッチ）を有し、ＳＣＡＮＢ３２からの信号線ＴＤＩ、ＴＤＯの繋ぎ替えを行う。また、ＳＣＡＮＢ３２も同様のスイッチングマトリクスを有し、通常のＪＴＡＧＩ／Ｆ（ＴＣＫ，ＴＭＳ，ＴＤＩ，ＴＤＯ，ＴＲＳＴ）に加えて、ＳＦＴという信号線も用いて、ＳＣＡＮＥ３１と接続される。そして、入力する信号ＳＦＴが特定の値のとき、ＲＴＣ２６からの信号線ＴＤＩ、ＴＤＯの繋ぎ替えを行う。
【００３３】
このように、スキャンパスを構成する配線の繋ぎ替えを行うＳＣＡＮＢ３２を導入することで、ＳＣＡＮＥ３１とＳＣＡＮＢ３２の間の上位のパスと、ＳＣＡＮＢ３２とＲＴＣ２６の間の下位のパスとから成る、階層的なスキャンパスが生成される。
【００３４】
ＳＣＡＮＥ３１は、上位のパスを自由に接続したり切り離したりすることができ、一部のＳＣＡＮＢ３２のみから成る部分的なスキャンチェーンを接続することができる。また、各ＳＣＡＮＢ３２は、対応する下位のパスを自由に接続したり切り離したりすることができ、一部のＲＴＣ２６のみから成る部分的なスキャンチェーンを接続することができる。
【００３５】
したがって、ＳＣＡＮＥ３１とＳＣＡＮＢ３２のスイッチングマトリクスを適当に制御することで、一部のＳＣＡＮＢ３２に接続された一部のＲＴＣ２６のみを含むスキャンループを構成することも可能になる。したがって、大規模なシステムであっても、試験対象を限定した短いスキャンループを生成して、局所的かつ詳細な試験を短時間で行うことができる。
【００３６】
また、ＲＴＣ２６が実装されていないノードに対しては、配線を接続しないように制御すればよく、試験用の配線を変更する作業は不要になる。さらに、ＲＴＣ２６を増やす場合でも、対応するいくつかのＳＣＡＮＢ３２を追加するだけでよく、比較的低コストでシステム構成を拡張することができる。
【００３７】
図３のような構成では、すべてのＲＴＣ２６からＪＴＡＧＩ／Ｆの信号線を引き出すため、ＳＣＡＮＢ３２に多数の配線が集中するように見える。しかし、ＲＴＣ２６の総数に対して、適当な数のＳＣＡＮＢ３２を用意することで、ＲＴＣ２６からの配線を分散させることができる。また、ＳＣＡＮＢ３２とＳＣＡＮＥ３１の間の配線の数は、ＳＣＡＮＢ３２の数に比例するため、実際にはそれほど多くはならない。
【００３８】
このように、ＳＣＡＮＢ３２を用いて階層的なスキャンパスを構成すれば、巨大な並列計算機ネットワークに対しても、効率的かつ安価なスキャン試験を実施することが可能になる。
【００３９】
次に、図４から図８までを参照しながら、図３のＳＣＡＮＥ３１およびＳＣＡＮＢ３２の動作の概要を説明する。
図４は、ＳＣＡＮＢ３２の信号生成論理を示している。図４において、“Ｉ”が前置されている信号は、ＳＣＡＮＥ３１とＳＣＡＮＢ３２の間でやり取りされる信号を表し、“Ｕ”が前置されている信号は、ＲＴＣ２６からＳＣＡＮＢ３２に入力する信号を表す。また、信号名の末尾の（ｉ）は、各ネットワークキャビネット２２−ｊ（ｊ＝０，．．．，ＣＮ）のｉ番目のスロットに装着されたＲＴＣボードとＳＣＡＮＢ３２の間でやり取りされる信号であることを表す。１つのＲＴＣボードには、１つ以上のＲＴＣ２６が搭載される。
【００４０】
ＳＣＡＮＥ３１からの信号ＩＳＦＴの値が１の場合には、ＳＣＡＮＥ３１によりＳＣＡＮＢ３２内のＴＡＰコントローラの状態遷移が行われ、スキャンチェーンが繋ぎ替えられて、スキャンループが設定される。また、信号ＩＳＦＴ＝０の場合には、ＳＣＡＮＢ３２内のＴＡＰコントローラの状態は変化せず、設定されたスキャンループ上のＲＴＣ２６の試験が行われる。信号ＩＳＦＴ＝１の場合は、図５に示すようにして信号が生成され、信号ＩＳＦＴ＝０の場合は、図６に示すようにして信号が生成される。
【００４１】
図５および図６において、スロットチェーンイネーブルレジスタ（slot chain enable register：ＳＥＲ）３３は、ＳＣＡＮＢ３２内のスイッチングマトリクスの制御データを格納するレジスタである。このＳＥＲ３３の値を書き換えることで、各スロットに対応するスキャンチェーン（スロットチェーン）が繋ぎ替えられるため、ＳＥＲ３３はＴＡＰコントローラの一部分と考えることができる。
【００４２】
まず、信号ＩＳＦＴ＝１の場合には、ＳＣＡＮＥ３１から供給される制御データがＳＥＲ３３にスキャンインされ、ＳＥＲ３３の設定が行われる。このとき、図５に示すように、信号線ＴＤＯ（ｉ）およびＴＭＳは、常に値１をＲＴＣ２６に出力する。
【００４３】
また、ＳＣＡＮＥ３１からの信号ＩＴＣＫ、ＩＴＲＳＴは、バッファで増幅されて、それぞれ信号線ＴＣＫ、ＴＲＳＴからＲＴＣ２６へ出力される。信号線ＩＴＤＯからは、ＳＥＲ３３の内容がそのままＳＣＡＮＥ３１に出力される。
【００４４】
次に、信号ＩＳＦＴ＝０の場合には、図６に示すように、ＳＣＡＮＥ３１からの信号ＩＴＣＫ、ＩＴＲＳＴ、ＩＴＭＳは、バッファで増幅されて、それぞれ信号線ＴＣＫ、ＴＲＳＴ、ＴＭＳからＲＴＣ２６へ出力される。また、信号線ＩＴＤＯは、ＲＴＣ２６からの信号ＵＴＤＩ（ｉ）を、ＳＣＡＮＥ３１へ出力する。
【００４５】
信号線ＴＤＯ（ｉ）は、ＳＥＲ３３が格納するデータの値に応じて、ＳＣＡＮＥ３１からの信号ＩＴＤＩ、またはＲＴＣ２６からの信号ＵＴＤＩ（ｉ）を選択して、ＲＴＣ２６へ出力する。対応するＳＥＲ３３の制御データが１であれば、（ａ）に示されるようにＵＴＤＩ（ｉ）が出力され、それが０であれば、（ｂ）に示されるようにＩＴＤＩが出力される。
【００４６】
このＳＣＡＮＢ３２の動作を、ＳＣＡＮＥ３１から受信する信号別に説明すると、次のようになる。
まず、ＳＣＡＮＥ３１から受信した信号ＩＴＣＫ、ＩＴＲＳＴについては、バッファで増幅してＲＴＣ２６へ入力する。また、信号ＩＳＦＴが１のときは、ＳＣＡＮＢ３２内のＴＡＰコントローラの状態遷移を行い、ＲＴＣ２６への信号ＴＭＳの値を１に保持する。信号ＩＳＦＴが０のときは、ＳＣＡＮＢ３２内のＴＡＰコントローラの状態遷移は行わず、ＳＣＮＡＥ３１からの信号ＩＴＭＳをバッファで増幅して、それをＲＴＣ２６への信号ＴＭＳとする。
【００４７】
また、信号ＩＳＦＴ＝１で、かつ、ＳＣＡＮＢ３２のＴＡＰコントローラがデータシフトの状態であれば、ＳＣＡＮＥ３１から受信した信号ＩＴＤＩがＳＥＲ３３に入力される。そして、ＳＣＡＮＢ３２は、ＳＥＲ３３のデータをシフトし、信号ＩＴＤＯとしてＳＣＡＮＥ３１へ送り出す。このとき、信号ＴＤＯ（ｉ）の値は１に保持される。そうでなければ、ＳＣＡＮＢ３２は、ＳＥＲ３３の制御データに従ってＲＴＣボードのスキャンチェーンを接続し、スキャンループを形成する。
【００４８】
ここで、ＳＣＡＮＥ３１とＳＣＡＮＢ３２を利用したスキャンループの構成方法について述べる。
まず、ＳＣＡＮＥ３１とＳＣＡＮＢ３２の間のスキャンチェーンを接続するのは、図７に示すように、ＳＣＡＮＥ３１内のキャビネットチェーンイネーブルレジスタ（cabinet chain enable register ：ＣＥＲ）３５である。
【００４９】
図７においては、ネットワークキャビネット２２−０、２２−１が、スキャンループに取り込まれており、各ネットワークキャビネット２２−０、２２−１は、ＳＣＡＮＢ３２を１つずつ含んでいる。このため、ＳＣＡＮＥ３１とＳＣＡＮＢ３２の間のスキャンチェーンは、キャビネットチェーンと呼ばれる。また、ＵＪＴＡＧ０、ＵＪＴＡＧ１は、それぞれ、ネットワークキャビネット２２−０、２２−１に対するＪＴＡＧＩ／Ｆを表す。
【００５０】
ＳＣＡＮＥ３１は、ＳＣＡＮＢ３２と同様にスイッチングマトリクスを有し、ＣＥＲ３５に格納された制御データによりこれを制御して、ＳＣＡＮＥ３１から出力されている複数のＪＴＡＧＩ／Ｆのキャビネットチェーンを接続する。
【００５１】
この接続は、あるＳＣＡＮＢ３２の出力信号ＴＤＯを、スイッチを介して、別のＳＣＡＮＢ３２の入力信号ＴＤＩに接続することで実現される。このとき、信号ＴＣＫ、ＴＲＳＴ、ＴＭＳは、バッファを介して、すべてのＳＣＡＮＢ３２に対して共通にドライブされる。
【００５２】
キャビネットチェーンが接続されると、ＳＣＡＮＥ３１内のコントローラ部３４の制御により、ＳＥＲ３３には制御データがスキャンインされる。コントローラ部３４が信号ＳＦＴの値を１にして、ＪＴＡＧスキャンを行うとき、ＳＣＡＮＢ３２のＴＡＰコントローラのみが状態遷移する。
【００５３】
そして、それがデータシフトの状態（ＳＨＩＦＴ  ＤＲ状態）になると、各ＳＣＡＮＢ３２は、そのＳＥＲ３３にシフトデータを取り込んでシフトする。こうして、ＳＥＲ３３のデータが読み出され、その後に新たなデータが設定される。
【００５４】
また、ＳＣＡＮＢ３２とＲＴＣ２６の間のスキャンチェーンを接続するのは、図８に示すように、ＳＣＡＮＢ３２内のＳＥＲ３３である。図８においては、ＲＴＣ２６は、ネットワークキャビネット２２−０のスロットに装着されたＲＴＣボード上に搭載されるため、ＳＣＡＮＢ３２とＲＴＣ２６の間のスキャンチェーンは、スロットチェーンと呼ばれる。
【００５５】
信号ＳＦＴの値が０のときは、ＳＣＡＮＢ３２のＴＡＰコントローラは変化せず、ＲＴＣ２６内のＴＡＰコントローラが状態遷移する。このため、コントローラ部３４によるＪＴＡＧスキャンの制御は、ＲＴＣ２６に対してのみ行われる。
【００５６】
次に、図９から図２７までを参照しながら、図２の各ネットワークキャビネット２２−ｉの構成例を詳細に説明する。
図９は、図２のネットワークキャビネット２２−０の構成図である。図９のネットワークキャビネット２２−０は、ＳＣＵ ＭＡＩＮボード４１、ＣＬＯＣＫボード４２、ＳＣＵ ＡＤＰボード４３、およびＲＴＣボード４４を備える。他のネットワークキャビネット２２−１〜２２−ＣＮは、ＳＣＵ ＭＡＩＮボード４１とＣＬＯＣＫボード４２を持たず、ＳＣＵ ＡＤＰボード４３とＲＴＣボード４４のみを有する。
【００５７】
ＳＣＵ ＭＡＩＮボード４１は、並列計算機システム内にただ１つ存在し、ＲＳ（Recommended Standard）−２３２Ｃにより、外部のコントロールワークステーション４６とＣＬＯＣＫボード４２との接続を実現する。ワークステーション４６は、スキャン試験制御用のコマンドの入力や、試験結果の出力等に用いられる。
【００５８】
また、ＣＬＯＣＫボード４２もシステム内にただ１つ存在し、システムクロックを発生する。ＣＬＯＣＫボード４２には、スキャン制御を行うＣＰＵ４５およびＳＣＡＮＥ３１が搭載される。
【００５９】
ＳＣＵ ＡＤＰボード４３は、各ネットワークキャビネット２２−ｉに１つ存在し、ＣＬＯＣＫボード４２とは、クロック信号およびＪＴＡＧＩ／Ｆ信号で接続される。このＳＣＵ ＡＤＰボード４３は、ＳＣＡＮＢ３２を搭載し、システムクロックのバッファリングと、ＪＴＡＧ信号のバッファリングおよび分配／集約とを行う。
【００６０】
ＲＴＣボード４４は、例えば４個のＲＴＣ２６を搭載し、バックパネルを介して、ＪＴＡＧＩ／Ｆ（ＪＴＡＧポート）でＳＣＵ ＡＤＰボード４３と接続されている。１つのネットワークキャビネット２２−ｉには、最大２０枚のＲＴＣボード４４を実装することができる。
【００６１】
ＣＬＯＣＫボード４２からのクロック信号およびＪＴＡＧ信号は、他のネットワークキャビネット２２−１〜２２−ＣＮにも分配される。ここでは、ネットワークキャビネット２２−ｉの最大数は１６となっている。例えば、１６台のネットワークキャビネット２２−ｉのそれぞれに１６枚のＲＴＣボード４４を実装した場合、ネットワーク２７に接続されるＲＴＣ２６の総数は１０２４になる。
【００６２】
図１０は、ＣＬＯＣＫボード４２の構成図である。ＣＬＯＣＫボード４２は、クロック部５１、ＣＰＵ部５２、およびＳＣＡＮＥ３１を含む。クロック部５１は、６０ＭＨｚ、６６ＭＨｚ、５６ＭＨｚのクロック発振源５３、５４、５５から、コントローラ５６によるマージンコントロールに従って、クロック信号を選択する。選択されたクロック信号は、バッファ５７、５８を介して、フロントコネクタからネットワークキャビネット２２−ｉの数ＣＮ＋１だけ分配される。クロック部５１は、電源電圧３．３Ｖで動作する。
【００６３】
クロック部５１とＳＣＡＮＥ３１との間のＩ／Ｆ信号は、図１１に示すようになる。図１１において、“Ｏ”は、クロック部５１からの出力信号であることを表し、Ｓｅｌ０、Ｓｅｌ１、Ｓｅｌ２の３つの選択信号により最大８種類のクロック信号を選択することができる。選択されたクロック信号により、ＲＴＣ２６が動作する。
【００６４】
ＣＰＵ部５２は、ＣＰＵ（ＳＰＡＲＣ）４５、ＲＡＭ（Random Access Memory）５９、ＲＯＭ（Read Only Memory）６０、シリアルポート６１、タイマ６２、ＰＯＲ（Power On Reset）回路６３を含む。そして、ＳＣＵ ＭＡＩＮボード４１とＲＳ−２３２Ｃでやりとりしながら、ＳＣＡＮＥ３１を制御する。
【００６５】
ＳＣＡＮＥ３１は、ＣＰＵ４５からのアクセスによって、ＪＴＡＧスキャンを実行する。ＳＣＡＮＥ３１は、例えばＸＣ４０１３で実現される。
フロントコネクタは、ＪＴＡＧ信号とクロック信号をＳＣＵ ＡＤＰボード４３に供給する。最大１６個のネットワークキャビネット２２−ｉに対応するために、フロントコネクタは１６組の出力を持つ。ＪＴＡＧ信号とクロック信号の内訳は、図１２に示すようになる。
【００６６】
図１２において、“Ｏ”は、ＳＣＵ ＡＤＰボード４３への出力信号であることを表し、“Ｉ”は、ＳＣＵ ＡＤＰボード４３からの入力信号であることを表す。フロントコネクタには、それ以外に、ＳＣＵ ＭＡＩＮボード４１に接続するＲＳ−２３２Ｃ用のコネクタが含まれる。
【００６７】
バックパネルは、３．３Ｖおよび５Ｖの電源入力を持つ。
図１３は、ＳＣＵ ＡＤＰボード４３の構成図である。ＳＣＵ ＡＤＰボード４３には、システムコントロールアダプタ（ＳＣＵ ＡＤＰ）７１、クロックバッファ７２、７３、およびＳＣＡＮＢ３２を含む。
【００６８】
システムコントロールアダプタ７１は、図２のＰＥキャビネット２１−ｉに実装されるＲＳ−２３２Ｃ用のバッファ（不図示）に接続する信号（ＣＣＵＯＵＴ）をバッファする。そして、１２ポートのＲＳ−２３２Ｃの出力、ファン制御、ＲＴＣ２６のネットワーク電源の制御を行う。システムコントロールアダプタ７１は、５ＶＥ（直流電圧）で動作する。
【００６９】
クロックバッファ７２、７３は、３．３Ｖで動作し、ＣＬＯＣＫボード４２から分配されてきたクロック信号をバッファして、ＲＴＣボード４４に分配する。ＳＣＡＮＢ３２は、ＣＬＯＣＫボード４２のＳＣＡＮＥ３１から供給されたＪＴＡＧ信号によって、ＲＴＣボード４４へのＪＴＡＧ信号の繋ぎ替えを行う。ＳＣＡＮＢ３２は、例えばＸＣ４００３Ｈにより実現され、５Ｖで動作する。
【００７０】
フロントコネクタは、システムコントロールアダプタ７１からの１２本のＲＳ−２３２Ｃ信号、５Ｖおよび３．３Ｖの制御信号（ＮＥＴ ＰＷＲ）、ファンの回転監視用の信号を出力する。また、ＣＬＯＣＫボード４２からのＪＴＡＧ信号／クロック信号を受け取る。
【００７１】
バックパネルは、ＲＴＣボード４４へのクロック信号を中央部のコネクタから出力し、ＪＴＡＧ信号をその上下のコネクタを介して入出力する。また、５Ｖ、３．３Ｖ、５ＶＥの電源入力も有する。
【００７２】
図１４は、ＲＴＣボード４４の構成図である。ＲＴＣボード４４は、クロックバッファ７４と４個のＲＴＣ２６を含む。
クロックバッファ７４は、３．３Ｖ単一電源で動作し、ＣＬＯＣＫボード４２からのクロック信号をバッファして、各ＲＴＣ２６へ供給する。ＲＴＣ２６は、３．３Ｖ単一電源で動作し、ＪＴＡＧ信号をＬＶＴＴＬ（Low Voltage Transistor-Transistor Logic ）で受けて３．３ＶのＴＴＬ信号に変換する。
【００７３】
フロントコネクタからは、ＲＴＣ２６間を接続するネットワークケーブルが引き出される。フロントコネクタは、例えばＨＩＤＥＣ１００ＰＩＮを３個２段積みで実装される。
【００７４】
バックパネルは、クロック信号の入力、ＪＴＡＧ信号の入出力、３．３Ｖの電源入力に用いられる。
次に、図１５から図２９までを参照しながら、図１０のＳＣＡＮＥ３１および図１３のＳＣＡＮＢ３２の構成を説明する。
【００７５】
図１５は、ＳＣＡＮＥ３１の構成図である。ＳＣＡＮＥ３１は、ＣＰＵ４５とのインタフェース部（ＢＵＳ  Ｉ／Ｆ）８１、レジスタファイル部（ＲＥＧＦ）８２、図７のコントローラ部（ＵＴＡＰ）３４、スイッチングマトリクス（ＳＷＭＡＴ）８３、およびスキャンクロック生成部（ＣＬＫＧＥＮ）８４を含む。このＳＣＡＮＥ３１は、例えばＸＣ４０１３を用いて実現され、最大周波数２０ＭＨｚのクロック信号で動作する。
【００７６】
コントローラ部３４は、ＴＡＰコントローラ（ＴＡＰＣ）８５、インストラクションレジスタ（instruction register：ＩＲＲ）８６、およびユーザレジスタ（user registers：ＵＲｓ）８７を含む。ＴＡＰコントローラ８５は、信号ＴＭＳ、ＴＣＫに応じて状態遷移を行う有限状態機械で、レジスタファイル部８２およびＩＲＲ８６の制御データを用いて、ＳＣＡＮＥ３１の制御を行う。ＩＲＲ８６とＵＲｓ８７については後述する。
【００７７】
各スイッチングマトリクス８３は４個のスイッチを含み、４個のスイッチングマトリクス８３で最大１６個のＳＣＡＮＢ３２の接続／切断を行う。スイッチングマトリクス８３の動作は、レジスタファイル部８２に含まれるＣＥＲ３５のデータにより制御される。
【００７８】
図１５において、ＵＪＴＡＧは、ＳＣＡＮＥ３１とＳＣＡＮＢ３２を接続する信号線を表す。これらのうち、ＵＳＦＴ０、ＵＴＭＳ０、ＵＴＣＫ０、およびＵＴＲＳＴ０は、すべてのＳＣＡＮＢ３２に共通の信号ＳＦＴ、ＴＭＳ、ＴＣＫ、およびＴＲＳＴを表す。
【００７９】
また、ＵＴＤＯｉおよびＵＴＤＩｉ（ｉ＝０，．．．，１５）は、ｉ番目のＳＣＡＮＢ３２に接続される信号ＴＤＯおよびＴＤＩを表し、スイッチングマトリクス８３により接続／切断される。ＵＪＴＡＧｉは、ＵＴＤＯｉとＵＴＤＩｉの組を表している。
【００８０】
また、ＤＩＳＰＬＡＹは、ネットワークキャビネット２２−ｉ上に設けられた不図示のＬＥＤ（light emitting diode）に、各ＲＴＣ２６の内部状態等を表示する場合に用いられる信号線を表す。
【００８１】
図１６は、レジスタファイル部８２内のレジスタ、ＩＲＲ８６、およびＵＲｓ８７のレジスタアドレスマップを示している。レジスタファイル部８２内には、クロックコントロールレジスタ（clock control register：ＣＬＫＲ）、コマンド／ステータスレジスタ（command/status register ：ＣＭＤＲ）、図７のＣＥＲ３５、ターゲットレジスタ（target register ：ＴＧＥＴＲ）、ループレジスタ（loop register ：ＬＯＯＰＲ）、ＭＩＳＣレジスタ（miscellaneos register ：ＭＩＳＣＲ）、およびディスプレイコントロールレジスタ（display control register：ＤＩＳＰＲ）が設けられる。また、スキャンデータレジスタ（scan data register：ＳＤＲ）は、図１５のＵＲｓ８７に相当する。
【００８２】
図１６の各レジスタのアドレスはオフセットを表しており、実際のアドレス割り当て時には、各々にＳＣＡＮＥ３１のデバイスアドレスをベースとして加える必要がある。また、“Ｒ／Ｗ”は、読み出しと書き込みの両方の動作が行われるレジスタであることを表し、“ＲＯ”は、読み出し専用のレジスタであることを表す。これらのレジスタのデータ構造は図１７から図２６に示すようになる。図１７から図２６において、ｒｅｓはリザーブビットを表す。
【００８３】
図１７のＣＬＫＲにおいて、ＣＤＩＶはクロック信号ＴＣＫの分周数を表し、ＳＳＥＮ、ＡＲＥＳ、ＳＲＥＳ、ＳＴＯＰ、ＳＧＬはクロック信号の制御データを表す。また、ＣＳＥＬはクロック信号の周波数を指定するデータを表し、図１１のＳｅｌ０、Ｓｅｌ１、Ｓｅｌ２に対応する。
【００８４】
図１８のＣＭＤＲにおいて、Ｃｍｐは終了表示を表し、Ｅｒｒはエラー状態を表し、Ｐａｕｓはポーズ状態を表し、Ｂｓｙは動作状態を表す。Ｃｍｐに１が書き込まれると、ＳＣＡＮＥ３１はスキャン動作を開始する。
【００８５】
また、ＶｅｒｓｉｏｎはＳＣＡＮＥ３１のバージョンを表し、ＴＭＳ、ＴＲＳＴ、ＴＣＫ、ＴＤＯ、およびＴＤＩは信号ＴＭＳ、ＴＲＳＴ、ＴＣＫ、ＴＤＯ、およびＴＤＩの制御データを表す。ＩＮＴＥは割り込み制御データを表し、ＳＦＴは図４の信号ＩＳＦＴの値を表し、ＣＭＤはＣＰＵ４５から与えられるＳＣＡＮＥ３１の制御コマンドを表す。このＣＭＤとしては、基本的に、図１９に示される６種類のコードがある。
【００８６】
図１９において、ＮＯＰは、何等オペレーションを行わないコマンドであり、ＳＥＴＩＲは、ＩＲＲ８６のデータをＲＴＣ２６内のレジスタにセットするコマンドである。また、ＳＥＴＤＲは、ＳＤＲのデータを特定のＲＴＣ２６内のレジスタにセットするコマンドであり、ＢＲＤＤＲは、ＳＤＲのデータをすべてのＲＴＣ２６内のレジスタにセットするコマンドである。
【００８７】
また、ＳＮＳＤＲは、ＲＴＣ２６内のレジスタのデータを読み出してＳＤＲに格納するコマンドであり、ＭＡＮＵは、ＳＣＡＮＥ３１をマニュアルモードに設定するコマンドである。
【００８８】
図２０のＣＥＲ３５において、ＭＡＳＫはキャビネットチェーンを接続する制御データを表し、図２１のＳＤＲにおいて、ＤＡＴＡはシフトされるデータを表す。また、図２２のＩＲＲ８６において、ＩＲＴはスキャン試験のターゲットとなるＲＴＣ２６（指定チップ）に対するインストラクション（ＩＲコマンド）を表し、ＩＲＯはそれ以外のＲＴＣ２６に対するインストラクションを表す。
【００８９】
図２３のＴＧＥＴＲにおいて、ＷＣＨＮはスキャンループに接続されているＲＴＣ２６（チップ）の数を表し、ＴＣＨＮはターゲットＲＴＣ２６の位置を表す。また、図２４のＬＯＯＰＲにおいて、ＳＬＯＯＰはスキャンループの区切り指定を表し、ＬＯＯＰはスキャンループにおいてシフトするビット数（ループ長）を表す。ＬＯＯＰの値は、ＷＣＨＮの値をもとにして計算される場合もある。
【００９０】
図２５のＭＩＳＣＲにおいて、ＣＳＬＯＯＰはＳＬＯＯＰから派生するデータを表し、ＴＡＰＳＴはＴＡＰコントローラ８５のステータスを表す。また、図２６のＤＩＳＰＲは、ＲＴＣ２６の状態をネットワークキャビネット２２−ｉ上のＬＥＤに表示する場合に用いられ、ＲＵＮはＬＥＤ表示データのコピー動作を表し、ＥＮＢは表示動作を表し、ＰＡＧＥは表示データのソースページを表す。
【００９１】
図２７は、ＳＣＡＮＢ３２の構成図である。ＳＣＡＮＢ３２は、スイッチングマトリクス（ＳＷＭＡＴ）８３、コントローラ部９１、およびスキャンクロックのバッファ（ＣＬＫＢＵＦ）９２を含む。このＳＣＡＮＢ３２は、例えばＸＣ４００３Ｈを用いて実現され、ＳＣＡＮＥ３１から供給されるスキャンクロックＴＣＫにより動作する。
【００９２】
コントローラ部９１は、図５のＳＥＲ３３を含み、ＴＡＰコントローラの機能を有する。５個のスイッチングマトリクス８３は、最大２０枚のＲＴＣボード４４の接続／切断を行う。スイッチングマトリクス８３の動作は、ＳＥＲ３３のデータにより制御される。
【００９３】
図２７において、ＩＪＴＡＧは、ＳＣＡＮＥ３１とＳＣＡＮＢ３２を接続する信号線を表す。これらのうち、ＩＳＦＴ、ＩＴＭＳ、ＩＴＣＫ、およびＩＴＲＳＴは、それぞれ、ＳＣＡＮＥ３１から入力される信号ＳＦＴ、ＴＭＳ、ＴＣＫ、およびＴＲＳＴを表す。また、ＩＴＤＩおよびＩＴＤＯは、ＳＣＡＮＥ３１に接続される信号ＴＤＯおよびＴＤＩを表し、スイッチングマトリクス８３を介してＲＴＣボード４４に接続される。
【００９４】
ＵＪＴＡＧは、ＳＣＡＮＢ３２とＲＴＣボード４４を接続する信号線を表す。これらのうち、ＵＴＭＳｉ、ＵＴＣＫｉ、およびＵＴＲＳＴｉ（ｉ＝０，．．．，１９）は、それぞれ、ｉ番目のＲＴＣボード４４に接続される信号ＴＭＳ、ＴＣＫ、およびＴＲＳＴを表す。
【００９５】
また、ＵＴＤＯｉおよびＵＴＤＩｉ（ｉ＝０，．．．，１９）は、ｉ番目のＲＴＣボード４４に接続される信号ＴＤＯおよびＴＤＩを表し、スイッチングマトリクス８３により接続／切断される。ＵＪＴＡＧｉは、ＵＴＭＳｉ、ＵＴＤＯｉ、ＵＴＣＫｉ、ＵＴＲＳＴｉ、およびＵＴＤＩｉの組を表している。
【００９６】
図２８は、ＳＥＲ３３を示している。図２８において、ＶｅｒｓｉｏｎはＳＣＡＮＢ３２のバージョンを表し、ＭＡＳＫはスロットチェーンを接続する制御データを表す。ＭＡＳＫのビット０〜１９は、それぞれ、０番目〜１９番目のＲＴＣボード４４に対応するスロットチェーンを接続／切断するために用いられる。
【００９７】
図２９は、図１５および図２７のスイッチングマトリクス８３の構成図である。図２９において、０番目のスイッチングマトリクス８３（ＳＷＭＡＴ０）に入力するＳＥ０、ＳＥ１、ＳＥ２、およびＳＥ３は、ＳＣＡＮＥ３１のＣＥＲ３５あるいはＳＣＡＮＢ３２のＳＥＲ３３のビット０、１、２、および３の値に対応する制御信号である。
【００９８】
他のスイッチングマトリクス８３（ＳＷＭＡＴ１等）にも、ＣＥＲ３５またはＳＥＲ３３のビット４、５、６、・・・の値に対応する不図示の制御信号ＳＥ４、ＳＥ５、ＳＥ６、・・・が入力される。また、ＳＩＮ、ＳＯＵＴは、それぞれ、スイッチングマトリクス８３に対するスキャン入力、スイッチングマトリクス８３からのスキャン出力を表す。
【００９９】
ｌｏｏｐ０、ｌｏｏｐ１、・・・、ｌｏｏｐＮは、それぞれ、制御信号ＳＥ０、ＳＥ１、・・・、ＳＥＮにより、スキャンループに取り込まれたり、スキャンループから切り離されたりする局所的なループである。ｌｏｏｐｉ（ｉ＝０，．．．，Ｎ）は、図１５および図２７の出力端子ＵＴＤＯｉと入力端子ＵＴＤＩｉの間に生成される。
【０１００】
図１５のスイッチングマトリクス８３では、これらのループはＳＣＡＮＢ３２とＲＴＣボード４４から成るキャビネットチェーンに対応し、Ｎ＝ＣＮとなる。また、図２７のスイッチングマトリクス８３では、これらのループはＲＴＣボード４４のスロットチェーンに対応し、Ｎはネットワークキャビネット２２−ｉ内のＲＴＣボード４４の数に一致する。
【０１０１】
また、セレクタ１０１、１０２、１０３は、制御信号が１のとき入力Ｉ１を選択して出力し、制御信号が０のとき入力Ｉ２を選択して出力する。特に、セレクタ１０２は、制御信号ＳＥｉ（ｉ＝０，．．．，Ｎ）が１のとき、入力された信号を出力し、制御信号ＳＥｉが０のとき、入力信号とは無関係に１を出力する。
【０１０２】
セレクタ１０２が固定的に１を出力することにより、その出力に接続されたｌｏｏｐｉ中のＬＳＩへの誤入力が防止される。したがって、セレクタ１０２は、制御信号ＳＥｉが０のとき、それに対応するｌｏｏｐｉ中のＬＳＩに誤った制御が発生することを防止する保護回路の役割を果たしている。
【０１０３】
例えば、ＳＥ０＝１、ＳＥ１＝０、ＳＥ２＝０、ＳＥ３＝０とすると、信号ＳＩＮは、セレクタ１０２を介してｌｏｏｐ０の入力ＵＴＤＯ０に接続される。このとき、ｌｏｏｐ０の出力ＵＴＤＩ０はセレクタ１０１から出力されるが、ｌｏｏｐ１、ｌｏｏｐ２、およびｌｏｏｐ３には伝わらずに、そのまま信号ＳＯＵＴとして出力される。この結果、ｌｏｏｐ１、ｌｏｏｐ２、およびｌｏｏｐ３は、スキャンループから外される。
【０１０４】
また、ＳＥ０＝０、ＳＥ１＝１、ＳＥ２＝０、ＳＥ３＝０とすると、信号ＳＩＮは直接ｌｏｏｐ１の入力ＵＴＤＯ１に接続され、ｌｏｏｐ１の出力ＵＴＤＩ１が信号ＳＯＵＴとして出力される。この結果、ｌｏｏｐ０、ｌｏｏｐ２、およびｌｏｏｐ３は、スキャンループから外される。
【０１０５】
次のスイッチングマトリクス８３（ＳＷＭＡＴ１）の入力側にあるセレクタ１０３には、制御信号として、ＳＥ０、ＳＥ１、ＳＥ２、およびＳＥ３の論理和が入力される。したがって、このセレクタ１０３は、ＳＥ０、ＳＥ１、ＳＥ２、およびＳＥ３のいずれかが１であれば、前のスイッチングマトリクス８３（ＳＷＭＡＴ０）から入力されるＳＯＵＴを選択し、それらがすべて０であればもう一方の入力ＳＩＮを選択する。他のスイッチングマトリクス８３（ＳＷＭＡＴ２等）についても同様である。
【０１０６】
言い換えれば、取り込まれるべき１つ以上の局所ループを有するスイッチングマトリクス８３はスキャンループに取り込まれ、そのような局所ループを持たないスイッチングマトリクス８３はスキャンループから外されることになる。
【０１０７】
このように、ＳＥｉ＝１に対応するｌｏｏｐｉはスキャンループに取り込まれ、ＳＥｉ＝０に対応するｌｏｏｐｉはスキャンループから外される。したがって、ＣＥＲ３５またはＳＥＲ３３のデータＭＡＳＫを書き換えて、制御信号ＳＥｉの値を制御することにより、任意の局所ループをスキャンループに接続したり、スキャンループから切り離したりすることができる。
【０１０８】
次に、図３０から図３５までを参照しながら、ＳＣＡＮＥ３１およびＳＣＡＮＢ３２の動作について説明する。
図３０は、図１９に示したＳＣＡＮＥ３１の各制御コマンドによる動作例を示している。図３０において、ＳＥＴＩＲは、図２２のＩＲＲ８６のインストラクションＩＲＴ、ＩＲＯを、ＲＴＣ２６内のレジスタにセットする。例えば、図２３のＴＧＥＴＲのデータが、ＴＣＨＮ＝１、ＷＣＨＮ＝４のとき、４つのＲＴＣ２６のうち、ＴＣＨＮ＝１に対応する位置のＲＴＣ２６にインストラクションＩＲＴがセットされ、他の３つのＲＴＣ２６にはインストラクションＩＲＯがセットされる。
【０１０９】
また、ＳＮＳＤＲは、特定のＲＴＣ２６内のレジスタのデータを読み出して、図２１のＳＤＲに格納する。例えば、ＴＣＨＮ＝２、ＷＣＨＮ＝４のとき、４つのＲＴＣ２６のうち、ＴＣＨＮ＝２に対応する位置のＲＴＣ２６からデータＳＲが読み出され、他の３つのＲＴＣ２６はバイパスされる。また、ＴＣＨＮ＝４、ＷＣＨＮ＝４のときはスキャン動作が４回繰り返されて、４つのＲＴＣ２６のデータＳＲ０、ＳＲ１、ＳＲ２、ＳＲ３が順に読み出される。ここで、ＴＣＨＮ＝４は、スキャンループに接続されているすべてのＲＴＣ２６がターゲットとなることを表している。
【０１１０】
また、ＳＥＴＤＲは、ＳＤＲのデータを特定のＲＴＣ２６内のレジスタにセットする。例えば、ＴＣＨＮ＝２、ＷＣＨＮ＝４のとき、４つのＲＴＣ２６のうち、ＴＣＨＮ＝２に対応する位置のＲＴＣ２６のみにＳＤＲのデータがセットされ、他の３つのＲＴＣ２６はバイパスされる。また、ＴＣＨＮ＝４、ＷＣＨＮ＝４のときはスキャン動作が４回繰り返されて、４つのＲＴＣ２６のデータＳＲ０、ＳＲ１、ＳＲ２、ＳＲ３として、ＳＤＲのデータが順にセットされる。
【０１１１】
また、ＢＲＤＤＲは、ＳＤＲのデータをすべてのＲＴＣ２６内のレジスタに同時にセットする。例えば、ＴＣＨＮ＝４、ＷＣＨＮ＝４のとき、ＳＤＲのデータが、一度に４つのＲＴＣ２６にＳＲとしてセットされる。
【０１１２】
ＲＴＣ２６のスキャン試験は、図３０のコマンドを次のように組み合わせて実現される。以下の記述において、各コマンドに続く括弧内には、そのコマンドに付随するパラメータが記述されている。
【０１１３】
（１）初期設定：すべてのＲＴＣ２６内の特定のレジスタを、同一データで初期化する。この動作は、次の２つのコマンドにより実現される。
１．ＳＥＴＩＲ（ＩＲＴ＝ＳＥＴＲＥＧ，ＩＲＯ＝ＳＥＴＲＥＧ，ＴＣＨＮ＝ＷＣＨＮ）
２．ＢＲＤＤＲ（ＳＤＲ＝ＩＮＩＴＤＡＴＡ，ＴＣＨＮ＝ＷＣＨＮ）
ここで、ＳＥＴＲＥＧは、ＲＴＣ２６内の特定のレジスタの設定を指示するＩＲコマンドであり、ＩＮＩＴＤＡＴＡは、適当な初期データである。また、ＴＣＨＮ＝ＷＣＨＮは、スキャンループに接続されているすべてのＲＴＣ２６がターゲットとなることを表している。
【０１１４】
（２）ＲＴＣ  ＩＤの設定：すべてのＲＴＣ２６内の特定のレジスタを、個別データで初期化する。この動作は、次の２つのコマンドにより実現される。
１．ＳＥＴＩＲ（ＩＲＴ＝ＳＥＴＲＥＧ，ＩＲＯ＝ＳＥＴＲＥＧ，ＴＣＨＮ＝ＷＣＨＮ）
２．ＳＥＴＤＲ（ＳＤＲ＝ＩＮＩＴＤＡＴＡ×ＷＣＨＮ，ＴＣＨＮ＝ＷＣＨＮ）
（３）エラー解除：特定のＲＴＣ２６内のレジスタを初期化する。この動作は、次の２つのコマンドにより実現される。
１．ＳＥＴＩＲ（ＩＲＴ＝ＳＥＴＲＥＧ，ＩＲＯ＝ＢＹＰＡＳＳ，ＴＣＨＮ＝ＲＴＣＮＯ）
２．ＳＥＴＤＲ（ＳＤＲ＝ＩＮＩＴＤＡＴＡ，ＴＣＨＮ＝ＲＴＣＮＯ）
ここで、ＢＹＰＡＳＳは、そのＲＴＣ２６内のレジスタをバイパスすることを指示するＩＲコマンドであり、ＲＴＣＮＯは、スキャンループ内でのＲＴＣ２６の位置を指定するデータである。
【０１１５】
（４）ステータスセンス：すべてのＲＴＣ２６内の特定のレジスタから、データを読み出す。この動作は、次の２つのコマンドにより実現される。
１．ＳＥＴＩＲ（ＩＲＴ＝ＳＮＳＲＥＧ，ＩＲＯ＝ＳＮＳＲＥＧ，ＴＣＨＮ＝ＷＣＨＮ）
２．ＳＮＳＤＲ（ＴＣＨＮ＝ＷＣＨＮ），ＳＤＲ×ＷＣＨＮ
ここで、ＳＮＳＲＥＧは、ＲＴＣ２６内の特定のレジスタの読み出しを指示するＩＲコマンドである。
【０１１６】
（５）デバッグ：特定のＲＴＣ２６内のレジスタからデータを読み出す。この動作は、次の２つのコマンドにより実現される。
１．ＳＥＴＩＲ（ＩＲＴ＝ＳＥＴＲＥＧ，ＩＲＯ＝ＢＹＰＡＳＳ，ＴＣＨＮ＝ＲＴＣＮＯ）
２．ＳＮＳＤＲ（ＴＣＨＮ＝ＲＴＣＮＯ），ＳＤＲ
ところで、図２の並列計算機のＪＴＡＧ試験として、ネットワーク２７のサイズの検出とその接続試験とがある。ネットワーク２７のサイズとは、ネットワーク２７に接続されているＲＴＣ２６の個数を意味する。ここで、これらの試験について説明する。
【０１１７】
図３１は、ネットワーク２７のサイズ検出におけるＳＣＡＮＥ３１およびＣＰＵ４５の動作フローチャートである。図３１において、ＣＰＵ４５は、まず制御変数ｃを０とおき（ステップＳ１）、ＳＣＡＮＥ３１は、ｃ番目のネットワークキャビネット２２−ｃに対応するＣＥＲ３５のビットｃを１に設定する（ステップＳ２）。これにより、図１５のＵＪＴＡＧ０に接続されるＳＣＡＮＢ３２がスキャンループに取り込まれる。
【０１１８】
次に、ＣＰＵ４５は、制御変数ｓを０とおき（ステップＳ３）、ＳＣＡＮＥ３１は、ネットワークキャビネット２２−ｃ内のＳＣＡＮＢ３２において、ｓ番目のスロットに対応するＳＥＲ３３のビットｓを１に設定する（ステップＳ４）。この設定は、ＣＰＵ４５が図１８のＣＭＤＲのＳＦＴに１を書き込み、ＳＣＡＮＥ３１がＳＥＲ３３のビットｓに１をシフトインすることで行われる。これにより、図２７のＵＪＴＡＧ０に接続されるＲＴＣボード４４がスキャンループに取り込まれる。
【０１１９】
次に、ＳＣＡＮＥ３１は、スキャン動作を行って、ネットワークキャビネット２２−ｃのｓ番目のスロットのＲＴＣボード４４から、４つのＲＴＣ２６のバージョンデータを読み出す（ステップＳ５）。このバージョンデータは、ＲＴＣ２６内のレジスタに格納されており、対応するＩＲコマンドをＲＴＣ２６に与えることで、これを読み出して図２１のＳＤＲに格納することができる。
【０１２０】
次に、ＣＰＵ４５は、ＳＤＲの内容を参照して、バージョンデータを取得できたかどうかを判定する（ステップＳ６）。それらが取得できた場合は、対応するＲＴＣボード４４が存在するとみなして、ＲＴＣ２６のカウント値を４だけインクリメントする（ステップＳ７）。カウント値は、動作の初期状態においてあらかじめ０に設定されている。バージョンデータが取得できない場合は、対応するＲＴＣボード４４が存在しないとみなし、カウント値はインクリメントしない。
【０１２１】
次に、ＣＰＵ４５は、変数ｓが最後のスロットの番号ＳＮ＝１９に達したかどうかを判定する（ステップＳ８）。ｓがＳＮに満たない場合は、ｓ＝ｓ＋１とおいて（ステップＳ９）、ｓ＝ＳＮとなるまで、ステップＳ４以降の動作を繰り返す。これにより、ネットワークキャビネット２２−ｃのすべてのスロットについて、ＲＴＣボード４４が存在するかどうかが調べられる。
【０１２２】
ｓ＝ＳＮとなると、ＣＰＵ４５は、次に、変数ｃが最後のネットワークキャビネット２２−ＣＮの番号ＣＮに達したかどうかを判定する（ステップＳ１０）。ｃがＣＮに満たない場合は、ｃ＝ｃ＋１とおいて（ステップＳ１１）、ｃ＝ＣＮとなるまで、ステップＳ２以降の動作を繰り返す。これにより、すべてのネットワークキャビネット２２−ｉの各スロットについて、ＲＴＣボード４４が存在するかどうかが調べられ、ＲＴＣ２６の総数が求められる。
【０１２３】
ｃ＝ＣＮとなると、ＳＣＡＮＥ３１は、次に、ＲＴＣボード４４が存在するすべてのネットワークキャビネット２２−ｉまたはスロットについて、対応するＣＥＲ３５またはＳＥＲ３３のビットに１を設定し、他のビットに０を設定して（ステップＳ１２）、動作を終了する。これにより、並列計算機に実装されたすべてのＲＴＣボード４４がスキャンループに組み込まれる。
【０１２４】
図３２は、スキャンループが形成された後の接続試験におけるＳＣＡＮＥ３１およびＣＰＵ４５の動作フローチャートである。あるＲＴＣ２６の出力ポートは、そのＲＴＣ２６または他のＲＴＣ２６のいずれかの入力ポートに接続される。接続試験では、これらの出力ポートと入力ポートの接続関係が調べられる。
【０１２５】
この接続試験は、ネットワークサイズから決められるネットワーク接続関係表をもとにして、ＲＴＣ２６の入出力ポートを操作しながら行われる。このような試験方法は、Boundary-Scan と呼ばれ、試験対象となる入出力ポートの集合は、Boundary-Scan flip-flop （ＢＳＦＦ）と呼ばれる。
【０１２６】
図３２において、ＳＣＡＮＥ３１とＣＰＵ４５は、まず未接続のＲＴＣ２６がないかどうかを確認し（ステップＳ１３）、ＲＴＣ２６間の接続誤りがないかどうかを確認して（ステップＳ１４）、動作を終了する。ステップＳ１３の確認動作のフローチャートは図３３のようになり、ステップＳ１４の確認動作のフローチャートは図３４のようになる。
【０１２７】
図３３において、ＳＣＡＮＥ３１は、まずすべてのＲＴＣ２６の出力ポートのバッファに全ビットが１のデータをスキャンインし（ステップＳ２１）、すべてのＲＴＣ２６の入力ポートのバッファからデータをスキャンアウトする（ステップＳ２２）。スキャンアウトされたデータはＳＤＲに格納される。
【０１２８】
次に、ＣＰＵ４５は、ＳＤＲの内容を参照して、すべてのＲＴＣ２６の入力ポートのデータの全ビットが１かどうかを判定する（ステップＳ２３）。そして、１つでも０のビットがあれば、未接続のＲＴＣ２６があるとみなし、エラー出力を行って（ステップＳ２７）、動作を終了する。
【０１２９】
全ビットが１であれば、ＳＣＡＮＥ３１は、次に、すべてのＲＴＣ２６の出力ポートのバッファに全ビットが０のデータをスキャンインし（ステップＳ２４）、すべてのＲＴＣ２６の入力ポートのバッファからデータをスキャンアウトする（ステップＳ２５）。
【０１３０】
次に、ＣＰＵ４５は、すべてのＲＴＣ２６の入力ポートのデータの全ビットが０かどうかを判定する（ステップＳ２６）。そして、１つでも１のビットがあれば、未接続のＲＴＣ２６があるとみなし、エラー出力を行って（ステップＳ２７）、動作を終了する。
【０１３１】
全ビットが０であれば、未接続のＲＴＣ２６はないとみなして、未接続確認を終了し、図３４の接続誤り確認を開始する。
図３４において、ＳＣＡＮＥ３１は、まずすべてのＲＴＣ２６の出力ポートのバッファに、０、１、２、３、・・・のようにシーケンシャルに変化するデータをスキャンインする（ステップＳ３１）。このデータの入力には、ＳＡＭＰＬＥ／ＰＲＥＬＯＡＤインストラクションが用いられる。
【０１３２】
次に、ＳＣＡＮＥ３１は、すべてのＲＴＣ２６の入力ポートのバッファからデータをスキャンアウトする（ステップＳ３２）。このデータの読み出しには、ＥＸＴＥＳＴインストラクションが用いられる。
【０１３３】
次に、ＣＰＵ４５は、ネットワーク接続関係表を参照して、すべてのＲＴＣ２６の出力ポートのデータが、それぞれ、対応する接続先の入力ポートに正しく伝搬しているかどうかを調べる（ステップＳ３３）。ネットワーク接続関係表は、例えば図１０のＲＡＭ５９に格納され、すべての出力ポートと入力ポートの接続関係を保持している。
【０１３４】
もし、ある出力ポートのデータが接続先の入力ポートのデータと一致しなければ、ＣＰＵ４５は、それらのポート間の接続が誤っているとみなして、エラー出力を行い（ステップＳ３４）、動作を終了する。そして、すべての対応するポート間でデータが一致すれば、接続は正しいものとみなして、接続試験を終了する。
【０１３５】
ＳＣＡＮＥ３１とＳＣＡＮＢ３２を利用すれば、上述のネットワークサイズの検出と接続試験以外にも、ＲＴＣ２６の動作の設定やモニタを行うことが可能になる。ここで、ＲＴＣ２６の動作の設定およびモニタの例を説明する。
【０１３６】
ＲＴＣ２６の動作の設定は、上述のコマンドＳＥＴＩＲを用いてＲＴＣ２６内のインストラクションレジスタをセットすることにより行われる。ＳＥＴＩＲの引数としては、上述のＩＲＴ、ＩＲＯ、ＷＣＨＮ、ＴＣＨＮ、およびＬＯＯＰが用いられる。このときのＣＰＵ４５とＳＣＡＮＥ３１の動作は、次のようになる。
（ａ）ＣＰＵ４５は、前のコマンドが終了するまで待つ。
（ｂ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＩＲＲ８６に、ＩＲＴとＩＲＯを設定する。
（ｃ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＴＧＥＴＲにＷＣＨＮとＴＣＨＮを設定する。
（ｄ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＬＯＯＰＲにＬＯＯＰを設定する。
（ｅ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＣＭＤＲの下位４ビットに、ＳＥＴＩＲのコード０００１を設定する。
（ｆ）ＣＰＵ４５は、ＣＭＤＲのビット３１のＣｍｐに１を設定し、スキャンをリセット＆スタートさせる。これにより、ＳＣＡＮＥ３１は、スキャンループ内においてＬＯＯＰで指定されたビット数だけＩＲＴ／ＩＲＯをシフトし、シフトが終了するとＣＭＤＲのＣｍｐに０を設定する。
（ｇ）ＣＰＵ４５は、ＣＭＤＲのＣｍｐが０になるまで待つ。
（ｈ）ＣＰＵ４５は、エラーチェックを行う。
【０１３７】
こうして、ＳＣＡＮＥ３１によりコマンドＳＥＴＩＲが実行され、ＴＣＨＮにより指定されたＲＴＣ２６のインストラクションレジスタにインストラクションＩＲＴが設定され、他のＲＴＣ２６のインストラクションレジスタにインストラクションＩＲＯが設定される。そして、各ＲＴＣ２６は、設定されたインストラクションを実行する。さらに、ＳＥＴＤＲを用いれば、ＲＴＣ２６のデータレジスタにデータを設定することもできる。
【０１３８】
また、ＲＴＣ２６の動作のモニタとは、定期的にＲＴＣ２６内のレジスタのデータを読み出すことにより、並列計算機の状態を監視することを意味する。例えば、ＲＴＣ２６の通信状態を表すレジスタＲＴＣＬＥＤのモニタを行う場合、ＣＰＵ４５とＳＣＡＮＥ３１の動作は次のようになる。
（ａ）ＣＰＵ４５は、動作の設定の場合と同様にして、ＩＲＴ＝ＩＲ ＬＥＤ、ＩＲＯ＝ＢＹＰＡＳＳ、ＷＣＨＮ＝ＴＣＨＮ＝全ＲＴＣ数、ＬＯＯＰ＝８＊ＷＣＨＮとして、コマンドＳＥＴＩＲを発行する。ＩＲ ＬＥＤは、ＲＴＣ２６内のレジスタＲＴＣＬＥＤの内容の読み出しを指示するＩＲコマンドである。このＳＥＴＩＲの実行により、すべてのＲＴＣ２６のインストラクションレジスタにＩＲ ＬＥＤが設定され、ＲＴＣＬＥＤのデータが読み出せる状態になる。
（ｂ）ＣＰＵ４５は、ＳＥＴＩＲの終了を待つ。
（ｃ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＳＤＲに、データＩＮＩＴＤＡＴＡを設定する。スキャン終了時にこれと同じデータがＳＤＲにあれば、スキャンが正常に終了したことが確認できる。
（ｄ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＴＧＥＴＲに、ＷＣＨＮ＝ＴＣＨＮ＝全ＲＴＣ数を設定する。
（ｅ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＬＯＯＰＲに、ＬＯＯＰ＝３２＊（ＷＣＨＮ＋１）を設定する。
（ｆ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＣＭＤＲの下位４ビットに、ＳＮＳＤＲのコード０１１１を設定する。
（ｇ）ＣＰＵ４５は、ＣＭＤＲのＣｍｐに１を設定し、スキャンをリセット＆スタートさせる。
（ｈ）ＳＣＡＮＥ３１は、１つのＲＴＣ２６からＲＴＣＬＥＤのデータをＳＤＲに読み出す毎に、ＣＭＤＲのビット２９のＰａｕｓに１を立てて、ポーズ状態となる。
（ｉ）ＳＣＡＮＥ３１は、ＳＤＲの内容を読み出して、ネットワークキャビネット２２−ｉ上のＬＥＤに表示する。
（ｊ）（ｈ）と（ｉ）の動作を、ＣＭＤＲのＣｍｐが０になるまで繰り返す。
（ｋ）ＣＰＵ４５は、最後に読み出したＳＤＲの内容が最初に設定したＩＮＩＴＤＡＴＡと同じであるかどうかを確認し、エラーチェックを行う。
【０１３９】
このような通信状態のモニタをシステム制御と並行に実行することで、並列計算機が処理を行っている間でも、常にＲＴＣ２６の通信状態を把握することが可能になる。また、ＩＲＴに他のＩＲコマンドを設定すれば、通信状態だけでなく、他の任意の内部状態を表すレジスタのデータを処理中に読み出すことも可能である。モニタ対象の各レジスタには、その読み出し用の特定のＩＲコマンドがあらかじめ割り当てられている。
【０１４０】
上述の動作の設定やモニタで利用されるＪＴＡＧスキャンの制御方法を、図３５を参照しながらさらに説明する。図３５は、ＳＣＡＮＥ３１、ＳＣＡＮＢ３２、およびＲＴＣ２６により構成されるＪＴＡＧスキャンループの例を示している。ここでは、ＳＣＡＮＢ３２は省略されている。
【０１４１】
図３５において、ＲＴＣ２６は、インストラクションを格納するインストラクションレジスタ（ＩＲ）１１１、データを格納するデータレジスタ（ＤＲ）１１２、バイパスレジスタ（Ｂｙｐａｓｓ）１１３、およびＴＡＰコントローラ（ＴＡＰＣ）１１４を含む。
【０１４２】
ＳＣＡＮＥ３１は、スキャンループ内のすべてのＲＴＣ２６のＴＡＰコントローラ１１４を、信号ＴＭＳにより同時に制御する。ＴＡＰコントローラ１１４は、信号ＴＭＳによりその状態を変化させる有限状態機械である。
【０１４３】
このＴＡＰコントローラ１１４の状態によって、ＲＴＣ２６内のインストラクションレジスタ１１１から成るスキャンチェーンと、データレジスタ１１２から成るスキャンチェーンのうち、どちらがシフトするかが決定される。各ＲＴＣ２６は同時に制御されるため、すべてのＲＴＣ２６がインストラクションレジスタ１１１をシフトする状態（ｓｈｉｆｔ−ｉｒ）にあるか、あるいはすべてのＲＴＣ２６がデータレジスタ１１２をシフトする状態（ｓｈｉｆｔ−ｄｒ）にある。
【０１４４】
インストラクションレジスタ１１１およびデータレジスタ１１２の設定動作は、次のようになる。
（ａ）ＳＣＡＮＥ３１は、信号ＴＭＳを用いて、ＴＡＰコントローラ１１４を状態ｓｈｉｆｔ−ｉｒに設定する。
（ｂ）ＳＣＡＮＥ３１は、ＳＥＴＩＲを実行して、各ＲＴＣ２６のインストラクションレジスタ１１１をシフトする。このとき、ターゲットのＲＴＣ２６にはＩＲＴが設定され、他のＲＴＣ２６にはＩＲＯが設定されるように、ＩＲＲ８６のデータを選択してＴＤＯから出力する。これにより、ターゲットのＲＴＣ２６のインストラクションを特定の値に設定することができる。
【０１４５】
例えば、ターゲットが右から２番目の位置１にあるＲＴＣ２６の場合、２回目のシフト時にＩＲＲ８６からＩＲＴの値を出力すればよい。そこで、ＷＣＨＮ＝４、ＴＣＨＮ＝１と設定しておけば、２回目のシフト時にＩＲＴが選択され、他のシフト時にはＩＲＯが選択される。
【０１４６】
インストラクションレジスタ１１１をシフトすることで、例えば、ターゲットのＲＴＣ２６にＩＲＴ＝ＳＥＬＥＣＴ−ＤＲを設定し、他のＲＴＣ２６にＩＲＯ＝ＢＹＰＡＳＳを設定することができる。ＳＥＬＥＣＴ−ＤＲは、データレジスタ１１２を指定するＩＲコマンドであり、ＢＹＰＡＳＳは、１ビットのバイパスレジスタ１１３を指定するＩＲコマンドである。ＢＹＰＡＳＳが設定されると、インストラクションレジスタ１１１の全ビットが１になる。
（ｃ）（ｂ）でＳＥＬＥＣＴ−ＤＲをターゲットのＲＴＣ２６に設定し、ＢＹＰＡＳＳを他のＲＴＣ２６に設定した後、ＳＣＡＮＥ３１は、ＳＥＴＤＲを実行する。これにより、ターゲットのＲＴＣ２６のデータレジスタ１１２の値のみがシフトされて、その値が新たに設定される。設定値は、ＳＣＡＮＥ３１のＳＤＲから出力される。
【０１４７】
また、図３５のスキャンループを利用して、各ＲＴＣ２６内の不図示のレジスタＲＴＣＬＥＤに格納された通信状態をモニタする場合の動作は、次のようになる。他の内部状態をモニタする場合も同様である。
（ａ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＩＲＲ８６にＩＲＴとＩＲＯを設定する。ＩＲＴにはＩＲ ＬＥＤが設定され、ＩＲＯにはＢＹＰＡＳＳが設定される。また、ＳＣＡＮＥ３１のＴＧＥＴＲに、ＴＣＨＮ＝ＷＣＨＮ＝４を設定する。
（ｂ）次に、ＣＰＵ４５は、ＳＣＡＮＥ３１のＣＭＤＲの下位４ビットにＳＥＴＩＲを設定して、スキャンを開始する。このとき、ＴＡＰコントローラ１１４は状態ｓｈｉｆｔ−ｉｒに設定される。ここでは、ＴＣＨＮ＝ＷＣＨＮであるので、ＩＲＲ８６のＩＲＴのみが使用される。したがって、ＩＲＯのデータに関係なく、すべてのＲＴＣ２６のインストラクションレジスタ１１１にＩＲ ＬＥＤが書き込まれる。
（ｃ）インストラクションレジスタ１１１にＩＲ ＬＥＤが設定されると、ＲＴＣ２６は、そのコマンドに従って、不図示のＲＴＣＬＥＤに格納された通信状態データを読み出し、データレジスタ１１２に書き込む。
（ｄ）ＣＰＵ４５は、ＳＣＡＮＥ３１のＳＤＲにＩＮＩＴＤＡＴＡを設定し、ＣＭＤＲの下位４ビットをＳＮＳＤＲに設定して、スキャンを開始する。これにより、ＴＡＰコントローラ１１４はｓｈｉｆｔ−ｄｒの状態に設定される。
（ｅ）ＳＣＡＮＥ３１による最初のスキャン動作で、データが矢印の方向へ３２ビットずれることにより、右端の位置０にあるＲＴＣ２６のデータレジスタ１１２の内容が、ＳＤＲにシフトインされる。
【０１４８】
このとき、同時に、ＳＤＲの内容は位置３のＲＴＣ２６のデータレジスタ１１２に入り、そのデータレジスタ１１２の内容は位置２のＲＴＣ２６のデータレジスタ１１２に入り、そのデータレジスタ１１２の内容は位置１のＲＴＣ２６のデータレジスタ１１２に入り、そのデータレジスタ１１２の内容は位置０のＲＴＣ２６のデータレジスタ１１２に入る。
（ｆ）ＳＣＡＮＥ３１は、ＳＤＲの内容を読み出して、ネットワークキャビネット２２−ｉ上のＬＥＤに表示する。
（ｇ）ＳＣＡＮＥ３１は、（ｅ）と（ｆ）の動作をさらに４回繰り返して、３２ビットシフトする毎にＬＥＤ表示を行う。これにより、データが一周し、すべてのＲＴＣ２６の通信状態が順に表示される。
（ｈ）ＣＰＵ４５は、ＳＤＲの内容を、最初に設定したＩＮＩＴＤＡＴＡと比較し、それらが同じであればエラーチェック結果をＯＫとして、動作を終了する。
【０１４９】
このように、本実施形態のＳＣＡＮＥ３１は、従来のスキャンエンジンのような検査目的のみに限らず、実際の運用時においてＲＴＣ２６内のレジスタの内容をモニタすることができる。このため、運用中のＲＴＣ２６の性能を知ることができる。また、開発中のＲＴＣ２６のモニタを行うことで、そのデバッグが容易になる。
【０１５０】
本実施形態では、レジスタの読み出しをＳＣＡＮＥ３１とＳＣＡＮＢ３２の階層構造を利用して行うため、ＲＴＣ２６の数が多数になっても配線はそれほど増やす必要がない。したがって、超並列計算機のような大規模構成のネットワーク計算機の場合でも、読み出しのためのコストを低く押さえられる。
【０１５１】
また、通常、大規模になればスキャンエンジンによる読み出し時間がかかり、システム運用中のデータ収集は難しくなる。しかし、本実施形態では動的かつ階層的に接続を変更することで、データ収集の範囲を限定することができ、その範囲内で高速なデータの読み出しが可能である。
【０１５２】
次に、図３６から図５７までを参照しながら、図９のワークステーション４６上で使用されるスキャンサブコマンドと、それらの中で用いられる関数について説明する。
【０１５３】
図３６は、スキャン制御に関するスキャンサブコマンドのコマンドインタフェースを示している。これらのスキャンサブコマンドは、あらかじめＣ言語で書かれた関数としてプログラミングされている。
【０１５４】
図３６において、ｓｅｔ ｉｒはＲＴＣ２６のインストラクションレジスタ１１１を設定するサブコマンドであり、ｓｅｔ ｄｒはＲＴＣ２６のデータレジスタ１１２を個別に設定するサブコマンドであり、ｓｅｔ ｂｒｄｄｒはすべてのデータレジスタ１１２を同時に設定するサブコマンドである。
【０１５５】
また、ｓｅｎｓｅ ｄｒはデータレジスタ１１２の内容を読み出すサブコマンドであり、ｓｅｔ ｃｍはＣＥＲ３５のデータＭＡＳＫを設定するサブコマンドであり、ｓｅｔ ｓｍはＳＥＲ３３のデータＭＡＳＫを設定するサブコマンドである。
【０１５６】
また、ｇｅｔ ｒｔｃ ｖｅｒｓｉｏｎはＲＴＣ２６の内部レジスタからバージョンデータを読み出すサブコマンドであり、ｇｅｔ ｒｔｃ ｓｔａｔｕｓはＲＴＣ２６の内部レジスタからステータスデータを読み出すサブコマンドである。
【０１５７】
また、ｇｅｔ ｒｔｃ ｎｕｍｂｅｒはネットワーク２７（Ｔ−ｎｅｔ）上に存在するＲＴＣ２６の数（ネットワークサイズ）を得るサブコマンドであり、ｓｅｔ ｔｎｅｔ ｉｄはネットワーク２７のＩＤを設定するサブコマンドであり、ｃｈｅｃｋ ｔｎｅｔ ｃｏｎｎｅｃｔｉｏｎはネットワーク２７の接続試験を行うサブコマンドである。
【０１５８】
また、ｓｈｉｆｔ ｄｒは、ｓｅｔ ｄｒと同様に、データレジスタ１１２を設定するサブコマンドであり、可変長データをシフトする場合に用いられる。これに対して、ｓｅｔ ｄｒは固定長データをシフトする場合に用いられる。
【０１５９】
ｓｅｔ ｉｒ、ｓｅｔ ｄｒ、ｓｅｔ ｂｒｄｄｒ、ｓｅｎｓｅ ｄｒは、それぞれ、図３０のコマンドＳＥＴＩＲ、ＳＥＴＤＲ、ＢＲＤＤＲ、ＳＮＳＤＲを図１８のＣＭＤＲのＣＭＤに設定する指示を含んでいる。また、ｇｅｔ ｒｔｃ ｖｅｒｓｉｏｎ、ｇｅｔ ｒｔｃ ｓｔａｔｕｓ、ｇｅｔ ｒｔｃ ｎｕｍｂｅｒ、ｓｅｔ ｔｎｅｔ ｉｄ、ｃｈｅｃｋ ｔｎｅｔ ｃｏｎｎｅｃｔｉｏｎは、複数のサブコマンドを組み合わせて実現される。
【０１６０】
また、図３６のサブコマンドのパラメータのうち、ｉｒｔ、ｉｒｏ、ｗｃｈｎ、ｔｃｈｎ、ｌｏｏｐ、およびｄａｔａは、それぞれ、上述のＩＲＴ、ＩＲＯ、ＷＣＨＮ、ＴＣＨＮ、ＬＯＯＰ、およびＤＡＴＡと同じデータを表す。さらに、ＣＭａｓｋおよびＳＭａｓｋは、それぞれ、ＣＥＲ３５およびＳＥＲ３３のデータＭＡＳＫを表し、ｌｓはネットワーク２７のＩＤを表す。
【０１６１】
これらのサブコマンドがワークステーション４６からクロックボード４２に入力されると、ＣＰＵ４５は、それらに記述された指示に従って、ＳＣＡＮＥ３１内のレジスタファイル部８２のデータを設定する。すると、ＳＣＡＮＥ３１は、ＣＭＤＲのＣＭＤに設定されたコマンドに対応する動作を行う。これにより、ネットワークサイズの検出、ネットワーク２７の接続試験、ＲＴＣ２６の動作の設定およびモニタ等の制御が実現される。
【０１６２】
これらの各サブコマンドに対しては、ＣＰＵ４５より［“ｏｋ”＋リプライ文字列］あるいは［“ｎｇ”＋エラーコード文字列］の形式のリプライが返される。ただし、サブコマンドのオーバーラップはできない。
【０１６３】
図３７はｓｅｔ ｉｒのプログラムの一例を示しており、図３８はｓｅｔ ｄｒのプログラムの一例を示しており、図３９はｓｅｔ ｂｒｄｄｒのプログラムの一例を示しており、図４０、４１はｓｅｎｓｅ ｄｒのプログラムの一例を示しており、図４２はｓｅｔ ｃｍのプログラムの一例を示しており、図４３はｓｅｔ ｓｍのプログラムの一例を示している。
【０１６４】
また、図４４はｇｅｔ ｒｔｃ ｖｅｒｓｉｏｎのプログラムの一例を示しており、図４５はｇｅｔ ｒｔｃ ｓｔａｔｕｓのプログラムの一例を示しており、図４６はｇｅｔ ｒｔｃ ｎｕｍｂｅｒのプログラムの一例を示している。
【０１６５】
さらに、図４７はｃｈｅｃｋ ｔｎｅｔ ｃｏｎｎｅｃｔｉｏｎのプログラムの一例を示しており、図４８はｓｅｔ ｔｎｅｔ ｉｄのプログラムの一例を示しており、図４９、５０はｓｈｉｆｔ ｄｒのプログラムの一例を示している。これらのプログラムは、動作概念の理解のために参照されることを前提として記述されている。
【０１６６】
例えば、図３７のｓｅｔ ｉｒのプログラムにおいて、／＊から＊／まではコメント文を表し、４行目は各パラメータの定義を表している。また、８行目のＳＥ ＣＭＤＲはＳＣＡＮＥ３１のＣＭＤＲの内容を表し、ＳＥ ＣＭＤＲ ＣＭＰはＣＭＤＲのデータＣｍｐを表し、ＳＥ ＩＯは書き込み動作を表す。したがって、８行目は全体として、ＣＭＤＲのＣｍｐに書き込みが行われない限り待機することを指示している。
【０１６７】
また、１３行目のＳＥ ＩＯ（ＳＥ ＩＲＲ８６）は、ＩＲＲ８６にＩＲＴおよびＩＲＯの値を設定することを表し、２０行目のＳＥ ＣＭＤＲ ＣＭＤ ＳＥＴＩＲは、ＣＭＤにＳＥＴＩＲのコマンドコードを設定することを表す。そして、２１行目でＳＥＴＩＲが実行開始されて、ＩＲＴまたはＩＲＯがＲＴＣ２６のインストラクションレジスタ１１１にスキャンインされる。
【０１６８】
また、２８〜３３行目は、ＣＭＤＲのＥｒｒが１のとき、［“ｎｇ”＋エラーコード文字列］の形式のエラーメッセージを出力し、ＣＭＤＲのＥｒｒが０のとき、［“ｏｋ”＋リプライ文字列］の形式のリプライを出力することを表している。
【０１６９】
図３８から図５０に示した他のプログラムも、同様にして、ＳＣＡＮＥ３１のレジスタファイル部８２を書き換えることで、ＳＣＡＮＥ３１の動作を制御する。図４４のｇｅｔ ｒｔｃ ｖｅｒｓｉｏｎのプログラムでは、例えば、１８行目にｓｅｔ ｉｒが含まれており、１９行目にｓｅｎｓｅ ｄｒが含まれている。図４５から図４８までに示したプログラムにも、いくつかのサブコマンドが含まれていることが分かる。
【０１７０】
次に、これらのプログラムで用いられているサブコマンド以外の関数について説明する。
まず、例えば図４９の１８行目で用いられているｓｈｉｆｔ ｒｉｇｈｔ（ｃｈａｒ  ＊ｏｒｇ，ｃｈａｒ  ＊ｎｅｗ，ｉｎｔ  ｓｈｉｆｔ）は、文字列ｏｒｇ（１６進コード）を、ｍｓｂ（most significant bit）からｌｓｂ（least significant bit ）に向かって、ｓｈｉｆｔ回だけシフトした結果を文字列ｎｅｗに格納する関数である。
【０１７１】
この関数は可変長データをシフトする関数ｓｈｉｆｔ ｄｒの内部関数であり、ｌｓｂ方向から３２ビット単位でデータをシフトするために、図５１に示すように、文字列ｏｒｇのデータを右詰めする。例えば、ｓｈｉｆｔ ｒｉｇｈｔ（“０１２３”，“００９１”，１）のように用いられる。
【０１７２】
また、例えば図５０の５０行目で用いられているｈｔｏｉ（ｃｈａｒ  ＊ｄａｔａ，ｉｎｔ  ａｄｊｕｓｔ，ｉｎｔ  ｖａｌ）は、文字列ｄａｔａ（１６進コード）を下位ａｄｊｕｓｔビット分だけ変換し、上位はｖａｌでマスクする関数である。
【０１７３】
この関数もｓｈｉｆｔ ｄｒの内部関数であり、ｓｈｉｆｔ ｒｉｇｈｔにより右詰めされたデータのうち最後（左端）のデータの上位ビットを、図５２に示されるようにマスクする。例えば、ｈｔｏｉ（“１２３４”，１０，０ｘｆ５００）＝＝０ｘｆ６３４のように用いられる。
【０１７４】
また、例えば図４４の１４行目で用いられているｔｏｉ（ｃｈａｒ  ＊ｓ）ｘ＝ｔｏｉ（ｓ）は、先頭文字列が“０ｘ”で始まっていれば１６進コードとして扱い、そうでなければ１０進コードとして扱う関数である。この関数は、ｉｆ（ｓｓｃａｎｆ（ｓ，”０ｘ％ｘ”，＆ｘ）！＝１）ｓｓｃａｎｆ（ｓ，”％ｄ”，＆ｘ）のように書ける。
【０１７５】
また、例えば図４４の１８行目で用いられているｔｏａ（ｉｎｔ  ｉ）は、整数ｉを文字列に変換する関数である。
また、例えば図４７の１８行目で用いられているｓｅｔ ａｌｌｆ（ｃｈａｒ＊ｄａｔａ，ｉｎｔ  ｓｉｚｅ）は、Ｔ−ｎｅｔのポートのすべてにデータ１を与える関数であり、例えば図４７の２４行目で用いられているｓｅｔ ａｌｌ０（ｃｈａｒ  ＊ｄａｔａ，ｉｎｔ  ｓｉｚｅ）は、Ｔ−ｎｅｔのポートのすべてにデータ０を与える関数である。
【０１７６】
Ｔ−ｎｅｔのポートは、図５３に概念的に示される関数ｒｔｃ ｂｓｆにより定義される。図５３において、ｗｉ、ｎｉ、ｅｉ、およびｓｉはＲＴＣ２６の入力ポートを表し、ｗｏ、ｎｏ、ｅｏ、およびｓｏは出力ポートを表す。
【０１７７】
また、例えば図４７の２９行目で用いられているｓｅｔ ｓｅｑ（ｃｈａｒ  ＊ｄａｔａ，ｉｎｔ  ｓｉｚｅ）は、Ｔ−ｎｅｔのポートにシーケンシャルな番号を割り振っていく関数である。例えば、ｗｏ、ｎｏ、ｅｏ、ｓｏの各ポート毎にシーケンシャルな番号が与えられる。
【０１７８】
また、例えば図４７の３２行目で用いられているｃｈｅｃｋ ｃｏｎｎｅｃｔ（ｃｈａｒ  ＊ｄａｔａ１，ｃｈａｒ  ＊ｄａｔａ２）は、Ｔ−ｎｅｔの接続関係を格納したデータベースｔｎｅｔ ｃｏｎｎｅｃｔ ｌｉｓｔ（ネットワーク接続関係表）をもとに、ｄａｔａ１とｄａｔａ２を比較し、ポート間の接続関係が合っているかどうかを確認する関数である。
【０１７９】
ｄａｔａ１は、ＲＴＣ２６の出力ポートにスキャンインされたデータを表し、ｄａｔａ２は、ＲＴＣ２６の入力ポートからスキャンアウトされたデータを表す。接続関係は、ＲＴＣ２６の数とポート構成の大きさとによって決まる。
【０１８０】
ここで簡単のために、ポートサイズを８ビットとして、２個のＲＴＣ１２１、１２２の各ポートが図５４に示すように接続されており、その接続関係がｔｎｅｔ ｃｏｎｎｅｃｔ ｌｉｓｔに格納されているとする。
【０１８１】
このとき、図５４より、ＲＴＣ１２１のポートｗｏとポートｅｉが接続されているはずなので、そのポートｗｏにデータ００をシフトインすると、ポートｅｉにそのデータ００がシフトアウトされる。同様に、ＲＴＣ１２１のポートｎｏとＲＴＣ１２２のポートｓｉが接続されているはずなので、ＲＴＣ１２１のポートｎｏにデータ０１をシフトインすると、ＲＴＣ１２２のポートｓｉにそのデータ０１がシフトアウトされる。
【０１８２】
このようにして、ＲＴＣ１２１の出力ポートｗｏ、ｎｏ、ｅｏ、ｓｏ、ＲＴＣ１２２の出力ポートｗｏ、ｎｏ、ｅｏ、ｓｏに、それぞれ、シーケンシャルなデータ００、０１、０２、０３、０４、０５、０６、０７をシフトインした場合、ｄａｔａ１とｄａｔａ２の関係は図５５に示すようになる。図５５において、“ｘｘ”および“−”はドントケアを表す。
【０１８３】
図５５では、各出力ポートにシフトインされたデータが、それに接続された入力ポートに現れていることが分かる。もし、入出力ポート間のデータの対応関係が図５４の接続関係と一致しなければ、接続に誤りがあるとみなされる。ｃｈｅｃｋ ｃｏｎｎｅｃｔは、接続関係が正しいとき１を出力し、正しくないとき０を出力する。
【０１８４】
また、例えば図４８の２０行目で用いられているｓｅｔ ｔｎｅｔｉｄ（ｃｈａｒ  ＊ｄａｔａ，ｉｎｔ  ｓｉｚｅ）は、Ｔ−ｎｅｔのＩＤをストリング形式でｄａｔａに格納する関数である。ｓｉｚｅはｄａｔａの大きさを表す。Ｔ−ｎｅｔのＩＤは、データベース配列ｔｎｅｔ ｉｄ ｔａｂｌｅとＲＴＣ２６の数ｒｔｃ ｃｏｕｎｔから得られる。例えば、配列ｔｎｅｔ ｉｄ ｔａｂｌｅは図５６のように定義され、関数ｓｅｔ ｔｎｅｔｉｄは図５７のように定義される。
【０１８５】
次に、図４に示した信号ＳＦＴを用いたＳＣＡＮＢ３２の制御方法について補足する。ＳＣＡＮＢ３２のＴＡＰコントローラに入力する信号ＴＭＳの値は、図５８のプログラムに定義されるように、ＳＣＡＮＥ３１からの信号ＴＭＳとＳＦＴの論理積になっている。
【０１８６】
したがって、ＳＦＴ＝１の場合には、ＳＣＡＮＥ３１からのＴＭＳがそのままＳＣＡＮＢ３２のＴＡＰコントローラに入力し、ＪＴＡＧスキャンの制御はＳＣＡＮＢ３２に対して行われる。このとき、ＳＣＡＮＥ３１との間の信号ＴＤＩ、ＴＤＯはＳＥＲ３３に接続され、ＳＥＲ３３のデータがシフトされる。
【０１８７】
一方、ＳＣＡＮＢ３２からＲＴＣ２６への信号ＴＭＳは常に０となり、ＲＴＣ２６のＴＡＰコントローラ１１４はデータ０でマスクされるため、状態遷移を行わない。図５９は、このようなＴＡＰコントローラ１１４に対するマスク制御のプログラムを示している。
【０１８８】
また、ＳＦＴ＝０の場合には、ＳＣＡＮＢ３２のＴＡＰコントローラへの入力は常に０となり、その状態は変化しない。一方、ＲＴＣ２６への信号ＴＭＳは１のままなので、ＲＴＣ２６のＴＡＰコントローラ１１４はデータ１でマスクされ、ＪＴＡＧスキャンの制御はＲＴＣ２６に対して行われる。このとき、ＳＣＡＮＥ３１との間の信号ＴＤＩ、ＴＤＯはスイッチングマトリクス８３に接続され、ＲＴＣ２６のデータがシフトされる。
【０１８９】
次に、図６０から図６３までを参照しながら、図２９のスイッチングマトリクス８３の制御方法について補足する。
図６０は、ハードウェア記述言語の一種であるｖｅｒｉｌｏｇで書かれた１つのスイッチングマトリクス８３の動作定義を示しており、図６１は、図６０で用いられている信号名と配線の対応関係を示している。ここでは、信号ｏ［ｉ］、ｉ［ｉ］、およびｅｍｓｋ［ｉ］（ｉ＝０，１，２，３）は、それぞれ信号ＵＴＤＯｉ、ＵＴＤＩｉ、およびＳＥｉに対応し、信号ｏ０［ｉ］（ｉ＝０，１，２，３）は、セレクタ１０２に対する入力信号を表す。
【０１９０】
信号ｏ０［０］はスキャン入力ｓｉ＝ＳＩＮに一致するが、他の信号ｏ０［ｉ］（ｉ＝１，２，３）は、ｅｍｓｋ［ｉ−１］の値に応じてｉ［ｉ−１］またはｏ０［ｉ−１］となる。信号ｏ［ｉ］は、ｅｍｓｋ［ｉ］の値に応じてｏ０［ｉ］または１となる。また、信号ｓｏは、スキャン出力ＳＯＵＴを表し、ｅｍｓｋ［３］の値に応じてｉ［３］またはｏ０［３］となる。
【０１９１】
本実施形態では、ＳＥＲ３３またはＣＥＲ３５のデータをｅｍｓｋ［ｉ］として入力することで、スイッチングマトリクス８３のセレクタ１０１、１０２を制御し、ｌｏｏｐｉの繋ぎ替えを行っている。例えば、図２７のＳＣＡＮＢ３２の場合は５つのスイッチングマトリクス８３を備えており、その動作は図６２のように定義される。
【０１９２】
この場合、ｓｗ０、ｓｗ１、ｓｗ２、ｓｗ３、ｓｗ４が、それぞれＳＷＭＡＴ０、ＳＷＭＡＴ１、ＳＷＭＡＴ２、ＳＷＭＡＴ３、ＳＷＭＡＴ４に対応する。また、図６３に示されるように、信号ｏｕｔ［ｉ］、ｉｎ［ｉ］、およびｅｍｓｋ［ｉ］（ｉ＝０，１，．．．，１９）は、それぞれ信号ＵＴＤＯｉ、ＵＴＤＩｉ、およびＳＥｉに対応する。ｅｍｓｋ［ｉ］としては、図２８のデータＭＡＳＫ［ｉ］（ｉ＝０，１，．．．，１９）が用いられる。
【０１９３】
また、信号ｃｉｉ、ｃｏｉ（ｉ＝０，１，２，３，４）は、それぞれスイッチングマトリクスｓｗｉへの入力信号、ｓｗｉからの出力信号を表す。各スイッチングマトリクスｓｗｉは図６０の定義に基づいて動作し、信号ｃｉｉを受け取って信号ｃｏｉを出力する。
【０１９４】
信号ｃｉ０はスキャン入力ｓｉ＝ＳＩＮに一致するが、他の信号ｃｉｉ（ｉ＝１，２，３，４）は、前段のスイッチングマトリクスｓｗ（ｉ−１）に入力する４つの制御信号ｅｍｓｋ［４ｉ−１：４（ｉ−１）］の論理和の値に応じて、ｃｏ（ｉ−１）またはｃｉ（ｉ−１）となる。
【０１９５】
例えば、セレクタ１０３は、ｅｍｓｋ［３］、ｅｍｓｋ［２］、ｅｍｓｋ［１］、およびｅｍｓｋ［０］の論理和｜ｅｍｓｋ［３：０］が１の時、信号ｃｏ０をｃｉ１として出力し、｜ｅｍｓｋ［３：０］が０の時、信号ｃｉ０を出力する。
【０１９６】
さらに、信号ｓｏは、最終段のスキャン出力ＳＯＵＴを表し、ｅｍｓｋ［１９：１６］の論理和の値に応じてｃｏ４またはｃｉ４となる。こうして、ＳＥＲ３３のデータＭＡＳＫ［ｉ］を用いて、５つのスイッチングマトリクス８３を制御し、最大２０個のｌｏｏｐｉを繋ぎ替えることができる。
【０１９７】
次に、図２の並列計算機におけるＪＴＡＧスキャン試験の初期化に要する時間について、検討を行う。
ＪＴＡＧスキャンに要する時間Ｔjtagは、ＪＴＡＧクロックＴＣＫの周波数ｆと、設定コマンド数ｎC 、そのコマンドが必要とするビット数ｂnc、およびＲＴＣの数ｎr の関数によって表現できる。
【０１９８】
まず、ＪＴＡＧクロックの上限値ｆmax はＳＣＡＮＥ３１とＳＣＡＮＢ３２内にあるスイッチングマトリクス８３の遅延値（ディレイ）と、ケーブルによる遅延値を考慮することによって算出できる。
【０１９９】
図６４は、ＪＴＡＧクロックに影響するディレイの存在位置とその見積もり値を示している。図６４において、ＲＴＣ１２３のＴＤＯからＲＴＣ１２４のＴＤＩまでのディレイがクロックサイクルの長さτの１／２以内に収まる必要がある。このディレイは、３０×４＋１３０×２＋１００＝４８０（ｎｓ）であるから、τは少なくとも４８０×２＝９６０（ｎｓ）以上必要になる。よって、最大周波数はｆ〜１（ＭＨｚ）となる。
【０２００】
次に、ＳＣＡＮＥ３１のコマンドの実行時間について考える。ＳＣＡＮＥ３１のコマンドには、図３６に示したスキャンサブコマンドのほかに、次のようなものがある。ｓｅｔ ｃｌｏｃｋ等、ＳＣＡＮＥ３１のレジスタファイル部８２のリード／ライト（Ｒ／Ｗ）で実現できるコマンド（これをＲＥＧと記す）、ｓｅｔ ｔｎｅｔ ｒｔｃｆｌｏｗ等、ＲＴＣのレジスタのＲ／Ｗで実現できるコマンド（これをＲＴＣＲＥＧと記す）、ｃｈｅｃｋ ｔｎｅｔ ｃｏｎｎｅｃｔｉｏｎ等、ＲＴＣのＢＳＦＦをスキャンするコマンド（これをＲＴＣＢＳＦと記す）である。
【０２０１】
これらのコマンドを実現するプリミティブとして、図３６のｓｅｔ ｉｒ、ｓｅｔ ｄｒ、およびｓｈｉｆｔ ｄｒを使用する。それぞれのプリミティブの所要ビット数ｎir、ｎdr、ｎsft は、図６５に示すようになる。
【０２０２】
また、コマンドＲＥＧ、ＲＴＣＲＥＧ、ＲＴＣＢＳＦのそれぞれの所要ビット数は、図６６に示すようになる。図６６において、出現回数は、初期化時に各コマンドが使用される回数を表している。この計算によれば、初期化に要する全ビット数は２３００×ｎr 程度となる。
【０２０３】
ＪＴＡＧクロックＴＣＫの周波数は、上述したように、最大１ＭＨｚ程度であるから、初期化に要する時間は、およそＴjtag＝２．３×ｎr （ｍｓ）となる。さらに、ＣＰＵ４５内部での演算時間を考慮してＴjtagの値に余裕を持たせた場合でも、ｎr ＝１０２４（台）に対して、所要時間は４秒程度と予測される。
【０２０４】
ＳＣＡＮＥ３１をドライブするＣＰＵ４５の周波数の影響は、ｆが比較的低い間は小さい。ＣＰＵ４５の周波数を８ＭＨｚとした場合、３２ビットシフトで２５６クロックあり、ポーリングのオーバーヘッドは無視できる。
【０２０５】
ＪＴＡＧスキャンシステムとして考えた場合には、ワークステーション４６やＳＣＵ ＡＤＰボード４３でのオーバヘッドを考慮する必要がある。オーバヘッドには、シリアル通信のハンドリングオーバヘッドと、データ転送レートによるオーバヘッドがあるが、ハンドリングオーバヘッドを明確にするのは難しい。
【０２０６】
今、データ転送レートを１９２００ｂｐｓとすると、１０バイト（８０ｂｉｔ）の１コマンドパケットを転送するのに４ｍｓ必要である。よって、２回のｓｔｏｒｅ−ａｎｄ−ｆｏｒｗａｒｄ動作を考えれば、データ転送レートによるオーバヘッドは４×２×２〜２０（ｍｓ）程度になると考えられる。
【０２０７】
例えば、コマンドｇｅｔ ｒｔｃ ｓｔａｔｕｓにおいては、リプライステータスデータは３２×ｎr ビットであり、所要時間は１転送あたり１．７ｍｓであるから、コマンドの実行時間は、Ｔ（ｎr ) ＝４×２＋（４＋１．７×ｎr ）×２（ｍｓ）となる。ｎr ＝１０２４の場合は、Ｔ（１０２４）〜３．５（ｓ）である。この時間をより短くするために、フォーマットを変更することも考えられる。
【０２０８】
また、クロックボード４２とＳＣＵ ＡＤＰボード４３の間の通信、およびＳＣＵ ＡＤＰボード４３とＲＴＣの間の通信は、コマンドバイト数が少ないため、ハンドリングソフトウェアのオーバヘッドのみが問題になると考えられる。１コマンドあたりのハンドリングソフトウェアのオーバヘッドをｔsoとすると、所要時間は、Ｔall ＝Ｔjtag＋ｔso×ｎC となる。
【０２０９】
ところで、図３に示したスキャンシステムでは、２階層のパスからスキャンパスを構成しているが、複数のＳＣＡＮＢを階層的に接続することで、さらに多くの階層を持つ多階層のスキャンパスを構成することもできる。
【０２１０】
図６７は、このような多階層のスキャンパスを構成する多階層のＳＣＡＮＢを示している。図６７において、ＳＣＡＮＥの下には３階層のＳＣＡＮＢがＪＴＡＧの信号線で接続され、最下層のＳＣＡＮＢにはＲＴＣが接続されている。ＳＣＡＮＥとＳＣＡＮＢは、それぞれ、スイッチングマトリクス８３のスイッチを切り替えて、それより下位のパスを接続／切断する。
【０２１１】
このように、ＳＣＡＮＢを多階層にすることで、さらに多くのＲＴＣに対応することが可能になる。将来的には、１０万台以上のＰＥを備える並列計算機の実現も考えられている。
【０２１２】
以上説明した実施形態では、並列計算機のＲＴＣのＪＴＡＧスキャンについて説明したが、本発明のスキャン試験は、複雑な接続関係を有する任意のＬＳＩチップのネットワークに適用することができる。この場合も、ＳＣＡＮＥ３１とＳＣＡＮＢ３２を用いて階層的なスキャンパスを構成すれば、ネットワークサイズの検出、接続試験、ＬＳＩの動作の設定やモニタ等を効率よく行うことができる。
【０２１３】
また、ネットワークに接続されるＬＳＩは必ずしもすべて同じ種類である必要はなく、様々な種類のＬＳＩが混在していてもかまわない。この場合、ＬＳＩの種類毎に、それに適した構成のＳＣＡＮＢを用意して、１つのＳＣＡＮＢには同じ種類のＬＳＩを接続するようにすれば、制御が容易になる。
【０２１４】
ここで、通常のスキャン制御によるスキャン試験と本発明によるスキャン試験の違いをまとめてみる。まず、通常のスキャン制御による試験では、すべてのＬＳＩをスキャンループに入れるため、試験に時間がかかる。例えば、１つのＬＳＩのデータレジスタに３２ビットのデータをセットするために、他のＬＳＩではバイパスレジスタを選択して１ビットのシフトを行う方法では、他のＬＳＩを無視するためのオーバーヘッドは１ＬＳＩあたり３％程度になる。
【０２１５】
したがって、３０個のＬＳＩをバイパスする場合は、３２ビットのシフト動作の約２倍の時間が必要となる。また、ＪＴＡＧスキャンでＬＳＩのインストラクションレジスタに８ビットのインストラクションコードをセットする場合、全ＬＳＩの数をＮとすると、８Ｎビットのシフトを行わなければならない。Ｎが大きくなると、その所要時間は膨大なものになる。
【０２１６】
これに対して、階層的にスキャンパスを構成可能な本発明では、不要なスキャンチェーンを切り離して、全体のスキャンパスを短くすることが可能であり、ＪＴＡＧスキャンに必要な時間を短縮できる。
【０２１７】
また、通常のスキャン制御による試験では、スキャンループは回路設計時に決定されており、変更することができない。このため、システム構成に自由度がない。ＪＴＡＧスキャンの場合、自由度を増すために、信号ＴＤＯをバス接続にして複数のＬＳＩで共用することができるが、そのためには信号ＴＭＳをそれぞれ独立に制御する必要がある。ＴＭＳを独立に制御するのであれば、そのハードウェアオーバーヘッドは本発明のＳＣＡＮＢ３２を用いる場合と変わらなくなる。また、バス接続にした場合、同時に接続できる信号線は限られる。
【０２１８】
これに対して、本発明では、ＬＳＩ間の接続を自由に変更できるため、並列計算機のネットワークのようにコンフィグレーションが変化する場合においても、接続を変更するだけで同じスキャン試験を行うことができる。
【０２１９】
【発明の効果】
本発明によれば、並列計算機等の巨大なシステムにおいて、自由度の高い柔軟なスキャンパスを構成することができる。これにより、ＪＴＡＧ−ＳＣＡＮのようなスキャン試験の対象を一部のＬＳＩに限定して、効率的かつ安価なスキャン試験を実施することができる。
【０２２０】
また、このようなスキャンパスを利用して、ＬＳＩの動作の設定やモニタを効率よく行うことも可能になる。
【図面の簡単な説明】
【図１】本発明のスキャン装置の原理図である。
【図２】並列計算機の構成図である。
【図３】本発明のＪＴＡＧ試験を示す図である。
【図４】スキャンバッファの信号生成論理を示す図である。
【図５】第１の信号生成を示す図である。
【図６】第２の信号生成を示す図である。
【図７】キャビネットチェーンの接続方法を示す図である。
【図８】スロットチェーンの接続方法を示す図である。
【図９】ネットワークキャビネットの構成図である。
【図１０】クロックボードの構成図である。
【図１１】クロック部の信号を示す図である。
【図１２】フロントコネクタの信号を示す図である。
【図１３】ＳＣＵ ＡＤＰボードの構成図である。
【図１４】ＲＴＣボードの構成図である。
【図１５】スキャンエンジンの構成図である。
【図１６】レジスタアドレスマップを示す図である。
【図１７】クロックコントロールレジスタを示す図である。
【図１８】コマンド／ステータスレジスタを示す図である。
【図１９】スキャンエンジンのコマンドコードを示す図である。
【図２０】キャビネットチェーンイネーブルレジスタを示す図である。
【図２１】スキャンデータレジスタを示す図である。
【図２２】ＩＲレジスタを示す図である。
【図２３】ＴＡＲＧＥＴレジスタを示す図である。
【図２４】ＬＯＯＰレジスタを示す図である。
【図２５】ＭＩＳＣレジスタを示す図である。
【図２６】ディスプレイ制御レジスタを示す図である。
【図２７】スキャンバッファの構成図である。
【図２８】スロットチェーンイネーブルレジスタを示す図である。
【図２９】スイッチングマトリクスの構成図である。
【図３０】スキャンエンジンのコマンドによる動作例を示す図である。
【図３１】ネットワークサイズ検出の動作フローチャートである。
【図３２】接続試験の動作フローチャートである。
【図３３】未接続確認の動作フローチャートである。
【図３４】接続誤り確認の動作フローチャートである。
【図３５】ＪＴＡＧスキャンループの構成例を示す図である。
【図３６】コマンドインタフェースを示す図である。
【図３７】ｓｅｔ ｉｒのプログラムを示す図である。
【図３８】ｓｅｔ ｄｒのプログラムを示す図である。
【図３９】ｓｅｔ ｂｒｄｄｒのプログラムを示す図である。
【図４０】ｓｅｎｓｅ ｄｒのプログラムを示す図（その１）である。
【図４１】ｓｅｎｓｅ ｄｒのプログラムを示す図（その２）である。
【図４２】ｓｅｔ ｃｍのプログラムを示す図である。
【図４３】ｓｅｔ ｓｍのプログラムを示す図である。
【図４４】ｇｅｔ ｒｔｃ ｖｅｒｓｉｏｎのプログラムを示す図である。
【図４５】ｇｅｔ ｒｔｃ ｓｔａｔｕｓのプログラムを示す図である。
【図４６】ｇｅｔ ｒｔｃ ｎｕｍｂｅｒのプログラムを示す図である。
【図４７】ｃｈｅｃｋ ｔｎｅｔ ｃｏｎｎｅｃｔｉｏｎのプログラムを示す図である。
【図４８】ｓｅｔ ｔｎｅｔ ｉｄのプログラムを示す図である。
【図４９】ｓｈｉｆｔ ｄｒのプログラムを示す図（その１）である。
【図５０】ｓｈｉｆｔ ｄｒのプログラムを示す図（その２）である。
【図５１】文字列のシフト操作を示す図である。
【図５２】データのマスク操作を示す図である。
【図５３】ポートの定義を示す図である。
【図５４】ＲＴＣの接続例を示す図である。
【図５５】入出力ポートのデータを示す図である。
【図５６】データベース配列を示す図である。
【図５７】ｓｅｔ ｔｎｅｔｉｄの定義を示す図である。
【図５８】信号ＴＭＳの定義を示す図である。
【図５９】信号ＴＭＳによるマスク制御を示す図である。
【図６０】１つのスイッチングマトリクスの動作定義を示す図である。
【図６１】１つのスイッチングマトリクスの信号名を示す図である。
【図６２】複数のスイッチングマトリクスの動作定義を示す図である。
【図６３】複数のスイッチングマトリクスの信号名を示す図である。
【図６４】ＪＴＡＧクロックに影響するディレイの存在位置を示す図である。
【図６５】スキャンサブコマンドと必要なビット数を示す図である。
【図６６】初期化コマンドと必要なビット数を示す図である。
【図６７】多階層のスキャンバッファを示す図である。
【図６８】被試験システムを示す図である。
【図６９】従来のＪＴＡＧ試験を示す図である。
【符号の説明】
１、２６、１２１、１２２、１２３、１２４  ＲＴＣ
２、３１  スキャンエンジン
１１  スキャンパス構成手段
１２  シフト手段
１３  集積回路
１４、２７  ネットワーク
１５  スキャンチェーン
１６  集積回路スイッチ手段
１７  制御手段
２１−０、２１−１、２１−ＣＮ  ＰＥキャビネット
２２−０、２２−１、２２−ＣＮ  ネットワークキャビネット
２３、４５  ＣＰＵ
２４  メモリ
２５  ＭＳＣ
３２  スキャンバッファ
１０１、１０２、１０３  セレクタ
３３、３５、８６、８７、１１１、１１２、１１３  レジスタ
３４、９１  コントローラ部
４１  ＳＣＵ ＭＡＩＮボード
４２  クロックボード
４３  ＳＣＵ ＡＤＰボード
４４  ＲＴＣボード
５１  クロック部
５２  ＣＰＵ部
５３、５４、５５  クロック発振源
５６  コントローラ
５７、５８、７２、７３、７４、９２  バッファ
５９  ＲＡＭ
６０  ＲＯＭ
６１  シリアルポート
６２  タイマ
７１  システムコントロールアダプタ
８１  インタフェース部
８２  レジスタファイル部
８３  スイッチングマトリクス
８４  スキャンクロック生成部
８５、１１４  ＴＡＰコントローラ
【図１】
0003791859.tif 000002
【図２】
0003791859.tif 000003
【図３】
0003791859.tif 000004
【図４】
0003791859.tif 000005
【図５】
0003791859.tif 000006
【図６】
0003791859.tif 000007
【図７】
0003791859.tif 000008
【図８】
0003791859.tif 000009
【図９】
0003791859.tif 000010
【図１０】
0003791859.tif 000011
【図１１】
0003791859.tif 000012
【図１２】
0003791859.tif 000013
【図１３】
0003791859.tif 000014
【図１４】
0003791859.tif 000015
【図１５】
0003791859.tif 000016
【図１６】
0003791859.tif 000017
【図１７】
0003791859.tif 000018
【図１８】
0003791859.tif 000019
【図１９】
0003791859.tif 000020
【図２０】
0003791859.tif 000021
【図２１】
0003791859.tif 000022
【図２２】
0003791859.tif 000023
【図２３】
0003791859.tif 000024
【図２４】
0003791859.tif 000025
【図２５】
0003791859.tif 000026
【図２６】
0003791859.tif 000027
【図２７】
0003791859.tif 000028
【図２８】
0003791859.tif 000029
【図２９】
0003791859.tif 000030
【図３０】
0003791859.tif 000031
【図３１】
0003791859.tif 000032
【図３２】
0003791859.tif 000033
【図３３】
0003791859.tif 000034
【図３４】
0003791859.tif 000035
【図３５】
0003791859.tif 000036
【図３６】
0003791859.tif 000037
【図３７】
0003791859.tif 000038
【図３８】
0003791859.tif 000039
【図３９】
0003791859.tif 000040
【図４０】
0003791859.tif 000041
【図４１】
0003791859.tif 000042
【図４２】
0003791859.tif 000043
【図４３】
0003791859.tif 000044
【図４４】
0003791859.tif 000045
【図４５】
0003791859.tif 000046
【図４６】
0003791859.tif 000047
【図４７】
0003791859.tif 000048
【図４８】
0003791859.tif 000049
【図４９】
0003791859.tif 000050
【図５０】
0003791859.tif 000051
【図５１】
0003791859.tif 000052
【図５２】
0003791859.tif 000053
【図５３】
0003791859.tif 000054
【図５４】
0003791859.tif 000055
【図５５】
0003791859.tif 000056
【図５６】
0003791859.tif 000057
【図５７】
0003791859.tif 000058
【図５８】
0003791859.tif 000059
【図５９】
0003791859.tif 000060
【図６０】
0003791859.tif 000061
【図６１】
0003791859.tif 000062
【図６２】
0003791859.tif 000063
【図６３】
0003791859.tif 000064
【図６４】
0003791859.tif 000065
【図６５】
0003791859.tif 000066
【図６６】
0003791859.tif 000067
【図６７】
0003791859.tif 000068
【図６８】
0003791859.tif 000069
【図６９】
0003791859.tif 000070