JP2010500692A - 階層的プロセッサ構成によるマルチプロセッサアーキテクチャ - Google Patents

階層的プロセッサ構成によるマルチプロセッサアーキテクチャ Download PDF

Info

Publication number
JP2010500692A
JP2010500692A JP2009524613A JP2009524613A JP2010500692A JP 2010500692 A JP2010500692 A JP 2010500692A JP 2009524613 A JP2009524613 A JP 2009524613A JP 2009524613 A JP2009524613 A JP 2009524613A JP 2010500692 A JP2010500692 A JP 2010500692A
Authority
JP
Japan
Prior art keywords
processor
operations
slave
computing
design
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009524613A
Other languages
English (en)
Inventor
ドラゴス ドゥダウ,
ユージン ミロスラフスキー,
ニコラス コッブ,
Original Assignee
メンター・グラフィクス・コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by メンター・グラフィクス・コーポレーション filed Critical メンター・グラフィクス・コーポレーション
Publication of JP2010500692A publication Critical patent/JP2010500692A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Multi Processors (AREA)

Abstract

マルチプロセッサアーキテクチャを有するコンピューティングシステムを提供する。プロセッサは、階層的に構成されて、上位階層レベルの1つ以上のスレーブプロセッサが、下位階層レベルの1つ以上のスレーブプロセッサにタスクを提供する。さらに、下位階層レベルのスレーブプロセッサは、上位階層レベルのスレーブプロセッサとは異なる機能的能力を有して、上位階層レベルのスレーブプロセッサよりも適切に数タイプの演算を実行できる。マスタコンピューティングプロセスは、上位階層レベルのプロセッサ上で動作する1つ以上のコンピューティングプロセスの中に演算セットを分散させて、その演算セット内の演算の実行を開始する。上位階層レベルで動作するプロセスが、下位階層レベルのプロセッサによってより適切に実行されるタイプの1つ以上の演算を識別すると、この1つまたは複数の演算をそのプロセッサ上で動作するプロセスに提供する。

Description

