(57)【要約】マルチプロセッサアーキテクチャを有するコンピューティングシステムを提供する。プロセッサは、階層的に構成されて、上位階層レベルの１つ以上のスレーブプロセッサが、下位階層レベルの１つ以上のスレーブプロセッサにタスクを提供する。さらに、下位階層レベルのスレーブプロセッサは、上位階層レベルのスレーブプロセッサとは異なる機能的能力を有して、上位階層レベルのスレーブプロセッサよりも適切に数タイプの演算を実行できる。マスタコンピューティングプロセスは、上位階層レベルのプロセッサ上で動作する１つ以上のコンピューティングプロセスの中に演算セットを分散させて、その演算セット内の演算の実行を開始する。上位階層レベルで動作するプロセスが、下位階層レベルのプロセッサによってより適切に実行されるタイプの１つ以上の演算を識別すると、この１つまたは複数の演算をそのプロセッサ上で動作するプロセスに提供する。
2010500692.tif 000002
【特許請求の範囲】
【請求項１】
演算実行の方法であって、
マスタプロセスで演算セットを受信することであって、第１の演算セットは、実行すべき１つ以上の演算を含む、ことと、
該演算セットを、該マスタプロセスから、第１のプロセッサタイプのプロセッサ上で実行する第１のスレーブプロセスへ転送することと、
該演算セット内の少なくとも１つの演算を、該第１のスレーブプロセスから、第２のプロセッサタイプのプロセッサ上で実行する第２のスレーブプロセスへ転送することと、
該少なくとも１つの演算を、該第２のスレーブプロセスによって実行して、演算結果を生成することと、
該演算結果を、該第２のスレーブプロセスから該第１のスレーブプロセスへ転送することと
を含む、演算実行の方法。
【請求項２】
前記第１のプロセッサタイプのプロセッサは、第１のカテゴリの演算を実行するように最適化される、請求項１に記載の演算実行の方法。
【請求項３】
前記第１のカテゴリの演算は、整数計算を含む、請求項２に記載の演算実行の方法。
【請求項４】
前記第２のプロセッサタイプのプロセッサは、第２のカテゴリの演算を実行するように最適化される、請求項１に記載の演算実行の方法。
【請求項５】
前記第２のカテゴリの演算は、浮動小数点数計算を含む、請求項４に記載の演算実行の方法。
【請求項６】
前記演算セットは、第１の演算と、第２の演算とを含み、
該第１の演算を前記第２のスレーブプロセスへ転送することと、
前記演算結果を用いて、前記第１のスレーブプロセスによって該第２の演算を実行することと
をさらに含む、請求項１に記載の演算実行の方法。
【請求項７】
前記第１の演算は、高速フーリエ変換を計算する命令を含む、請求項６に記載の演算実行の方法。
【請求項８】
前記マスタプロセスで第２の演算セットを受信することであって、該第２の演算セットは、実行すべき１つ以上の第２の演算を含むことと、
該第２の演算セットを、該マスタプロセスから、前記第１のプロセッサタイプの第２のプロセッサ上で実行する第３のスレーブプロセスへ転送することと
をさらに含む、請求項１に記載の演算実行の方法。
【請求項９】
前記第２の演算セット内の少なくとも１つの第２の演算を、前記第３のスレーブプロセスから、前記第２のプロセッサタイプの第２のプロセッサ上で実行する第４のスレーブプロセスへ転送することと、
該第４のスレーブプロセスによって該第２の演算を実行して第２の演算結果を生成することと
をさらに含む、請求項８に記載の演算実行の方法。
【請求項１０】
前記第２の演算セット内の少なくとも１つの第２の演算を、前記第３のスレーブプロセスから、前記第２のスレーブプロセスへ転送することと、
該第２のスレーブプロセスによって該第２の演算を実行して第２の演算結果を生成することと
をさらに含む、請求項８に記載の演算実行の方法。
【請求項１１】
コンピューティングシステムであって、
第１のプロセッサタイプの複数の第１のスレーブプロセッサと、
該第１のプロセッサタイプとは異なる第２のプロセッサタイプの複数の第２のスレーブプロセッサであって、該第２のスレーブプロセッサのそれぞれは、第１のスレーブプロセッサによって提供される演算を実行するように構成される、複数の第２のスレーブプロセッサと、
演算を、実行用の該第１のスレーブプロセッサに分散するように構成されたマスタプロセスモジュールと
を備える、コンピューティングシステム。
【請求項１２】
前記第１のプロセッサタイプのプロセッサは、第１のカテゴリの演算を実行するように最適化される、請求項１１に記載のコンピューティングシステム。
【請求項１３】
前記第１のカテゴリの演算は、整数計算を含む、請求項１２に記載のコンピューティングシステム。
【請求項１４】
前記第２のプロセッサタイプのプロセッサは、第２のカテゴリの演算を実行するように最適化される、請求項１１に記載のコンピューティングシステム。
【請求項１５】
前記第２のカテゴリの演算は、浮動小数点数計算を含む、請求項１４に記載のコンピューティングシステム。
【請求項１６】
前記第２のタイプのプロセッサのそれぞれの利用可能性を監視し、
該第２のタイプのプロセッサのそれぞれの利用可能性を、前記第１のタイプのプロセッサに報告するように構成される、ディスパッチャモジュールをさらに備える、請求項１１に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、マスタコンピュータからの演算を、１つ以上の異なるタイプのスレーブコンピュータの中において分散させることを目的とする。本発明の種々の側面は、第１のタイプのスレーブコンピューティングユニットへの第１のタイプの演算の分散、および第２のタイプのスレーブコンピューティングユニットへの第２のタイプの演算の分散に適用することができる。
【背景技術】
【０００２】
多くのソフトウェアアプリケーションは、シングルプロセッサコンピュータ上で効率的に動作させることができる。しかしながら、場合によっては、ソフトウェアアプリケーションを動作させるのに非常に多くの演算を実行させる必要があるので、シングルプロセッサコンピュータ上で経済的な時間内に逐次的に実行できない場合がある。例えば、マイクロデバイス設計プロセスのソフトウェアアプリケーションには、何十万または何百万もの入力データ値に、十万以上の演算を実行する必要がある。このタイプのソフトウェアアプリケーションをより高速に動作させるために、多重処理スレッドを同時に使用することができる複数のプロセッサを用いたコンピュータが開発された。これらのコンピュータは、シングルプロセッサコンピュータよりも高速に、複雑なソフトウェアアプリケーションを実行することができるが、これらのマルチプロセッサコンピュータは、購入および維持のコストが非常に高い。マルチプロセッサコンピュータにより、プロセッサは、非常に多くの演算を同時に実行するので、関連する演算の同時実行を協調させるように、特殊なオペレーティングシステムを用いなければならない。さらに、その複数のプロセッサは、メモリのようなコンピュータのリソースに同時にシークアクセスすることができるので、マルチプロセッサコンピュータのバス構造および物理的レイアウトは、シングルプロセッサコンピュータよりも本質的に複雑である。
【０００３】
大型マルチプロセッサコンピュータに関わる問題点および費用を考慮して、単一のマルチプロセッサコンピュータを使用する代わりに、リンクされたシングルプロセッサコンピュータのネットワークが一般的になっている。パーソナルコンピュータのような従来のシングルプロセッサコンピュータのコストは、ここ数年で大幅に減少した。さらに、複数のシングルプロセッサコンピュータの演算をネットワークへリンクするための手法がさらに高性能化され、信頼性も向上している。したがって、現在では、一般的に、数百万ドルのマルチプロセッサコンピュータが、比較的単純で低コストのシングルプロセッサコンピュータのネットワーク、すなわち「ファーム」と置き換えられている。
【０００４】
単一のマルチプロセッサコンピュータから複数のネットワーク化されたシングルプロセッサコンピュータへの転換は、処理されるデータが並列性を有する場合に特に有用である。このタイプのデータにより、データの一部分が、データの他の部分から独立している。すなわち、データの第１の部分の操作には、データの第２の部分についての知識、またはこれへのアクセスが不要である。したがって、一方のシングルプロセッサコンピュータは、データの第１の部分に演算を実行することができ、一方で、他方のシングルプロセッサコンピュータは、データの第２の部分に別の演算を同時に実行することができる。複数のコンピュータを使用して、異なるグループのデータに演算を同時に、すなわち「並列」に実行することによって、大量のデータを高速に処理することができる。
【０００５】
したがって、並列演算の実行に複数のシングルプロセッサコンピュータを使用することが、マイクロデバイスの設計データの分析に非常に有用となり得る。このタイプのデータにより、マイクロ回路の第１の領域内の半導体ゲートのような、設計の一部分を、そのマイクロ回路の第２の領域内の配線ラインのような、設計の別の部分から完全に独立させることができる。したがって、構造体の最小幅の確認を定義する演算のような、設計解析演算を、ゲートごとに一方のコンピュータによって実行することができ、一方で、他のコンピュータは、配線ラインに同じ演算を実行することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のネットワーク化されたシングルプロセッサコンピュータを使用することで、並列データに演算を行うソフトウェアアプリケーションの処理効率を大幅に改善するが、それでも多くのソフトウェアアプリケーションは、実行に大量の時間が必要となる場合がある。例えば、複数のシングルプロセッサコンピュータを使用したときであっても、設計解析ソフトウェアアプリケーションでは、超大型集積回路設計を完全に分析するのに数時間、または数日を要する場合がある。したがって、複数のシングルプロセッサコンピュータを用いたコンピューティングシステムの速度および演算効率の改善が、引き続き求められている。
【課題を解決するための手段】
【０００７】
本発明の種々の側面は、複数のコンピュータを使用した、ソフトウェアアプリケーションのデータをより効率的に処理する手法に関する。以下に詳述するように、これらの手法を実装したツールおよび方法の実施形態は、ネットワーク内の異なるタイプのシングルプロセッサコンピュータの中で演算を分散させることによる、マイクロデバイス設計データの分析のための特定の用途を有する。
【０００８】
本発明の種々の実施形態によれば、マルチプロセッサアーキテクチャを有するコンピューティングシステムが提供される。プロセッサは、上位階層レベルの１つ以上のスレーブプロセッサが、下位階層レベルの１つ以上のスレーブプロセッサにタスクを提供するように、階層的に構成される。さらに、下位階層レベルのスレーブプロセッサは、下位のスレーブプロセッサが、上位のスレーブプロセッサよりも適切に数タイプの演算を実行することができるように、上位階層レベルのスレーブプロセッサとは異なる演算能力を有する。本発明のいくつかの実施形態では、例えば、下位のスレーブプロセッサは、上位のスレーブプロセッサよりも大幅に高速に、浮動小数点数計算のような１つ以上の演算を実行することができる。本発明の種々の実装は、マスタ階層レベルに、上位のスレーブプロセッサの演算を協調させるための１つ以上のプロセッサを含み、および／または中間階層レベルに、上位のスレーブプロセッサと下位のスレーブプロセッサとの間の協調を管理するための１つ以上のプロセッサをさらに含む。
【０００９】
本発明の異なる実施形態では、マスタコンピューティングプロセスは、上位のプロセッサ上で動作する１つ以上のコンピューティングプロセスの中で演算セットを分散させる。本発明のいくつかの実装では、これらの演算セットは、並列なものとすることができる（すなわち、演算セットのうちの１つを実行するのに、別の演算セットを先に実行して得られた結果を必要とせず、その逆もまた同じである）。さらに、各演算セットは、下位のスレーブプロセッサによってより適切に実行されるタイプの演算を含むことができる。本発明の種々の実施例では、上位のスレーブプロセッサ上で動作するコンピューティングプロセスは、その演算セット内の演算の実行を開始する。上位のスレーブコンピューティングプロセスが、下位のスレーブプロセッサによってより適切に実行されるタイプの１つ以上の演算を識別すると、この１つまたは複数の演算を、第２のタイプのコンピューティングデバイス上で動作する下位のスレーブプロセッサに提供する。下位のコンピューティングプロセスが、その割り当てられた１つまたは複数の演算を実行した後に、上位のコンピューティングプロセスにその結果を返して、演算セットの実行を完了する。
【００１０】
本発明のこれらの、ならびに他の特徴および側面は、以下の詳細な説明を考慮することによって明らかとなろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の種々の実施形態によって用いることができるコンピュータの概略図である。
【図２】図２は、本発明の種々の実施形態によって用いることができるコンピュータのためのプロセッサユニットの概略図である。
【図３】図３は、本発明の種々の実施形態による、階層的プロセッサ配列を有するコンピューティングシステムの一実施例を概略的に示す図である。
【図４Ａ】図４Ａ〜４Ｃ並びに図５Ａおよび５Ｂは、本発明の種々の実施形態による、図３に示されたコンピューティングシステムの演算を説明するフローチャートである。
【図４Ｂ】図４Ａ〜４Ｃ並びに図５Ａおよび５Ｂは、本発明の種々の実施形態による、図３に示されたコンピューティングシステムの演算を説明するフローチャートである。
【図４Ｃ】図４Ａ〜４Ｃ並びに図５Ａおよび５Ｂは、本発明の種々の実施形態による、図３に示されたコンピューティングシステムの演算を説明するフローチャートである。
【図５Ａ】図４Ａ〜４Ｃ並びに図５Ａおよび５Ｂは、本発明の種々の実施形態による、図３に示されたコンピューティングシステムの演算を説明するフローチャートである。
【図５Ｂ】図４Ａ〜４Ｃ並びに図５Ａおよび５Ｂは、本発明の種々の実施形態による、図３に示されたコンピューティングシステムの演算を説明するフローチャートである。
【図６】図６は、本発明の種々の実施形態による、異なるコンピューティングシステム構成によって得られる演算速度の予想される改善を示す図である。
【図７】図７は、本発明の種々の実施形態による、階層的プロセッサ配列を有するコンピューティングシステムの別の実施例を示す図である。
【図８】図８は、本発明の種々の実施形態による、階層的プロセッサ配列を有するコンピューティングシステムのさらに別の実施例を示す図である。
【発明を実施するための形態】
【００１２】
（序文）
本発明の種々の実施形態は、実行用の複数のネットワーク化されたコンピューティングデバイスの中で演算を分散させるためのツールおよび方法に関する。したがって、本発明の理解をより容易にするために、複数の異なるスレーブコンピュータにリンクされたマスタコンピュータで構成されたネットワークに用いることができる、コンピューティングデバイスの一実施例を説明する。
【００１３】
（例示的な動作環境）
当業者には明らかなように、本発明の種々の実施例は、それぞれがソフトウェア命令を実行することができる、複数のプログラム可能なコンピューティングデバイスを使用して実装される。その点を考慮して、まず、本発明の種々の実施形態が用いることができるタイプの、汎用のプログラム可能なコンピュータシステムの構成要素および演算を、図１を参照して説明する。
【００１４】
そのために、本発明の種々の実施形態の実装に使用することができるコンピューティングデバイス１０１の例示的な実施例を図１に示す。図に示されるように、コンピューティングデバイス１０１は、コンピューティングユニット１０３を有する。コンピューティングユニット１０３は、一般的に、プロセッサユニット１０５と、システムメモリ１０７とを含む。プロセッサユニット１０５は、ソフトウェア命令を実行するためのあらゆるタイプの処理デバイスとすることができるが、従来的には、マイクロプロセッサデバイスとなる。システムメモリ１０７は、読み出し専用メモリ（ＲＯＭ）１０９と、ランダムアクセスメモリ（ＲＡＭ）１１１とを含むことができる。当業者には明らかなように、読み出し専用メモリ（ＲＯＭ）１０９およびランダムアクセスメモリ（ＲＡＭ）１１１は、どちらも、プロセッサユニット１０５が実行するためのソフトウェア命令を格納することができる。
【００１５】
下記に詳述するように、本発明のいくつかの実装は、２つ以上のプロセッサコアを有する処理ユニット１０５を備えた、コンピューティングデバイス１０１を用いることができる。その点を考慮して、図２は、本発明の種々の実施形態とともに用いることができる、マルチコアプロセッサユニット１０５の一実施例を示す図である。図に示されるように、プロセッサユニット１０５は、複数のプロセッサコア２０１を含む。各プロセッサコア２０１は、コンピューティングエンジン２０３と、メモリキャッシュ２０５とを含む。当業者には既知であるように、コンピューティングエンジンは、ソフトウェア命令を取り出し、その後、取り出した命令に規定されたアクションを実行するなどの、種々のコンピューティング機能を実行するための論理デバイスを含む。これらのアクションには、例えば、数の加算、減算、乗算、および比較、ＡＮＤ、ＯＲ、ＮＯＲ、およびＸＯＲのような論理演算の実行、およびデータの検索が挙げられる。各コンピューティングエンジン２０３は、その後対応するメモリキャッシュ２０５を使用して、実行用のデータおよび／または命令の高速な格納および検索を行うことができる。
【００１６】
各プロセッサコア２０１は、相互接続２０７に接続される。相互接続２０７の特定の構成は、プロセッサユニット２０１のアーキテクチャに基づいて変更することができる。ソニー、東芝、およびＩＢＭによって作製されたセルマイクロプロセッサのような、いくつかのプロセッサユニット２０１により、相互接続２０７を相互接続バスとして実装することができる。しかしながら、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（Ｓｕｎｎｙｖａｌｅ、Ｃａｌｉｆｏｒｎｉａ）から入手可能な、ＯｐｔｅｒｏｎＴＭおよびＡｔｈｒｏｎＴＭデュアルコアプロセッサのような、他のプロセッサユニット２０１により、相互接続２０７をシステム要求のインタフェースデバイスとして実装することができる。いずれの場合においても、プロセッサコア２０１は、相互接続２０７を通じて、入出力インタフェース２０９およびメモリコントローラ２１１と通信する。入出力インタフェース２０９は、プロセッサユニット２０１とバス１１３との間の通信インタフェースを提供する。同様に、メモリコントローラ２１１は、プロセッサユニット２０１とシステムメモリ１０７との間の情報交換を制御する。本発明のいくつかの実装により、プロセッサユニット２０１は、プロセッサコア２０１によってアクセス可能に共有された、高位のキャッシュメモリのようなさらなる構成要素を含むことができる。
【００１７】
図２には、本発明のいくつかの実施形態によって用いることができる、プロセッサユニット２０１の一例が示されているが、この実施例は、代表例を示したに過ぎず、限定することを意図したものではないと理解されたい。例えば、以下に詳述するように、本発明の種々の実施形態は、セルプロセッサを備えたコンピューティングデバイスを用いることができる。セルプロセッサは、複数の入出力インタフェース２０９と、複数のメモリコントローラ２１１とを用いる。また、セルプロセッサは、９つの異なるタイプの異なるプロセッサコア２０１を有する。より具体的には、６つ以上の相乗プロセッサ要素（ｓｙｎｅｒｇｉｓｔｉｃ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ：ＳＰＥ）と、１つのパワープロセッサ要素（ｐｏｗｅｒ  ｐｒｏｃｅｓｓｏｒ  ｅｌｅｍｅｎｔ：ＰＰＥ）とを有する。各相乗プロセッサ要素は、１２８×１２８ビットのレジスタと、４つの単精度浮動小数点計算ユニットと、４つの整数計算ユニットと、命令とデータの両方を格納する２５６ｋＢのローカルストアメモリとを備えた、ベクトルタイプのコンピューティングエンジン２０３を有する。パワープロセッサ要素は、次いで、相乗プロセッサ要素によって実行されたタスクを制御する。その構造のために、セルプロセッサは、高速フーリエ変換（ＦＦＴ）の計算のようないくつかの数値計算を、従来のプロセッサユニット１０５よりも著しく高速に実行することができる。
【００１８】
以下、図１に示されるコンピューティングデバイス１０１の実施例に戻ると、コンピューティングユニット１０３は、下記に詳述されるように、ネットワーク内の他のデバイスと通信するための１つ以上のネットワークインタフェース１１５に直接的または間接的に接続される。ネットワークインタフェース１１５は、伝送制御プロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、およびインターネットプロトコル（ＩＰ）のような、１つ以上の通信プロトコルに従って、コンピューティングユニット１０３からのデータおよび制御信号をネットワークメッセージに翻訳する。これらの、および他の従来の通信プロトコルは、当技術分野において既知であるため、ここでは詳細に説明しない。インタフェース１２３には、例えば無線トランシーバ、モデム、またはイーサネット（登録商標）接続を含む、ネットワークへ接続するためのあらゆる好適な接続エージェント（またはエージェントの組み合わせ）を用いることができる。また、接続エージェントには、高周波伝送、光ケーブル、または導電性ワイヤのような、あらゆる所望の媒体を用いることができる。
【００１９】
処理ユニット１０５およびシステムメモリ１０７は、バス１１３または代替のコミュニケーション構造を通じて、１つ以上の周辺デバイスに直接的または間接的に接続される。例えば、処理ユニット１０５またはシステムメモリ１０７は、磁気ハードディスクドライブ１１７またはリムーバブル磁気光ディスクドライブ１１９のような、１つ以上のさらなるメモリ記憶装置に直接的または間接的に接続することができる。当然、コンピューティングデバイス１０１は、磁気ディスクドライブ（図示せず）またはフラッシュメモリカード（図示せず）のような、さらなる、または代替のメモリ記憶装置を含むことができる。処理ユニット１０５またはシステムメモリ１０７は、１つ以上の入力デバイス１２１および１つ以上の出力デバイス１２３に直接的または間接的に接続することもできる。入力デバイス１２１は、例えば、キーボード、およびマウス、タッチパッド、デジタイザ、トラックボール、またはジョイスティックのようなポインティングデバイスを含むことができる。出力デバイス１２３は、例えば、ディスプレイモニタおよびプリンタを含むことができる。
【００２０】
これらの周辺デバイスのうちの１つ以上を、コンピューティングユニット１０３およびバス１１３とともに内蔵することができると理解されたい。代替的に、または付加的に、これらの周辺デバイスのうちの１つ以上を、コンピューティングユニット１０３およびバス１１３から独立して内蔵し、次いでバス１１３に（直接的または間接的に）接続することができる。また、本発明の種々の実施形態に従って用いたコンピューティングデバイス１０１は、図１に示された構成要素のうちのいずれかを含むか、図１に示された構想要素のサブセットだけを含むか、または図１に示されていないいくつかの構成要素を含むか、図１に示される構成要素の代替の組み合わせを含むことができると理解されたい。
【００２１】
また、コンピュータ１０１の説明は、例示として提供されたに過ぎず、本発明の代替の実施形態の用途の範囲または機能性に関して、いかなる限定も示唆することを意図したものではないと理解されたい。
【００２２】
（演算セット）
上述のように、本発明の種々の側面は、マルチプロセッサアーキテクチャを備えたコンピューティングシステムによる、演算セットの実行に関する。したがって、本発明の異なる実施形態は、様々な異なるタイプのソフトウェアアプリケーションとともに用いることができる。しかしながら、本発明のいくつかの実施形態は、マイクロ回路のようなマイクロデバイスを表す設計データをシミュレーション、検証、または修正するための演算を実行する、ソフトウェアアプリケーションを動作させるのに特に有用である。マイクロ回路デバイスの設計および作製には、「設計フロー」を通じて多くのステップを伴う。これらのステップは、マイクロ回路のタイプ、複雑度、設計チーム、およびマイクロ回路の製造者または製造工場に大きく依存する。いくつかのステップは、全ての設計フローに共通である。最初に、設計仕様が、一般的にハードウェア設計言語（ＨＤＬ）で論理的にモデル化される。次いで、ソフトウェアおよびハードウェア「ツール」が、ソフトウェアシミュレータおよび／またはハードウェアエミュレータを動作させることによって、設計フローの種々の段階で設計を検証し、エラーを補正する。
【００２３】
論理設計が十分であると判断されると、合成ソフトウェアによって物理的設計データに変換される。物理的設計データは、例えば、製造工場でのフォトリソグラフィプロセスにおいて、所望のマイクロ回路デバイスを作製するのに使用されるマスク上に書き込まれる、幾何パターンを表すことができる。物理的設計情報は、デバイスの適切な演算のための設計仕様および論理設計を正確に組み込むことが非常に重要である。さらに、物理的設計データを用いて、製造工場で使用されるマスクが作製されるので、データは、製造工場の要件に適合しなければならない。各製造工場は、それらのプロセス、装置、および手法との適応性のために、それ自体の物理的設計パラメータを規定する。したがって、設計フローには、設計ルールチェックのプロセスを含むことができる。このプロセス中に、回路設計の物理的レイアウトが設計ルールと比較される。製造工場によって規定されるルールに加えて、設計ルールチェックのプロセスは、試験チップから得られたもの、作業における知識等のような他の設計ルールを、回路設計の物理的レイアウトと照合することもできる。
【００２４】
設計者が検証ソフトウェアアプリケーションを使用して、回路設計の物理的レイアウトが設計ルールに適合することを検証すると、その設計者は、次いで、回路設計の物理的レイアウトを修正して、物理的レイアウトがフォトリソグラフィプロセス中に生成する画像の解像度を向上させることができる。これらの解像度向上技術（ｒｅｓｏｌｕｔｉｏｎ  ｅｎｈａｎｃｅｍｅｎｔ  ｔｅｃｈｎｉｑｕｅ：ＲＥＴ）には、例えば、光近接効果補正（ｏｐｔｉｃａｌ  ｐｒｏｘｉｍｉｔｙ  ｃｏｒｒｅｃｔｉｏｎ：ＯＰＣ）を使用した、またはサブ解像度アシストフィーチャ（ｓｕｂ−ｒｅｓｏｌｕｔｉｏｎ  ａｓｓｉｓｔ  ｆｅａｔｕｒｅ：ＳＲＡＦ）を加えることによる、物理的レイアウトの修正が挙げられる。回路設計の物理的レイアウトが解像度向上技術を使用して修正されると、次いで、設計ルールチェックを修正したレイアウトについて実行され、所望の程度の解像度が得られるまでプロセスを繰り返すことができる。このようなシミュレーションおよび検証ツールの実施例には、ＭｃＳｈｅｒｒｙらの米国特許第６，２３０，２９９号（２００１年５月８日発行）、ＭｃＳｈｅｒｒｙらの米国特許第６，２４９，９０３号（２００１年６月１９日発行）、Ｅｉｓｅｎｈｏｆｅｒらの米国特許第６，３３９，８３６号（２００２年１月１５日発行）、Ｂｏｚｋｕｓらの米国特許第６，３９７，３７２号（２００２年５月２８日発行）、Ａｎｄｅｒｓｏｎらの米国特許第６，４１５，４２１号（２００２年７月２日発行）、および、Ａｎｄｅｒｓｏｎらの米国特許第６，４２５，１１３号（２００２年７月２３日発行）に記載されたものが挙げられ、それぞれ参照することによりその全体が本願明細書に組み込まれる。
【００２５】
新しい集積回路の設計は、数百万のトランジスタ、抵抗、コンデンサ、または他の電気的構造体の、論理回路、メモリ回路、プログラム可能なフィールドアレイ、および他の回路デバイスへの相互接続を含む場合がある。コンピュータが、これらの大きなデータ構造をより容易に作製および分析できるように（および人間ユーザが、これらのデータ構造をより適切に理解できるように）するために、該構造は、しばしばより小さなデータ構造に階層的に構成され、一般的に「セル」と称される。したがって、マイクロプロセッサまたはフラッシュメモリの設計の場合、単一のビットを格納するためのメモリ回路を構成する全てのトランジスタを、単一の「ビットメモリ」セルに分類することができる。したがって、各トランジスタを個々に列挙しなければならないというのではなく、単一ビットメモリ回路を構成するトランジスタ群を選択的に参照して単一のユニットとして操作することができる。同様に、大型の１６ビットのメモリレジスタ回路を表す設計データを、単一のセルに分類することができる。この高位の「レジスタセル」は、その結果、ビットメモリセルのそれぞれとの間でデータを転送するための入出力回路のような、他の雑回路（ｍｉｓｃｅｌｌａｎｅｏｕｓ  ｃｉｒｃｕｉｔｙ）を表す設計データとともに、１６ビットのメモリセルを含むことができる。同様に、１２８ｋＢのメモリアレイを表す設計データは、その結果、レジスタセルのそれぞれとの間でデータを転送するための入出力回路のような、それ自体の雑回路を表す設計データとともに、わずか６４，０００個のレジスタセルの組み合わせとして簡潔に説明することができる。
【００２６】
マイクロ回路の設計データを階層的セルに分類することによって、大きなデータ構造を、より高速かつ効率的に処理することができる。例えば、回路設計者は、一般的に、設計を分析して、設計に表された各回路フィーチャが、その設計からミクロ回路を製造する製造工場によって規定された設計ルールに適合することを確認する。上述の実施例により、設計ルールチェックのプロセスは、１２８ｋＢのメモリアレイ全体の各フィーチャを分析するのではなく、単一のビットセルのフィーチャを分析すればよい。チェックの結果は、その後単一のビットセルの全てに適用することができる。単一のビットセルの１つのインスタンスが設計ルールに適合することが確認されると、設計ルールチェックのプロセスは、その後、単純に新たな雑回路（それ自体を１つ以上の階層的セルで形成することができる）のフィーチャを分析することによって、レジスタセルの分析を完了することができる。このチェックの結果は、その後レジスタセルの全てに適用することができる。レジスタセルの１つのインスタンスが設計ルールに適合することが確認されると、設計ルールチェックのソフトウェアアプリケーションは、単純に、メモリアレイ内の新たな雑回路のフィーチャを分析することによって、１２８ｋＢメモリアレイ全体の分析を完了することができる。したがって、大きなデータ構造の分析を、データ構造を構成する比較的少数のセルの分析に圧縮することができる。
【００２７】
階層的構成に加えて、回路設計を構成するデータは、並列性を有することもできる。すなわち、マイクロ回路設計のいくつかの部分は、設計の他の部分から独立させることができる。例えば、１６ビットの比較器のための設計データを含むセルは、レジスタセルに依存しない。「高位の」セルは、比較器セルおよびレジスタセルの両方を含むが、一方のセルは他方のセルを含まない。その代わりに、これらの２つの低位のセル内のデータは並列である。これらのセルが並列なので、同じ設計ルールチェックの演算を、競合することなく、同時に両方のセルに実行することができる。したがって、複数のコンピューティングスレッドを動作させるマルチプロセッサコンピュータでは、第１のコンピューティングスレッドは、設計ルールチェックの演算をレジスタセルに実行し、一方で、別個の第２のコンピューティングスレッドは、同じ設計ルールチェックの演算を比較器セルに実行することができる。
【００２８】
プロセスデータと同様に、マイクロ回路分析のソフトウェアアプリケーションによって実行される演算も、並列性のある階層的構成を有することができる。演算の並列性の一実施例を示すために、マイクロ回路設計の物理的レイアウトデータに対する設計ルールチェックの演算を実装した、ソフトウェアアプリケーションを説明する。上述したように、このタイプのソフトウェアツールは、マイクロ回路の幾何学的フィーチャを定義するデータに演算を実行する。例えば、トランジスタゲートは、ポリシリコン材料の領域と、拡散材料の領域との交差点に作製される。したがって、リソグラフィプロセスのトランジスタゲートの形成に使用される物理的レイアウトの設計データは、ポリシリコン材料の層内のポリゴンと、拡散材料の層内の重複したポリゴンとで構成される。
【００２９】
一般的に、マイクロ回路の物理的設計データは、「描画層」設計データおよび「導出層」設計データの、２つの異なるタイプのデータを含む。描画層データは、マイクロ回路を形成する材料の層内に描画されるポリゴンを表す。描画層データは、通常は、金属層、拡散浸透層、およびポリシリコン層内のポリゴンを含む。導出層は、描画層データおよび他の導出層データの組み合わせで構成されたフィーチャを含む。例えば、上述のトランジスタゲートにより、ゲートを表す導出層の設計データは、ポリシリコン材料層内のポリゴンと、拡散材料層内のポリゴンとの交差点から導出される。
【００３０】
一般的に、設計ルールチェックのソフトウェアアプリケーションは、設計データ値が規定のパラメータに適合するかどうかを確認する「チェック」演算と、導出層データを作製する「導出」演算との、２つのタイプの演算を実行する。例えば、トランジスタゲートの設計データは、以下の導出演算によって作製することができる。
ｇａｔｅ＝ｄｉｆｆ  ＡＮＤ  ｐｏｌｙ
この演算の結果は、拡散浸透層のポリゴンとポリシリコン層のポリゴンとの全ての交差点を識別する。同様に、ｐ型トランジスタゲートは、拡散浸透層をｎ型材料でドープすることによって形成され、以下の導出演算によって識別される。
ｐｇａｔｅ＝ｎｗｅｌｌ  ＡＮＤ  ｇａｔｅ
この演算の結果は、拡散浸透層内のポリゴンをｎ型材料でドープした、全てのトランジスタゲート（すなわち、拡散浸透層のポリゴンとポリシリコン層のポリゴンとの交差点）を識別する。
【００３１】
チェック演算は、次いでデータ設計値のパラメータまたはパラメータ範囲を定義する。例えば、ユーザは、別の配線ラインから１ミクロン以内にいかなる金属配線ラインも存在しないようにさせたい場合がある。このタイプの分析は、以下のチェック演算によって実行することができる。
ｅｘｔｅｒｎａｌ  ｍｅｔａｌ＜１
この演算の結果は、金属層の設計データ内の別のポリゴンに対して１ミクロンよりも近い、金属層の設計データ内の各ポリゴンを識別する。
【００３２】
また、上述の演算は、描画層のデータを用いているが、チェック演算は、導出層のデータにも実行することができる。例えば、ユーザが、別のゲートの１ミクロン以内にいかなるトランジスタゲートも存在させないようにしたい場合、設計ルールチェックのプロセスは、以下のチェック演算を含むことができる。
ｅｘｔｅｒｎａｌ  ｇａｔｅ＜１
この演算の結果は、別のゲートから１ミクロン未満に位置決めされたゲートを表す全てのゲートの設計データを識別する。しかしながら、このチェック演算は、描画層の設計データからゲートを識別する導出演算が実行されるまで、実行することができないものと理解されたい。
【００３３】
多くのシミュレーションおよび検証演算は、整数計算を使用することによって実行することができる。例えば、上述した設計ルールチェックの演算は、整数計算を使用して実行することができる。しかしながら、いくつかのシミュレーションおよび検証演算は、浮動小数点数計算を使用して、より効率的に実行される。光近接効果補正（ＯＰＣ）演算は、一般的に浮動小数点数計算を使用して実行される、シミュレーションおよび検証演算の１つのカテゴリの実施例である。
【００３４】
マイクロ回路がさらに小さいフィーチャを含むように進化しているので、現在、多くの回路設計には、リソグラフィプロセス中にそのようなフィーチャを作製するのに使用される光波長よりも小さいフィーチャが必要である。しかしながら、このタイプのサブ波長による撮像は、リソグラフィプロセス中にしばしば歪を生じる。これらの歪に対処するために、上述のように、補正アルゴリズムを用いて回路設計の物理的レイアウトを修正する。このプロセスは、概して光近接効果補正（ＯＰＣ）と呼ばれる。したがって、光近接効果補正という用語は、本願明細書で使用する場合、リソグラフィプロセス中のレイアウトの再生精度を向上させる、回路設計の物理的レイアウトの改良を含む。しかしながら、加えて、光近接効果補正という用語は、本願明細書で使用する場合、例えば独立したフィーチャおよび／または急激な近接遷移時のフィーチャの印刷のための、リソグラフィプロセスの信頼性を向上させる、物理的レイアウトの改良も含む。
【００３５】
光近接効果補正中に、物理的レイアウトのポリゴンエッジは、小さいセグメントに分割される。これらのセグメントは、次いで移動されて、さらなる小さいポリゴンを戦略的位置において物理的レイアウトに追加することができる。次いで、リソグラフィプロセスがシミュレートされ、修正または「補正」されたレイアウトによって作製された画像が、以前のレイアウト画像に対する修正によって作製された画像よりも適切であるかどうかを判断する。このプロセスは、次いで、修正されたレイアウトのシミュレーションおよび検証ツールが、実際のリソグラフィプロセス中に、満足な画像解像度をもたらす修正されたレイアウトを生成するまで繰り返される。
【００３６】
一般的に、光近接効果補正手法は、ルールベースか、またはモデルベースに分類される。ルールベースの光近接効果補正を用いて、レイアウトの改良は、特定のルールに基づいて生成される。例えば、小さいセリフ（ｓｅｒｉｆ）を、レイアウト内の各凸面（すなわち、外方に突出した）９０°コーナー部に自動的に追加することができる。モデルベースの光近接効果補正は、概して、ルールベースの光近接効果補正よりもかなり複雑である。モデルベースの光近接効果補正により、試験レイアウトから得られたソグラフィプロセスのデータを使用して、リソグラフィパターニング作用の数学モデルが作製される。シミュレーションおよび検証ツールは、次いで、適切なモデルを使用して、リソグラフィプロセス中に補正されるレイアウトによって作製される画像を計算する。その後、補正中のレイアウトフィーチャは、（モデルを使用して計算した）そのレイアウトの画像が、所望のレイアウト画像に十分近くなるまで繰り返し操作される。したがって、いくつかのモデルベースの光近接効果補正アルゴリズムには、エッジおよびコーナー部の予めシミュレートされた結果の加重和を計算することによる、複数のリソグラフィプロセスの影響のシミュレーションが必要となる場合がある。光近接効果補正アルゴリズムの一実施例は、Ｎｉｃｋ  Ｃｏｂｂによる「Ｆａｓｔ  Ｏｐｔｉｃａｌ  ａｎｄ  Ｐｒｏｃｅｓｓ  Ｐｒｏｘｉｍｉｔｙ  Ｃｏｒｒｅｃｔｉｏｎ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｍａｎｕｆａｃｔｕｒｉｎｇ」（博士論文、Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｃａｌｉｆｏｒｎｉａ、Ｂａｒｋｌｅｙ、１９９８）に記載されている。
【００３７】
当業者には明らかなように、ルールベースの光近接効果補正プロセスの実行は、設計ルールチェックの実行よりも計算的に集約的であり、モデルベースの光近接効果補正の実行は、さらに集約的である。さらに、光近接効果補正プロセスに必要とされる計算は、通常は設計ルールチェックのプロセスに用いられる計算よりも高度である。シミュレートされたリソグラフィ画像の取得は、例えば、異なる角度に配列された複数の別個のコヒーレント光源とした、リソグラフィ光源のモデル化を伴う場合がある。このような各コヒーレント光源の場合、シミュレートされた画像は、高速フーリエ変換（ＦＦＴ）を計算して、リソグラフィプロセスで使用されるレンズの動作をモデル化することによって得られる。次いで、これらのシミュレートされた画像が合計されて、リソグラフィプロセスによって生成される画像が得られる。これらの演算は、概して、整数計算を使用して実行するよりも浮動小数点計算を使用して実行したほうが効率的に実行される。同様に、光近接効果補正を検証する演算も、概して、整数計算を使用して実行するよりも浮動小数点計算を使用して実行したほうが効率的に実行される。
【００３８】
結果として、従来のコンピューティングシステムは、従来のシミュレーションおよび検証ツールを実装するのが困難であるが、これは、これらのツールが、設計ルールチェックのようなプロセスのための整数計算と、光近接効果補正法のようなプロセスのための浮動小数点数計算との両方を用いる場合があるからである。コンピューティングシステムが複数のシングルプロセッサコンピュータのネットワークを用いた場合であっても、計算に用いられるプロセッサは、一般的に、浮動小数点数計算よりも整数計算に適する。したがって、整数計算を用いたプロセスを効率的に実装することができる。しかしながら、これらのコンピュータシステムが、浮動小数点数計算を用いてプロセスを実装し始めると、それらの演算が、許容できないほどに遅くなる場合がある。
【００３９】
（階層的プロセッサのコンピューティングシステムの構成）
図３は、本発明の種々の実施形態による、階層的プロセッサのコンピューティングシステム３０１を示す図である。以下に詳述するように、この階層的プロセッサコンピューティングシステム３０１を用いて整数計算および浮動小数点数計算の両方を計算する、シミュレーションおよび検証ツールを効率的に実装することができる。図３に示されるように、階層的プロセッサのコンピューティングシステム３０１は、マスタコンピューティングモジュール３０３と、複数の上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αとを含む。階層的プロセッサコンピューティングシステム３０１は、またディスパッチャコンピューティングモジュール３０７と、複数の下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βとを含む。
【００４０】
本発明の種々の実装により、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αのそれぞれは、１つ以上のプロセッサユニット１０３を使用して、コンピューティングデバイス１０１のようなコンピュータによって実装することができる。例えば、本発明のいくつかの実施形態により、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αのそれぞれは、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（Ｓｕｎｎｙｖａｌｅ、Ｃａｌｉｆｏｒｎｉａ）から入手可能な、ＯｐｔｅｒｏｎＴＭシングルコアプロセッサのような従来のシングルコアプロセッサを使用して、従来のサーバコンピュータによって実装することができる。本発明のさらに他の実装により、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αのうちの１つ以上は、複数のシングルコアプロセッサを有するサーバコンピュータによって実装することができる。例えば、本発明のいくつかの実施形態により、単一のサーバコンピュータ１０１は、複数のＯｐｔｅｒｏｎＴＭシングルコアプロセッサを有することができる。その結果、各ＯｐｔｅｒｏｎＴＭシングルコアプロセッサを使用して、上位のスレーブコンピューティングモジュール３０５のインスタンスを実装することができる。
【００４１】
本発明のさらに他の実装は、上位のスレーブコンピューティングモジュール３０５のインスタンス化を実装するように、マルチコアプロセッサを備えた、それぞれのプロセッサを備えた、または代替的に、それぞれのコアが使用されるコンピュータを用いることができる。例えば、本発明のいくつかの実施形態により、コンピューティングデバイス１０１は、単一のＯｐｔｅｒｏｎＴＭデュアルコアプロセッサを用いて、上位のスレーブコンピューティングモジュール３０５の単一のインスタンス化を実装することができる。しかしながら、本発明のさらに他の実施形態により、コンピューティングデバイス１０１は、単一のＯｐｔｅｒｏｎＴＭデュアルコアプロセッサを使用して、上位のスレーブコンピューティングモジュール３０５の２つの別個のインスタンス化を実装することができる（すなわち、別個のインスタンス化が、ＯｐｔｅｒｏｎＴＭデュアルコアプロセッサの各コアによって実装される）。当然、上述のように、上位のスレーブコンピューティングモジュール３０５の複数のインスタンス化の実装に使用されるコンピューティングデバイス１０１は、複数のシングルコアプロセッサ、マルチコアプロセッサ、またはそれらの組み合わせを有することができる。
【００４２】
本発明の種々の実施形態により、マスタコンピューティングモジュール３０３およびディスパッチャコンピューティングモジュール３０７のそれぞれは、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αとは別個のコンピューティングデバイス１０１によって実装することができる。例えば、本発明のいくつかの実施形態により、マスタコンピューティングモジュール３０３は、単一のＯｐｔｅｒｏｎＴＭシングルコアプロセッサまたはＯｐｔｅｒｏｎＴＭデュアルコアプロセッサを有する、コンピューティングデバイス１０１によって実装することができる。ディスパッチャコンピューティングモジュール３０７は、単一のＯｐｔｅｒｏｎＴＭシングルコアプロセッサまたはＯｐｔｅｒｏｎＴＭデュアルコアプロセッサを有する、別のコンピューティングデバイス１０１によって実装することができる。本発明のさらに他の実施形態により、マスタコンピューティングモジュール３０３およびディスパッチャコンピューティングモジュール３０７の一方または両方を、上位のスレーブコンピューティングモジュール３０５と同じコンピューティングデバイス１０１、またはプロセッサユニット２０１を使用して実装することができる。
【００４３】
例えば、マスタコンピューティングモジュール３０３は、マルチプロセッサコンピューティングデバイスによって実装することができる。１つのプロセッサユニット２０１を使用して、マスタコンピューティングモジュール３０３のインスタンス化を動作させることができ、一方で、残りのプロセッサユニット２０１を使用して、それぞれ上位のスレーブコンピューティングモジュール３０５のインスタンス化を実装することができる。代替的に、マルチコアプロセッサユニット２０１内の単一のコアを使用して、マスタコンピューティングモジュール３０３のインスタンス化を動作させることができ、一方で、残りのコアを使用して、それぞれ上位のスレーブコンピューティングモジュール３０５のインスタンス化を実装することができる。本発明のいくつかの実施形態により、マスタコンピューティングモジュール３０３、ディスパッチャコンピューティングモジュール３０７、またはその両方は、例えばマルチスレッド技術を使用して、シングルコアプロセッサユニット２０１（またはマルチコアプロセッサユニット２０１の単一のコア）を、上位のスレーブコンピューティングモジュール３０５のうちの１つ以上のインスタンス化と共有することもできる。
【００４４】
本発明の種々の実施例により、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのそれぞれは、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αの実装に使用されるプロセッサユニット１０３とは異なる機能的能力を有する１つ以上のプロセッサユニット１０３を使用して、コンピューティングデバイス１０１のようなコンピュータによって実装することができる。例えば、上述のように、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αは、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓから入手可能な、いくつかのタイプのＯｐｔｅｒｏｎＴＭプロセッサを使用して実装することができる。従来技術で既知のように、このタイプのプロセッサは、浮動小数点数計算よりも高速に整数計算を実行するように構成される。したがって、本発明の種々の実施形態により、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのうちの１つ以上は、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ（Ａｒｍｏｎｋ、Ｎｅｗ  Ｙｏｒｋ）から入手可能な、セルプロセッサを使用して実装することができる。上記に詳述したように、このタイプのプロセッサは、ＯｐｔｅｒｏｎＴＭプロセッサよりも高速に浮動小数点数計算を実行するように構成される。
【００４５】
マスタコンピューティングモジュール３０３、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５α、ディスパッチャコンピューティングモジュール３０７、および下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのそれぞれは、UNIX（登録商標）オペレーションシステムを一部変更したもの、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｒｅｄｍｏｎｄ、Ｗａｓｈｉｎｇｔｏｎ）から入手可能なＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムを一部変更したもの、または両者を組み合わせたものを使用して作製されたコンピューティングプロセスとすることができる。当然、本発明のさらに他の実施形態により、あらゆるソフトウェアのオペレーティングシステムまたはソフトウェアのオペレーティングシステムの組み合わせを使用して、マスタコンピューティングモジュール３０３、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５α、ディスパッチャコンピューティングモジュール３０７、および下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのうちのいずれかを実装できるものと理解されたい。
【００４６】
本発明の種々の実施例により、マスタコンピューティングモジュール３０３、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５α、ディスパッチャコンピューティングモジュール３０７、および下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのそれぞれは、ネットワーク３１１を介して相互接続される。ネットワーク３１１は、既知の伝送制御プロトコル（ＴＣＰ）およびインターネットプロトコル（ＩＰ）のような、あらゆる通信プロトコルを使用することができる。ネットワーク３１１は、従来の伝導性ワイヤを使用した有線ネットワーク、無線ネットワーク（例えば、媒体に無線周波数、または赤外線周波数の信号を使用したもの）、光ケーブルネットワーク、またはそれらを組み合わせたものとすることができる。しかしながら、ネットワーク３１１全体の通信速度は、コンピューティングモジュール３０３〜３０９の演算を遅延させないように、十分高速でなければならないと理解されたい。
【００４７】
（階層的プロセッサのコンピューティングシステムの演算）
以下、本発明の種々の実施形態による階層的プロセッサのコンピューティングシステム３０１の演算を図４Ａ〜４Ｃおよび図５に示されたフローチャートを参照して説明する。最初に、ステップ４０１においてマスタコンピューティングモジュール３０３、および上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αのそれぞれは、階層的プロセッサのコンピューティングシステム３０１上で動作するターゲットソフトウェアアプリケーションのインスタンスを起動する。上述のように、本発明のいくつかの実施例を用いて、マイクロ回路設計を分析および修正するために、シミュレーションおよび検証ソフトウェアアプリケーションを動作させることができる。例えば、本発明のいくつかの実施形態を用いて、Ｍｅｎｔｏｒ  Ｇｒａｐｈｉｃｓ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｗｉｌｓｏｎｖｉｌｌｅ、Ｏｒｅｇｏｎ）から入手可能な、ＣＡＬＩＢＲＥマイクロ回路設計分析用のソフトウェアアプリケーションを動作させることができる。次に、ステップ４０３で、マスタコンピューティングモジュール３０３は、ディスパッチャコンピューティングモジュール３０７の演算を起動する。しかしながら、本発明のいくつかの代替の実施形態により、ディスパッチャコンピューティングモジュール３０７の演算は、ユーザによって手動で開始することもできる。次に、ステップ４０５で、ディスパッチャコンピューティングモジュール３０７は、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのそれぞれに、ターゲットソフトウェアアプリケーションのインスタンスを起動させる。
【００４８】
ステップ４０７で、上位のスレーブコンピューティングモジュール３０５Ａ−３０５αのそれぞれが、ターゲットソフトウェアアプリケーションのインスタンス化を動作させ始めることができる状態になると、準備ができたことおよびそのネットワークアドレスをマスタコンピューティングモジュール３０３に報告する。同様に、ステップ４０９で、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのそれぞれが、ターゲットソフトウェアアプリケーションのインスタンス化を動作させ始めることができる状態になると、準備ができたことおよびそのネットワークアドレスをディスパッチャコンピューティングモジュール３０７に報告する。ステップ４１１で、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのそれぞれが、準備ができたことおよびそのネットワークアドレスをディスパッチャコンピューティングモジュール３０７に報告すると、ディスパッチャコンピューティングモジュール３０７は、準備ができたことおよびそのネットワークアドレスをマスタコンピューティングモジュール３０３に報告する。次に、ステップ４１３で、マスタコンピューティングモジュール３０３は、ディスパッチャコンピューティングモジュール３０７のネットワークアドレスを、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αのそれぞれに提供する。
【００４９】
次に、ステップ４１５で、マスタコンピューティングモジュール３０３は、実行のために、個々の上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αへの複数のセット演算の割り当てを開始する。より具体的には、マスタコンピューティングモジュール３０３は、ターゲットソフトウェアアプリケーションが実行すべき、次のセット演算にアクセスする。それは、演算セットの実行に必要な関連するデータとともに、この演算セットを、次の利用可能な上位のスレーブコンピューティングモジュール３０５に提供する。このプロセスは、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αの全てが占有される（または、実行すべきさらなる演算が存在しなくなる）まで繰り返される。以下、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αの演算、ディスパッチャコンピューティングモジュール３０７、および下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βの演算を、図５Ａ〜５Ｂに示されたフローチャートを参照して説明する。
【００５０】
ステップ５０１において、上位のスレーブコンピューティングモジュール３０５は、演算セット内の演算を実行し、その演算セットは、上位のスレーブコンピューティングモジュール３０５による実行により適切な、第１のタイプのものである。例えば、上述のように、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αは、浮動小数点数計算よりも整数計算を効率的に実行するプロセッサユニット２０１を使用して実装することができる。したがって、演算セットが、設計ルールチェック演算のような、整数計算を主に伴う演算を含む場合、これらの演算は、該演算がマスタコンピューティングモジュール３０３によって割り当てられた、上位のスレーブコンピューティングモジュール３０５によって実行される。
【００５１】
次に、ステップ５０３において、上位のスレーブコンピューティングモジュール３０５は、演算内の１つ以上の演算を識別し、この演算は、下位のスレーブコンピューティングモジュール３０９による実行により適切な、第２のタイプのものである。例えば、上述のように、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βは、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αの実装に使用されるプロセッサユニット２０１よりも効率的に、浮動小数点数計算を実行するプロセッサユニット２０１を使用して実装することができる。したがって、演算セットが、光近接効果補正演算または光近接効果補正の検証演算のような、浮動小数点数計算を主に伴う演算を含む場合、これらの演算は、該演算がマスタコンピューティングモジュール３０３によって割り当てられた、上位のスレーブコンピューティングモジュール３０５によって識別される。
【００５２】
下位のスレーブコンピューティングモジュール３０９による実行により適切な、第２のタイプのものである、演算内の１つ以上の演算の識別に応えて、ステップ５０５で、上位のスレーブコンピューティングモジュール３０５は、利用可能な下位のスレーブコンピューティングモジュール３０９のネットワークアドレスに対する問い合わせを、ディスパッチャコンピューティングモジュール３０７に送信する。それに応じて、ステップ５０７で、ディスパッチャコンピューティングモジュール３０７は、他の演算の実行に現在占有されていない下位のスレーブコンピューティングモジュール３０９のネットワークアドレスを、上位のスレーブコンピューティングモジュール３０５に送信する。ディスパッチャコンピューティングモジュール３０７は、ラウンドロビンアルゴリズムのようなあらゆる所望のアルゴリズムを使用して、利用可能な下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βを選択することができる。
【００５３】
次に、ステップ５０９において、識別した第２のタイプの演算の実行に利用可能な、下位のスレーブコンピューティングモジュール３０９への転送を開始する。ステップ５１１において、下位のスレーブコンピューティングモジュール３０９は、次いで、転送された演算を実行し、ステップ５１３において、転送された演算を実行した結果を、上位のスレーブコンピューティングモジュール３０５へ返す。本発明の種々の実施例により、上位のスレーブコンピューティングモジュール３０５は、下位のスレーブコンピューティングモジュール３０９からの結果を無制限に待ち続けることができる。しかしながら、本発明の他の実施例により、上位のスレーブコンピューティングモジュール３０５は、下位のスレーブコンピューティングモジュール３０９からの結果を、ある閾値時間だけしか待たないようにすることもできる。この時間を過ぎると、上位のスレーブコンピューティングモジュール３０５は、下位のコンピューティングモジュール３０９が、演算に失敗して演算結果を返さないものと判断して、転送された演算をそれ自体で実行し始める。
【００５４】
また、本発明のいくつかの実施例により、上位のスレーブコンピューティングモジュール３０５は、下位のスレーブコンピューティングモジュール３０９からの結果を、単純に待機モードで待つこともできる。しかしながら、本発明の他の実施例により、上位のスレーブコンピューティングモジュール３０５は、マルチタスク手法を用いて、マスタコンピューティングモジュール３０３によって割り当てられた第２の演算セットを実行し始め、一方で、第１の演算セットの実行が完了するまで、下位のスレーブコンピューティングモジュール３０９からの結果を待つことができる。
【００５５】
ステップ５０１〜５１１は、演算セット内の全ての演算が実行されるまで繰り返される。ステップ５１５で、演算セット内の全ての演算が実行されると、上位のスレーブコンピューティングモジュール３０５は、演算セットの実行によって得られた結果を、マスタコンピューティングモジュール３０３に返す。
【００５６】
ここで図４に戻ると、ステップ４１７において、マスタコンピューティングモジュール３０３は、上位のスレーブコンピューティングモジュール３０５から演算結果を受信する。ステップ４１９で、マスタコンピューティングモジュール３０３は、実行する必要のある演算セットがさらにあるかどうかを判断する。実行する必要がある場合は、次いで、次の演算セットに対してステップ４１５および４１７が繰り返される。実行する必要のある演算が無くなった場合、プロセスは終了する。
【００５７】
上述の説明から分かるように、階層的プロセッサ配列を使用した本発明の種々の実施例は、従来のマルチプロセッサコンピューティングシステムよりも著しく高速な実行時間を提供することが明らかとなろう。例えば、設計回路シミュレーションおよび検証ソフトウェアアプリケーションにより、セルマイクロプロセッサは、光学近接制御に使用される画像シミュレーションの演算のような、いくつかの演算の実行に対して、従来のＯｐｔｅｒｏｎＴＭプロセッサよりも約１００倍高速となり得る。一方で、セルプロセッサは、設計ルールチェック演算のような他のタイプの演算に対しては、従来のＯｐｔｅｒｏｎＴＭプロセッサのように遅くなる場合がある（例えば、０．９倍しか速くならない）。コンピューティングシステム３０１内に異なるタイプのプロセッサユニット２０１を用いることによって、また、各演算を、その演算の実行の最も適切なプロセッサユニット２０１のタイプとを一致させることによって、本発明の種々の実装は、均一なプロセッサコンピューティングシステムよりも非常に高速なプロセスの演算を実行することができる。
【００５８】
下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βに対する、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αの比率は、コンピューティングシステム３０１によって実行されることが予想される演算のタイプに依存し得るものと理解されたい。例えば、上記に詳述したように、本発明のいくつかの実施形態は、ＯｐｔｅｒｏｎＴＭプロセッサおよびセルプロセッサを使用して、画像シミュレーションの演算を含むシミュレーションおよび検証演算を実行する、コンピューティングシステム３０１を実装することができる。図６は、コンピューティングシステム３０１内に用いられるセルプロセッサの数に基づいて、シミュレーション演算に対するシミュレーション演算の異なる割合に対して得ることができる、速度の向上を評価した図である。より具体的には、本図のｙ軸は、従来の分散処理システム上での集積回路設計の分析プロセスの評価されたランタイムに対する、本発明の実施形態による典型的な集積回路設計の分析プロセスの評価されたランタイムの比率を示し、ｘ軸は、コンピューティングシステム３０１内に用いられるセルプロセッサの数に対応する。それで、各曲線は、分析プロセスの整数演算に対する、浮動小数点数演算の比率に対応する。
【００５９】
（代替のコンピューティングシステム）
図３は、本発明の種々の実施形態に従って実装することができる、階層的プロセッサのコンピューティングシステムの一実施例を示しているが、様々な他のコンピューティングシステムを、本発明の代替の実施態様に従って実装できるものと理解されよう。例えば、図７は、第２のマスタコンピューティングモジュール７０３と、第２のセットの上位のスレーブコンピューティングモジュール７０５Ａ−７０５αとを含む、コンピューティングシステム７０１を示す図である。本図に示されるように、第２のマスタコンピューティングモジュール７０３、および第２のセットの上位のスレーブコンピューティングモジュール７０５Ａ〜７０５αは、ディスパッチャコンピューティングモジュール３０７、および下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βのユーザを共有する。このタイプ配列は、例えば、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βの実装に使用されたプロセッサユニット２０１が、比較的高価である場合、および／または散発的に使用される場合、該ユニットが、２つ以上のセットのマスタコンピューティングモジュールおよび上位のスレーブコンピューティングモジュールの中で共有される場合に有用となり得る。
【００６０】
一方で、図８は、ディスパッチャコンピューティングモジュール３０７を完全に省略した、コンピューティングシステム８０１を示す図である。省略の代わりに、各上位のスレーブコンピューティングモジュール３０５は、対応する下位のスレーブコンピューティングモジュール３０９の独占的使用を割り当てる。このタイプの構成は、例えば、下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βの実装に使用されるプロセッサユニット２０１が、比較的廉価である場合に、および／または非常に頻繁に使用されるので、所望の演算速度を得るのに必要な最適な数の下位のスレーブコンピューティングモジュール３０９Ａ〜３０９βが、上位のスレーブコンピューティングモジュール３０５Ａ〜３０５αの数に一致する場合に有用となり得る。当然、異なるタイプのプロセッサの階層的配列を使用した、さらに他の構成が、当業者には明らかとなろう。
【００６１】
（結論）
本発明は、添付の特許請求の範囲を用いて定義されているが、これらの請求項は、本発明が、本願明細書に記載された要素およびステップのあらゆる組み合わせ、または部分的な組み合わせを含むことを意図する場合があるという点においては例示的なものである。したがって、本発明を定義するための多数の代替的な組み合わせが存在し、それらは、本願明細書から、説明、請求項、および図面を含む１つ以上の要素を、種々の組み合わせで、または部分的な組み合わせで組み込んでいる。本願明細書に照らして、当業者は、本発明の代替の側面の組み合わせを、単独で、または本願明細書に定義された１つ以上の要素またはステップと組み合わせて、本発明を改良または変更したものとして、または本発明の一部として用いることができ、本願明細書に含まれる本発明の記述は、そのような改良および変更の全てを網羅することを意図したものであると理解されよう。
【図１】
2010500692.tif 000003
【図２】
2010500692.tif 000004
【図３】
2010500692.tif 000005
【図４Ａ】
2010500692.tif 000006
【図４Ｂ】
2010500692.tif 000007
【図４Ｃ】
2010500692.tif 000008
【図５Ａ】
2010500692.tif 000009
【図５Ｂ】
2010500692.tif 000010
【図６】
2010500692.tif 000011
【図７】
2010500692.tif 000012
【図８】
2010500692.tif 000013
【国際調査報告】
2010500692.tif 000014
2010500692.tif 000015
2010500692.tif 000016