(57)【要約】      （修正有）【課題】故障しているＰＥがあってもプロセッサ全体として正常に動作できるようプロセッサを提供する。【解決手段】  プロセッサ１にセルフテストを行う機能部を備え、フラグレジスタ３４の値によって各ＰＥの動作の稼動もしくは停止を決定することができ、セルフテストを行う機能部はフラグレジスタ３４の値を１つのＰＥだけが稼動状態になるように設定し、稼動状態になっているＰＥについてのみテストを行ってそのＰＥが正常であるか故障しているかを判定し、１つのＰＥについてのテストが終了するとフラグレジスタ３４の値を１つシフトして次の１つＰＥを稼動状態にしてその１つのＰＥをテストしていく処理を繰り返すことで全てのＰＥについてのテストを行うように構成され、全てのＰＥについてのテストが終了するとその結果に基づいて各ＰＥのフラグレジスタ３４の値を決定し、故障しているＰＥの動作を停止させる。【選択図】  図３
2005202657.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型プロセッサであって、各プロセッサエレメントはフラグレジスタを備え、プロセッサにセルフテストを行う機能部を備え、前記フラグレジスタの値によって各プロセッサエレメントの動作の稼動もしくは停止を決定することができ、セルフテストを行う機能部は前記フラグレジスタの値を所定数のプロセッサエレメントだけが稼動状態になるように設定し、稼動状態になっているプロセッサエレメントについてのみテストを行ってそのプロセッサエレメントが正常であるか故障しているかを判定し、所定数のプロセッサエレメントについてのテストが終了すると前記フラグレジスタの値を所定数シフトして次の所定数のプロセッサエレメントを稼動状態にしてその所定数のプロセッサエレメントをテストしていく処理を繰り返すことで全てのプロセッサエレメントについてのテストを行うように構成され、全てのプロセッサエレメントについてのテストが終了するとその結果に基づいて各プロセッサエレメントのフラグレジスタの値を決定し、故障しているプロセッサエレメントの動作を停止することを特徴とするＳＩＭＤ型プロセッサ。
【請求項２】
複数のデータを処理するための複数のプロセッサエレメントを有するＳＩＭＤ型プロセッサであって、各プロセッサエレメントはフラグレジスタと複数あるプロセッサエレメントの中から自身を特定するための番号を格納するＩＤレジスタを備え、プロセッサにセルフテストを行う機能部を備え、前記フラグレジスタの値によって各プロセッサエレメントの動作の稼動もしくは停止を決定することができ、セルフテストを行う機能部は前記フラグレジスタの値を所定数のプロセッサエレメントだけが稼動状態になるように設定し、稼動状態になっているプロセッサエレメントについてのみテストを行ってそのプロセッサエレメントが正常であるか故障しているかを判定し、プロセッサエレメントが正常であればＩＤレジスタにユニークな番号を設定し、所定数のプロセッサエレメントについてのテストが終了すると前記フラグレジスタの値を所定数シフトして次の所定数のプロセッサエレメントを稼動状態にしてその所定数のプロセッサエレメントをテストしていく処理を繰り返すことで全てのプロセッサエレメントについてのテストとＩＤレジスタの値を設定していく処理を行うように構成され、全てのプロセッサエレメントについてのテストが終了するとその結果に基づいて各プロセッサエレメントのフラグレジスタの値を決定し、故障しているプロセッサエレメントの動作を停止することを特徴とするＳＩＭＤ型プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ、特にＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ）型マイクロプロセッサに関する。
【背景技術】
【０００２】
ＳＩＭＤ型マイクロプロセッサでは、複数のデータに対して１つの命令で同時に同一の演算処理が実行可能である。この構造により、演算は同一であるがデータ量が非常に多い処理、例えば、デジタルコピアなどにおける画像処理に係る用途において、頻用されている。
【０００３】
ＳＩＭＤ型マイクロプロセッサにおける通常の画像処理では、複数の演算ユニット（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔ  ［ＰＥ］；プロセッサエレメント）を主走査方向に並べ、同一の演算を同時に複数のデータに対して実行することによって高速な演算処理が可能となっている。
【０００４】
近年、製造プロセスの微細化によってＬＳＩの集積度は高まる一方であり、ＳＩＭＤ型プロセッサにおいてもＰＥ数の増加が可能となってきた。しかしながら、ＳＩＭＤ型などのように、並列プロセッサ構成を採るプロセッサでは、複数個搭載しているプロセッサの内の一つでも故障していると、プロセッサ全体として故障となってしまうため、従来は冗長なＰＥを設けておき、故障しているＰＥと置き換えるという手法が取られてきた（例えば、特許文献１ないし３参照）。
【０００５】
上記特許文献１ないし３などに示すように、従来は、不良プロセッサを置き換えるための冗長ＰＥを設けておき、故障しているＰＥがある場合には、ＰＥを特定する信号を故障しているＰＥではなく、冗長ＰＥに割り当てることで並列プロセッサを救済している。
【０００６】
また、隣接したＰＥからの出力信号と、自身が出力する信号とのマルチプレクサを各ＰＥが有し、故障しているＰＥでは隣接したＰＥからの出力信号をバイパスして出力することで並列プロセッサを救済するものも提案されている（例えば、特許文献４ないし６参照）。
【特許文献１】特開平９−２２４００号公報
【特許文献２】特開平９−２８８６５２号公報
【特許文献３】特許第３００５２４３号
【特許文献４】特開２０００−１４８９９８号公報
【特許文献５】特開２００２−１６９７８７号公報
【特許文献６】特表２００１−５２７２１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記した各特許文献においては、ＰＥをどのように検査していくかの記述はない。ところで、これらの構成のプロセッサにおいて、ＰＥのセルフテストの仕組みについて考えると、まず、検査の過程において任意のＰＥにテストデータを入力し、また任意のＰＥのレジスタに格納されているデータをテスト装置がチェックする方法と、全てのＰＥにテストデータおよびテストデータに伴うテスト結果の期待値を入力し、テスト結果と期待値の比較を各ＰＥが備えるＡＬＵにて行わせる方法の２通りが考えられる。しかし、後者の方法では各ＰＥが備えるＡＬＵが正常でなければ正しい検査が行えないので、前者の方法に比べて故障ＰＥを検出できない確率が高くなってしまう。
【０００８】
さらに、上記した特許文献１ないし３などで開示されているプロセッサにおいては、各ＰＥを選択するための制御線を持っていることが前提となっているので、セルフテストの際もこの制御線を用いて各ＰＥを選択し、テストしていく処理が考えられる。しかし、プロセッサが備えるＰＥ数が増加した場合に、冗長ＰＥと切り換えるための制御線が非常に多くなるという問題が生じる。
【０００９】
一方、特許文献４ないし６などで開示されているプロセッサにおいては、各ＰＥが、外部記憶装置や外部制御装置にアクセスできる記憶装置としてシフトレジスタを有している構成であるため、セルフテストの際もこのレジスタを用いて各ＰＥ毎にテストデータの書き込みと、テスト結果の読み出しを行うことが可能であるが、シフトレジスタを使用しているため回路規模が大きくなってしまうという問題が生じる。
【００１０】
本発明は、上記のことに鑑みなされたものにして、故障ＰＥの救済方法を備えたＳＩＭＤ型プロセッサにおいて、各ＰＥのセルフテストを少ない回路追加によって行うための方法と、セルフテストの結果に基づいて、故障しているＰＥの動作を停止させ、故障しているＰＥがあってもプロセッサ全体として正常に動作できるように並列プロセッサを再構成することを目的としている。
【課題を解決するための手段】
【００１１】
請求項１に記載の発明では、各ＰＥに各ＰＥの動作の稼動／停止を決定することができるフラグレジスタを持たせた構成のＳＩＭＤ型プロセッサにおいて、このフラグレジスタを用いて各ＰＥを選択してテストしていき、そのテスト結果に基づいて故障しているＰＥの動作を停止させるという手法を用いることによって、少ない回路追加によって各ＰＥのテストと故障ＰＥの回避を行うことのできる仕組みを提供するものである。即ち、この請求項１に記載の発明のＳＩＭＤ型プロセッサは、各ＰＥはフラグレジスタを備え、プロセッサにセルフテストを行う機能部を備え、前記フラグレジスタの値によって各ＰＥの動作の稼動もしくは停止を決定することができ、セルフテストを行う機能部は前記フラグレジスタの値を所定数のＰＥだけが稼動状態になるように設定し、稼動状態になっているＰＥについてのみテストを行ってそのＰＥが正常であるか故障しているかを判定し、所定数のＰＥについてのテストが終了すると前記フラグレジスタの値を所定数シフトして次の所定数のＰＥを稼動状態にしてその所定数のＰＥをテストしていく処理を繰り返すことで全てのＰＥについてのテストを行うように構成され、全てのＰＥについてのテストが終了するとその結果に基づいて各ＰＥのフラグレジスタの値を決定し、故障しているＰＥの動作を停止することを特徴とする。
【００１２】
請求項２に記載の発明では、請求項１に加えて、複数のＰＥの中から自身を特定するための番号を格納するＩＤレジスタを持たせた構成のＳＩＭＤ型プロセッサにおいて、各ＰＥのセルフテスト実行時に、故障ＰＥを回避しながらＩＤレジスタの値を設定することが可能な手法を提示することで、セルフテスト実行時に各ＰＥのＩＤレジスタに初期値を持たせる必要がなくなるため、ＰＥのセルフテストに伴う回路の増加をできるだけ抑えることができる仕組みを提供するものである。即ち、この請求項２に記載の発明のＳＩＭＤ型プロセッサは、各ＰＥはフラグレジスタと複数あるＰＥの中から自身を特定するための番号を格納するＩＤレジスタを備え、プロセッサにセルフテストを行う機能部を備え、前記フラグレジスタの値によって各ＰＥの動作の稼動もしくは停止を決定することができ、セルフテストを行う機能部は前記フラグレジスタの値を所定数のＰＥだけが稼動状態になるように設定し、稼動状態になっているＰＥについてのみテストを行ってそのＰＥが正常であるか故障しているかを判定し、ＰＥが正常であればＩＤレジスタにユニークな番号を設定し、所定数のＰＥについてのテストが終了すると前記フラグレジスタの値を所定数シフトして次の所定数のＰＥを稼動状態にしてその所定数のＰＥをテストしていく処理を繰り返すことで全てのＰＥについてのテストとＩＤレジスタの値を設定していく処理を行うように構成され、全てのＰＥについてのテストが終了するとその結果に基づいて各ＰＥのフラグレジスタの値を決定し、故障しているＰＥの動作を停止することを特徴とする。
【発明の効果】
【００１３】
請求項１に記載の発明においては、各ＰＥが備える例えば１ビットのシフトレジスタからなるフラグレジスタを用いて各ＰＥの稼動／停止を決定することができるので、少ない回路追加で各ＰＥの検査、および故障ＰＥの動作停止を行うことができる。また、各ＰＥのテストを行う際に、フラグレジスタのみが正常であれば正しくテストが行えるので、故障ＰＥの検出、および故障ＰＥの動作停止を高い確率で行うことができる。
【００１４】
請求項２に記載の発明においては、各ＰＥのセルフテスト実行時に、故障ＰＥを回避しながらＩＤレジスタの値を設定することができ、ＩＤレジスタに初期値を持たせる必要がなくなるため、ＰＥのセルフテストに伴う回路の増加をできるだけ抑えることができる。また、このＩＤレジスタを用いて、複数あるＰＥの中から所定のＰＥを選択して処理を行わせたり、各ＰＥが備えている外部インターフェイスとの通信経路を持つ汎用レジスタに対して、各ＰＥ毎にデータの書き込み／読み出しを行わせることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態につき図面を参照して説明する。まず、本発明が適用されるＳＩＭＤ型プロセッサの全体構成につき図１に従い説明する。
【００１６】
本発明のＳＩＭＤ型プロセッサは、グロバールプロセッサ（ＧＰ）１と、レジスタファイル２と演算アレイ３とからなるプロセッサエレメントブロックで構成される。グローバルプロセッサ１は、いわゆるＳＩＳＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｒｅａｍ，  Ｓｉｎｇｌｅ  Ｄａｔａ−ｓｔｒｅａｍ）タイプのプロセッサであり、プログラムＲＡＭとデータＲＡＭを内蔵し、プログラムを解読し、各種制御信号を生成する。
【００１７】
この制御信号は、内蔵する各種ブロックの制御以外にもレジスタファイル２、演算アレイ３にも供給される。また、ＧＰ（グローバルプロセッサ）命令実行時は内蔵する汎用レジスタ、ＡＬＵ（算術論理演算器）等を使用して各種演算処理、プログラム制御処理をおこなう。
【００１８】
レジスタファイル２は、ＰＥ（プロセッサエレメント）命令で処理されるデータを保持している。ＰＥ命令は、ＳＩＭＤタイプの命令であり、レジスタファイル２に保持されている複数のデータに対して同時に同じ処理をおこなう。このレジスタファイル２からのデータの読み出し／書き込みの制御はＧＰ１からの制御によって行われる。読み出されたデータは演算アレイ３に送られ、演算アレイ３での演算処理後にレジスタファイル２に書き込まれる。また、レジスタファイル２はプロセッサ外部からのアクセスが可能であり、ＧＰ１の制御とは別に外部から特定のレジスタに対して読み出し／書き込みが行われる。
【００１９】
演算アレイ３は、ＰＥ命令の演算処理が行われる。処理の制御は、すべてＧＰ１から行われる。
【００２０】
図２は、この発明が適用されるＳＩＭＤ型プロセッサの詳細な構成を示すブロック図である。ＧＰ１には、本プロセッサのプログラム格納用のプログラムＲＡＭと演算データ格納用のデータＲＡＭが内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ、レジスタ退避、復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩ、ＬＮレジスタ、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）が内蔵されている。これらのレジスタと図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、ＧＰ演算制御回路を使用してＧＰ命令の実行が行われる。また、ＰＥ命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、ＰＥ演算制御回路を使用して、レジスタファイル２の制御と演算アレイ３の制御を行う。
【００２１】
レジスタファイル２には、この実施形態では、１つのＰＥ単位に８ビットのレジスタ２０が３２本内蔵されており、２５６ＰＥ分の組みがアレイ構成になっている。レジスタ２０はＰＥごとにＲ０、Ｒ１、Ｒ２、．．．Ｒ３１と呼ばれている。それぞれのレジスタ２０は演算アレイ３に対して１つの読み出しポートと１つの書き込みポートを備えており、８ビットのリード／ライト兼用のバス２１で演算アレイ３からアクセスされる。
【００２２】
３２本のレジスタ２０の内、２４本はプロセッサ外部からアクセス可能であり、外部からクロックとアドレス、リード／ライト制御を入力することで任意のレジスタを読み書きできる。レジスタ２０の外部からのアクセスは１つの外部ポートで各ＰＥの１つのレジスタがアクセス可能であり、外部から入力されたアドレスでＰＥの番号（０〜２５５）を指定する。したがって、レジスタアクセスの外部ポートは全部で２４組搭載されている。また、外部からのアクセスは偶数のＰＥと奇数のＰＥの１組で１６ビットデータとなっており、１回のアクセスで２つのレジスタが同時にアクセスしている。
【００２３】
演算アレイ３は、１６ビットＡＬＵ３１と１６ビットＡレジスタ３２、Ｆレジスタ３３を内蔵している。
【００２４】
ＰＥ命令による演算は、基本的にレジスタファイル２から読み出されたデータをＡＬＵ３１の片側の入力としてもう片側にはＡレジスタ３２の内容を入力として結果をＡレジスタ３２に格納する。したがって、Ａレジスタ３２とＲ０〜Ｒ３１レジスタとの演算が行われることとなる。レジスタファイル２と演算部３との接続に７ｔｏ１のマルチプレクサからなるＰＥ選択部４０を置いており、ＰＥ方向で左に１、２、３つ離れたデータと右に１、２、３つ離れたデータ、中央のデータを演算対象として選択している。また、レジスタファイル２の８ビットのデータはシフト＆拡張回路４１により、任意ビットを左シフトしてＡＬＵ３１に入力する。さらに、図示していない８ビットの条件レジスタ（Ｔ）により、ＰＥごとに演算実行の無効／有効の制御をしており、特定のＰＥだけを演算対象として選択できる。
【００２５】
図３は、この発明の第１の実施形態の構成を示すブロック図である。前述したように、レジスタファイル２のうち２４本はプロセッサ外部からアクセス可能であり、外部から外部インタフェース４を介してクロックとアドレス、リード／ライトが与えられ、これらクロックとアドレス、リード／ライトがレジスタコントローラ２２に与えられ、このレジスタコントローラ２２により外部からアクセスされた任意のレジスタを読み書きできる。また、外部からのアクセスは偶数のＰＥと奇数のＰＥの１組で１６ビットデータとなっており、１回のアクセスで２つのレジスタが同時にアクセスしている。
【００２６】
本実施形態のプロセッサは、ＰＥをセルフテストするためのプログラムが書き込まれたＲＯＭを内蔵しており、このテストプログラムをＧＰ１が備えるプログラムＲＡＭに転送して、ＧＰが各ＰＥのセルフテストを行う。また、ＧＰ１は各ＰＥへの書き込み経路として、図３に図示している即値データバス１１，１２を、読み出し経路として例えば、オープンドレインバスなどで構成されるテスト用データバス１３を有しており、各ＰＥの各レジスタ２０にテストデータを書き込んだり、Ａレジスタ３２からテスト結果を読み出すことが可能な構成になっている。
【００２７】
この実施形態では、各ＰＥは１ビットのシフトレジスタからなるフラグレジスタ３４を有しており、アレイ状に配置されたＰＥの内で最もＧＰ１に近いＰＥのフラグレジスタ３４はＧＰ１からのデータ転送が可能な通信経路を有している。フラグレジスタ３４はシフトレジスタ構成になっており、隣接するＰＥでＧＰ１から遠ざかる方のＰＥのフラグレジスタ３４に対して、データを書き込むことが可能な通信経路を有している。
【００２８】
また、フラグレジスタ３４の値は自身のＰＥのＡレジスタ３２、Ｆレジスタ３３、Ｔレジスタ（図示せず）、及びＲ０からＲ３１レジスタ２０に対して図４のように入力されている。Ａレジスタ３２にはＡＬＵ３１またはデータバス１３からのデータがマルチプレクサ３５により選択されて与えられる。フラグレジスタ３４からの反転出力とＡレジスタ書き込みイネーブル信号がアンド回路３６に与えられ、この回路３６の出力がＡレジスタ３２のラッチ信号として与えられる。Ａレジスタ３２の出力は３ゲートバッファ３７，３８に与えられ、３ゲートバッファ３７からデータバス１３に出力される。３ゲートバッファ３７，３８の制御信号としてフラグレジスタ３４の出力が与えられる。
【００２９】
この構成により、フラグレジスタ３４の値が０の時には、読み出し側については各レジスタ２０からデータバス１３への出力信号をネゲートし、書き込み側については各レジスタ２０のライト・イネーブル信号をネゲートすることができるので、そのＰＥの動作を停止させることができる。フラグレジスタ３４の値が１の時には、各レジスタ２０はデータの読み出し／書き込み共に行えるので、そのＰＥは通常通り動作する。つまり、フラグレジスタ３４は、各ＰＥの選択フラグ、もしくはイネーブル・ディスイネーブルフラグとして使用することができる。
【００３０】
以上の構成において、電源起動時、もしくはシステム初期化時に、ＧＰ１との距離が近いＰＥから順番にフラグレジスタ（シフトレジスタ）３４の値に１を格納してＰＥを１つずつ選択してテストしていき、その結果に基づいて故障しているＰＥの動作を停止させるまでの処理の流れについて以下に示す。
【００３１】
ステップ（Ｓｔｅｐ）１：テストプログラムをＲＯＭからＧＰが内蔵しているプログラムＲＡＭに転送する。
ステップ（Ｓｔｅｐ）２：全てのＰＥのフラグレジスタ３４に０を格納し、全てのＰＥを非選択状態にする。
ステップ（Ｓｔｅｐ）３−１：ＧＰ１との距離が最も近いＰＥ（ＰＥ０）のフラグレジスタ３４に１を格納し、そのＰＥ０だけを選択状態にする。
ステップ（Ｓｔｅｐ）３−２：選択しているＰＥ０に対してテストし、ＰＥ０が正常であるか、故障しているかを判定する。
ステップ（Ｓｔｅｐ）３−３：ＰＥ０のテスト結果をデータＲＡＭに格納する。
ステップ（Ｓｔｅｐ）４−１：フラグレジスタ３４の値を１ＰＥ分シフトして、次のＰＥ（ＰＥ１）を選択状態にする。
ステップ（Ｓｔｅｐ）４−２：選択しているＰＥ１に対してテストし、ＰＥ１が正常であるか、故障しているかを判定する。
ステップ（Ｓｔｅｐ）４−３：ＰＥ１のテスト結果をデータＲＡＭに格納する。
ステップ（Ｓｔｅｐ）４−４：Ｓｔｅｐ４−１からＳｔｅｐ４−３までと同等の処理を全てのＰＥについてのテストが終了するまで繰り返す。
ステップ（Ｓｔｅｐ）５：データＲＡＭに格納されているテスト結果に基づいて、故障と判定されたＰＥのフラグレジスタ３４には０を格納し、正常と判定されたＰＥのフラグレジスタ３４には１を格納する。
【００３２】
続いて、図３で図示している構成において、並列プロセッサが故障ＰＥを回避しながら動作している例について説明する。
【００３３】
各ＰＥは、マルチプレクサ４０でＰＥ方向で前方に１、２、３つ離れたデータと後方に１、２、３つ離れたデータ、中央のデータを演算対象として選択することが可能なように経路を有しているが、故障しているＰＥがあっても正しくデータを参照することが可能なように、予備の配線経路を前方に１つ、後方に１つ有している。すなわち、故障しているＰＥがなければ、各ＰＥはＰＥ方向で前方に１（Ｌ１と略記）、２（Ｌ２と略記）、３（Ｌ３と略記）、４（Ｌ４と略記）までのデータが、後方に１（Ｕ１と略記）、２（Ｕ２と略記）、３（Ｕ３と略記）、４（Ｕ４と略記）までのデータが参照可能である。
【００３４】
参照するＰＥを選択するためのマルチプレクサ（ＰＥ選択部）４０には、自身のレジスタ以外に、上記、前方、後方に４つまで離れたＰＥのレジスタからのデータを参照する経路と、図示はしていないが、自身のＰＥよりも１、２、３だけ前方のＰＥのフラグレジスタ３４の値と１、２、３だけ後方のＰＥのフラグレジスタ３４の値とが入力されている。
【００３５】
さらに、ＧＰ１より現在実行している命令が自身のＰＥに対して前方、後方あるいは自分自身のどのレジスタのデータを参照する命令であるかを示す制御信号が入力されている。
【００３６】
ＰＥ選択部４０では前後のフラグレジスタ３４と制御信号とから、故障しているＰＥを避けて配線経路を開くように制御される。例えば、自身のＰＥの１つ前のＰＥが故障している場合に、１つ前のＰＥを参照する命令を発行している場合には、２つ前のＰＥからの経路を開くように、２つ前のＰＥを参照する命令を発行している場合には３つ前のＰＥからの経路を開くようにする。
【００３７】
図５は、あるＰＥの前方、あるいは後方に３つのＰＥの中に故障があった場合に、どのように制御を行うかを図示している。
【００３８】
Ｃ＿ｅｎ、Ｌ１＿ｅｎ〜Ｌ３＿ｅｎ、Ｕ１＿ｅｎ〜Ｕ３＿ｅｎは、それぞれが現在実行中の命令が、どのＰＥに格納されているデータを参照する命令であるかを示しており、順に、Ｃ＿ｅｎ（自身のＰＥ参照命令）、Ｌ１＿ｅｎ（１つ前方のＰＥ参照命令）、Ｌ２＿ｅｎ（２つ前方のＰＥ参照命令）、Ｌ３＿ｅｎ（３つ前方のＰＥ参照命令）、Ｕ１＿ｅｎ（１つ後方のＰＥ参照命令）、Ｕ２＿ｅｎ（２つ後方のＰＥ参照命令）、Ｕ３＿ｅｎ（３つ後方のＰＥ参照命令）である。
【００３９】
Ｃ＿ｅｎａｂｌｅ、Ｌ１＿ｅｎａｂｌｅ〜Ｌ４＿ｅｎａｂｌｅ、Ｕ１＿ｅｎａｂｌｅ〜Ｕ４＿ｅｎａｂｌｅは、各ＰＥで実際に開かれる配線経路がどれであるかを示しており、Ｃ＿ｅｎａｂｌｅ（自身のＰＥを参照するゲートが開く）、Ｌ１＿ｅｎａｂｌｅ（１つ前のＰＥを参照するゲートが開く）、Ｌ２＿ｅｎａｂｌｅ（２つ前のＰＥを参照するゲートが開く）、Ｌ３＿ｅｎａｂｌｅ（３つ前のＰＥを参照するゲートが開く）、Ｌ４＿ｅｎａｂｌｅ（４つ前のＰＥを参照するゲートが開く）、Ｕ１＿ｅｎａｂｌｅ（１つ後のＰＥを参照するゲートが開く）、Ｕ２＿ｅｎａｂｌｅ（２つ後のＰＥを参照するゲートが開く）、Ｕ３＿ｅｎａｂｌｅ（３つ後のＰＥを参照するゲートが開く）、Ｕ４＿ｅｎａｂｌｅ（４つ後のＰＥを参照するゲートが開く）である。
【００４０】
かかる構成であれば、４つの連続したＰＥの中に２つ以上の故障がなければプロセッサ全体を救済できる。
【００４１】
尚、上記した実施形態においては、１つのＰＥずつ選択してテストを行う方法について説明したが、複数のＰＥを同時、例えば、２つのＰＥずつ同時にテストを行い、ＰＥの故障の有無を検証するように構成することも出来る。このように、構成することで、テストにかかる時間を短縮することができる。ただし、この場合には、同時にテストしたＰＥのうち、１つでも故障のＰＥがあると、同時にテストしたＰＥ全てを故障として処理しなければならない。
【００４２】
図６は、この発明の第２の実施形態の構成を示すブロック図である。この第２の実施形態ののプロセッサでは、図３で開示したプロセッサの構成に加えて、各ＰＥに複数のＰＥの中から自身を特定するための番号を格納するためのＩＤレジスタ３９を持たせた構成を採る。ＩＤレジスタ３９は、自身の値を各ＰＥのデータバスに出力する経路と、ＧＰ１より自身の値を変更するための入力経路を有している。ある特定のＰＥを選択して処理を行わせる場合などは、各ＰＥのＡＬＵ３１において、各ＰＥのＩＤレジスタ３９の値と、ＧＰ１から与えられたデータとの比較を行い、これら２つの値が等しい時、比較結果を各ＰＥのＴレジスタ（図示せず）に反映するように構成されている。また、ＩＤレジスタ３９には、フラグレジスタ３４の値が図４と同様に入力されており、フラグレジスタ３４の値が１である時のみ、ＩＤレジスタ３９への書き込みが行える構成となっている。つまり、セルフテスト時に選択されているＰＥにおいてのみ、ＩＤレジスタ３９の値の変更が可能となる。
【００４３】
以上の構成において、電源起動時、もしくはシステム初期化時に、ＧＰ１との距離が近いＰＥから順番にフラグレジスタ（シフトレジスタ）３４の値に１を格納してＰＥを１つずつ選択してテストしていき、その結果に基づいて故障しているＰＥの動作を停止させ、また、故障ＰＥを回避して、正常なＰＥのＩＤレジスタ３９にのみＰＥを特定するためのＩＤ番号を例えば昇順に設定する処理の流れについて以下に示す。
【００４４】
ステップ（Ｓｔｅｐ）１：テストプログラムをＲＯＭからＧＰが内蔵しているプログラムＲＡＭに転送する。
ステップ（Ｓｔｅｐ）２：全てのＰＥのフラグレジスタ３４に０を格納し、全てのＰＥを非選択状態にする。
ステップ（Ｓｔｅｐ）３−１：  ＧＰ１との距離が最も近いＰＥ（ＰＥ０）のフラグレジスタ３４に１を格納し、ＰＥ０だけを選択状態にする。
ステップ（Ｓｔｅｐ）３−２：選択しているＰＥ０に対してテストし、ＰＥ０が正常であるか、故障しているかを判定する。
ステップ（Ｓｔｅｐ）３−３：テストした結果ＰＥ０が正常であれば、ＩＤレジスタ３９に０を格納する。
ステップ（Ｓｔｅｐ）３−４：ＰＥ０のテスト結果をデータＲＡＭに転送する。
ステップ（Ｓｔｅｐ）４−１：フラグレジスタ３４の値を１ＰＥ分シフトして、次のＰＥ（ＰＥ１）を選択状態にする。
ステップ（Ｓｔｅｐ）４−２：選択しているＰＥ１に対してテストし、ＰＥ１が正常であるか、故障しているかを判定する。
ステップ（Ｓｔｅｐ）４−３：ＰＥ１が故障しているならば、ＰＥ１のＩＤレジスタ３９には特に値を設定しない。ＰＥ１が正常であるなば、ＰＥ０も正常であった場合には、ＰＥ１のＩＤレジスタに１を格納する。ＰＥ０が故障している場合には、ＰＥ１のＩＤレジスタに０を格納する。
ステップ（Ｓｔｅｐ）４−４：Ｓｔｅｐ４−１からＳｔｅｐ４−３までと同等の処理を全てのＰＥについてのテストが終了するまで繰り返す。
ステップ（Ｓｔｅｐ）５：データＲＡＭに格納されているテスト結果に基づいて、故障と判定されたＰＥのフラグレジスタ３４には０を格納し、正常と判定されたＰＥのフラグレジスタ３４には１を格納する。
【００４５】
各ＰＥのＩＤレジスタ３９にユニークな値が設定されると、このＩＤレジスタ３９の値を用いて所定のＰＥを選択することができることは既に述べた。また、各ＰＥが備える外部インターフェイス４との通信経路を有する汎用レジスタ２０に関しては、各ＰＥ毎に外部インターフェイス４とのデータの読み出し／書き込みを行わせることが可能な構成になっているが、これは各ＰＥにおいて、これらの汎用レジスタ２０に対する制御装置であるレジスタコントローラ２２に対して、ＩＤレジスタ３９の値を入力することができる構成になっており、レジスタコントローラ２２は、このＩＤレジスタ３９の値と、外部インターフェイス４から入力される所定のＰＥを特定するための値とを比較して、一致していれば、各レジスタ２０に対してライトイネーブル信号、もしくはリードイネーブル信号を入力し、データの書き込み、もしくは読み出しを可能にすることで実現している。
【図面の簡単な説明】
【００４６】
【図１】本発明が適用されるＳＩＭＤ型プロセッサの全体構成を示すブロック図である。
【図２】この発明が適用されるＳＩＭＤ型プロセッサの詳細な構成を示すブロック図である。
【図３】この発明の第１の実施形態の構成を示すブロック図である。
【図４】この発明の第１の実施形態におけるフラグレジスタとＡレジスタ部分の構成を示すブロック図である。
【図５】この発明の第１の実施形態の構成において、あるＰＥの前方あるいは後方に３つのＰＥの中に故障があった場合に、どのように制御を行うかを示すブロック図である。
【図６】この発明の第２の実施形態の構成を示すブロック図である。
【符号の説明】
【００４７】
１  グローバルプロセッサ（ＧＰ）
２  レジスタファイル
３  演算アレイ
４  外部インターフェース
３１  ＡＬＵ
３２  Ａレジスタ
３３  Ｆレジスタ
３４  フラグレジスタ
３９  ＩＤレジスタ
【図１】
2005202657.tif 000003
【図２】
2005202657.tif 000004
【図３】
2005202657.tif 000005
【図４】
2005202657.tif 000006
【図５】
2005202657.tif 000007
【図６】
2005202657.tif 000008