(発明の分野)
本発明は、マスタコンピュータからの演算を、1つ以上の異なるタイプのスレーブコンピュータの中において分散させることを目的とする。本発明の種々の側面は、第1のタイプのスレーブコンピューティングユニットへの第1のタイプの演算の分散、および第2のタイプのスレーブコンピューティングユニットへの第2のタイプの演算の分散に適用することができる。
多くのソフトウェアアプリケーションは、シングルプロセッサコンピュータ上で効率的に動作させることができる。しかしながら、場合によっては、ソフトウェアアプリケーションを動作させるのに非常に多くの演算を実行させる必要があるので、シングルプロセッサコンピュータ上で経済的な時間内に逐次的に実行できない場合がある。例えば、マイクロデバイス設計プロセスのソフトウェアアプリケーションには、何十万または何百万もの入力データ値に、十万以上の演算を実行する必要がある。このタイプのソフトウェアアプリケーションをより高速に動作させるために、多重処理スレッドを同時に使用することができる複数のプロセッサを用いたコンピュータが開発された。これらのコンピュータは、シングルプロセッサコンピュータよりも高速に、複雑なソフトウェアアプリケーションを実行することができるが、これらのマルチプロセッサコンピュータは、購入および維持のコストが非常に高い。マルチプロセッサコンピュータにより、プロセッサは、非常に多くの演算を同時に実行するので、関連する演算の同時実行を協調させるように、特殊なオペレーティングシステムを用いなければならない。さらに、その複数のプロセッサは、メモリのようなコンピュータのリソースに同時にシークアクセスすることができるので、マルチプロセッサコンピュータのバス構造および物理的レイアウトは、シングルプロセッサコンピュータよりも本質的に複雑である。
大型マルチプロセッサコンピュータに関わる問題点および費用を考慮して、単一のマルチプロセッサコンピュータを使用する代わりに、リンクされたシングルプロセッサコンピュータのネットワークが一般的になっている。パーソナルコンピュータのような従来のシングルプロセッサコンピュータのコストは、ここ数年で大幅に減少した。さらに、複数のシングルプロセッサコンピュータの演算をネットワークへリンクするための手法がさらに高性能化され、信頼性も向上している。したがって、現在では、一般的に、数百万ドルのマルチプロセッサコンピュータが、比較的単純で低コストのシングルプロセッサコンピュータのネットワーク、すなわち「ファーム」と置き換えられている。
単一のマルチプロセッサコンピュータから複数のネットワーク化されたシングルプロセッサコンピュータへの転換は、処理されるデータが並列性を有する場合に特に有用である。このタイプのデータにより、データの一部分が、データの他の部分から独立している。すなわち、データの第1の部分の操作には、データの第2の部分についての知識、またはこれへのアクセスが不要である。したがって、一方のシングルプロセッサコンピュータは、データの第1の部分に演算を実行することができ、一方で、他方のシングルプロセッサコンピュータは、データの第2の部分に別の演算を同時に実行することができる。複数のコンピュータを使用して、異なるグループのデータに演算を同時に、すなわち「並列」に実行することによって、大量のデータを高速に処理することができる。
したがって、並列演算の実行に複数のシングルプロセッサコンピュータを使用することが、マイクロデバイスの設計データの分析に非常に有用となり得る。このタイプのデータにより、マイクロ回路の第1の領域内の半導体ゲートのような、設計の一部分を、そのマイクロ回路の第2の領域内の配線ラインのような、設計の別の部分から完全に独立させることができる。したがって、構造体の最小幅の確認を定義する演算のような、設計解析演算を、ゲートごとに一方のコンピュータによって実行することができ、一方で、他のコンピュータは、配線ラインに同じ演算を実行することができる。
複数のネットワーク化されたシングルプロセッサコンピュータを使用することで、並列データに演算を行うソフトウェアアプリケーションの処理効率を大幅に改善するが、それでも多くのソフトウェアアプリケーションは、実行に大量の時間が必要となる場合がある。例えば、複数のシングルプロセッサコンピュータを使用したときであっても、設計解析ソフトウェアアプリケーションでは、超大型集積回路設計を完全に分析するのに数時間、または数日を要する場合がある。したがって、複数のシングルプロセッサコンピュータを用いたコンピューティングシステムの速度および演算効率の改善が、引き続き求められている。
本発明の種々の側面は、複数のコンピュータを使用した、ソフトウェアアプリケーションのデータをより効率的に処理する手法に関する。以下に詳述するように、これらの手法を実装したツールおよび方法の実施形態は、ネットワーク内の異なるタイプのシングルプロセッサコンピュータの中で演算を分散させることによる、マイクロデバイス設計データの分析のための特定の用途を有する。
本発明の種々の実施形態によれば、マルチプロセッサアーキテクチャを有するコンピューティングシステムが提供される。プロセッサは、上位階層レベルの1つ以上のスレーブプロセッサが、下位階層レベルの1つ以上のスレーブプロセッサにタスクを提供するように、階層的に構成される。さらに、下位階層レベルのスレーブプロセッサは、下位のスレーブプロセッサが、上位のスレーブプロセッサよりも適切に数タイプの演算を実行することができるように、上位階層レベルのスレーブプロセッサとは異なる演算能力を有する。本発明のいくつかの実施形態では、例えば、下位のスレーブプロセッサは、上位のスレーブプロセッサよりも大幅に高速に、浮動小数点数計算のような1つ以上の演算を実行することができる。本発明の種々の実装は、マスタ階層レベルに、上位のスレーブプロセッサの演算を協調させるための1つ以上のプロセッサを含み、および/または中間階層レベルに、上位のスレーブプロセッサと下位のスレーブプロセッサとの間の協調を管理するための1つ以上のプロセッサをさらに含む。
本発明の異なる実施形態では、マスタコンピューティングプロセスは、上位のプロセッサ上で動作する1つ以上のコンピューティングプロセスの中で演算セットを分散させる。本発明のいくつかの実装では、これらの演算セットは、並列なものとすることができる(すなわち、演算セットのうちの1つを実行するのに、別の演算セットを先に実行して得られた結果を必要とせず、その逆もまた同じである)。さらに、各演算セットは、下位のスレーブプロセッサによってより適切に実行されるタイプの演算を含むことができる。本発明の種々の実施例では、上位のスレーブプロセッサ上で動作するコンピューティングプロセスは、その演算セット内の演算の実行を開始する。上位のスレーブコンピューティングプロセスが、下位のスレーブプロセッサによってより適切に実行されるタイプの1つ以上の演算を識別すると、この1つまたは複数の演算を、第2のタイプのコンピューティングデバイス上で動作する下位のスレーブプロセッサに提供する。下位のコンピューティングプロセスが、その割り当てられた1つまたは複数の演算を実行した後に、上位のコンピューティングプロセスにその結果を返して、演算セットの実行を完了する。
本発明のこれらの、ならびに他の特徴および側面は、以下の詳細な説明を考慮することによって明らかとなろう。
図1は、本発明の種々の実施形態によって用いることができるコンピュータの概略図である。 図2は、本発明の種々の実施形態によって用いることができるコンピュータのためのプロセッサユニットの概略図である。 図3は、本発明の種々の実施形態による、階層的プロセッサ配列を有するコンピューティングシステムの一実施例を概略的に示す図である。 図4A〜4C並びに図5Aおよび5Bは、本発明の種々の実施形態による、図3に示されたコンピューティングシステムの演算を説明するフローチャートである。 図4A〜4C並びに図5Aおよび5Bは、本発明の種々の実施形態による、図3に示されたコンピューティングシステムの演算を説明するフローチャートである。 図4A〜4C並びに図5Aおよび5Bは、本発明の種々の実施形態による、図3に示されたコンピューティングシステムの演算を説明するフローチャートである。 図4A〜4C並びに図5Aおよび5Bは、本発明の種々の実施形態による、図3に示されたコンピューティングシステムの演算を説明するフローチャートである。 図4A〜4C並びに図5Aおよび5Bは、本発明の種々の実施形態による、図3に示されたコンピューティングシステムの演算を説明するフローチャートである。 図6は、本発明の種々の実施形態による、異なるコンピューティングシステム構成によって得られる演算速度の予想される改善を示す図である。 図7は、本発明の種々の実施形態による、階層的プロセッサ配列を有するコンピューティングシステムの別の実施例を示す図である。 図8は、本発明の種々の実施形態による、階層的プロセッサ配列を有するコンピューティングシステムのさらに別の実施例を示す図である。
(序文)
本発明の種々の実施形態は、実行用の複数のネットワーク化されたコンピューティングデバイスの中で演算を分散させるためのツールおよび方法に関する。したがって、本発明の理解をより容易にするために、複数の異なるスレーブコンピュータにリンクされたマスタコンピュータで構成されたネットワークに用いることができる、コンピューティングデバイスの一実施例を説明する。
(例示的な動作環境)
当業者には明らかなように、本発明の種々の実施例は、それぞれがソフトウェア命令を実行することができる、複数のプログラム可能なコンピューティングデバイスを使用して実装される。その点を考慮して、まず、本発明の種々の実施形態が用いることができるタイプの、汎用のプログラム可能なコンピュータシステムの構成要素および演算を、図1を参照して説明する。
そのために、本発明の種々の実施形態の実装に使用することができるコンピューティングデバイス101の例示的な実施例を図1に示す。図に示されるように、コンピューティングデバイス101は、コンピューティングユニット103を有する。コンピューティングユニット103は、一般的に、プロセッサユニット105と、システムメモリ107とを含む。プロセッサユニット105は、ソフトウェア命令を実行するためのあらゆるタイプの処理デバイスとすることができるが、従来的には、マイクロプロセッサデバイスとなる。システムメモリ107は、読み出し専用メモリ(ROM)109と、ランダムアクセスメモリ(RAM)111とを含むことができる。当業者には明らかなように、読み出し専用メモリ(ROM)109およびランダムアクセスメモリ(RAM)111は、どちらも、プロセッサユニット105が実行するためのソフトウェア命令を格納することができる。
下記に詳述するように、本発明のいくつかの実装は、2つ以上のプロセッサコアを有する処理ユニット105を備えた、コンピューティングデバイス101を用いることができる。その点を考慮して、図2は、本発明の種々の実施形態とともに用いることができる、マルチコアプロセッサユニット105の一実施例を示す図である。図に示されるように、プロセッサユニット105は、複数のプロセッサコア201を含む。各プロセッサコア201は、コンピューティングエンジン203と、メモリキャッシュ205とを含む。当業者には既知であるように、コンピューティングエンジンは、ソフトウェア命令を取り出し、その後、取り出した命令に規定されたアクションを実行するなどの、種々のコンピューティング機能を実行するための論理デバイスを含む。これらのアクションには、例えば、数の加算、減算、乗算、および比較、AND、OR、NOR、およびXORのような論理演算の実行、およびデータの検索が挙げられる。各コンピューティングエンジン203は、その後対応するメモリキャッシュ205を使用して、実行用のデータおよび/または命令の高速な格納および検索を行うことができる。
各プロセッサコア201は、相互接続207に接続される。相互接続207の特定の構成は、プロセッサユニット201のアーキテクチャに基づいて変更することができる。ソニー、東芝、およびIBMによって作製されたセルマイクロプロセッサのような、いくつかのプロセッサユニット201により、相互接続207を相互接続バスとして実装することができる。しかしながら、Advanced Micro Devices(Sunnyvale、California)から入手可能な、OpteronTMおよびAthronTMデュアルコアプロセッサのような、他のプロセッサユニット201により、相互接続207をシステム要求のインタフェースデバイスとして実装することができる。いずれの場合においても、プロセッサコア201は、相互接続207を通じて、入出力インタフェース209およびメモリコントローラ211と通信する。入出力インタフェース209は、プロセッサユニット201とバス113との間の通信インタフェースを提供する。同様に、メモリコントローラ211は、プロセッサユニット201とシステムメモリ107との間の情報交換を制御する。本発明のいくつかの実装により、プロセッサユニット201は、プロセッサコア201によってアクセス可能に共有された、高位のキャッシュメモリのようなさらなる構成要素を含むことができる。
図2には、本発明のいくつかの実施形態によって用いることができる、プロセッサユニット201の一例が示されているが、この実施例は、代表例を示したに過ぎず、限定することを意図したものではないと理解されたい。例えば、以下に詳述するように、本発明の種々の実施形態は、セルプロセッサを備えたコンピューティングデバイスを用いることができる。セルプロセッサは、複数の入出力インタフェース209と、複数のメモリコントローラ211とを用いる。また、セルプロセッサは、9つの異なるタイプの異なるプロセッサコア201を有する。より具体的には、6つ以上の相乗プロセッサ要素(synergistic processor element:SPE)と、1つのパワープロセッサ要素(power processor element:PPE)とを有する。各相乗プロセッサ要素は、128×128ビットのレジスタと、4つの単精度浮動小数点計算ユニットと、4つの整数計算ユニットと、命令とデータの両方を格納する256kBのローカルストアメモリとを備えた、ベクトルタイプのコンピューティングエンジン203を有する。パワープロセッサ要素は、次いで、相乗プロセッサ要素によって実行されたタスクを制御する。その構造のために、セルプロセッサは、高速フーリエ変換(FFT)の計算のようないくつかの数値計算を、従来のプロセッサユニット105よりも著しく高速に実行することができる。
以下、図1に示されるコンピューティングデバイス101の実施例に戻ると、コンピューティングユニット103は、下記に詳述されるように、ネットワーク内の他のデバイスと通信するための1つ以上のネットワークインタフェース115に直接的または間接的に接続される。ネットワークインタフェース115は、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、およびインターネットプロトコル(IP)のような、1つ以上の通信プロトコルに従って、コンピューティングユニット103からのデータおよび制御信号をネットワークメッセージに翻訳する。これらの、および他の従来の通信プロトコルは、当技術分野において既知であるため、ここでは詳細に説明しない。インタフェース123には、例えば無線トランシーバ、モデム、またはイーサネット(登録商標)接続を含む、ネットワークへ接続するためのあらゆる好適な接続エージェント(またはエージェントの組み合わせ)を用いることができる。また、接続エージェントには、高周波伝送、光ケーブル、または導電性ワイヤのような、あらゆる所望の媒体を用いることができる。
処理ユニット105およびシステムメモリ107は、バス113または代替のコミュニケーション構造を通じて、1つ以上の周辺デバイスに直接的または間接的に接続される。例えば、処理ユニット105またはシステムメモリ107は、磁気ハードディスクドライブ117またはリムーバブル磁気光ディスクドライブ119のような、1つ以上のさらなるメモリ記憶装置に直接的または間接的に接続することができる。当然、コンピューティングデバイス101は、磁気ディスクドライブ(図示せず)またはフラッシュメモリカード(図示せず)のような、さらなる、または代替のメモリ記憶装置を含むことができる。処理ユニット105またはシステムメモリ107は、1つ以上の入力デバイス121および1つ以上の出力デバイス123に直接的または間接的に接続することもできる。入力デバイス121は、例えば、キーボード、およびマウス、タッチパッド、デジタイザ、トラックボール、またはジョイスティックのようなポインティングデバイスを含むことができる。出力デバイス123は、例えば、ディスプレイモニタおよびプリンタを含むことができる。
これらの周辺デバイスのうちの1つ以上を、コンピューティングユニット103およびバス113とともに内蔵することができると理解されたい。代替的に、または付加的に、これらの周辺デバイスのうちの1つ以上を、コンピューティングユニット103およびバス113から独立して内蔵し、次いでバス113に(直接的または間接的に)接続することができる。また、本発明の種々の実施形態に従って用いたコンピューティングデバイス101は、図1に示された構成要素のうちのいずれかを含むか、図1に示された構想要素のサブセットだけを含むか、または図1に示されていないいくつかの構成要素を含むか、図1に示される構成要素の代替の組み合わせを含むことができると理解されたい。
また、コンピュータ101の説明は、例示として提供されたに過ぎず、本発明の代替の実施形態の用途の範囲または機能性に関して、いかなる限定も示唆することを意図したものではないと理解されたい。
(演算セット)
上述のように、本発明の種々の側面は、マルチプロセッサアーキテクチャを備えたコンピューティングシステムによる、演算セットの実行に関する。したがって、本発明の異なる実施形態は、様々な異なるタイプのソフトウェアアプリケーションとともに用いることができる。しかしながら、本発明のいくつかの実施形態は、マイクロ回路のようなマイクロデバイスを表す設計データをシミュレーション、検証、または修正するための演算を実行する、ソフトウェアアプリケーションを動作させるのに特に有用である。マイクロ回路デバイスの設計および作製には、「設計フロー」を通じて多くのステップを伴う。これらのステップは、マイクロ回路のタイプ、複雑度、設計チーム、およびマイクロ回路の製造者または製造工場に大きく依存する。いくつかのステップは、全ての設計フローに共通である。最初に、設計仕様が、一般的にハードウェア設計言語(HDL)で論理的にモデル化される。次いで、ソフトウェアおよびハードウェア「ツール」が、ソフトウェアシミュレータおよび/またはハードウェアエミュレータを動作させることによって、設計フローの種々の段階で設計を検証し、エラーを補正する。
論理設計が十分であると判断されると、合成ソフトウェアによって物理的設計データに変換される。物理的設計データは、例えば、製造工場でのフォトリソグラフィプロセスにおいて、所望のマイクロ回路デバイスを作製するのに使用されるマスク上に書き込まれる、幾何パターンを表すことができる。物理的設計情報は、デバイスの適切な演算のための設計仕様および論理設計を正確に組み込むことが非常に重要である。さらに、物理的設計データを用いて、製造工場で使用されるマスクが作製されるので、データは、製造工場の要件に適合しなければならない。各製造工場は、それらのプロセス、装置、および手法との適応性のために、それ自体の物理的設計パラメータを規定する。したがって、設計フローには、設計ルールチェックのプロセスを含むことができる。このプロセス中に、回路設計の物理的レイアウトが設計ルールと比較される。製造工場によって規定されるルールに加えて、設計ルールチェックのプロセスは、試験チップから得られたもの、作業における知識等のような他の設計ルールを、回路設計の物理的レイアウトと照合することもできる。
設計者が検証ソフトウェアアプリケーションを使用して、回路設計の物理的レイアウトが設計ルールに適合することを検証すると、その設計者は、次いで、回路設計の物理的レイアウトを修正して、物理的レイアウトがフォトリソグラフィプロセス中に生成する画像の解像度を向上させることができる。これらの解像度向上技術(resolution enhancement technique:RET)には、例えば、光近接効果補正(optical proximity correction:OPC)を使用した、またはサブ解像度アシストフィーチャ(sub−resolution assist feature:SRAF)を加えることによる、物理的レイアウトの修正が挙げられる。回路設計の物理的レイアウトが解像度向上技術を使用して修正されると、次いで、設計ルールチェックを修正したレイアウトについて実行され、所望の程度の解像度が得られるまでプロセスを繰り返すことができる。このようなシミュレーションおよび検証ツールの実施例には、McSherryらの米国特許第6,230,299号(2001年5月8日発行)、McSherryらの米国特許第6,249,903号(2001年6月19日発行)、Eisenhoferらの米国特許第6,339,836号(2002年1月15日発行)、Bozkusらの米国特許第6,397,372号(2002年5月28日発行)、Andersonらの米国特許第6,415,421号(2002年7月2日発行)、および、Andersonらの米国特許第6,425,113号(2002年7月23日発行)に記載されたものが挙げられ、それぞれ参照することによりその全体が本願明細書に組み込まれる。
新しい集積回路の設計は、数百万のトランジスタ、抵抗、コンデンサ、または他の電気的構造体の、論理回路、メモリ回路、プログラム可能なフィールドアレイ、および他の回路デバイスへの相互接続を含む場合がある。コンピュータが、これらの大きなデータ構造をより容易に作製および分析できるように(および人間ユーザが、これらのデータ構造をより適切に理解できるように)するために、該構造は、しばしばより小さなデータ構造に階層的に構成され、一般的に「セル」と称される。したがって、マイクロプロセッサまたはフラッシュメモリの設計の場合、単一のビットを格納するためのメモリ回路を構成する全てのトランジスタを、単一の「ビットメモリ」セルに分類することができる。したがって、各トランジスタを個々に列挙しなければならないというのではなく、単一ビットメモリ回路を構成するトランジスタ群を選択的に参照して単一のユニットとして操作することができる。同様に、大型の16ビットのメモリレジスタ回路を表す設計データを、単一のセルに分類することができる。この高位の「レジスタセル」は、その結果、ビットメモリセルのそれぞれとの間でデータを転送するための入出力回路のような、他の雑回路(miscellaneous circuity)を表す設計データとともに、16ビットのメモリセルを含むことができる。同様に、128kBのメモリアレイを表す設計データは、その結果、レジスタセルのそれぞれとの間でデータを転送するための入出力回路のような、それ自体の雑回路を表す設計データとともに、わずか64,000個のレジスタセルの組み合わせとして簡潔に説明することができる。
マイクロ回路の設計データを階層的セルに分類することによって、大きなデータ構造を、より高速かつ効率的に処理することができる。例えば、回路設計者は、一般的に、設計を分析して、設計に表された各回路フィーチャが、その設計からミクロ回路を製造する製造工場によって規定された設計ルールに適合することを確認する。上述の実施例により、設計ルールチェックのプロセスは、128kBのメモリアレイ全体の各フィーチャを分析するのではなく、単一のビットセルのフィーチャを分析すればよい。チェックの結果は、その後単一のビットセルの全てに適用することができる。単一のビットセルの1つのインスタンスが設計ルールに適合することが確認されると、設計ルールチェックのプロセスは、その後、単純に新たな雑回路(それ自体を1つ以上の階層的セルで形成することができる)のフィーチャを分析することによって、レジスタセルの分析を完了することができる。このチェックの結果は、その後レジスタセルの全てに適用することができる。レジスタセルの1つのインスタンスが設計ルールに適合することが確認されると、設計ルールチェックのソフトウェアアプリケーションは、単純に、メモリアレイ内の新たな雑回路のフィーチャを分析することによって、128kBメモリアレイ全体の分析を完了することができる。したがって、大きなデータ構造の分析を、データ構造を構成する比較的少数のセルの分析に圧縮することができる。
階層的構成に加えて、回路設計を構成するデータは、並列性を有することもできる。すなわち、マイクロ回路設計のいくつかの部分は、設計の他の部分から独立させることができる。例えば、16ビットの比較器のための設計データを含むセルは、レジスタセルに依存しない。「高位の」セルは、比較器セルおよびレジスタセルの両方を含むが、一方のセルは他方のセルを含まない。その代わりに、これらの2つの低位のセル内のデータは並列である。これらのセルが並列なので、同じ設計ルールチェックの演算を、競合することなく、同時に両方のセルに実行することができる。したがって、複数のコンピューティングスレッドを動作させるマルチプロセッサコンピュータでは、第1のコンピューティングスレッドは、設計ルールチェックの演算をレジスタセルに実行し、一方で、別個の第2のコンピューティングスレッドは、同じ設計ルールチェックの演算を比較器セルに実行することができる。
プロセスデータと同様に、マイクロ回路分析のソフトウェアアプリケーションによって実行される演算も、並列性のある階層的構成を有することができる。演算の並列性の一実施例を示すために、マイクロ回路設計の物理的レイアウトデータに対する設計ルールチェックの演算を実装した、ソフトウェアアプリケーションを説明する。上述したように、このタイプのソフトウェアツールは、マイクロ回路の幾何学的フィーチャを定義するデータに演算を実行する。例えば、トランジスタゲートは、ポリシリコン材料の領域と、拡散材料の領域との交差点に作製される。したがって、リソグラフィプロセスのトランジスタゲートの形成に使用される物理的レイアウトの設計データは、ポリシリコン材料の層内のポリゴンと、拡散材料の層内の重複したポリゴンとで構成される。
一般的に、マイクロ回路の物理的設計データは、「描画層」設計データおよび「導出層」設計データの、2つの異なるタイプのデータを含む。描画層データは、マイクロ回路を形成する材料の層内に描画されるポリゴンを表す。描画層データは、通常は、金属層、拡散浸透層、およびポリシリコン層内のポリゴンを含む。導出層は、描画層データおよび他の導出層データの組み合わせで構成されたフィーチャを含む。例えば、上述のトランジスタゲートにより、ゲートを表す導出層の設計データは、ポリシリコン材料層内のポリゴンと、拡散材料層内のポリゴンとの交差点から導出される。
一般的に、設計ルールチェックのソフトウェアアプリケーションは、設計データ値が規定のパラメータに適合するかどうかを確認する「チェック」演算と、導出層データを作製する「導出」演算との、2つのタイプの演算を実行する。例えば、トランジスタゲートの設計データは、以下の導出演算によって作製することができる。
gate=diff AND poly
この演算の結果は、拡散浸透層のポリゴンとポリシリコン層のポリゴンとの全ての交差点を識別する。同様に、p型トランジスタゲートは、拡散浸透層をn型材料でドープすることによって形成され、以下の導出演算によって識別される。
pgate=nwell AND gate
この演算の結果は、拡散浸透層内のポリゴンをn型材料でドープした、全てのトランジスタゲート(すなわち、拡散浸透層のポリゴンとポリシリコン層のポリゴンとの交差点)を識別する。
チェック演算は、次いでデータ設計値のパラメータまたはパラメータ範囲を定義する。例えば、ユーザは、別の配線ラインから1ミクロン以内にいかなる金属配線ラインも存在しないようにさせたい場合がある。このタイプの分析は、以下のチェック演算によって実行することができる。
external metal<1
この演算の結果は、金属層の設計データ内の別のポリゴンに対して1ミクロンよりも近い、金属層の設計データ内の各ポリゴンを識別する。
また、上述の演算は、描画層のデータを用いているが、チェック演算は、導出層のデータにも実行することができる。例えば、ユーザが、別のゲートの1ミクロン以内にいかなるトランジスタゲートも存在させないようにしたい場合、設計ルールチェックのプロセスは、以下のチェック演算を含むことができる。
external gate<1
この演算の結果は、別のゲートから1ミクロン未満に位置決めされたゲートを表す全てのゲートの設計データを識別する。しかしながら、このチェック演算は、描画層の設計データからゲートを識別する導出演算が実行されるまで、実行することができないものと理解されたい。
多くのシミュレーションおよび検証演算は、整数計算を使用することによって実行することができる。例えば、上述した設計ルールチェックの演算は、整数計算を使用して実行することができる。しかしながら、いくつかのシミュレーションおよび検証演算は、浮動小数点数計算を使用して、より効率的に実行される。光近接効果補正(OPC)演算は、一般的に浮動小数点数計算を使用して実行される、シミュレーションおよび検証演算の1つのカテゴリの実施例である。
マイクロ回路がさらに小さいフィーチャを含むように進化しているので、現在、多くの回路設計には、リソグラフィプロセス中にそのようなフィーチャを作製するのに使用される光波長よりも小さいフィーチャが必要である。しかしながら、このタイプのサブ波長による撮像は、リソグラフィプロセス中にしばしば歪を生じる。これらの歪に対処するために、上述のように、補正アルゴリズムを用いて回路設計の物理的レイアウトを修正する。このプロセスは、概して光近接効果補正(OPC)と呼ばれる。したがって、光近接効果補正という用語は、本願明細書で使用する場合、リソグラフィプロセス中のレイアウトの再生精度を向上させる、回路設計の物理的レイアウトの改良を含む。しかしながら、加えて、光近接効果補正という用語は、本願明細書で使用する場合、例えば独立したフィーチャおよび/または急激な近接遷移時のフィーチャの印刷のための、リソグラフィプロセスの信頼性を向上させる、物理的レイアウトの改良も含む。
光近接効果補正中に、物理的レイアウトのポリゴンエッジは、小さいセグメントに分割される。これらのセグメントは、次いで移動されて、さらなる小さいポリゴンを戦略的位置において物理的レイアウトに追加することができる。次いで、リソグラフィプロセスがシミュレートされ、修正または「補正」されたレイアウトによって作製された画像が、以前のレイアウト画像に対する修正によって作製された画像よりも適切であるかどうかを判断する。このプロセスは、次いで、修正されたレイアウトのシミュレーションおよび検証ツールが、実際のリソグラフィプロセス中に、満足な画像解像度をもたらす修正されたレイアウトを生成するまで繰り返される。
一般的に、光近接効果補正手法は、ルールベースか、またはモデルベースに分類される。ルールベースの光近接効果補正を用いて、レイアウトの改良は、特定のルールに基づいて生成される。例えば、小さいセリフ(serif)を、レイアウト内の各凸面(すなわち、外方に突出した)90°コーナー部に自動的に追加することができる。モデルベースの光近接効果補正は、概して、ルールベースの光近接効果補正よりもかなり複雑である。モデルベースの光近接効果補正により、試験レイアウトから得られたソグラフィプロセスのデータを使用して、リソグラフィパターニング作用の数学モデルが作製される。シミュレーションおよび検証ツールは、次いで、適切なモデルを使用して、リソグラフィプロセス中に補正されるレイアウトによって作製される画像を計算する。その後、補正中のレイアウトフィーチャは、(モデルを使用して計算した)そのレイアウトの画像が、所望のレイアウト画像に十分近くなるまで繰り返し操作される。したがって、いくつかのモデルベースの光近接効果補正アルゴリズムには、エッジおよびコーナー部の予めシミュレートされた結果の加重和を計算することによる、複数のリソグラフィプロセスの影響のシミュレーションが必要となる場合がある。光近接効果補正アルゴリズムの一実施例は、Nick Cobbによる「Fast Optical and Process Proximity Correction Algorithms for Integrated Circuit Manufacturing」(博士論文、University of California、Barkley、1998)に記載されている。
当業者には明らかなように、ルールベースの光近接効果補正プロセスの実行は、設計ルールチェックの実行よりも計算的に集約的であり、モデルベースの光近接効果補正の実行は、さらに集約的である。さらに、光近接効果補正プロセスに必要とされる計算は、通常は設計ルールチェックのプロセスに用いられる計算よりも高度である。シミュレートされたリソグラフィ画像の取得は、例えば、異なる角度に配列された複数の別個のコヒーレント光源とした、リソグラフィ光源のモデル化を伴う場合がある。このような各コヒーレント光源の場合、シミュレートされた画像は、高速フーリエ変換(FFT)を計算して、リソグラフィプロセスで使用されるレンズの動作をモデル化することによって得られる。次いで、これらのシミュレートされた画像が合計されて、リソグラフィプロセスによって生成される画像が得られる。これらの演算は、概して、整数計算を使用して実行するよりも浮動小数点計算を使用して実行したほうが効率的に実行される。同様に、光近接効果補正を検証する演算も、概して、整数計算を使用して実行するよりも浮動小数点計算を使用して実行したほうが効率的に実行される。
結果として、従来のコンピューティングシステムは、従来のシミュレーションおよび検証ツールを実装するのが困難であるが、これは、これらのツールが、設計ルールチェックのようなプロセスのための整数計算と、光近接効果補正法のようなプロセスのための浮動小数点数計算との両方を用いる場合があるからである。コンピューティングシステムが複数のシングルプロセッサコンピュータのネットワークを用いた場合であっても、計算に用いられるプロセッサは、一般的に、浮動小数点数計算よりも整数計算に適する。したがって、整数計算を用いたプロセスを効率的に実装することができる。しかしながら、これらのコンピュータシステムが、浮動小数点数計算を用いてプロセスを実装し始めると、それらの演算が、許容できないほどに遅くなる場合がある。
(階層的プロセッサのコンピューティングシステムの構成)
図3は、本発明の種々の実施形態による、階層的プロセッサのコンピューティングシステム301を示す図である。以下に詳述するように、この階層的プロセッサコンピューティングシステム301を用いて整数計算および浮動小数点数計算の両方を計算する、シミュレーションおよび検証ツールを効率的に実装することができる。図3に示されるように、階層的プロセッサのコンピューティングシステム301は、マスタコンピューティングモジュール303と、複数の上位のスレーブコンピューティングモジュール305A〜305αとを含む。階層的プロセッサコンピューティングシステム301は、またディスパッチャコンピューティングモジュール307と、複数の下位のスレーブコンピューティングモジュール309A〜309βとを含む。
本発明の種々の実装により、上位のスレーブコンピューティングモジュール305A〜305αのそれぞれは、1つ以上のプロセッサユニット103を使用して、コンピューティングデバイス101のようなコンピュータによって実装することができる。例えば、本発明のいくつかの実施形態により、上位のスレーブコンピューティングモジュール305A〜305αのそれぞれは、Advanced Micro Devices(Sunnyvale、California)から入手可能な、OpteronTMシングルコアプロセッサのような従来のシングルコアプロセッサを使用して、従来のサーバコンピュータによって実装することができる。本発明のさらに他の実装により、上位のスレーブコンピューティングモジュール305A〜305αのうちの1つ以上は、複数のシングルコアプロセッサを有するサーバコンピュータによって実装することができる。例えば、本発明のいくつかの実施形態により、単一のサーバコンピュータ101は、複数のOpteronTMシングルコアプロセッサを有することができる。その結果、各OpteronTMシングルコアプロセッサを使用して、上位のスレーブコンピューティングモジュール305のインスタンスを実装することができる。
本発明のさらに他の実装は、上位のスレーブコンピューティングモジュール305のインスタンス化を実装するように、マルチコアプロセッサを備えた、それぞれのプロセッサを備えた、または代替的に、それぞれのコアが使用されるコンピュータを用いることができる。例えば、本発明のいくつかの実施形態により、コンピューティングデバイス101は、単一のOpteronTMデュアルコアプロセッサを用いて、上位のスレーブコンピューティングモジュール305の単一のインスタンス化を実装することができる。しかしながら、本発明のさらに他の実施形態により、コンピューティングデバイス101は、単一のOpteronTMデュアルコアプロセッサを使用して、上位のスレーブコンピューティングモジュール305の2つの別個のインスタンス化を実装することができる(すなわち、別個のインスタンス化が、OpteronTMデュアルコアプロセッサの各コアによって実装される)。当然、上述のように、上位のスレーブコンピューティングモジュール305の複数のインスタンス化の実装に使用されるコンピューティングデバイス101は、複数のシングルコアプロセッサ、マルチコアプロセッサ、またはそれらの組み合わせを有することができる。
本発明の種々の実施形態により、マスタコンピューティングモジュール303およびディスパッチャコンピューティングモジュール307のそれぞれは、上位のスレーブコンピューティングモジュール305A〜305αとは別個のコンピューティングデバイス101によって実装することができる。例えば、本発明のいくつかの実施形態により、マスタコンピューティングモジュール303は、単一のOpteronTMシングルコアプロセッサまたはOpteronTMデュアルコアプロセッサを有する、コンピューティングデバイス101によって実装することができる。ディスパッチャコンピューティングモジュール307は、単一のOpteronTMシングルコアプロセッサまたはOpteronTMデュアルコアプロセッサを有する、別のコンピューティングデバイス101によって実装することができる。本発明のさらに他の実施形態により、マスタコンピューティングモジュール303およびディスパッチャコンピューティングモジュール307の一方または両方を、上位のスレーブコンピューティングモジュール305と同じコンピューティングデバイス101、またはプロセッサユニット201を使用して実装することができる。
例えば、マスタコンピューティングモジュール303は、マルチプロセッサコンピューティングデバイスによって実装することができる。1つのプロセッサユニット201を使用して、マスタコンピューティングモジュール303のインスタンス化を動作させることができ、一方で、残りのプロセッサユニット201を使用して、それぞれ上位のスレーブコンピューティングモジュール305のインスタンス化を実装することができる。代替的に、マルチコアプロセッサユニット201内の単一のコアを使用して、マスタコンピューティングモジュール303のインスタンス化を動作させることができ、一方で、残りのコアを使用して、それぞれ上位のスレーブコンピューティングモジュール305のインスタンス化を実装することができる。本発明のいくつかの実施形態により、マスタコンピューティングモジュール303、ディスパッチャコンピューティングモジュール307、またはその両方は、例えばマルチスレッド技術を使用して、シングルコアプロセッサユニット201(またはマルチコアプロセッサユニット201の単一のコア)を、上位のスレーブコンピューティングモジュール305のうちの1つ以上のインスタンス化と共有することもできる。
本発明の種々の実施例により、下位のスレーブコンピューティングモジュール309A〜309βのそれぞれは、上位のスレーブコンピューティングモジュール305A〜305αの実装に使用されるプロセッサユニット103とは異なる機能的能力を有する1つ以上のプロセッサユニット103を使用して、コンピューティングデバイス101のようなコンピュータによって実装することができる。例えば、上述のように、上位のスレーブコンピューティングモジュール305A〜305αは、Advanced Micro Devicesから入手可能な、いくつかのタイプのOpteronTMプロセッサを使用して実装することができる。従来技術で既知のように、このタイプのプロセッサは、浮動小数点数計算よりも高速に整数計算を実行するように構成される。したがって、本発明の種々の実施形態により、下位のスレーブコンピューティングモジュール309A〜309βのうちの1つ以上は、International Business Machines Corporation(Armonk、New York)から入手可能な、セルプロセッサを使用して実装することができる。上記に詳述したように、このタイプのプロセッサは、OpteronTMプロセッサよりも高速に浮動小数点数計算を実行するように構成される。
マスタコンピューティングモジュール303、上位のスレーブコンピューティングモジュール305A〜305α、ディスパッチャコンピューティングモジュール307、および下位のスレーブコンピューティングモジュール309A〜309βのそれぞれは、UNIX(登録商標)オペレーションシステムを一部変更したもの、Microsoft Corporation(Redmond、Washington)から入手可能なMicrosoft Windows(登録商標)オペレーティングシステムを一部変更したもの、または両者を組み合わせたものを使用して作製されたコンピューティングプロセスとすることができる。当然、本発明のさらに他の実施形態により、あらゆるソフトウェアのオペレーティングシステムまたはソフトウェアのオペレーティングシステムの組み合わせを使用して、マスタコンピューティングモジュール303、上位のスレーブコンピューティングモジュール305A〜305α、ディスパッチャコンピューティングモジュール307、および下位のスレーブコンピューティングモジュール309A〜309βのうちのいずれかを実装できるものと理解されたい。
本発明の種々の実施例により、マスタコンピューティングモジュール303、上位のスレーブコンピューティングモジュール305A〜305α、ディスパッチャコンピューティングモジュール307、および下位のスレーブコンピューティングモジュール309A〜309βのそれぞれは、ネットワーク311を介して相互接続される。ネットワーク311は、既知の伝送制御プロトコル(TCP)およびインターネットプロトコル(IP)のような、あらゆる通信プロトコルを使用することができる。ネットワーク311は、従来の伝導性ワイヤを使用した有線ネットワーク、無線ネットワーク(例えば、媒体に無線周波数、または赤外線周波数の信号を使用したもの)、光ケーブルネットワーク、またはそれらを組み合わせたものとすることができる。しかしながら、ネットワーク311全体の通信速度は、コンピューティングモジュール303〜309の演算を遅延させないように、十分高速でなければならないと理解されたい。
(階層的プロセッサのコンピューティングシステムの演算)
以下、本発明の種々の実施形態による階層的プロセッサのコンピューティングシステム301の演算を図4A〜4Cおよび図5に示されたフローチャートを参照して説明する。最初に、ステップ401においてマスタコンピューティングモジュール303、および上位のスレーブコンピューティングモジュール305A〜305αのそれぞれは、階層的プロセッサのコンピューティングシステム301上で動作するターゲットソフトウェアアプリケーションのインスタンスを起動する。上述のように、本発明のいくつかの実施例を用いて、マイクロ回路設計を分析および修正するために、シミュレーションおよび検証ソフトウェアアプリケーションを動作させることができる。例えば、本発明のいくつかの実施形態を用いて、Mentor Graphics Corporation(Wilsonville、Oregon)から入手可能な、CALIBREマイクロ回路設計分析用のソフトウェアアプリケーションを動作させることができる。次に、ステップ403で、マスタコンピューティングモジュール303は、ディスパッチャコンピューティングモジュール307の演算を起動する。しかしながら、本発明のいくつかの代替の実施形態により、ディスパッチャコンピューティングモジュール307の演算は、ユーザによって手動で開始することもできる。次に、ステップ405で、ディスパッチャコンピューティングモジュール307は、下位のスレーブコンピューティングモジュール309A〜309βのそれぞれに、ターゲットソフトウェアアプリケーションのインスタンスを起動させる。
ステップ407で、上位のスレーブコンピューティングモジュール305A−305αのそれぞれが、ターゲットソフトウェアアプリケーションのインスタンス化を動作させ始めることができる状態になると、準備ができたことおよびそのネットワークアドレスをマスタコンピューティングモジュール303に報告する。同様に、ステップ409で、下位のスレーブコンピューティングモジュール309A〜309βのそれぞれが、ターゲットソフトウェアアプリケーションのインスタンス化を動作させ始めることができる状態になると、準備ができたことおよびそのネットワークアドレスをディスパッチャコンピューティングモジュール307に報告する。ステップ411で、下位のスレーブコンピューティングモジュール309A〜309βのそれぞれが、準備ができたことおよびそのネットワークアドレスをディスパッチャコンピューティングモジュール307に報告すると、ディスパッチャコンピューティングモジュール307は、準備ができたことおよびそのネットワークアドレスをマスタコンピューティングモジュール303に報告する。次に、ステップ413で、マスタコンピューティングモジュール303は、ディスパッチャコンピューティングモジュール307のネットワークアドレスを、上位のスレーブコンピューティングモジュール305A〜305αのそれぞれに提供する。
次に、ステップ415で、マスタコンピューティングモジュール303は、実行のために、個々の上位のスレーブコンピューティングモジュール305A〜305αへの複数のセット演算の割り当てを開始する。より具体的には、マスタコンピューティングモジュール303は、ターゲットソフトウェアアプリケーションが実行すべき、次のセット演算にアクセスする。それは、演算セットの実行に必要な関連するデータとともに、この演算セットを、次の利用可能な上位のスレーブコンピューティングモジュール305に提供する。このプロセスは、上位のスレーブコンピューティングモジュール305A〜305αの全てが占有される(または、実行すべきさらなる演算が存在しなくなる)まで繰り返される。以下、上位のスレーブコンピューティングモジュール305A〜305αの演算、ディスパッチャコンピューティングモジュール307、および下位のスレーブコンピューティングモジュール309A〜309βの演算を、図5A〜5Bに示されたフローチャートを参照して説明する。
ステップ501において、上位のスレーブコンピューティングモジュール305は、演算セット内の演算を実行し、その演算セットは、上位のスレーブコンピューティングモジュール305による実行により適切な、第1のタイプのものである。例えば、上述のように、上位のスレーブコンピューティングモジュール305A〜305αは、浮動小数点数計算よりも整数計算を効率的に実行するプロセッサユニット201を使用して実装することができる。したがって、演算セットが、設計ルールチェック演算のような、整数計算を主に伴う演算を含む場合、これらの演算は、該演算がマスタコンピューティングモジュール303によって割り当てられた、上位のスレーブコンピューティングモジュール305によって実行される。
次に、ステップ503において、上位のスレーブコンピューティングモジュール305は、演算内の1つ以上の演算を識別し、この演算は、下位のスレーブコンピューティングモジュール309による実行により適切な、第2のタイプのものである。例えば、上述のように、下位のスレーブコンピューティングモジュール309A〜309βは、上位のスレーブコンピューティングモジュール305A〜305αの実装に使用されるプロセッサユニット201よりも効率的に、浮動小数点数計算を実行するプロセッサユニット201を使用して実装することができる。したがって、演算セットが、光近接効果補正演算または光近接効果補正の検証演算のような、浮動小数点数計算を主に伴う演算を含む場合、これらの演算は、該演算がマスタコンピューティングモジュール303によって割り当てられた、上位のスレーブコンピューティングモジュール305によって識別される。
下位のスレーブコンピューティングモジュール309による実行により適切な、第2のタイプのものである、演算内の1つ以上の演算の識別に応えて、ステップ505で、上位のスレーブコンピューティングモジュール305は、利用可能な下位のスレーブコンピューティングモジュール309のネットワークアドレスに対する問い合わせを、ディスパッチャコンピューティングモジュール307に送信する。それに応じて、ステップ507で、ディスパッチャコンピューティングモジュール307は、他の演算の実行に現在占有されていない下位のスレーブコンピューティングモジュール309のネットワークアドレスを、上位のスレーブコンピューティングモジュール305に送信する。ディスパッチャコンピューティングモジュール307は、ラウンドロビンアルゴリズムのようなあらゆる所望のアルゴリズムを使用して、利用可能な下位のスレーブコンピューティングモジュール309A〜309βを選択することができる。
次に、ステップ509において、識別した第2のタイプの演算の実行に利用可能な、下位のスレーブコンピューティングモジュール309への転送を開始する。ステップ511において、下位のスレーブコンピューティングモジュール309は、次いで、転送された演算を実行し、ステップ513において、転送された演算を実行した結果を、上位のスレーブコンピューティングモジュール305へ返す。本発明の種々の実施例により、上位のスレーブコンピューティングモジュール305は、下位のスレーブコンピューティングモジュール309からの結果を無制限に待ち続けることができる。しかしながら、本発明の他の実施例により、上位のスレーブコンピューティングモジュール305は、下位のスレーブコンピューティングモジュール309からの結果を、ある閾値時間だけしか待たないようにすることもできる。この時間を過ぎると、上位のスレーブコンピューティングモジュール305は、下位のコンピューティングモジュール309が、演算に失敗して演算結果を返さないものと判断して、転送された演算をそれ自体で実行し始める。
また、本発明のいくつかの実施例により、上位のスレーブコンピューティングモジュール305は、下位のスレーブコンピューティングモジュール309からの結果を、単純に待機モードで待つこともできる。しかしながら、本発明の他の実施例により、上位のスレーブコンピューティングモジュール305は、マルチタスク手法を用いて、マスタコンピューティングモジュール303によって割り当てられた第2の演算セットを実行し始め、一方で、第1の演算セットの実行が完了するまで、下位のスレーブコンピューティングモジュール309からの結果を待つことができる。
ステップ501〜511は、演算セット内の全ての演算が実行されるまで繰り返される。ステップ515で、演算セット内の全ての演算が実行されると、上位のスレーブコンピューティングモジュール305は、演算セットの実行によって得られた結果を、マスタコンピューティングモジュール303に返す。
ここで図4に戻ると、ステップ417において、マスタコンピューティングモジュール303は、上位のスレーブコンピューティングモジュール305から演算結果を受信する。ステップ419で、マスタコンピューティングモジュール303は、実行する必要のある演算セットがさらにあるかどうかを判断する。実行する必要がある場合は、次いで、次の演算セットに対してステップ415および417が繰り返される。実行する必要のある演算が無くなった場合、プロセスは終了する。
上述の説明から分かるように、階層的プロセッサ配列を使用した本発明の種々の実施例は、従来のマルチプロセッサコンピューティングシステムよりも著しく高速な実行時間を提供することが明らかとなろう。例えば、設計回路シミュレーションおよび検証ソフトウェアアプリケーションにより、セルマイクロプロセッサは、光学近接制御に使用される画像シミュレーションの演算のような、いくつかの演算の実行に対して、従来のOpteronTMプロセッサよりも約100倍高速となり得る。一方で、セルプロセッサは、設計ルールチェック演算のような他のタイプの演算に対しては、従来のOpteronTMプロセッサのように遅くなる場合がある(例えば、0.9倍しか速くならない)。コンピューティングシステム301内に異なるタイプのプロセッサユニット201を用いることによって、また、各演算を、その演算の実行の最も適切なプロセッサユニット201のタイプとを一致させることによって、本発明の種々の実装は、均一なプロセッサコンピューティングシステムよりも非常に高速なプロセスの演算を実行することができる。
下位のスレーブコンピューティングモジュール309A〜309βに対する、上位のスレーブコンピューティングモジュール305A〜305αの比率は、コンピューティングシステム301によって実行されることが予想される演算のタイプに依存し得るものと理解されたい。例えば、上記に詳述したように、本発明のいくつかの実施形態は、OpteronTMプロセッサおよびセルプロセッサを使用して、画像シミュレーションの演算を含むシミュレーションおよび検証演算を実行する、コンピューティングシステム301を実装することができる。図6は、コンピューティングシステム301内に用いられるセルプロセッサの数に基づいて、シミュレーション演算に対するシミュレーション演算の異なる割合に対して得ることができる、速度の向上を評価した図である。より具体的には、本図のy軸は、従来の分散処理システム上での集積回路設計の分析プロセスの評価されたランタイムに対する、本発明の実施形態による典型的な集積回路設計の分析プロセスの評価されたランタイムの比率を示し、x軸は、コンピューティングシステム301内に用いられるセルプロセッサの数に対応する。それで、各曲線は、分析プロセスの整数演算に対する、浮動小数点数演算の比率に対応する。
(代替のコンピューティングシステム)
図3は、本発明の種々の実施形態に従って実装することができる、階層的プロセッサのコンピューティングシステムの一実施例を示しているが、様々な他のコンピューティングシステムを、本発明の代替の実施態様に従って実装できるものと理解されよう。例えば、図7は、第2のマスタコンピューティングモジュール703と、第2のセットの上位のスレーブコンピューティングモジュール705A−705αとを含む、コンピューティングシステム701を示す図である。本図に示されるように、第2のマスタコンピューティングモジュール703、および第2のセットの上位のスレーブコンピューティングモジュール705A〜705αは、ディスパッチャコンピューティングモジュール307、および下位のスレーブコンピューティングモジュール309A〜309βのユーザを共有する。このタイプ配列は、例えば、下位のスレーブコンピューティングモジュール309A〜309βの実装に使用されたプロセッサユニット201が、比較的高価である場合、および/または散発的に使用される場合、該ユニットが、2つ以上のセットのマスタコンピューティングモジュールおよび上位のスレーブコンピューティングモジュールの中で共有される場合に有用となり得る。
一方で、図8は、ディスパッチャコンピューティングモジュール307を完全に省略した、コンピューティングシステム801を示す図である。省略の代わりに、各上位のスレーブコンピューティングモジュール305は、対応する下位のスレーブコンピューティングモジュール309の独占的使用を割り当てる。このタイプの構成は、例えば、下位のスレーブコンピューティングモジュール309A〜309βの実装に使用されるプロセッサユニット201が、比較的廉価である場合に、および/または非常に頻繁に使用されるので、所望の演算速度を得るのに必要な最適な数の下位のスレーブコンピューティングモジュール309A〜309βが、上位のスレーブコンピューティングモジュール305A〜305αの数に一致する場合に有用となり得る。当然、異なるタイプのプロセッサの階層的配列を使用した、さらに他の構成が、当業者には明らかとなろう。
(結論)
本発明は、添付の特許請求の範囲を用いて定義されているが、これらの請求項は、本発明が、本願明細書に記載された要素およびステップのあらゆる組み合わせ、または部分的な組み合わせを含むことを意図する場合があるという点においては例示的なものである。したがって、本発明を定義するための多数の代替的な組み合わせが存在し、それらは、本願明細書から、説明、請求項、および図面を含む1つ以上の要素を、種々の組み合わせで、または部分的な組み合わせで組み込んでいる。本願明細書に照らして、当業者は、本発明の代替の側面の組み合わせを、単独で、または本願明細書に定義された1つ以上の要素またはステップと組み合わせて、本発明を改良または変更したものとして、または本発明の一部として用いることができ、本願明細書に含まれる本発明の記述は、そのような改良および変更の全てを網羅することを意図したものであると理解されよう。

