(57)【特許請求の範囲】
【請求項１】
試料を載置してＸＹ平面内で移動可能なステージ手段と、該ステージ手段に載置されて連続的に移動する試料を撮像する撮像手段と、該撮像手段で前記連続的に移動する試料を撮象して得た画像信号を連続的に入力して処理し前記試料の欠陥を検出する撮像処理手段と、前記ステージ手段を制御するステージ制御手段とを備えた検査装置であって、
前記画像処理手段は制御ＣＰＵと複数のプロセッサユニットと記憶部と画像合成部とを備えた並列データ処理部を有し、
該並列データ処理部は前記制御ＣＰＵで前記複数のプロセッサユニットの動作テストを行って正常に動作するプロセッサユニットを複数選択し、該選択された複数のプロセッサユニットを用いて前記速続的に入力する画像信号を分割して並列に処理し、該分割して並列に処理した結果を処理したプロセッサユニットの情報と該プロセッサの書き込み回数の情報とに関連付けて前記記憶部に記憶し、前記記憶した分割して並列に処理した結果を前記プロセッサユニットの情報と該プロセッサの書き込み回数の情報とを用いて前記画像合成部で合成することを特徴とする並列データ処理機能を備えた検査装置。
【請求項２】
前記記憶装置は、プロセッサの書き込み回数に対応して書き込み領域を分割されることを特徴とする請求項１記載の並列データ機能手段を備えた検査装置。
【請求項３】
前記並列データ処理部は前記制御ＣＰＵと前記複数のプロセッサユニットと前記記憶部とに加えてデータ入力部とデータ記憶部とプログラム分配制御部とプログラムメモリ部とを更に備え、前記制御ＣＰＵで前記プロセッサユニットの動作テストを行った結果に基づいて前記プログラム分配制御部は前記プログラムメモリ部に記億されているデータ処理プログラムを前記動作テストで正常と判定されたプロセッサユニットに配信し、該データ処理プログラムが配信されたプロセッサユニットを用いて前記画像信号を並列に処理することを特徴とする請求項１記載の並列データ処理機能を備えた検査装置。
【請求項４】
前記撮像手段はリニアセンサを有し、前記画像信号は前記ステージ制御手段で制御された前記ステージ手段の移動に同期して前記試料を前記リニアセンサを用いて撮像される信号であることを特徴とする請求項１記載の並列データ処理機能を備えた検査装置。
【請求項５】
ステージ手段に載置されて連続的に移動する試料を撮像して得た画像信号を連続的に入力して処理し前記試料の欠陥を検出する検査方法であって、動作テストを行って選択された正常に動作する複数のプロセッサユニットを用いて前記連続的に入力する画像信号を分割して並列に処理し、該分割して並列に処理した結果を処理したプロセッサユニットの情報と該プロセッサの書き込み回数の情報とに関連付けて記憶し、該記憶した分割して並列に処理した結果を前記処理したプロセッサユニットの情報と該プロセッサの書き込み回数の情報とを用いて合成することを特徴とする並列データ処理による検査方法。
【請求項６】
前記動作テストを行って選択された正常に動作する複数のプロセッサユニットにデータ処理プログラムを配信し、該データ処理プログラムが配信されたプロセッサユニットを用いて前記画像信号を並列に処理することを特徴とする請求項５記載の並列データ処理による検査方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列データ処理装置および方法に係り、特に、異物や欠陥などの自動検査をおこなう際の画像信号等の大容量のデータを短時間に処理する必要のあるデータ処理に用いて好適な並列データ処理装置および方法に関する。
【０００２】
【従来の技術】
従来、大容量のデータを短時間に処理するのに、システムにプロセッサを複数設け、並列処理をしてデータを処理するスループットを上げようとするアプローチがなされてきた。
【０００３】
このような従来技術に係る並列データ処理装置としては、例えば、特開昭３−２５２５０２号公報に記載されている「二重化制御装置」がある。
【０００４】
そこで、先ず、図２３を用いて特開平３−２５２５０２号公報記載の従来技術について説明する。
図２３は、特開平３−２５２５０２号公報に記載の二重化制御装置の構成を示すブロック図である。
【０００５】
この二重化制御装置は、中央演算ユニットを二つ持ち、それらが同期バス９Ｃで接続され、同期を取るようになっている。また、各々にＡ系インターナルバス８ＡとＢ系インターナルバス８Ｂが接続されている。そして、このインターナルバスに、多重化された入出力ユニットが接続されている。
【０００６】
さて、二重化運転をおこなっているときに、二重化制御装置１Ｃを構成する複数の入出力ユニット３１Ｃ，３２Ｃのうちの１台、例えば、Ａ系入出力コントローラ６Ａ１が故障したとする。そのときには、故障が検出された系の故障ユニット代替指定パラメータをチェックする。そして代替使用が可能と判断された場合は、故障した入出力ユニットの他方の正常な系（この場合には、Ｂ系）の入力データを使用して二重化運転を継続する。また、代替使用が不能と判断された場合には、正常な系（この場合には、Ａ系）のみによる単独運転に移行する。
【０００７】
また、他の従来技術に係る並列データ処理装置としては、例えば、特開平５−３２４５８３号公報に記載されている「画像データ処理装置」がある。以下、図２４および図２５を用いてこの特開平５−３２４５８３号公報記載の従来技術について説明する。
図２４は、特開平５−３２４５８３号公報に記載の画像データ処理装置の構成を示すブロック図である。
図２５は、従来技術に係る画像データ処理装置の処理部と処理する画像データとの対応を示した模式図である。
【０００８】
この従来技術に係る画像データ処理装置７１０は、並列に動作可能な処理部Ａ７１１、処理部Ｂ７１２、処理部Ｃ７１３を持っている。そして、Ｉ／Ｆ７１４を介してスキャナ７１８が、Ｉ／Ｆ７１５を介してハードディスク７１９が、画像ＲＡＭ７１６が、それぞれバスライン７１７に接続されていて、このバスライン７１７を介して各処理部とデータのやりとりがおこなえるようになっている。
【０００９】
入力された画像データは、各処理部に処理を割り当てるわけであるが、この画像データの各処理部への配分率は、各処理部のハードウェアの処理能力や他の処理による負荷等を考慮して定められる。この配分率は、画像ＲＡＭ７１６の所定領域か、他のＲＡＭを設けてこれに記憶させておく。
【００１０】
画像データは、図２３に示されるスキャナ７１８などの画像入力手段により入力され、画像ＲＡＭ７１６に記憶される。そして、この画像データは、上記の配分率に従って画像データ処理部の数に分割され、各画像データ処理部により並列に処理されことになる。図２５の（ａ）は、画像データ７２１を配分率ａ，ｂ，ｃの割合で各処理部Ａ，Ｂ，Ｃにそれぞれ割り当てた場合を示している。また、処理時間の実績に応じてこの配分率を逐次見直し、修正してゆく。さらに、処理すべき画像のデータを予めサンプリングし、画像処理の種類と画像データの内容に応じてこの配分率を更に修正する方法も可能である。この分割によれば、分割する数が多ければ、多いほど細長い領域に画像データが分割されることになる。
【００１１】
このような画像データ処理装置７１０においては、データ処理プログラムは予めデータ処理部Ａ７１１，Ｂ７１２，Ｃ７１３内のＲＯＭまたはＲＡＭに格納され、画像データ７２１は、図２５（ｂ）に示される配分率データ７２２に従って分割され各処理部に割り当てられることになる。この配分率データ７２２は、上で述べたように各処理部のハードウェア的の処理能力や他の処理による負荷等を考慮して修正され、この配分率に従ってこの画像データは、各処理部で並列に処理されていく。
【００１２】
入力データの例としては、例えば、リニアセンサ等の光電変換器とステージのリニア走査を組み合わせた画像信号検出器からの検出信号をリアルタイムで処理しようとする場合が考えられる。
【００１３】
【発明が解決しようとする課題】
上記特開平３−２５２５０２号公報記載の従来技術は、一般的な二重化制御装置に関するものであり、処理系をＡ系とＢ系に系統に分けて、故障がある場合には、代替すなわち予備の系を備えることにより、故障したモジュールを含むユニットを予備の系に切り換えて運転するものであった。したがって、この従来技術は、故障したモジュールの情報あるいは、モジュールの性能によって正常動作するモジュールの処理の内容を変化させるものではなく、系としては、二重化されているものの処理の柔軟性に欠けるという問題点があった。
【００１４】
またこの従来技術に係る二重化制御装置においては、モジュール故障が検出されたとき、故障したユニットをそれに該当する他方の系のユニットに代替するものであった。
【００１５】
そのため、故障したモジュールと故障していないモジュールが、同一のユニット内に混在している場合には、ユニット全体でみれば故障していると言えるために、そのユニット内の故障していない正常なモジュールを使用することができないことになり、リソースの無駄使いになるという問題点があった。
【００１６】
また、上記特開平５−３２４５８３号公報記載の従来技術は、画像データを処理することを目的とするものであり、各画像データ処理部のデータ処理速度を平均化して、全体としてのスループットを上げようとするものである。
【００１７】
しかしながら、この従来技術は、データを処理する速度（処理レート）とデータを入力する速度（入力レート）について考慮されていない。というのも、上記の例においては、画像信号検出器からの検出信号の検出信号の入力レートと処理レートが必ずしも一致するという保証がなく、入力レートが大きい場合、すなわち入力される画像データが大量にある場合については、装置の処理能力が入力に追いつかず、データをとりこぼす恐れがあるという問題点があった。
【００１８】
そのために、画像データが大量に入力される場合にあっては、画像入力レートも大きくしなければならず、画像入力レートと同等の処理速度でリアルタイムに処理させるために、数多くの画像データ処理部を並列に接続する必要がある。このような場合には、図２５に示した画像データの分割において、必然的に多数の細長い領域に分割されることになる。そのため、分割した画像データの中で閉じるような処理ならば問題はないものの、隣接する画素のデータに依存するような画像処理の場合には、画像が多数の領域に分割されるため、他の領域の画素を参照するための処理を頻繁におこなわなければならず、処理が非常に複雑になり、処理時間がかかるという問題点があった。
【００１９】
また、一定時間内に処理可能な画像データ量も、アクセス速度の遅いハードディスク７１９等から画像ＲＡＭ７１６に持ってくる必要があったために、実質的には、画像データを記憶する画像ＲＡＭ７１６の容量に依存しており、飛躍的な処理速度の向上を図りにくいという問題点があった。さらに、画像データ処理部の故障判断機能がないために、複数の画像データ処理部のうちの何れかが故障した場合には、故障した画像データ処理部が処理すべき画像領域の処理ができず、また、暴走や異常停止等の障害が発生する恐れがあるという問題点があった。
【００２０】
本発明は、上記問題点を解決するためになされたもので、その目的は、複数のプロセッサユニットを有する並列データ処理装置および方法において、動作テストをおこなって並列処理をするプログラムと処理する入力データの割り当てを決定することにより、正常なプロセッサユニットにのみ処理を割り当て処理の最適化を図りつつ、入力データの割り当ての柔軟性を高めつつ、システムのリソースを有効活用し、システムの変更や故障にも柔軟に対処でき、しかも、コストパーフォマンスが高く、高スループットでリアルタイム処理をおこなうことが可能な並列データ処理装置および方法を提供することにある。
【００２１】
【課題を解決するための手段】
上記目的を達成するために、本発明の並列データ処理装置の発明に係るの第一の構成は、複数のプロセッサユニットが並列にデータ処理をおこなうことが可能な並列データ処理装置において、この並列データ処理装置は、処理するデータを入力するデータ入力部と、データを記憶するデータ記憶部と、そのデータ記憶部のデータを、前記複数のプロセッサユニットに分割するデータ分割制御手段と、データを処理するプログラムを、前記複数のプロセッサユニットに分配するプログラム分配制御手段と、分配されたデータ処理プログラムによりデータ処理をおこなう前記複数のプロセッサユニットと、各プロセッサユニットにより処理された処理結果を記憶する処理結果記憶部と、制御ＣＰＵとを有し、この制御ＣＰＵが、前記各プロセッサユニットの動作テストをおこなって、その動作テストの結果、正常に動作すると確認されたプロセッサユニットに対して、前記プログラム分配制御手段により、データ処理プログラムを前記各プロセッサユニットに分配して、かつ、前記データ分割手段により、分割されたデータを前記各プロセッサユニットに割り当てて、各プロセッサユニットが、分配されたデータ処理プログラムに基づいて、割り当てられたデータを処理することにより、並列処理を進めていくようにしたものである。
【００２２】
より詳しくは、上記並列データ処理装置において、前記制御ＣＰＵがおこなう動作テストにより、正常動作すると確認されたプロセッサユニットの個数と、各プロセッサユニット毎の初期設定時間と、データ入出力時間と、分配される各データ処理プログラムの処理単位に含まれる命令の種類、数、順序と各プロセッサユニットの機能とから算出されるプログラム処理時間とを推定して、各プロセッサユニットが単位時間に処理するデータ量を計算し、装置全体として単位時間あたりの処理のスループットを最高にするように最適化して、前記プロセッサユニットに対する前記データの割り当てをおこなうようにしたものである。
【００２３】
また、上記目的を達成するために、本発明の並列データ処理装置の発明に係るの第二の構成は、複数のプロセッサユニットが並列にデータ処理をおこなうことが可能な並列データ処理装置において、入力データが画像データであり、水平信号と垂直信号に同期されて入力されるデータであるときに、この並列データ処理装置は、連続してデータ入力を行うデータ入力部と、データを記憶するデータ記憶部と、そのデータ記憶部のデータを、前記複数のプロセッサユニットに分割するデータ分割制御手段と、データを処理するプログラムを、前記複数のプロセッサユニットに分配するプログラム分配制御手段と、分配されたデータ処理プログラムによりデータ処理をおこなう前記複数のプロセッサユニットと、各プロセッサユニットにより処理された処理結果を記憶する処理結果記憶部とを有し、さらに、前記水平信号と垂直方向の信号をカウントするカウンタと、データ入力制御手段とを設け、前記カウンタのカウント値によって、入力データ量を計測し、データ入力信号制御手段により、入力データ量が前記データ記憶部の容量を越えない周期で、前記水平信号と垂直信号とをリセットして、リセット前に書き込んでいた場所に、リセット後の入力データを順次、前記データ記憶部に上書きするようにしたものである。
【００２４】
より詳しくは、複数のプロセッサユニットが並列にデータ処理をおこなうことが可能な並列データ処理装置において、上記第一の構成の並列データ処理装置の各構成手段を有し、かつ、上記第二の構成の並列データ処理装置の各構成手段を有し、入力時には、前記カウンタのカウント値によって、入力データ量を計測し、データ入力信号制御手段により、入力データ量が前記データ記憶部の容量を越えない周期で、前記水平信号と垂直信号とをリセットして、リセット前に書き込んでいた場所に、リセット後の入力データを順次、前記データ記憶部に上書きし、しかも、動作テストとプログラムの分配、データの分割処理と各プロセッサユニットの割り当てに関しては、上記第一の構成の並列データ処理装置と、上記第二の構成の並列データ処理装置の如く動作するようにしたものである。
【００２５】
また詳しくは、上記並列データ処理装置において、データ処理実行中に動作テスト要求があった場合には、前記リセットされた後のタイミングで動作テストをおこなって、動作テストの結果、前回おこなった動作テストの結果と正常に動作するとされたプロセッサユニットが異なった場合において、データ処理プログラムの再分配と、データ処理分割量の計算を再びおこなって、再び、処理の最適化をおこなうようにしたものである。
【００２６】
さらに詳しくは、さらに、この並列データ処理装置は、クロック制御部を有し、動作テストの結果、前回おこなった動作テストの結果と正常に動作するとされたプロセッサユニットが異なった場合において、前記クロック制御部により、クロックを変化させ、入力データの入力速度か、または、プロセッサユニットの処理速度を変化させて、各プロセッサユニットに対するデータの割当量を変化させることにより、各プロセッサユニットに対するデータの割り当ての最適化をおこなうようにしたものである。
【００２７】
さらにまた詳しくは、上記並列データ処理装置において、画像データを入力データとする場合であって、前記クロック制御部のクロックを変化させることにより、この並列データ処理装置のデータ入力手段が、露光によって２次元データを一括して取り込むときには、露光時間の制御をして、また、並列データ処理装置のデータ入力手段が、検出器または対象の載ったステージを移動させることにより、２次元のデータを１次元的に取り込むときには、その検出器またはステージの移動速度、走査速度を制御することにより、前記入力データの入力速度を変化させるようにしたものである。
【００２８】
より詳しくは、前記各プロセッサユニットには、正常に動作するとされたプロセッサユニット数と、そのプロセッサユニットの番号と、データのブロックサイズとを伝えて、入力データを各プロセッサユニットに持ってくる場合には、前記各プロセッサユニットで前記データ記憶部のアドレスを計算して、そのアドレスを指定することにより、順次、データをそのプロセッサユニットに取り込むようにしたものである。
【００２９】
さらに詳しくは、上記並列データ処理装置において、データ処理プログラムが、高級言語で記述されていて、それをコンパイルするときに、分配される各データ処理プログラムの処理単位に含まれる命令の種類、数、順序と各プロセッサユニットの機能とから算出されるプログラム処理時間とを推定して、各プロセッサユニットが単位時間に処理するデータ量を計算し、装置全体として単位時間あたりの処理のスループットを最高にするように最適化して、前記プロセッサユニットに対する前記データの割り当て量を決定するようにしたものである。
【００３０】
また装置の加工方法について詳しくは、上記並列データ処理装置において、前記プログラム分配制御手段、前記データ入力信号制御手段および上記クロック制御部のそれぞれ、または二つ以上をＬＳＩ化するようにしたものである。
【００３１】
また詳しくは、上記並列データ処理装置において、さらに、前記プロセッサユニットで処理された処理結果を合成するデータ合成手段を有し、分割したデータに対して、それぞれ予め指定された前記プロセッサユニットで処理をおこなった後に、前記処理結果記憶部への書き込みをする際に、そのプロセッサユニットを特定できるように、かつ、そのプロセッサユニットの何回目の書き込みかが特定できるように書き込みアドレスが定まっていて、所定の位置に書き込みがおこなわれ、しかる後に、前記合成手段によって、処理結果が合成され、その合成されたデータがこの並列データ処理装置の出力とされるようにしたものである。
【００３２】
より詳しくは、上記並列データ処理装置において、前記処理結果記憶部への書き込みをする際に、各プロセッサユニットごとに、この処理結果記憶部の書き込み領域を分割して書き込むようにしたものである。
【００３３】
さらに詳しくは、上記並列データ処理装置において、前記処理結果記憶部を一つ、あるいは複数個有し、前記処理結果部に書き込んだデータのアドレスから、その処理結果に対応する入力データのアドレスを計算して、それに基づいて、前記データ合成手段により、処理結果の合成をおこなうようにしたものである。
【００３４】
さらにまた詳しくは、上記並列データ処理装置において、前記データ分割制御手段として、前記プロセッサユニットは、そのプロセッサユニットが処理をおこなうデータ領域のアドレス値を記憶する記憶部を備え、処理をおこなう際には、その記憶部のアドレス値とデータのアドレス値を比較して、アドレス値が一致したデータ領域のみをそのプロセッサユニットに入力して、処理をおこなうようにしたものである。
【００３５】
上記目的を達成するために、本発明の並列データ処理方法の発明に係る第一の構成は、複数のプロセッサユニットが並列にデータ処理をおこなう並列データ処理方法において、この並列データ処理方法に用いる並列データ処理装置は、処理するデータを入力するデータ入力部と、データを記憶するデータ記憶部と、そのデータ記憶部のデータを、前記複数のプロセッサユニットに分割するデータ分割制御手段と、データを処理するプログラムを、前記複数のプロセッサユニットに分配するプログラム分配制御手段と、分配されたデータ処理プログラムによりデータ処理をおこなう前記複数のプロセッサユニットと、各プロセッサユニットにより処理された処理結果を記憶する処理結果記憶部と、制御ＣＰＵとを有し、この制御ＣＰＵが、前記各プロセッサユニットの動作テストをおこなって、その動作テストの結果、正常に動作すると確認されたプロセッサユニットに対して、前記プログラム分配制御手段により、データ処理プログラムを前記各プロセッサユニットに分配して、かつ、前記データ分割手段により、分割されたデータを前記各プロセッサユニットに割り当てて、各プロセッサユニットが、分配されたデータ処理プログラムに基づいて、割り当てられたデータを処理することにより、並列処理を進めていくようにしたものである。
【００３６】
より詳しくは、上記並列データ処理方法において、前記制御ＣＰＵがおこなう動作テストにより、正常動作すると確認されたプロセッサユニットの個数と、各プロセッサユニット毎の初期設定時間と、データ入出力時間と、分配される各データ処理プログラムの処理単位に含まれる命令の種類、数、順序と各プロセッサユニットの機能とから算出されるプログラム処理時間とを推定して、各プロセッサユニットが単位時間に処理するデータ量を計算し、装置全体として単位時間あたりの処理のスループットを最高にするように最適化して、前記プロセッサユニットに対する前記データの割り当てをおこなうようにしたものである。
【００３７】
上記目的を達成するために、本発明の並列データ処理方法の発明に係る第二の構成は、複数のプロセッサユニットが並列にデータ処理をおこなう並列データ処理方法において、入力データが画像データであり、水平信号と垂直信号に同期されて入力されるデータであるときに、この並列データ処理方法に用いる並列データ処理装置は、連続してデータ入力を行うデータ入力部と、データを記憶するデータ記憶部と、そのデータ記憶部のデータを、前記複数のプロセッサユニットに分割するデータ分割制御手段と、データを処理するプログラムを、前記複数のプロセッサユニットに分配するプログラム分配制御手段と、分配されたデータ処理プログラムによりデータ処理をおこなう前記複数のプロセッサユニットと、各プロセッサユニットにより処理された処理結果を記憶する処理結果記憶部とを有し、さらに、前記水平信号と垂直方向の信号をカウントするカウンタと、データ入力制御手段とを設け、前記カウンタのカウント値によって、入力データ量を計測し、データ入力信号制御手段により、入力データ量が前記データ記憶部の容量を越えない周期で、前記水平信号と垂直信号とをリセットして、リセット前に書き込んでいた場所に、リセット後の入力データを順次、前記データ記憶部に上書きするようにしたものである。
【００３８】
より詳しくは、複数のプロセッサユニットが並列にデータ処理をおこなう並列データ処理方法において、この並列データ処理方法に用いる並列データ処理装置は、上記第一の並列データ処理装置の各構成手段と、上記第二の並列データ処理装置の各構成手段とを有し、入力時には、前記カウンタのカウント値によって、入力データ量を計測し、データ入力信号制御手段により、入力データ量が前記データ記憶部の容量を越えない周期で、前記水平信号と垂直信号とをリセットして、リセット前に書き込んでいた場所に、リセット後の入力データを順次、前記データ記憶部に上書きし、しかも、動作テストとプログラムの分配、データの分割処理と各プロセッサユニットの割り当てに関しては、上記第一の並列データ処理方法および上記第二の並列データ処理方法の如く動作するようにしたものである。
【００３９】
さらにまた詳しくは、上記並列データ処理方法において、データ処理実行中に動作テスト要求があった場合には、前記リセットされた後のタイミングで動作テストをおこなって、動作テストの結果、前回おこなった動作テストの結果と正常に動作するとされたプロセッサユニットが異なった場合において、データ処理プログラムの再分配と、データ処理分割量の計算を再びおこなって、再び、処理の最適化をおこなうようにしたものである。
【００４０】
さらに詳しくは、さらに、この並列データ処理方法に用いる並列データ処理装置は、クロック制御部を有し、動作テストの結果、前回おこなった動作テストの結果と正常に動作するとされたプロセッサユニットが異なった場合において、前記クロック制御部により、クロックを変化させ、入力データの入力速度か、または、プロセッサユニットの処理速度を変化させて、各プロセッサユニットに対するデータの割当量を変化させることにより、各プロセッサユニットに対するデータの割り当ての最適化をおこなうようにしたものである。
【００４１】
さらにまた詳しくは、上記並列データ処理方法において、画像データを入力データとする場合であって、前記クロック制御部のクロックを変化させることにより、この並列データ処理装置のデータ入力手段が、露光によって２次元データを一括して取り込むときには、露光時間の制御をして、また、並列データ処理装置のデータ入力手段が、検出器または対象の載ったステージを移動させることにより、２次元のデータを１次元的に取り込むときには、その検出器またはステージの移動速度、走査速度を制御することにより、前記入力データの入力速度を変化させるようにしたものである。
【００４２】
より詳しくは、上記並列データ処理方法において、前記各プロセッサユニットには、正常に動作するとされたプロセッサユニット数と、そのプロセッサユニットの番号と、データのブロックサイズとを伝えて、入力データを各プロセッサユニットに持ってくる場合には、前記各プロセッサユニットで前記データ記憶部のアドレスを計算して、そのアドレスを指定することにより、順次、データをそのプロセッサユニットに取り込むようにしたものである。
【００４３】
さらに詳しくは、上記並列データ処理方法において、データ処理プログラムが、高級言語で記述されていて、それをコンパイルするときに、分配される各データ処理プログラムの処理単位に含まれる命令の種類、数、順序と各プロセッサユニットの機能とから算出されるプログラム処理時間とを推定して、各プロセッサユニットが単位時間に処理するデータ量を計算し、装置全体として単位時間あたりの処理のスループットを最高にするように最適化して、前記プロセッサユニットに対する前記データの割り当て量を決定するようにしたものである。
【００４４】
また詳しくは、上記並列データ処理方法において、さらに、この並列データ処理方法に用いる並列データ処理装置は、前記プロセッサユニットで処理された処理結果を合成するデータ合成手段を有し、分割したデータに対して、それぞれ予め指定された前記プロセッサユニットで処理をおこなった後に、前記処理結果記憶部への書き込みをする際に、そのプロセッサユニットを特定できるように、かつ、そのプロセッサユニットの何回目の書き込みかが特定できるように書き込みアドレスが定まっていて、所定の位置に書き込みがおこなわれ、しかる後に、前記合成手段によって、処理結果が合成され、その合成されたデータがこの並列データ処理装置の出力とされるようにしたものである。
【００４５】
より詳しくは、上記並列データ処理方法において、前記処理結果記憶部への書き込みをする際に、各プロセッサユニットごとに、この処理結果記憶部の書き込み領域を分割して書き込むようにしたものである。
【００４６】
さらに詳しくは、上記並列データ処理方法において、この並列データ処理方法に用いる並列データ処理装置は、前記処理結果記憶部を一つ、あるいは複数個有し、前記処理結果部に書き込んだデータのアドレスから、その処理結果に対応する入力データのアドレスを計算して、それに基づいて、前記データ合成手段により、処理結果の合成をおこなうようにしたものである。
【００４７】
さらにまた詳しくは、上記並列データ処理方法において、前記データ分割制御手段として、前記プロセッサユニットは、そのプロセッサユニットが処理をおこなうデータ領域のアドレス値を記憶する記憶部を備え、処理をおこなう際には、その記憶部のアドレス値とデータのアドレス値を比較して、アドレス値が一致したデータ領域のみをそのプロセッサユニットに入力して、処理をおこなうようにしたものである。
【００４８】
【発明の実施の形態】
以下、本発明に係る各実施形態を、図１ないし図２２を用いて説明する。
〔実施形態１〕
以下、本発明に係る第一の実施形態を、図１ないし図３を用いて説明する。
図１は、本発明の第一の実施形態に係る並列データ処理装置の構造を示すブロック図である。
図２は、本発明の第一の実施形態に係る並列データ処理装置におけるプログラム分配制御の流れを示すフローチャートである。
図３は、本発明の第一の実施形態に係る並列データ処理装置のバリエーションの構造を示すブロック図である。
【００４９】
本実施形態の並列データ処理装置は、図１に示すように、制御ＣＰＵ１と、データ入力部３と、データ記憶部２と、複数のプロセッサユニット５と、処理結果記憶部３０とを備え、さらに、プログラムメモリ４と、プログラム分配制御部７とを備えている。
【００５０】
これらの内で、データ入力部３と、データ記憶部２と、処理結果記憶部３０とプログラムメモリ４と、プログラム分配制御部７は、ローカルバス６に接続されている。また、制御ＣＰＵ１とプロセッサユニット５は、ローカルバス６と動作テスト用バス８の両者に接続されている。さらに、プログラム分配制御部７は、制御ＣＰＵ１とプログラムメモリ４に配信処理専用の制御線により接続されている。
【００５１】
データ入力部３は、この装置にデジタル信号を入力する部分である。そして、データ記憶部は、その入力されたデータを格納する。処理結果記憶部３０では、この装置の処理結果を記憶する。さらに、プログラムメモリ４は、データ処理プログラムと動作テストプログラムを格納する部分である。プログラム分配制御部７では、プログラムの配信数を決定する。プロセッサユニット５は、並列処理をおこなう頭脳にあたる部分であり、これの性能が同じでも違っていても良い。
【００５２】
並列処理装置では、一般に、データ処理プログラムを各プロセッサユニットに分配して並列処理を進めていくわけであるが、本発明の並列処理装置では、制御ＣＰＵ１は、データ処理プログラムをプロセッサユニット５に分配する前に、プログラムメモリ４に格納されている動作テストプログラムを各プロセッサユニットに転送して、動作テストをおこなう。ここで、動作テストとしておこなうテストは、プロセッサユニット５の基本動作のチェックとその判定であり、各プロセッサユニット５の機能に応じて、メモリからのデータの読み出し、読み出したデータを使用しての簡易な演算処理、処理結果のメモリへの書き込み等をおこなって、処理結果からプロセッサユニットの動作状態を判定する。
【００５３】
また、動作テストプログラムは、予め必要なものをプロセッサユニット５内に蓄えておき、それを利用しても良い。
【００５４】
一方、動作テストに用いるデータに関しては、図１に示していないが、別のメモリを用意してそこから持ってきても良いし、予めプロセッサユニット５の中に蓄えておいても良い。
【００５５】
各プロセッサユニット５の動作テストの結果は、動作テスト用バス８を介して制御ＣＰＵ１に転送され、制御ＣＰＵで正常動作するプロセッサユニットの判定をおこない、プログラム分配制御部に判定結果を転送する。
【００５６】
プログラム分配制御部７は、この動作テストの結果を受けて、プログラムの分配数を決定する。すなわち、正常に動作すると判定されたプロセッサユニットにのみプログラムを転送することになる。分配するプログラムは、実施形態の説明においては、装置と処理の簡易化の観点から、同一のプログラムを分配する事にする。しかしながら、プロセッサユニット間の同期や連絡を取る機構を設ければ、異なったプログラムを分配して並列処理を進める事も可能である。
【００５７】
ここで、図２を用いてプログラム分配とデータ分割量の決定の制御の流れについて説明しよう。
【００５８】
上記の動作テストがおこなわれた（Ｓ２０１）結果、正常ＰＵ数が求まる（Ｓ２０２）。
【００５９】
プロセッサユニット（以下、「ＰＵ」略すことがある）５の故障、または増設等により、正常ＰＵ数が増減した場合には（Ｓ２０３）、各プロセッサユニット毎に、プロセッサユニットの初期設定とデータ入出力に要する時間、プログラムの各処理単位で使用されている命令の種類、数と順序、および各プロセッサユニットの機能から算出したプログラム処理時間から、性能（Ｄ２０７）、処理の複雑さ（Ｄ２０９）を、制御ＣＰＵ１によって推定する。
【００６０】
そして、この推定結果から、プログラム分配制御部７が、要求処理速度（Ｄ２０８）で、正常なプログラムユニットを動作させたときの処理可能なデータ量を算出し、データ分割量を決定する（Ｓ２０６）。このように、各プロセッサユニット５に割り当てられるデータの分割量は、プログラム分配制御部７で、要求処理時間で処理可能と判定したデータ量となる。そして、プログラムメモリ４に格納されているプログラムをローカルバス６を介して、動作テストで正常に動作するとされたＰＵ５へ転送する（Ｓ２０７）。
【００６１】
なお、このデータ分割量の決定は、制御ＣＰＵ１がおこなっても良い。
【００６２】
本実施形態の並列データ処理装置では、以上の行程を経て、データ処理を開始することになる（Ｓ２０８）。
【００６３】
また、正常ＰＵ数に増減がない場合は、データ分割とプログラムの再分配をおこなう必要がないため、上記の処理はおこなわれずに、動作テスト後に、すぐデータ処理が開始されることになる。このとき、データ記憶部２に処理すべきデータが格納されていない場合には、データ入力部３より、データが入力され、データ記憶部２に格納された後、データを分割して各プロセッサユニット５に転送し、先に、各プロセッサユニット５に転送済みのプログラムにより並列にデータ処理をおこなう。
【００６４】
ここで、この並列データ処理装置が、画像を処理する場合であって、入力データが、例えば、リニアセンサを用いて、被検出試料を搭載したステージの走査に同期して検出される信号であるとする。その場合には、例えば、フレームメモリ等にデータを、一旦格納して、データ処理をおこなう各プロセッサユニット５は、データを読み出し、並列に処理をおこなうことができる。この際、処理すべきデータが全て格納されるまで待つことなく、処理対象データが格納されれば、各プロセッサユニット５は、直ちにデータを読み出し、処理に必要なデータが揃えば、それぞれ処理を開始すれば良い。
【００６５】
データ処理後は、処理結果をローカルバス６を介して、処理結果記憶部３０に転送し、一連のデータ処理が完了する。
【００６６】
なお、上記の説明の構成では、動作テスト用に専用のバスを設けたが、図３に示すように、動作テストのためのバスをローカルバス６で共用しても良い。また、要求処理速度が遅い場合、または、処理レートが十分速い場合には、プロセッサユニットを余らせて処理を分割し、余ったプロセッサユニットで、別途、処理をおこなわせても良い。
【００６７】
〔実施形態２〕
以下、本発明に係る第二の実施形態を、図４ないし図８を用いて説明する。
図４は、本発明の第二の実施形態に係る並列データ処理装置の構造を示すブロック図である。
図５は、本発明の第二の実施形態に係るリニアセンサと読み込まれるデータの関係を相関的に示した模式図である。
図６は、本発明の第二の実施形態に係る並列データ処理装置に流れる各種信号のタイミングチャートである。
図７は、データとそれを処理するプロセッサの関係を示した模式図である。
図８は、データ記憶部のデータの配置を説明するための模式図である。
図９は、本発明の第二の実施形態に係る他の並列データ処理装置の構造を示すブロック図である。
【００６８】
本実施形態は、並列データ処理装置にリニアセンサ等の検出器により、連続してデータ入力して、処理しようとするものである。
【００６９】
本実施形態の並列データ処理装置は、図３に示した第一の実施形態と同様に、制御ＣＰＵ１、データ記憶部２、データ入力部３、プログラムメモリ４、プログラム分配制御部７、処理結果記憶部３０が、ローカルバス６で結合されている構造は、同じであるが、その外に、カウンタ９を有しており、このカウンタ９で、検出器からの水平信号と垂直信号をカウントする。
【００７０】
さて、この並列データ処理装置では、リニアセンサから読み取ったデータが、ローカルバス６を介してデータ入力部３に入力されることになる。カウンタ９は、入力された水平信号と垂直信号をカウンタしている。そして、入力データ量がデータ記憶部の容量を越えないような周期でもって、データ記憶部２の内容をリセット信号によりリセットし、自らのカウンタ値もリセットする。
【００７１】
次に、本実施形態のデータ入力から、それを処理するまでの動作について説明する。
【００７２】
本実施形態では、パターンを検査するための検出器として、リニアセンサ１３を用い、これにより、システムにデータを入力する。
【００７３】
検出器として、リニアセンサ１３を用いた場合には、入力データ１７の形態としては、図５に示されるように、水平方向は、検出器ライン幅１４の幅により規定される一定の長さとなり、垂直方向は、データの量によって規定される可変長になる。
【００７４】
並列データ処理装置は、入力データを入力レートと同等以上の処理レートでリアルタイムに処理する必要がある。そのために、一定のデータを入力すると、カウンタ９からデータ記憶部２に対して、リセット信号を出すようにする。
【００７５】
例えば、垂直方向のデータ量、すなわちリニアセンサから入力されたライン数が、一定のｊライン分１５に達し、リセット位置１６になれば、図６に示すように、リセット信号１２を発生させて、水平信号１０と垂直信号１１をリセットする。ここで、リセットのタイミングは、水平信号を水平方向のデータ数×ｊ回分だけカウントして定めるか、リニアセンサの１ライン走査時間１８毎に出力される垂直信号をｊ回カウント後に水平信号を水平方向のデータ数分カウントして定めるようにすれば良い。
【００７６】
例えば、図７に示すように、プロセッサユニットの数が６個でそれぞれｎ回処理し、各プロセッサユニットの処理レートが入力レートと同等以上になるように、データ記憶部２に格納されたデータを分割したとする。
【００７７】
６番目にデータを受け取り処理を行うプロセッサユニットのｎ回目の処理データ８１５が、６番目のプロセッサユニットに転送され終わると、リセット信号が出て、水平、垂直信号をリセットすることになる。そして、次に入力されるデータを、１番目にデータを受け取り処理をおこなうプロセッサユニットの１回目の処理データ８０１の位置（行列で言えば、（１，１）の位置）に上書きする。また、入力データのプロセッサユニット５への転送は、各プロセッサユニットで処理すべきデータ（801、802、803・・・・）が入力された時点でおこない、データ処理を開始することにより、連続して入力されるデータをリアルタイムに処理することができる。
【００７８】
次に、図８を用いて本発明に係る第二の実施形態のデータ記憶部２からのデータの読み出し動作について説明する。
【００７９】
各プロセッサユニット５が、決定された分割量で処理を進めるためには、データを読み出すためのアドレスと、データを読み出すときのブロックサイズを与える必要がある。
【００８０】
そのために、逐次、プログラム分配制御部７か、制御ＣＰＵ１が、これらの情報を与えるようにしてもよいが、そうするとローカルバス６上トラフィクが増加し、システム全体のスループットが低下する恐れがある。
【００８１】
そのために、本実施形態では、正常動作するプロセッサユニット５に対して、正常動作するプロセッサユニットの数ｎ、プロセッサユニットの番号ｋ、一回で読み出し可能なデータのブロックサイズｂsを与え、データを読み出すためのアドレスは、各プロセッサユニット５で計算することにする。
【００８２】
図８の斜線部のデータは、例えば、ｋ＝２のときのＰＵ２に読み出されていくデータをあらわしている。
【００８３】
ここで、番号ｋのプロセッサユニットに、ｉ回目に読み出されるデータのアドレスは、以下の（式１）で表される。
【００８４】
【数１】
ＰＵk_iのアドレス＝ｂs×ｋ＋（ｉ−１）×ｂs×ｎ  …（式１）
なお、本実施形態では、入力データの分割の方法は、特開平５−３２４５８３号公報に記載の従来技術のように固定されたものではなく、柔軟性が高く、並列処理を進めるために、分割された各データの関連性がないように分割しやすいことに注意しておく。
【００８５】
次に、図９を用いて本発明に係る第二の実施形態の他の構成を説明する。
【００８６】
図９に示される並列データ処理装置も、検出器として、リニアセンサ１３を用いることを想定している。また、データ入力や、水平信号や垂直信号、リセット信号のタイミングなども上記と同様である。図４に示す構成との違いは、バスの形態が違っていて、ローカルバス６の外に、専用の動作テスト用バス４を持っていることである。
【００８７】
そして、データ処理を行うプロセッサユニットが故障した場合には、プログラムの分配数を正常動作するプロセッサユニットに再転送して、それに伴う処理可能データ量に応じて、データを分割する。このようにすれば、例え、一部のプロセッサに故障が発生した場合であっても、データ処理レートをデータ入力レートと同等以上に維持でき、リアルタイムに連続して入力されるデータを処理することができることはこれまでの例と同様である。
【００８８】
なお、この構成では、動作テスト用に専用のバスを設けたが、図４に示される構成で同様の処理が可能である。
【００８９】
この例では、動作テスト専用のバスを持っているために、データ処理中にも動作テスト要求を新たに受け付けて、動作テストを開始することが可能である。
【００９０】
したがって、図１０を用いて、データ処理中に動作テスト要求があったときのプログラム分配制御とデータ分割量の決定の制御の流れについて説明しよう。
【００９１】
本実施形態の並列データ処理装置でデータ処理中に動作テスト要求があったとする（Ｓ２１０）。
【００９２】
このときリセットを受け付けて動作テストを始めるタイミングは、リセット信号が発行される瞬間として、それまでは、これまでの並列データ処理を続けるものとする（Ｓ２１１）。このようにすれば、図７に示されるリセット毎のブロック単位で処理がされて、途中でデータが無駄になることがない。
【００９３】
さて、リセットがあった場合には、動作テストをおこなう（Ｓ２０１）。
【００９４】
動作テストがおこなわれた（Ｓ２０１）結果、正常ＰＵ数が求まる（Ｓ２０２）。プロセッサユニット（以下、「ＰＵ」略すことがある）５の故障、または増設等により、正常ＰＵ数が増減した場合には（Ｓ２０３）、各プロセッサユニット毎に、プロセッサユニットの初期設定とデータ入出力に要する時間、プログラムの各処理単位で使用されている命令の種類、数と順序、および各プロセッサユニットの機能から算出したプログラム処理時間から、性能（Ｄ２０７）、処理の複雑さ（Ｄ２０９）を、制御ＣＰＵ１によって推定する。
【００９５】
そして、この推定結果から、プログラム分配制御部７が、要求処理速度（Ｄ２０８）で、正常なプログラムユニットを動作させたときの処理可能なデータ量を算出し、データ分割量を決定する（Ｓ２０６）。このように、各プロセッサユニット５に割り当てられるデータの分割量は、プログラム分配制御部７で、要求処理時間で処理可能と判定したデータ量となる。そして、プログラムメモリ４に格納されているプログラムをローカルバス６を介して、動作テストで正常に動作するとされたＰＵ５へ転送する（Ｓ２０７）。
【００９６】
なお、このデータ分割量の決定は、制御ＣＰＵ１がおこなっても良い。
【００９７】
本実施形態の並列データ処理装置では、以上の行程を経て、データ処理を開始することになる（Ｓ２０８）。
【００９８】
また、正常ＰＵ数に増減がない場合は、データ分割とプログラムの再分配をおこなう必要がないため、上記の処理はおこなわれずに、動作テスト後に、すぐデータ処理が開始されることになる。
【００９９】
これにより、データ処理中に動作テスト要求があった場合でも、処理を中断させることなく、プログラムの分割がおこなえるため、処理装置を止めることなくリアルタイム性を維持したまま、装置を継続して動作させることができる。
【０１００】
また、データの分割量を決定するために必要な各プロセッサユニットのプログラム実行処理速度の推定方法として、プログラムのコンパイルをおこなう際におこなうこともできる。すなわち、コンパイラ時にわかっているプロセッサユニット毎に、各処理単位で使用されている命令の種類、数、順序、各プロセッサユニットでの各命令の処理実行時間などに基づいて、プログラム全体の処理速度を推定し、その結果に基づいて、各プロセッサユニットで処理するデータ量の最適化をおこない、データを分割することにより、システムとしての処理能力の最適化を図ることができる。
【０１０１】
〔実施形態３〕
次に、図１１ないし図１３を用いて本発明に係る第三の実施形態を説明する。
図１１は、本発明の第三の実施形態に係る並列データ処理の構造を示すブロック図である。
図１２は、本発明の第三の実施形態に係る並列データ処理装置を用いた検査装置の構造を示す斜視図である。
図１３は、本発明の第三の実施形態に係る並列データ処理装置を用いた検査装置の他の構造を示す斜視図である。
【０１０２】
本実施形態は、図９の構成を持つ第二の実施形態にクロック制御部１９を付け加え、クロックセレクト信号４３により、この並列データ処理装置のクロックを切り換えられるようにしたものである。
【０１０３】
クロックを切り換えられる様にする利点は、以下の点にある。
すなわち、第二の実施形態でも説明したように入力データは、各プロセッサユニットに分割して渡され、並列処理される。そして、この各プロセッサユニットに分割するデータ量は、プログラム分配制御部７により決定される。ところが、データ入力レートが処理レートを下回っている場合には、入力されたデータを、リアルタイムに処理可能であるが、データ処理を並列に独立して実行する最低限のデータ量を処理するために必要な処理レートがデータ入力レートを下回る場合には、リアルタイムに入力データを処理できない。
【０１０４】
このため、プログラム分配制御部でプログラムを分配し、かつ、各プロセッサユニットで処理すべきデータ量を決定した際に、処理レートがデータ入力レートを下回る場合には、処理レートが入力レートと同等以上になるように、クロックセレクト信号４３をクロック制御部１９に送り、データ入力レートを下げることにより、処理のリアルタイム性を維持しようとするものである。
【０１０５】
次に、図１２および図１３を用いて、具体的な検査装置において、データ入力レートを調整する例について説明する。
【０１０６】
例えば、図１２に示すように、データの検出器として、ステージ２０上の試料２１をレンズ２２を介して、ＴＶカメラ２３のような２次元のデータを一括して取り込む場合を考える。そして、この検出器からの検出信号２５を本実施形態の並列データ処理装置０を含む処理回路２６でデータ処理する。この場合に、検出器のデータ取り込み時間である露光時間は、露光時間制御信号２４により制御される。また、露光時間制御信号２４は、並列データ処理装置０のクロックにより制御可能であるとする。したがって、この並列データ処理装置０のクロックを変え、露光時間制御信号２４により、露光時間を長くすることによって、データ入力レートを遅くすることができる。したがって、それによって処理レートとの調整することができて、取り込んだ画像のリアルタイムの処理が可能となる。
【０１０７】
また、今一つの例としては、図１３に示すように、検出器がリニアセンサ１３のように１次元のデータをステージを移動させて取り込むか、あるいは検出器を移動させて取り込むことにより、２次元的なデータとして取り込む場合を考えよう。この場合には、リニアセンサ１３の動作速度をクロック２７を遅くすることにより下げるようにする。
【０１０８】
そして、それにあわせてステージ２０を移動させてデータを取り込む場合には、処理回路２６の中にある並列処理回路０によって発振されるクロックを制御する。そして、それを受けてステージ制御部２８から出されるステージ駆動信号２９により、ステージ速度を遅くする。
【０１０９】
これにより、入力データレートを下げ、それによりデータ処理レートを入力データレートと比べて同等以上にすることができ、検査装置全体としてのリアルタイム性を維持することが可能になる。
【０１１０】
さらに、図１１に示すようなプログラム分配制御部７、リセット機能を持った水平信号１０、垂直信号１１のカウンタ９、クロック制御部１９をそれぞれ、あるいは統合してＬＳＩ化することにより、処理回路の小型化を図ることができる。
【０１１１】
〔実施形態４〕
次に、図１４ないし図１６を用いて本発明に係る第四の実施形態を説明する。
図１４は、本発明の第四の実施形態に係る並列データ処理装置の構造を示すブロック図である。
図１５は、入力データの各プロセッサへの割り当てを説明するための模式図である。
図１６は、処理結果と書き込み領域の対応を説明するための模式図である。
【０１１２】
本実施形態は、図９に示される第二の実施形態の構成に処理結果記憶部３０と合成結果記憶部帯３１を設けたものである。
【０１１３】
データ入力部３０から入力された入力データ１７は、動作テストの結果に従って、各プロセッサユニット５に分割して処理されるわけであるが、各処理結果記憶部３０は、その各プロセッサユニット５で処理された結果を格納するための領域である。また、処理結果記憶部３０に格納された処理結果は、この処理結果記憶部３０の有しているアドレス情報に基づいて、合成され、合成結果記憶部３１に格納される。
【０１１４】
以下、図１５および図１６を用いて本実施形態のデータ入力と処理結果の格納をする動作について説明しよう。
【０１１５】
この並列データ処理装置に、入力されたデータは、分割して処理されるわけであるが、そのデータの分割数と大きさについては、データ入力に使用する検出器のデータ入力サイズ、データ入力レート、データ処理内容およびプロセッサユニット５の処理レートなどに基づいて、制御ＣＰＵ１により決定されることは、前の実施形態で既に説明した通りである。
【０１１６】
データの分割数と大きさが決定されると、プログラム分配制御部が、各プロセッサユニット５にどの分割データを処理させかを決め、各プロセッサユニット５が処理する領域のアドレスを算出する。
【０１１７】
そして、図１５に示される最初の分割データ１０１は、データ記憶部２に格納されしだい、プロセッサユニットＰＵ１に転送されることになる。また、同様に次の分割データ１０２も、データ記憶部２に格納されしだい、プロセッサユニットＰＵ２に転送される。
【０１１８】
また、データ量が多く、分割したデータが、プロセッサユニットの数よりも、多くなり各プロセッサユニットが複数回処理をおこなわなければならないとする。今、例えば、プロセッサユニットがｎ個であるとしよう。
【０１１９】
この場合には、図１５に示されるように、分割データ１０３が、データ記憶部２に格納され、プロセッサユニットＰＵnに転送された後に、２回目の最初に処理される分割データ１０４をデータ記憶部２に格納して、その後、プロセッサユニットＰＵ１に転送すればよい。
【０１２０】
ここで、データ転送のタイミングとしては、分割データ１０１に対するプロセッサユニットＰＵ１の１回目の処理が終了し、処理結果記憶部３０への処理結果の書き込みが終了してから、２回目のデータである分割データ１０４が、データ記憶部２からＰＵ１に転送されるようにすることが望ましい。このことを考慮して、プロセッサユニット数ｎは、ある程度大きくする必要がある。
【０１２１】
次に、処理結果記憶部３０へプロセッサユニット５で処理された処理結果データを書き込む方法について説明する。
【０１２２】
例えば、画像処理等の処理結果を合成し、表示させる場合等では、▲１▼データを入力した順番に、各プロセッサユニット５の処理結果を処理結果記憶部３０に書き込む方法、▲２▼処理が終了した順番に、各プロセッサユニット５の処理結果を処理結果記憶部３０に書き込む方法等がある。
【０１２３】
両者を比較してみると、前者▲１▼の方法では、処理対象データの相違による処理時間のずれがあるため、待ち時間が発生し、また、後者▲２▼の方法では、処理結果が分割された順番通りには出力されないため、スケジューリング等の制御が必要となる。
【０１２４】
そこで、本実施形態では、処理結果記憶部３０を各プロセッサユニット毎に分割し、しかも、その各プロセッサユニット毎の書き込み領域をさらに、回数ごとの書き込み領域に分割する。例えば、図１６に示されるようにＰＵ１書き込み領域５０１を回数毎に、１回目処理結果書き込み領域３０１、２回目処理結果書き込み領域３０２、…、ｎ回目書き込み領域３０３に分割する。
【０１２５】
そして、それぞれのプロセッサユニット５と書き込み回数に対応する書き込み領域にデータを書き込んで行く。このようにすれば、処理結果記憶部３０のアドレスを知るのみで各プロセッサユニット５の処理結果を処理回数毎に認識することができ、しかも、各プロセッサユニット５が処理するデータ領域が決められていれば、各プロセッサユニット５の処理結果がデータ全体のどの位置に対応するかも認識することができる。
【０１２６】
このように処理結果記憶部３０の領域を割り当てておけば、記述の▲１▼、▲２▼の方法のように、データ入力の順番、処理の終了の順番に処理結果記憶部３０に書き込むというスケジューリングによらずともよくなり、並列処理の柔軟性が増すことになる。
【０１２７】
〔実施形態５〕
以下、図１７ないし図２０を用いて本発明に係る第五の実施形態を説明する。
図１７は、本発明の第五の実施形態に係る並列データ処理装置の構造を示すブロック図である。
図１８は、各プロセッサで処理した処理結果を合成することを説明するための模式図である。
図１９は、本発明の第五の実施形態に係る他の並列データ処理装置の構造を示すブロック図である。
図２０は、本発明の第五の実施形態に係るまた、他の並列データ処理装置の構造を示すブロック図である。
【０１２８】
実施形態４では、処理結果記憶部３０と合成結果記憶部３１を持つ構成を説明したが、本実施形態は、処理結果記憶部３０と各プロセッサユニット５が、専用のデータバス３２により、接続されている。そして、処理結果記憶部３０は、対応するプロセッサユニット５の処理結果を、実施形態４でも説明したように、各プロセッサユニット毎、回数毎に割り当てられた領域に格納するものである。
【０１２９】
処理結果記憶部３０は、図１７および図１９に示されるように複数でも良いし、図２０に説明するように一つの構成であってもよい。図１７に示される例では、複数のプロセッサユニット５を有し、各プロセッサユニット５の処理する処理結果部が、予め割り当てられている構成である。この構成では、例えば、ＰＵ１，  ＰＵ２，ＰＵ３に割り当てられる処理結果記憶部３０は、一番左のものである。
【０１３０】
また、図１９に示されるように、複数の処理結果記憶部３０があり、これらがすべて共有されていて、複数の処理結果記憶部３０は、どのプロセッサユニット５の処理結果でも格納することができる構成にすることも可能である。また、図２０に示されるように、一つの処理結果記憶部３０をすべてのプロセッサユニット５で共有してもよい。
【０１３１】
合成結果記憶部３１は、各処理結果記憶部３０に記憶されたデータを、各処理結果記憶部３０のアドレスに基づいて、どのプロセッサユニット５の何回目の処理データかを認識して、図１８に示すようにデータの合成をおこなう。
【０１３２】
さて、この並列データ処理装置は、制御ＣＰＵ１がおこなった動作テストに基づき、プログラム分配制御部７によって各プロセッサユニット５に対して入力データの分割をおこなうわけであるが、その際の情報を記憶しておいて、利用すれば、このように処理結果記憶部３０に格納されているデータを必要な順番で合成結果記憶部３１に合成した処理結果データを格納することが可能になる。
【０１３３】
〔実施形態６〕
以下、図２１を用いて本発明に係る第六の実施形態を説明する。
図２１は、本発明の第六の実施形態に係る並列データ処理装置の構造を示すブロック図である。
【０１３４】
これまでの実施形態の説明では、特に、プロセッサユニット５の構造については説明してこなかったが、本実施形態では、図２１に示されるようにプロセッサユニット５の中に、ＲＡＭ（Random  Access  Memory）３４、比較器３５、ＰＥ（Processor  Element）３６を含んでいる例を説明する。
【０１３５】
既に説明してきたように、本発明に係る並列データ処理装置は、先ず、データ入力部３より、データが入力され、ローカルバス６を介してデータ記憶部２にデータが記憶される。制御ＣＰＵ１によってなされる動作テストの結果に基づいて、プログラム分配制御部７は、データ記憶部２に格納されているデータを、その格納されている領域のアドレスを計算することにより、各プロセッサユニットに取り込むことになる。
【０１３６】
さて、プログラム分配制御部７は、その領域の分割データを処理すべきプロセッサユニット５に対して、その領域のアドレス値を転送する。
【０１３７】
次に、データ記憶部２は、格納されているデータと、そのデータアドレスをローカルバス６に出力する。転送されてくるとＲＡＭ３４に格納する。そのとき、データアドレスは、２次元にデータ記憶部のアドレスを変換して、水平アドレスと垂直アドレスに分けても良いし、データのビット数を加えて３次元に変換しても良く、また、１次元のままでも良い。
【０１３８】
各プロセッサユニット５は、データとそのデータアドレスがローカルバス６に出力されると、そのデータアドレスとプロセッサユニット内のＲＡＭに記憶されている処理対象領域のアドレス値とを比較器３５により比較する。そして、アドレス値が一致したデータのみをＲＡＭにデータを取り込み、ＰＥ３６により処理をおこなうことにする。
【０１３９】
このようにすれば、特定のアドレスのデータのみを各プロセッサユニットに転送し、処理をおこなうことができる。ここで、本実施形態では、各プロセッサユニット内にアドレス記憶用のＲＡＭと比較器を装備させている例を説明してきたが、アドレス比較専用にＲＡＭと比較器を別に設ける構成にしても良い。
【０１４０】
また、既に実施形態２で説明したように、プロセッサユニット５には初期値として、正常プロセッサユニット数、プロセッサユニットの番号、ブロックサイズを与え、ＰＥ３６でデータ記憶部のアドレスをそのつど計算するようにしても良い。
【０１４１】
〔実施形態７〕
以下、図２２を用いて本発明に係る第七の実施形態を説明する。
図２２は、本発明の並列データ処理装置を画像処理システムに適用したシステム構成図である。
【０１４２】
本実施形態では、これまで説明してきた並列データ処理装置を具体的な画像処理システムに適用した例について説明する。
【０１４３】
この検査装置は、ｘｙ方向に走査可能なステージ２０上に搭載されたウェハ３７をレンズ２２を介してリニアセンサ１３で検出するものである。リニアセンサ１３からの検出信号２５は実施形態３で説明したのと同様の回路構成である処理回路２６に出力する。
【０１４４】
処理回路２６には、並列データ処理装置０が含まれていて、これによって異物検査やパターン検査等の処理をおこない、処理結果３８を出力する。処理結果３８は、バックエンドシステム４０内の処理結果データベース４１に記憶され、判定装置４２によって検査条件等の設定が正しいかどうか判定される。ここで、判定装置は完全自動であってもよいし、人による判断を求める形の半自動であってもよい。例えば、検出欠陥の欠陥種による分類結果を用いても良いし、その検出欠陥の全部あるいは代表を表示させても良い。この判定装置による判定結果にもとづいてフィードバック信号３９を処理回路に出力し、処理回路の方式や条件を変更することができる。
【０１４５】
本実施形態によれば、例えば、装置立上時の条件出しや、新しい品種に対応した現実的な検査条件を迅速に設定できるという効果がある。また、処理結果データベースに基づいて、検出異物や欠陥の代表をＳＥＭ（Scanning  Electron  Microscope：スキャニングエレクトロンマイクロスコープ）、ＸＭＡ（X−ray  Micro  Analysis：エックスレイマイクロアナリシス）等の時間がかかるが精密な物質同定手法により分析する分析装置４３によって、異物や欠陥原因物質を特定することができる。
【０１４６】
【発明の効果】
本発明によれば、複数のプロセッサユニットを有する並列データ処理装置および方法において、動作テストをおこなって並列処理をするプログラムと処理する入力データの割り当てを決定することにより、正常なプロセッサユニットにのみ処理を割り当て処理の最適化を図りつつ、入力データの割り当ての柔軟性を高めつつ、システムのリソースを有効活用し、システムの変更や故障にも柔軟に対処でき、しかも、コストパーフォマンスが高く、高スループットでリアルタイム処理をおこなうことが可能な並列データ処理装置および方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の第一の実施形態に係る並列データ処理装置の構造を示すブロック図である。
【図２】本発明の第一の実施形態に係る並列データ処理装置におけるプログラム分配制御の流れを示すフローチャートである。
【図３】本発明の第一の実施形態に係る並列データ処理装置のバリエーションの構造を示すブロック図である。
【図４】本発明の第二の実施形態に係る並列データ処理装置の構造を示すブロック図である。
【図５】本発明の第二の実施形態に係るリニアセンサと読み込まれるデータの関係を相関的に示した模式図である。
【図６】本発明の第二の実施形態に係る並列データ処理装置に流れる各種信号のタイミングチャートである。
【図７】データとそれを処理するプロセッサの関係を示した模式図である。
【図８】データ記憶部のデータの配置を説明するための模式図である。
【図９】本発明の第二の実施形態に係る他の並列データ処理装置の構造を示すブロック図である。
【図１０】データ処理中に動作テスト要求があったときのプログラム分配制御とデータ分割量の決定の制御の流れを示すフローチャートである。
【図１１】本発明の第三の実施形態に係る並列データ処理の構造を示すブロック図である。
【図１２】本発明の第三の実施形態に係る並列データ処理装置を用いた検査装置の構造を示す斜視図である。
【図１３】本発明の第三の実施形態に係る並列データ処理装置を用いた検査装置の他の構造を示す斜視図である。
【図１４】本発明の第四の実施形態に係る並列データ処理装置の構造を示すブロック図である。
【図１５】入力データの各プロセッサへの割り当てを説明するための模式図である。
【図１６】処理結果と書き込み領域の対応を説明するための模式図である。
【図１７】本発明の第五の実施形態に係る並列データ処理装置の構造を示すブロック図である。
【図１８】各プロセッサで処理した処理結果を合成することを説明するための模式図である。
【図１９】本発明の第五の実施形態に係る他の並列データ処理装置の構造を示すブロック図である。
【図２０】本発明の第五の実施形態に係るまた、他の並列データ処理装置の構造を示すブロック図である。
【図２１】本発明の第六の実施形態に係る並列データ処理装置の構造を示すブロック図である。
【図２２】本発明の並列データ処理装置を画像処理システムに適用したシステム構成図である。
【図２３】特開平３−２５２５０２号公報に記載の二重化制御装置の構成を示すブロック図である。
【図２４】特開平５−３２４５８３号公報に記載の画像データ処理装置の構成を示すブロック図である。
【図２５】従来技術に係る画像データ処理装置の処理部と処理する画像データとの対応を示した模式図である。
【符号の説明】
０…並列データ処理装置、１…制御ＣＰＵ、２…データ記憶部、３…データ入力部、４…プログラムメモリ、５…プロセッサユニット、６…ローカルバス、７…プログラム分配制御部、８…動作テスト用バス、９…カウンタ、１０…水平信号、１１…垂直信号、１２…リセット信号、１３…リニアセンサ、１４…検出器ライン幅、１５…ｊライン分、１６…リセット位置、１７…入力データ、１８…１ライン走査時間、１９…クロック制御部、２０…ステージ、２１…試料、２２…レンズ、２３…ＴＶカメラ、２４…露光時間制御信号、２５…検出信号、２６…処理回路、２７…クロック、２８…ステージ制御部、２９…ステージ駆動信号、３０…処理結果記憶部、３１…合成結果記憶部、３２…データバス、３３…処理結果データ、３４…ＲＡＭ、３５…比較器、３６…ＰＥ（プロセッサエレメント）、３７…ウェハ、３８…処理結果、３９…フィードバック信号、４０…バックエンドシステム、４１…処理結果データベース、４２…判定装置、４３…分析装置、４４…クロックセレクト信号、101… ＰＵ１の１回目の処理領域、102… ＰＵ２の１回目の処理領域、103… ＰＵｎの１回目の処理領域、104… ＰＵ１の２回目の処理領域、 301… ＰＵ１の１回目の処理結果書き込み領域、302… ＰＵ１の２回目の処理結果書き込み領域、303… ＰＵ１のＮ回目の処理結果書き込み領域、304… ＰＵ２の１回目の処理結果書き込み領域、305… ＰＵ２のＮ回目の処理結果書き込み領域、306… ＰＵｎの１回目の処理結果書き込み領域、307… ＰＵｎのＮ回目の処理結果書き込み領域、308… ＰＵn-1の１回目の処理結果書き込み領域、309… ＰＵn-2の２回目の処理結果書き込み領域、501… ＰＵ１の処理結果書き込み領域、502… ＰＵｎの処理結果書き込み領域、801…１番目のプロセッサユニットの１回目の処理データ、802…２番目のプロセッサユニットの１回目の処理データ、803…３番目のプロセッサユニットの１回目の処理データ、804…４番目のプロセッサユニットの１回目の処理データ、805…５番目のプロセッサユニットの１回目の処理データ、806…６番目のプロセッサユニットの１回目の処理データ、807…１番目のプロセッサユニットの２回目の処理データ、808…２番目のプロセッサユニットの２回目の処理データ、809…３番目のプロセッサユニットの２回目の処理データ、810…４番目のプロセッサユニットの２回目の処理データ、811…２番目のプロセッサユニットのｎ回目の処理データ、812…３番目のプロセッサユニットのｎ回目の処理データ、813…４番目のプロセッサユニットのｎ回目の処理データ、814…５番目のプロセッサユニットのｎ回目の処理データ、815…６番目のプロセッサユニットのｎ回目の処理データ、710…画像データ処理装置、711…画像データ処理部Ａ、712…画像データ処理部Ｂ、713…画像データ処理部Ｃ、714，715…インターフェース、716…画像ＲＡＭ、717…バスライン、718…スキャナ、719…ハードディスク、721…画像データ、722…配分率データ、１Ｃ…二重化制御装置、２Ａ，２Ｂ…中央演算ユニット、３１Ｃ，３２Ｃ…入出力ユニット、４Ａ，４Ｂ…ＣＰＵモジュール、５Ａ，５Ｂ…インターナルバスコントローラ、６Ａ１，６Ｂ１，６Ａ２，６Ｂ２…入出力コントローラ、７１Ｃ，７２Ｃ…入出力モジュール、８Ａ，８Ｂ…��ンターナルバス、９Ｃ…同期バス、101Ｃ，102Ｃ…Ｉ／Ｏバス
【図１】
0003923574.tif 000002
【図２】
0003923574.tif 000003
【図３】
0003923574.tif 000004
【図４】
0003923574.tif 000005
【図５】
0003923574.tif 000006
【図６】
0003923574.tif 000007
【図７】
0003923574.tif 000008
【図８】
0003923574.tif 000009
【図９】
0003923574.tif 000010
【図１０】
0003923574.tif 000011
【図１１】
0003923574.tif 000012
【図１２】
0003923574.tif 000013
【図１３】
0003923574.tif 000014
【図１４】
0003923574.tif 000015
【図１５】
0003923574.tif 000016
【図１６】
0003923574.tif 000017
【図１７】
0003923574.tif 000018
【図１８】
0003923574.tif 000019
【図１９】
0003923574.tif 000020
【図２０】
0003923574.tif 000021
【図２１】
0003923574.tif 000022
【図２２】
0003923574.tif 000023
【図２３】
0003923574.tif 000024
【図２４】
0003923574.tif 000025
【図２５】
0003923574.tif 000026