Claims (16)

  1. 演算実行の方法であって、
    マスタプロセスで演算セットを受信することであって、第1の演算セットは、実行すべき1つ以上の演算を含む、ことと、
    該演算セットを、該マスタプロセスから、第1のプロセッサタイプのプロセッサ上で実行する第1のスレーブプロセスへ転送することと、
    該演算セット内の少なくとも1つの演算を、該第1のスレーブプロセスから、第2のプロセッサタイプのプロセッサ上で実行する第2のスレーブプロセスへ転送することと、
    該少なくとも1つの演算を、該第2のスレーブプロセスによって実行して、演算結果を生成することと、
    該演算結果を、該第2のスレーブプロセスから該第1のスレーブプロセスへ転送することと
    を含む、演算実行の方法。
  2. 前記第1のプロセッサタイプのプロセッサは、第1のカテゴリの演算を実行するように最適化される、請求項1に記載の演算実行の方法。
  3. 前記第1のカテゴリの演算は、整数計算を含む、請求項2に記載の演算実行の方法。
  4. 前記第2のプロセッサタイプのプロセッサは、第2のカテゴリの演算を実行するように最適化される、請求項1に記載の演算実行の方法。
  5. 前記第2のカテゴリの演算は、浮動小数点数計算を含む、請求項4に記載の演算実行の方法。
  6. 前記演算セットは、第1の演算と、第2の演算とを含み、
    該第1の演算を前記第2のスレーブプロセスへ転送することと、
    前記演算結果を用いて、前記第1のスレーブプロセスによって該第2の演算を実行することと
    をさらに含む、請求項1に記載の演算実行の方法。
  7. 前記第1の演算は、高速フーリエ変換を計算する命令を含む、請求項6に記載の演算実行の方法。
  8. 前記マスタプロセスで第2の演算セットを受信することであって、該第2の演算セットは、実行すべき1つ以上の第2の演算を含むことと、
    該第2の演算セットを、該マスタプロセスから、前記第1のプロセッサタイプの第2のプロセッサ上で実行する第3のスレーブプロセスへ転送することと
    をさらに含む、請求項1に記載の演算実行の方法。
  9. 前記第2の演算セット内の少なくとも1つの第2の演算を、前記第3のスレーブプロセスから、前記第2のプロセッサタイプの第2のプロセッサ上で実行する第4のスレーブプロセスへ転送することと、
    該第4のスレーブプロセスによって該第2の演算を実行して第2の演算結果を生成することと
    をさらに含む、請求項8に記載の演算実行の方法。
  10. 前記第2の演算セット内の少なくとも1つの第2の演算を、前記第3のスレーブプロセスから、前記第2のスレーブプロセスへ転送することと、
    該第2のスレーブプロセスによって該第2の演算を実行して第2の演算結果を生成することと
    をさらに含む、請求項8に記載の演算実行の方法。
  11. コンピューティングシステムであって、
    第1のプロセッサタイプの複数の第1のスレーブプロセッサと、
    該第1のプロセッサタイプとは異なる第2のプロセッサタイプの複数の第2のスレーブプロセッサであって、該第2のスレーブプロセッサのそれぞれは、第1のスレーブプロセッサによって提供される演算を実行するように構成される、複数の第2のスレーブプロセッサと、
    演算を、実行用の該第1のスレーブプロセッサに分散するように構成されたマスタプロセスモジュールと
    を備える、コンピューティングシステム。
  12. 前記第1のプロセッサタイプのプロセッサは、第1のカテゴリの演算を実行するように最適化される、請求項11に記載のコンピューティングシステム。
  13. 前記第1のカテゴリの演算は、整数計算を含む、請求項12に記載のコンピューティングシステム。
  14. 前記第2のプロセッサタイプのプロセッサは、第2のカテゴリの演算を実行するように最適化される、請求項11に記載のコンピューティングシステム。
  15. 前記第2のカテゴリの演算は、浮動小数点数計算を含む、請求項14に記載のコンピューティングシステム。
  16. 前記第2のタイプのプロセッサのそれぞれの利用可能性を監視し、
    該第2のタイプのプロセッサのそれぞれの利用可能性を、前記第1のタイプのプロセッサに報告するように構成される、ディスパッチャモジュールをさらに備える、請求項11に記載のコンピューティングシステム。
JP2009524613A 2006-08-13 2007-08-03 階層的プロセッサ構成によるマルチプロセッサアーキテクチャ Pending JP2010500692A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US82224706P 2006-08-13 2006-08-13
PCT/US2007/017347 WO2008021024A2 (en) 2006-08-13 2007-08-03 Multiprocessor architecture with hierarchical processor organization

Publications (1)

Publication Number Publication Date
JP2010500692A true JP2010500692A (ja) 2010-01-07

Family

ID=39082534

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009524613A Pending JP2010500692A (ja) 2006-08-13 2007-08-03 階層的プロセッサ構成によるマルチプロセッサアーキテクチャ

Country Status (4)

Country Link
EP (1) EP2069958A2 (ja)
JP (1) JP2010500692A (ja)
CN (1) CN101523381A (ja)
WO (1) WO2008021024A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013130579A (ja) * 2011-12-20 2013-07-04 IFP Energies Nouvelles 乗り物の汚染物質排出量を化学反応動力学と排出量との同時計算で予測するシステムおよび方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7003758B2 (en) 2003-10-07 2006-02-21 Brion Technologies, Inc. System and method for lithography simulation
JP5326308B2 (ja) 2008-03-13 2013-10-30 日本電気株式会社 コンピュータリンク方法及びシステム
US8959522B2 (en) 2012-01-30 2015-02-17 International Business Machines Corporation Full exploitation of parallel processors for data processing
US9141631B2 (en) 2012-04-16 2015-09-22 International Business Machines Corporation Table boundary detection in data blocks for compression

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332981A (ja) * 1993-04-29 1994-12-02 Sgs Thomson Microelectron Sa 集積回路の構成を決定するための方法および装置
JPH0749961A (ja) * 1993-06-04 1995-02-21 Sun Microsyst Inc グラフィックアクセラレータの浮動小数点プロセッサ及びその浮動小数点機能を実行する方法
JPH08272075A (ja) * 1995-03-06 1996-10-18 Lsi Logic Corp マクロセルライブラリ上での光学近接修正のためのシステム及び方法
JP2001249808A (ja) * 1999-12-27 2001-09-14 Fujitsu Ltd 情報処理装置
JP2004145885A (ja) * 2002-10-25 2004-05-20 Mentor Graphics Corp 遠隔コンピュータへのオペレーションの分散方法、装置、及び記憶媒体
JP2004520622A (ja) * 2001-04-18 2004-07-08 メンター・グラフィクス・コーポレーション 分解能向上技術の適用に優先順位を付ける方法及び装置
JP2006155187A (ja) * 2004-11-29 2006-06-15 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム。

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2727540B1 (fr) * 1994-11-30 1997-01-03 Bull Sa Outil d'aide a la repartition de la charge d'une application repartie

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332981A (ja) * 1993-04-29 1994-12-02 Sgs Thomson Microelectron Sa 集積回路の構成を決定するための方法および装置
JPH0749961A (ja) * 1993-06-04 1995-02-21 Sun Microsyst Inc グラフィックアクセラレータの浮動小数点プロセッサ及びその浮動小数点機能を実行する方法
JPH08272075A (ja) * 1995-03-06 1996-10-18 Lsi Logic Corp マクロセルライブラリ上での光学近接修正のためのシステム及び方法
JP2001249808A (ja) * 1999-12-27 2001-09-14 Fujitsu Ltd 情報処理装置
JP2004520622A (ja) * 2001-04-18 2004-07-08 メンター・グラフィクス・コーポレーション 分解能向上技術の適用に優先順位を付ける方法及び装置
JP2004145885A (ja) * 2002-10-25 2004-05-20 Mentor Graphics Corp 遠隔コンピュータへのオペレーションの分散方法、装置、及び記憶媒体
JP2006155187A (ja) * 2004-11-29 2006-06-15 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム。

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JPN5009011961; Sang Hoon Choi, et al.: 'Hierarchical Heterogeneous Multiprocessor System for Real-Time Motion Picture Coding' SPIE(Visual Communications and Image Processing '94) Vol:2308, 19940929, Pages:1777-1787, SPIE *
JPN6012028856; D.B.Shu, J.G. Nash, C.C.Weems: 'A Multiple-level Heterogeneous Architecture for Image Understanding' Proceedings of the 10th International Conference on Pattern Recognition , 19900616, Pages:629-634, IEEE *
JPN6012028857; Francois Charot, et al.: 'Toward Hardware Building Blocks for Software-Only Real-Time Video Processing : The MOVIE Approach' IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY Vol:9, No:6, 199909, Pages:882-894, IEEE *
JPN7012002104; Colin Whitby-Strevens: 'The transputer' Proceedings of the 12th annual international symposium on Computer architecture (ISCA'85) , 1985, Pages:292-300, IEEE *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013130579A (ja) * 2011-12-20 2013-07-04 IFP Energies Nouvelles 乗り物の汚染物質排出量を化学反応動力学と排出量との同時計算で予測するシステムおよび方法

Also Published As

Publication number Publication date
WO2008021024A3 (en) 2008-05-15
WO2008021024A2 (en) 2008-02-21
CN101523381A (zh) 2009-09-02
EP2069958A2 (en) 2009-06-17

Similar Documents

Publication Publication Date Title
US7409656B1 (en) Method and system for parallelizing computing operations
US20110016444A1 (en) Collaborative Environment For Physical Verification Of Microdevice Designs
US20100185994A1 (en) Topological Pattern Matching
US20100023914A1 (en) Use Of Graphs To Decompose Layout Design Data
US20080168410A1 (en) Properties In Electronic Design Automation
US8234599B2 (en) Use of graphs to decompose layout design data
JP5496986B2 (ja) 並列演算の分散方法及び装置
US20140337810A1 (en) Modular platform for integrated circuit design analysis and verification
US20130198703A1 (en) Virtual Flat Traversal Of A Hierarchical Circuit Design
US20170242953A1 (en) Preserving Hierarchy And Coloring Uniformity In Multi-Patterning Layout Design
JP2010500692A (ja) 階層的プロセッサ構成によるマルチプロセッサアーキテクチャ
US9262574B2 (en) Voltage-related analysis of layout design data
US20160224713A1 (en) Protocol probes
US9047434B2 (en) Clustering for processing of circuit design data
US20080140989A1 (en) Multiprocessor Architecture With Hierarchical Processor Organization
US20130318487A1 (en) Programmable Circuit Characteristics Analysis
US10908511B2 (en) Systems and methods for patterning color assignment
US20120198394A1 (en) Method For Improving Circuit Design Robustness
TW201935289A (zh) 用於單元交換的方法
US11449658B2 (en) Methods of generating integrated circuit (IC) layout synthetic patterns and related computer program products
US20140040848A1 (en) Controllable Turn-Around Time For Post Tape-Out Flow
US11062068B2 (en) Electronic computer-aided design tool
US20130145340A1 (en) Determination Of Uniform Colorability Of Layout Data For A Double Patterning Manufacturing Process
US20090070731A1 (en) Distributed Mask Data Preparation
US11275884B2 (en) Systems and methods for photolithographic design

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100304

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120904

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120911

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121127