(57)【要約】ソフトウェアツール計算プロセスのコピーは、マスタ計算デバイス上と、マスタ計算デバイスとは別個のリモート計算デバイス上でインスタンス化される。計算プロセスの主要インスタンス化は、マスタ計算デバイスのメモリにデータを保存し、そこからデータを読み出すことが可能なデータブロックリソースマネージャを採用する。計算プロセスの各リモートインストールは、リモートデータクライアントを採用する一方で、リモートデータサーバは、各リモート計算デバイス上においてインスタンス化される。計算プロセスのリモートインスタンス化が、アクセスデータを必要とする時にデータを要求するように、その関連付けられたリモートデータクライアントに命令する。データが別のリモート計算プロセスによって管理されている場合、リモートデータクライアントは、そのリモート計算プロセスと関連付けられたリモートデータサーバからデータを要求するであろう。
2010539588.tif 000002
【特許請求の範囲】
【請求項１】
並列処理システム内にデータを分散する方法であって、
データブロックリソースマネージャにおいて、データに対する要求を第１のデータブロックマネージャから受信することであって、該第１のデータブロックマネージャは、並列処理システム内の第１の計算ノード上で実行する第１のプロセスと関連付けられる、ことと、
該要求されたデータブロックが、該並列処理システム内の第２の計算ノード上で実行する第２のプロセスに割り当てられる記憶場所内に記憶されていることを判断することと、
該第２のプロセスと関連付けられる第２のデータブロックマネージャからの該データを要求することと、
該第２のデータブロックマネージャからのデータを受信することと、
該受信したデータを該第１のデータブロックマネージャに提供することと
を備える、方法。
【請求項２】
前記第１の計算ノードおよび前記第２の計算ノードは、同一の計算デバイス上にホスティングされる、請求項１に記載の方法。
【請求項３】
前記第１の計算ノードは、第１の計算デバイスによってホスティングされ、前記第２の計算ノードは、該第１の計算デバイスとは別個の第２の計算デバイスによってホスティングされる、請求項１に記載の方法。
【請求項４】
前記第１の計算ノードは、第１の計算デバイスによってホスティングされ、前記第２の計算ノードは、該第１の計算デバイスとは別個の第２の計算デバイスによってホスティングされる、請求項１に記載の方法。
【請求項５】
並列処理システム内でデータを分散する方法であって、
リモートデータサーバにおいて、データの要求を第１のリモートデータクライアントから受信することであって、該第１のリモートデータクライアントは、並列処理システム内の第１の計算ノード上で実行する第１のプロセスと関連付けられる、ことと、
該受信されたデータを該第１のリモートデータクライアントに提供することと
を備える、方法。
【請求項６】
上述の前記構成要素の任意の組み合わせを用いる、並列処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本願は、発明者Ｌａｕｒｅｎｃｅ  Ｇｒｏｄｄらによる米国仮特許出願第６０／９７１，２６４号（名称「Ｍｅｍｏｒｙ  Ｓｈａｒｉｎｇ  Ａｎｄ  Ｄａｔａ  Ｄｉｓｔｒｉｂｕｔｉｏｎ」、２００７年９月１１日出願）の米国特許法第１１９条第（ｅ）項の優先権の利益を主張し、この出願は、その全体が本明細書に参考として援用される。また、本願は、発明者Ｌａｕｒｅｎｃｅ  Ｇｒｏｄｄらによる米国特許出願第１１／３９６，９２９号（名称「Ｄｉｓｔｒｉｂｕｔｉｏｎ  Ｏｆ  Ｐａｒａｌｌｅｌ  Ｏｐｅｒａｔｉｏｎｓ」、２００６年４月１２日出願）に関連し、この出願も、その全体が本明細書に参考として援用される。
【０００２】
（発明の分野）
本発明は、並列処理ネットワーク内における共有および分散型メモリの使用を対象とする。本発明の種々の実装は、並列処理ネットワーク内で動作する電子設計自動化ソフトウェアツールによる使用のための設計データを記憶する共有および分散型メモリの使用に対する特定の用途を有してもよい。
【背景技術】
【０００３】
多くのソフトウェアアプリケーションは、単一のプロセッサコンピュータ上で効率的に実行可能である。しかしながら、いくつかのソフトウェアアプリケーションは、多くの演算を有するため、経済的な時間内に単一プロセッサコンピュータ上で連続的に実行することは不可能である。例えば、マイクロデバイス（例えば、集積回路）設計プロセスソフトウェアアプリケーションは、数十万または数億もの入力データ値に基づいて、十万以上の演算の実行を要求する場合がある。このような種類のソフトウェアアプリケーションをより迅速に実行するために、複数の処理スレッドを同時に使用すること可能な複数のプロセッサを採用するコンピュータが開発された。これらのコンピュータは、単一プロセッサコンピュータよりも迅速に複雑なソフトウェアアプリケーションを実行可能であるが、これらのマルチプロセッサコンピュータは、購入および維持するには非常に高価である。マルチプロセッサコンピュータの場合、プロセッサは、数多くの演算を同時に実行し、したがって、関連演算の並行実行を協調させるための特殊オペレーティングシステムを採用しなければならない。さらに、その複数のプロセッサは、メモリ等のリソースへのアクセスを同時に検索し得るため、マルチプロセッサコンピュータのバス構造および物理的レイアウトは、本質的に、単一プロセッサコンピュータより複雑である。
【０００４】
大型マルチプロセッサコンピュータに伴う困難性および費用の観点から、リンクされた単一プロセッサコンピュータのネットワークが、単一マルチプロセッサコンピュータの使用に対する人気の高い代替となっている。パーソナルコンピュータ等の従来の単一プロセッサコンピュータのコストは、過去数年間で著しく低下した。さらに、複数の単一プロセッサコンピュータの演算をネットワークにリンクするための技術も、より高度かつ信頼性のあるものとなった。故に、数百万ドルのマルチプロセッサコンピュータは、現在、典型的には、比較的単純かつ低コスト単一プロセッサコンピュータのネットワークまたは「ファーム」に置換されつつある。
【０００５】
単一マルチプロセッサコンピュータから複数のネットワーク化された単一プロセッサコンピュータへの移行は、処理されるデータが並列処理を有する場合、特に有用である。このような種類のデータの場合、データの一部は、データの別の部分から独立する。すなわち、データの第１の部分の操作は、データの第２の部分の知識またはそこへのアクセスを要求しない。したがって、ある単一プロセッサコンピュータは、データの第１の部分上で演算を実行可能である一方、別の単一プロセッサコンピュータは、データの第２の部分上で同一演算を同時に実行可能である。複数のコンピュータを使用して、異なるデータ群上で同一演算を同時に、すなわち、「並列」で、実行することによって、大量のデータを迅速に処理可能である。複数の単一プロセッサコンピュータのこのような使用は、電子設計自動化（ＥＤＡ）ツールを使用する回路設計データを解析するために特に有益である。このような種類のデータの場合、マイクロ回路の第１の領域内の半導体ゲート等の設計の一部は、マイクロ回路の第２の領域内の配線ライン等の設計の別の部分から完全に独立してもよい。したがって、構造の最小幅確認を定義する演算等、いくつかの電子設計自動化演算が、ゲートのために、１つのコンピュータによって実行可能である一方、別のコンピュータが、配線ラインのために、同一演算を実行する。
【０００６】
並列処理は、電子設計自動化ソフトウェアツールを実行するために要求される時間を実質的に短縮するが、これらのツールのうちの多くは、依然として、大量のシステムメモリを要求する。例えば、電子設計自動化ソフトウェアツールは、各インスタンス化が、互いに並列して演算を実行可能なように、単一「マスタ」計算デバイス上で計算プロセスのいくつかのインスタンス化を開始する場合がある。代替として、または加えて、電子設計自動化ソフトウェアツールは、同様に、各インスタンス化が、互いに並列で演算を実行し得るように、複数の「リモート」計算デバイス上で計算プロセスのいくつかのコピーをインスタンス化する場合がある。従来の並列処理システムの場合、各インスタンス化は、その割り当てられた演算を行なうために要求されるデータのその独自のコピーを必要とするであろう。例えば、並列処理システムが、レイアウト設計データを処理するための電子設計自動化ソフトウェアツール計算プロセスを実装するために使用されている場合、集積回路設計の単一層のためのデータは、計算プロセスの複数のインスタンス化による使用のために、マスタ計算デバイスのメモリ内で数回複製される場合がある。さらになお、データは、同様に、それらのリモート計算デバイス上での計算プロセスのインスタンス化による使用のために、複数のリモート計算デバイス上で複製される場合がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
有利には、本発明の種々の側面は、単一マスタ計算デバイス上で動作するソフトウェアツール計算プロセス（電子設計自動化ソフトウェアツールの計算プロセス等）の複数のインスタンス化を可能にし、そのマスタ計算デバイスのメモリ内に記憶されるデータを共有するための技術に関する。本発明の他の側面は、複数のリモート計算デバイス上で動作するソフトウェアツール計算プロセスの複数のインスタンス化を可能にし、それらのリモート計算デバイス間に分散されるデータを採用するステップを対象とする。
【０００８】
本発明の種々の実施形態によると、電子設計自動化ソフトウェアツール計算プロセス等の複数のソフトウェアツール計算プロセスのコピーは、マスタ計算デバイス上でインスタンス化される。計算プロセスの各インスタンス化は、計算プロセスによって必要とされるデータを要求するように構成される、データブロックマネージャを含む、または別様に採用する。また、計算プロセスの主要インスタンス化は、マスタ計算デバイスのメモリにデータを保存し、そこから読み出すことが可能なデータブロックリソースマネージャを含む、または別様に採用する。本発明の種々の実施形態の場合、メモリは、マスタ計算デバイスの処理ユニットに隣接して動作する集積回路メモリデバイスによって提供される「高速」メモリ、磁気または光学ディスクによって提供される「低速」メモリ、またはそれらのいくつかの組み合わせであってもよい。計算プロセスのインスタンス化が、データへのアクセスを必要とする時、データブロックリソースマネージャからデータを要求するように、その関連付けられたデータブロックマネージャに命令する。それに応じて、データブロックリソースマネージャは、マスタ計算デバイスのメモリからデータを読み出し、計算プロセスによる使用のために、要求データブロックマネージャに提供する。同様に、計算プロセスが、データの保存を必要とする場合、データブロックリソースマネージャにデータを提供するように、その関連付けられたデータブロックマネージャに命令する。それに応じて、データブロックリソースマネージャは、マスタ計算デバイスのメモリ内にデータを保存する。
【０００９】
本発明のさらに他の実施例の場合、ソフトウェアツール計算プロセスの１つ以上のバージョンが、マスタ計算デバイスと、別個のリモート計算デバイス上でインスタンス化される。計算プロセスの各リモートインスタンス化は、リモートデータクライアントを含む、または別様に採用する。また、リモートデータサーバ（または、リモートデータブロックリソースマネージャ）は、各リモート計算デバイス上でインスタンス化される。データブロックリソースマネージャと同様に、リモートデータサーバは、そのリモート計算デバイスのメモリにデータを保存し、そこからデータを読み出すことが可能である。また、マスタ計算デバイスのためのメモリの場合のように、リモート計算デバイスのためのメモリは、リモート計算デバイスの処理ユニットに隣接して動作する集積回路メモリデバイスによって提供される「高速」メモリ、磁気または光学ディスクによって提供される「低速」メモリ、またはそれらのいくつかの組み合わせであってもよい。
【００１０】
計算プロセスのリモートインスタンス化が、アクセスデータへのアクセスを必要とする時、データを要求するように、その関連付けられたリモートデータクライアントに命令する。データが別のリモート計算プロセスによって管理されている場合、リモートデータクライアントは、そのリモート計算プロセスと関連付けられたリモートデータサーバからデータを要求するであろう。代替として、データがマスタ計算デバイス上の計算プロセスによって管理されている場合、リモートデータクライアントは、そのマスタ計算プロセスと関連付けられたデータブロックマネージャからデータを要求するであろう。上述のように、データブロックマネージャは、順に、マスタ計算デバイス上の主要計算プロセスと関連付けられたデータブロックリソースマネージャを通して、データを取得してもよい。同様に、リモート計算プロセスが、データの保存を必要とする場合、対応するメモリ内への記憶のために、適切なリモートデータサーバまたはデータブロックリソースマネージャにデータを提供するように、その関連付けられたリモートデータクライアントに命令する。本発明の種々の実施例の場合、データブロックマネージャ、リモートデータクライアント、おおびリモートデータサーバは、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）またはユーザデータグラムプロトコル等、好適なネットワーク通信プロトコルを使用する電子通信ネットワークによって、相互接続されてもよい。
【００１１】
本発明のこれらの、ならびに他の特徴および側面は、以下の詳細な説明を考慮することによって明らかとなろう。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の種々の実施形態によって採用され得る、単一プロセッサコンピュータのネットワークとリンクされるマルチプロセッサコンピュータの概略図である。
【図２】図２は、本発明の種々の実施形態によって採用され得る、コンピュータのためのプロセッサユニットの概略図である。
【図３】図３は、データ集合を構成する各１６ｋＢのメモリブロックを識別するオフセットをマッピングするオフセットマップの概略図である。
【図４】図４は、本発明の種々の実施例に従って、マスタ計算デバイスの種々のプロセス間でデータを共有可能な並列処理計算システムの実施例を示す概略図である。
【図５】図５は、本発明の種々の実施形態によって行なわれ得る演算を表す表である。
【図６】図６は、本発明の種々の実施例に従って、マスタ計算デバイスの異なるプロセス間でデータを共有可能な並列処理計算システムの実施例を示す概略図である。
【図７】図７および８は、データのブロックを読み出し、送信するためのデータフォーマットを示す。
【図８】図７および８は、データのブロックを読み出し、送信するためのデータフォーマットを示す。
【発明を実施するための形態】
【００１３】
（導入）
本発明の種々の実施形態は、第１のフォーマットから第２のフォーマットへの変換のために、複数の計算スレッド間のデータのセグメントを分散するためのツールおよび方法に関する。故に、本発明のいくつかの実施形態の側面は、少なくとも１つのマルチプロセッサマスタコンピュータと、複数の単一プロセッサスレーブコンピュータとを含む、計算ネットワーク間のデータセグメントの分散に対する特定の用途を有する。これらの実装の理解をより容易にするために、マルチプロセッサマスタコンピュータを複数の単一プロセッサスレーブコンピュータにリンクさせるネットワークの実施例が論じられる。
【００１４】
（例示的動作環境）
本発明の種々の実施例によるソフトウェアツール（電子設計自動化ソフトウェアツール等）の実装は、１つ以上のプログラム可能な計算デバイスによって実行される、コンピュータで実行可能なソフトウェア命令を使用して実装されてもよい。本発明のこれらの実施例は、ソフトウェア命令を使用して実装され得るため、本発明の種々の実施形態が採用され得る汎用のプログラム可能なコンピュータシステムの構成要素および演算を最初に説明する。より具体的には、ホストまたはマスタコンピュータと、１つ以上のリモートまたはスレーブコンピュータとを有する、コンピュータネットワークの構成要素および演算について、図１を参照して説明する。しかしながら、この動作環境は、単に、好適な動作環境の一実施例であって、本発明の使用または機能性の範囲に関して、任意の制限を示唆することを意図するものではない。
【００１５】
図１では、マスタコンピュータ１０１は、複数の入力および出力デバイス１０３と、メモリ１０５とを含む、マルチプロセッサコンピュータである。入力および出力デバイス１０３は、ユーザから入力データを受信するか、またはユーザに出力データを提供するための任意のデバイスを含んでもよい。入力デバイスとして、例えば、ユーザからの入力を受信するためのキーボード、マイクロホン、スキャナ、またはポインティングデバイスが挙げられる。次いで、出力デバイスとして、ディスプレイモニタ、スピーカ、プリンタ、または触覚フィードバックデバイスが挙げられる。これらのデバイスおよびそれらの接続は、当技術分野において周知であるので、ここでは詳細に考察しない。
【００１６】
同様に、メモリ１０５は、マスタコンピュータ１０１によってアクセス可能なコンピュータ可読媒体の任意の組み合わせを使用して実装されてもよい。コンピュータ可読媒体として、例えば、読み書きメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電子的消去およびプログラムが可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、またはフラッシュメモリマイクロ回路デバイス等のマイクロ回路メモリデバイス、ＣＤ−ＲＯＭディスク、デジタルビデオディスク（ＤＶＤ）、または他の光学記憶デバイスが挙げられる。また、コンピュータ可読媒体として、磁気カセット、磁気テープ、磁気ディスク、または他の磁気記憶デバイス、穿孔媒体、ホログラフィック記憶デバイス、あるいは、所望の情報を記憶するために使用することができる任意の他の媒体が挙げられる。
【００１７】
以下に詳述するように、マスタコンピュータ１０１は、本発明の種々の実施例に従って、１つ以上の演算を行なうためのソフトウェアアプリケーションを実行する。故に、メモリ１０５は、実行時に１つ以上の演算を行なうためのソフトウェアアプリケーションを実装する、ソフトウェア命令１０７Ａを記憶する。また、メモリ１０５は、ソフトウェアアプリケーションと併用されるデータ１０７Ｂを記憶する。例示される実施形態では、データ１０７Ｂは、ソフトウェアアプリケーションが、そのうちの少なくともいくつかが並列で行われ得る演算を行なうために使用する、プロセスデータを含有する。
【００１８】
また、マスタコンピュータ１０１は、複数のプロセッサユニット１０９と、インターフェースデバイス１１１とを含む。プロセッサユニット１０９は、ソフトウェア命令１０７Ａを実行するようにプログラム可能である任意の種類のプロセッサデバイスであってもよいが、従来は、マイクロプロセッサデバイスである。例えば、プロセッサユニット１０９のうちの１つ以上は、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）またはＸｅｏｎＴＭマイクロプロセッサ、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ  ＡｔｈｌｏｎＴＭマイクロプロセッサ、あるいはＭｏｔｏｒｏｌａ６８Ｋ／Ｃｏｌｄｆｉｒｅマイクロプロセッサ等の市販の汎用のプログラム可能なマイクロプロセッサであってもよい。代替として、または加えて、プロセッサユニット１０９のうちの１つ以上は、特定の種類の数学的演算を最適に行なうように設計されたマイクロプロセッサ等の特別に製造されたプロセッサであってもよい。インターフェースデバイス１１１、プロセッサユニット１０９、メモリ１０５、および入力／出力デバイス１０３は、バス１１３によってともに接続される。
【００１９】
本発明のいくつかの実装の場合、マスタ計算デバイス１０１は、２つ以上のプロセッサコアを有する１つ以上の処理ユニット１０９を採用してもよい。故に、図２は、本発明の種々の実施形態とともに採用され得る、マルチコアプロセッサユニット１０９の実施例を示す。本図から分かるように、プロセッサユニット１０９は、複数のプロセッサコア２０１を含む。各プロセッサコア２０１は、計算エンジン２０３と、メモリキャッシュ２０５とを含む。当業者には周知のように、計算エンジンは、ソフトウェア命令を取り出し、次いで、取り出された命令内に指定されるアクションを行なう等、種々の計算関数を行なうための論理デバイスを含む。これらのアクションとして、例えば、加算、減算、乗算、および数の比較、ＡＮＤ、ＯＲ、ＮＯＲ、およびＸＯＲ等の論理演算の実行、ならびにデータの読み出しが挙げられる。次いで、各計算エンジン２０３は、実行のためのデータおよび／または命令を迅速に記憶および読み出すように、その対応するメモリキャッシュ２０５を使用してもよい。
【００２０】
各プロセッサコア２０１は、相互接続２０７に接続される。相互接続２０７の特定の構造は、プロセッサユニット２０１のアーキテクチャに応じて可変であってもよい。Ｓｏｎｙ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｔｏｓｈｉｂａ  Ｃｏｒｐｏｒａｔｉｏｎ、およびＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたセルマイクロプロセッサ等のいくつかのプロセッサユニット２０１の場合、相互接続２０７が、相互接続バスとして実装されてもよい。しかしながら、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（Ｓｕｎｎｙｖａｌｅ，Ｃａｌｉｆｏｒｎｉａ）から市販のＯｐｔｅｒｏｎＴＭおよびＡｔｈｌｏｎＴＭアルコアプロセッサ等の他のプロセッサユニット２０１の場合、相互接続２０７は、システム要求インターフェースデバイスとして実装されてもよい。いずれの場合でも、プロセッサコア２０１は、相互接続２０７を通して、入力／出力インターフェース２０９と、メモリコントローラ２１１と通信する。入力／出力インターフェース２０９は、プロセッサユニット２０１とバス１１３との間の通信インターフェースを提供する。同様に、メモリコントローラ２１１は、プロセッサユニット２０１とシステムメモリ１０７との間の情報交換を制御する。本発明のいくつかの実装の場合、プロセッサユニット２０１は、プロセッサコア２０１によって共有される、アクセス可能な高レベルキャッシュメモリ等の付加的な構成要素を含んでもよい。
【００２１】
図２は、本発明のいくつかの実施形態によって採用され得るプロセッサユニット２０１の一例示を示すが、本例示は、代表例に過ぎず、限定することを意図するものではないことを理解されたい。例えば、本発明のいくつかの実施形態は、１つ以上のセルプロセッサを有するマスタコンピュータ１０１を採用してもよい。セルプロセッサは、複数の入力／出力インターフェース２０９と、複数のメモリコントローラ２１１とを採用する。また、セルプロセッサは、異なる種類の９つの別個のプロセッサコア２０１を有する。より具体的には、６つ以上の相乗プロセッサ要素（ＳＰＥ）と、パワープロセッサ要素（ＰＰＥ）とを有する。各相乗プロセッサ要素は、１２８×１２８ビットのレジスタを有するベクトルタイプの計算エンジン２０３と、４つの単精度浮動小数点計算ユニットと、４つの整数計算ユニットと、命令およびデータの両方を記憶する２５６ＫＢのローカル記憶メモリとを有する。次いで、パワープロセッサ要素は、相乗プロセッサ要素によって行なわれるタスクを制御する。その構成のため、セルプロセッサは、多くの従来のプロセッサよりも実質的に高速で、高速フーリエ変換（ＦＦＴ）の計算等のいくつかの数学的演算を行なうことができる。
【００２２】
図１に戻ると、インターフェースデバイス１１１は、通信インターフェースを通して、マスタコンピュータ１０１に、スレーブコンピュータ１１５Ａ、１１５Ｂ、１１５Ｃ、・・・１１５ｘと通信させる。通信インターフェースは、例えば、従来の有線ネットワーク接続または光透過性の有線ネットワーク接続を含む、任意の好適な種類のインターフェースであってもよい。また、通信インターフェースは無線光学接続、無線周波数接続、赤外線接続、さらには音響接続等の無線接続であってもよい。インターフェースデバイス１１１は、マスタコンピュータ１０１およびスレーブコンピュータ１１５のそれぞれからのデータおよび制御信号を、伝送制御プロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、およびインターネットプロトコル（ＩＰ）等の１つ以上の通信プロトコルに従って、ネットワークメッセージに変換する。これらの、および他の従来の通信プロトコルは、当技術分野において周知であるので、ここでは詳細に考察しない。
【００２３】
各スレーブコンピュータ１１５は、メモリ１１７と、プロセッサユニット１１９と、インターフェースデバイス１２１と、任意に、システムバス１２５によって、ともに接続される１つ以上の入力／出力デバイス１２３とを含んでもよい。マスタコンピュータ１０１の場合のように、スレーブコンピュータ１１５のための任意の入力／出力デバイス１２３は、キーボード、ポインティングデバイス、マイクロホン、ディスプレイモニタ、スピーカ、およびプリンタ等、任意の従来の入力または出力デバイスを含んでもよい。同様に、プロセッサユニット１１９は、任意の種類の従来の、または特別に製造されたプログラム可能なプロセッサデバイスであってもよい。例えば、プロセッサユニット１１９のうちの１つ以上は、Ｉｎｔｅｌ（登録商標）  Ｐｅｎｔｉｕｍ（登録商標）またはＸｅｏｎＴＭマイクロプロセッサ、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ  ＡｔｈｌｏｎＴＭマイクロプロセッサ、あるいはＭｏｔｏｒｏｌａ  ６８Ｋ／Ｃｏｌｄｆｉｒｅ（登録商標）マイクロプロセッサ等の市販の汎用のプログラム可能なマイクロプロセッサであってもよい。代替として、プロセッサユニット１０９のうちの１つ以上は、特定の種類の数学的演算を最適に行なうように設計されたマイクロプロセッサ等の特別に製造されたプロセッサであってもよい。
【００２４】
さらに、プロセッサユニット１１９のうちの１つ以上は、図２を参照して上述したように、２つ以上のコアを有してもよい。例えば、本発明のいくつかの実装の場合、プロセッサユニット１１９のうちの１つ以上は、セルプロセッサであってもよい。次いで、メモリ１１７は、上述したコンピュータ可読媒体の任意の組み合わせを使用して、実装されてもよい。インターフェースデバイス１１１と同様に、インターフェースデバイス１２１は、通信インターフェースを介して、スレーブコンピュータ１１５にマスタコンピュータ１０１と通信させる。
【００２５】
例示される実施例では、マスタコンピュータ１０１は、複数のプロセッサユニット１０９を有するマルチプロセッサユニットコンピュータである一方、各スレーブコンピュータ１１５は、単一プロセッサユニット１１９を有する。しかしながら、本発明の代替実装は、単一プロセッサユニット１０９を有するマスタコンピュータを採用してもよいことに留意されたい。さらに、スレーブコンピュータ１１５のうちの１つ以上は、意図される使用に応じて、複数のプロセッサユニット１１９を有してもよい。また、単一インターフェースデバイス１１１のみが、ホストコンピュータ１０１に対して示されているが、本発明の代替的な実施形態の場合、コンピュータ１０１は、複数の通信インターフェースを介して、リモートコンピュータ１１５と通信するために、２つ以上の異なるインターフェースデバイス１１１を使用してもよいことに留意されたい。
【００２６】
本発明の種々の実施例の場合、マスタコンピュータ１０１は、１つ以上の外部データ記憶デバイスに接続されてもよい。これらの外部データ記憶デバイスは、マスタコンピュータ１０１によってアクセス可能なコンピュータ可読媒体の任意の組み合わせを使用して実装されてもよい。コンピュータ可読媒体として、例えば、読み書きメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、電子的消去およびプログラムが可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、またはフラッシュメモリマイクロ回路デバイス等のマイクロ回路メモリデバイス、ＣＤ−ＲＯＭディスク、デジタルビデオディスク（ＤＶＤ）、または他の光学記憶デバイスが挙げられる。また、コンピュータ可読媒体として、磁気カセット、磁気テープ、磁気ディスク、または他の磁気記憶デバイス、穿孔媒体、ホログラフィック記憶デバイス、あるいは所望の情報を記憶するために使用可能な他の任意の媒体が挙げられる。本発明のいくつかの実装によると、スレーブコンピュータ１１５のうちの１つ以上は、代替として、または加えて、１つ以上の外部データ記憶バイスに接続されてもよい。典型的には、これらの外部データ記憶デバイスは、同様にマスタコンピュータ１０１に接続されるデータ記憶デバイスを含むが、それらは、マスタコンピュータ１０１によってアクセス可能な任意のデータ記憶デバイスと異なってもよい。
【００２７】
（演算）
上述のように、本発明の種々の側面は、マルチプロセッサアーキテクチャを有する計算システムによる演算の実行をサポートするために実装されてもよい。故に、本発明の異なる実施形態は、種々の異なる種類のソフトウェアアプリケーションとともに採用可能である。しかしながら、本発明のいくつかの実施形態は、マイクロ回路等のマイクロデバイスを表現する設計データをシミュレート、検証、または修正するための演算を行なう電子設計自動化ソフトウェアツールとの併用において、特に有用である場合がある。マイクロ回路デバイスの設計および製造は、「設計フロー」プロセス中に多くのステップを有する。これらのステップは、マイクロ回路の種類、その複雑性、設計チーム、およびマイクロ回路製造業者または製造工場に大きく依存する。いくつかのステップは、全設計フローに共通である。最初に、設計仕様が、典型的には、ハードウェア設計言語（ＨＤＬ）で論理的にモデル化される。次いで、ソフトウェアおよびハードウェア「ツール」は、ソフトウェアシミュレータおよび／またはハードウェアエミュレータを実行することによって、設計の種々の段階において設計を検証し、エラーが補正される。
【００２８】
論理設計が満足できるものであるとみなされた後、合成ソフトウェアによって物理的設計データに変換される。物理的設計データは、例えば、製造工場でのフォトリソグラフィプロセスにおいて、所望のマイクロ回路デバイスを製造するために使用されるマスク上へ書き込まれる、幾何学的パターンを表現してもよい。物理的設計情報は、デバイスの適切な演算のための設計仕様および論理設計を正確に具現化することが非常に重要である。さらに、物理的設計データは、製造工場で使用されるマスクを作製するために採用されるため、データは、製造工場の要件に適合しなければならない。各製造工場は、それらのプロセス、機器、および技術とのコンプライアンスのために、その独自の物理的設計パラメータを指定する。故に、設計フローは、設計ルールチェックプロセスを含んでもよい。本プロセスの際に、回路設計の物理的レイアウトが、設計ルールと比較される。製造工場によって指定されたルールに加えて、設計ルールチェックプロセスは、回路設計の物理的レイアウトを、試験チップ、業界における一般知識等から得られたルール等の他の設計ルールに対してチェックすることも可能である。
【００２９】
設計者が、検証ソフトウェアアプリケーションを使用して、回路設計の物理的レイアウトが設計ルールに準拠することを検証すると、設計者は、回路設計の物理的レイアウトを修正し、物理的レイアウトがフォトリソグラフィプロセスの際にもたらす画像の解像度を向上させてもよい。これらの解像度向上技術（ＲＥＴ）として、例えば、光近接効果補正（ＯＰＣ）を使用した、またはサブ解像度補助特徴（ＳＲＡＦ）を加えることによる、物理的レイアウトの修正が挙げられる。解像度向上技術を使用して回路設計の物理的レイアウトが修正されると、設計ルールチェックが、修正されたレイアウト上で行なわれてもよく、所望の程度の解像度が得られるまで、プロセスが繰り返される。そのようなシミューレションおよび検証ツールの実施例は、２００１年５月８日に発行のＭｃＳｈｅｒｒｙらの米国特許第６，２３０，２９９号、２００１年６月１９日に発行のＭｃＳｈｅｒｒｙらの米国特許第６，２４９，９０３号、２００２年１月１５日に発行のＥｉｓｅｎｈｏｆｅｒらの米国特許第６，３３９，８３６号、２００２年５月２８日に発行のＢｏｚｋｕｓらの米国特許第６，３９７，３７２号、２００２年７月２日に発行のＡｎｄｅｒｓｏｎらの米国特許第６，４１５，４２１号、および２００２年７月２３日に発行の、Ａｎｄｅｒｓｏｎらの米国特許第６，４２５，１１３号に記載されており、それぞれ参照することにより本明細書に組み込まれる。
【００３０】
新しい集積回路の設計は、数百万ものトランジスタ、レジスタ、コンデンサ、または他の電気的構造体の論理回路、メモリ回路、プログラム可能なフィールドアレイ、および他の回路デバイス内への相互接続を含んでもよい。コンピュータが、より容易にこれらの大きなデータ構造を作製および解析できるように（およびヒトユーザが、これらのデータ構造をより良く理解できるように）、しばしば、典型的には、「セル」と称される小さいデータ構造に階層的に編成される。したがって、マイクロプロセッサまたはフラッシュメモリ設計の場合、単一ビットを記憶するためのメモリ回路を構成するトランジスタの全ては、単一「ビットメモリ」セルに分類されてもよい。したがって、各トランジスタを個々に列挙しなければならないというよりは、単一ビットメモリ回路を構成するトランジスタ群は、集合的に、単一ユニットと称されて、そのように操作することができる。同様に、より大きい１６ビットメモリレジスタ回路を記述する設計データを、単一のセルに分類することができる。次いで、この高レベル「レジスタセル」は、ビットメモリセルのそれぞれとデータをやりとりするための入力／出力回路等の他の種々の回路を記述する設計データとともに、１６ビットメモリセルを含む場合もある。次いで、同様に、１２８ｋＢのメモリアレイを記述する設計データは、レジスタセルのそれぞれとデータのやりとりを行う入力／出力回路等のその独自の種々の回路を記述する設計データとともに、わずか６４，０００のレジスタセルの組み合わせとして簡潔に記述することができる。
【００３１】
マイクロ回路設計データを階層的セルに分類することによって、大きいデータ構造を、より迅速かつ効率的に処理することができる。例えば、回路設計者は、典型的には、設計を解析して、設計に記述された各回路特徴が、その設計からマイクロ回路を製造する製造工場によって指定された設計ルールに準拠することを確実にする。上述の実施例の場合、１２８ｋＢのメモリアレイ全体の各特徴を解析しなければならない代わりに、設計ルールチェックプロセスは、単一ビットセルの特徴を解析することができる。次いで、チェックの結果は、単一ビットセルの全てに適用することができる。単一ビットセルの１つのインスタンスが、設計ルールに準拠することが確認されると、設計ルールチェックプロセスは、（それ自体が１つ以上の階層的セルを構成することができる）その付加的な種々の回路の特徴を単に解析することによって、レジスタセルの解析を完了することができる。次いで、このチェックの結果は、レジスタセルの全てに適用することができる。レジスタセルの１つのインスタンスが、設計ルールに準拠することが確認されると、設計ルールチェックソフトウェアアプリケーションは、メモリアレイにおける付加的な種々の回路の特徴を単に解析することによって、１２８ｋＢのメモリアレイ全体の解析を完了することができる。したがって、大きいデータ構造の解析は、比較的少数のデータ構造を構成するセルの解析に圧縮することができる。
【００３２】
典型的には、マイクロ回路の物理的設計データは、２つの異なる種類のデータ（「描画層」設計データおよび「導出層」設計データ）を含むであろう。描画層データは、マイクロ回路を形成する材料の層内に描画されるポリゴンを記述する。描画層データは、通常、金属層、拡散層、およびポリシリコン層内のポリゴンを含むであろう。次いで、導出層は、描画層データおよび他の導出層データの組み合わせから構成される特徴を含むであろう。例えば、上述のトランジスタゲートの場合、ゲートを記述する導出層設計データは、ポリシリコン材料層におけるポリゴンと拡散材料層におけるポリゴンとの交差点から導出されるであろう。
【００３３】
例えば、設計ルールチェックソフトウェアアプリケーションは、２つの種類の演算を行なうであろう（設計データ値が指定パラメータに準拠するかどうかを確認する「チェック」演算、および導出層データを生成する「導出」演算）。したがって、トランジスタゲート設計データは、以下の導出演算によって生成されてもよい。
【００３４】
ｇａｔｅ＝ｄｉｆｆ  ＡＮＤ  ｐｏｌｙ
この演算の結果は、拡散層ポリゴンとポリシリコン層ポリゴンとの全ての交差点を識別するであろう。同様に、拡散層をｎ型材料でドープすることによって形成されるｐ型トランジスタゲートは、以下の導出演算によって識別される。
【００３５】
ｐｇａｔｅ＝ｎｗｅｌｌ  ＡＮＤ  ｇａｔｅ
次いで、この演算の結果は、拡散層におけるポリゴンをｎ型材料でドープした全てのトランジスタゲート（すなわち、ポリシリコン層ポリゴンと拡散層ポリゴンとの交差点）を識別するであろう。
【００３６】
次いで、チェック演算は、データ設計値のパラメータまたはパラメータ範囲を定義するであろう。例えば、ユーザは、いかなる金属配線ラインも、別の配線ラインの１ミクロンの範囲内にないことを確実にすることを所望する場合がある。この種の解析は、以下のチェック演算によって行なわれてもよい。
【００３７】
ｅｘｔｅｒｎａｌ  ｍｅｔａｌ＜１
この演算の結果は、金属層設計データにおける別のポリゴンに１ミクロンよりも近く接近している、金属層設計データにおける各ポリゴンを識別するであろう。
【００３８】
また、上述の演算は、描画層データを採用するが、チェック演算は、同様に、導出層データ上で行なわれてもよい。例えば、ユーザが、いかなるトランジスタゲートも別のゲートの１ミクロン以内に位置していないことを確認することを所望する場合、設計ルールチェックプロセスは、以下のチェック演算を含む場合がある。
【００３９】
ｅｘｔｅｒｎａｌ  ｇａｔｅ＜１
この演算の結果は、別のゲートから１ミクロン未満に配置されたゲートを表現する全てのゲート設計データを識別するであろう。しかしながら、描画層設計データからゲートを識別する導出演算が行なわれるまで、このチェック演算を行なうことができないことを理解されたい。
【００４０】
表１は、疑似コードにおける回路解析プロセスの実施例を記述する。このようなフローの実施例は、Ｍｅｎｔｏｒ  Ｇｒａｐｈｉｃｓ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｗｉｌｓｏｎｖｉｌｌｅ，Ｏｒｅｇｏｎ）から市販の電子設計ツールであるＣａｌｉｂｒｅファミリを使用して、実装される場合がある。特に、表１は、単位領域あたりの所望の量の構造密度を達成するために、設計内の層に追加される「ダミー」幾何学データ（典型的には、矩形）を挿入するためのアルゴリズムのフローをリストアップする。
【００４１】
【表１】
2010539588.tif 000003
したがって、このフローは、アルゴリズムによって採用される一連の入力を指定する。特に、電子設計自動化ツールの場合、入力データが読み出されるデータベース（すなわち、ｉｎ．ｇｄｓ）、ＧＤＳＩＩデータフォーマットで電子設計自動化ツールに読み込まれる特定のレイアウト設計（すなわち、「ＧＤＳＩＩ」と称される回路設計）、および設計内の主要セル（すなわち、「Ｔｏｐｃｅｌｌ」と称されるセル）を識別する。
【００４２】
（データ編成）
以下により詳細に論じられるように、本発明の種々の実装は、マスタ計算デバイス、１つ以上のリモート計算デバイス、または両方の上で実行する種々の計算プロセスにデータを転送する。故に、本発明の種々の実装の場合、ソフトウェアツールは、定義されたサイズのブロック内のデータを処理するように構成される。例えば、本発明のいくつかの実装の場合、ソフトウェアツールは、１６キロバイトのブロック内のデータを読み出し、転送、および保存するように構成されてもよい。より具体的には、以下により詳細に論じられるように、本発明の種々の実装は、データブロックリソースマネージャを採用し、マスタ計算デバイスのメモリにデータを保存し、そこからデータを読み出す。本発明の種々の実施形態の場合、メモリは、マスタ計算デバイスの処理ユニットに隣接して動作する集積回路メモリデバイスによって提供される「高速」メモリ、磁気または光学ディスクによって提供される「低速」メモリ、またはそれらのいくつかの組み合わせであってもよい。
【００４３】
データブロックリソースマネージャは、例えば、従来のハードドライブ記憶デバイス内で採用される磁気ディスク等のディスク上に単一ファイルを生成してもよい。このファイルは、１６ｋＢブロックに分割され、必要に応じて、データブロックリソースマネージャによって拡張可能である。以下により詳細に論じられるように、データブロックリソースマネージャは、ＤＢＬＯＣＫ  ＩＤを使用して、メモリに関連するデータ集合にアクセスしてもよい（本明細書で使用されるように、用語「アクセス」は、メモリからデータを読み出す、またはメモリにデータを保存するための演算を包含するために使用される）。データ集合は、１つ以上の実際の１６ｋＢブロックのファイルを含んでもよい。この事例では、ＤＢＬＯＣＫ  ＩＤは、図３に例示されるように、データ集合を構成する各１６ｋＢのメモリブロックを識別するオフセットをマッピングする、オフセットマップを参照する。当業者によって理解されるように、２つのＤＢＬＯＣＫ  ＩＤが、同一ファイルオフセットを参照すべきではない。
【００４４】
しかしながら、典型的な関連データ集合は、１６ｋＢのいくつかの整数量でなくてもよいことを理解されたい。例えば、本発明のいくつかの実装の場合、ソフトウェアツールは、Ｍｅｎｔｏｒ  Ｇｒａｐｈｉｃｓ  Ｃｏｒｐｏｒａｔｉｏｎ（Ｗｉｌｓｏｎｖｉｌｌｅ，Ｏｒｅｇｏｎ）から市販のソフトウェア製品であるＣａｌｉｂｒｅ（登録商標）ファミリのソフトウェアツール等の電子設計自動化ソフトウェアツールであってもよい。このような種類のソフトウェアツールの場合、関連データ集合は、集積回路のレイアウト設計からの幾何学的要素のシーケンスを含んでもよい。幾何学的シーケンス等の関連データ集合のサイズが１６ｋＢを超える場合、全ての初期フル１６ｋＢブロックのデータは、磁気ディスク等の「低速」メモリ記憶デバイスに移行され、上述のように、共通のＤＢＬＯＣＫ  ＩＤを使用して参照されてもよい。次いで、常に非空である「ｄｒａｂｂｌｅ」は、メモリ内の「高速」またはローカル残部に保存可能である。
【００４５】
この配列を使用することによって、データブロックリソースマネージャがアクセスデータを検索する時、関連付けられたＤＢＬＯＣＫ  ＩＤを使用して行なうことが可能である。例えば、データブロックリソースマネージャがデータ集合を読み出す必要がある場合、最初に、そのデータ集合と関連付けられたＤＢＬＯＣＫ  ＩＤを識別する。関連ＤＢＬＯＣＫ  ＩＤを識別後、データブロックリソースマネージャは、ＤＢＬＯＣＫ  ＩＤと関連付けられたオフセットを使用して、１６ｋＢずつデータの読み出しを開始する。読み出されるデータブロックが全て読み出され、処理された後、データブロックマネージャは、「ｄｒａｂｂｌｅ」の残り（ローカルメモリ内に保存されてもよい）を読み出し、処理する。次いで、アクセスされる次のデータ集合のためにＤＢＬＯＣＫ  ＩＤを識別してもよい。このように、本発明の種々の実装は、例えば、ハードディスク記憶デバイス上のメモリの１６Ｋｂブロックの一部を浪費する必要なく、データ集合を記憶するために使用されるローカルメモリの量を縮小することが可能である。
【００４６】
（共有データ）
図４は、本発明の種々の実施例に従って、マスタ計算デバイスの種々のプロセス間でデータを共有可能な並列処理計算システムの実施例を示す。本図から分かるように、並列処理計算システム４０１は、Ｎ＋１個の数の計算プロセス４０３のインスタンス化（０、１…Ｎ）を含む。より具体的には、並列処理計算システム４０１は、主要計算プロセス４０３'およびＮ個の数の「擬似」計算プロセス４０３Ａ−４０３ｘを含む。本発明の例示される実装の場合、計算プロセス４０３は、集積回路設計情報の階層的データベース（ＨＤＢ）上で動作するように構成される電子設計自動化ツールである。また、本図で例示されるように、各計算プロセス４０３は、データブロックマネージャ４０５を含む（または別様に採用する）。各データブロックマネージャは、その関連付けられた計算プロセス４０３からの命令に応答して、データを要求または伝送するように構成される。
【００４７】
また、主要計算プロセス４０３’は、データブロックリソースマネージャ４０７を含む。データブロックリソースマネージャ４０７は、マスタ計算デバイスのメモリの構成要素にデータを保存し、そこからデータを読み出すことが可能である。例示される実施例では、メモリは、マスタ計算デバイスの処理ユニットに隣接して動作する集積回路メモリデバイスによって提供され得る「高速」またはローカルメモリ４０９と、磁気または光学ディスク記憶デバイスによって提供される「低速」メモリ４１１の両方を含む。しかしながら、本発明の種々の実装の場合、データブロックリソースマネージャ４０７は、任意の数の異なる記憶ソースからデータを読み出すか、またはそこにデータを保存することが可能であってもよいことを理解されたい。これらの実装の場合、ＤＢＬＯＣＫ  ＩＤ内のブロックは、同一ソースから割り当てられ、ソースは、指定されたブロックの割り当て（例えば、例示される実施例の場合、１６Ｋｂ）をサポートすべきである。
【００４８】
データブロックリソースマネージャ４０７は、擬似計算プロセス４０３Ａ−４０３ｘの各インスタンス化のためのデータブロックリソースサーバ４１３を含む。したがって、データブロックリソースマネージャ４０７は、計算プロセス４０３Ａと関連付けられたデータブロックリソースサーバ４１３Ａ、計算プロセス４０３ｘと関連付けられたデータブロックリソースサーバ４１３ｘ等を含む。本発明の種々の実装の場合、各データブロックリソースサーバ４１３は、その対応する計算プロセス４０３専用である。また、本発明の例示される実装の場合、主要計算プロセス４０３’は、データブロックリソースマネージャ４０７と直接相互作用が可能であって、主要計算プロセス４０３’と関連付けられたデータブロックリソースサーバ４１３の必要性を排除する。しかしながら、本発明のさらに他の実装の場合、主要計算プロセス４０３’は、同様に、関連付けられたデータブロックリソースサーバ４１３’を通して、データブロックリソースマネージャ４０７と相互に作用してもよい。
【００４９】
擬似計算プロセス４０３のインスタンス化が、計算デバイスのメモリからデータを読み出すために必要である時、データブロックリソースマネージャ４０７からデータを要求するように、その関連付けられたデータブロックマネージャ４０５に命令する。それに応じて、データブロックマネージャ４０５は、その関連付けられたデータブロックリソースサーバ４１３から指定されたデータを要求する。次いで、データブロックリソースサーバ４１３は、データブロックリソースマネージャ４０７に、ローカルメモリ４０９、ディスクメモリ４１１、または必要に応じて両方から要求されたデータを取得させる。データブロックリソースマネージャ４０７が、要求されたデータを読み出した後、データブロックリソースサーバ４１３は、読み出されたデータをその関連付けられたデータブロックマネージャ４０５に提供し、擬似計算プロセス４０３によって採用され得る。逆プロセスを使用して、計算プロセス４０３によって生成されるデータを保存する。
【００５０】
図５は、主要計算プロセス４０３'（表中、ＨＤＢ０と称される）と擬似計算プロセス４０３Ａ（表中、ＨＤＢ１と称される）との間の幾何学データのシーケンス（表中、Ｌと称される）を交換するために、本発明の種々の実施形態によって行なわれ得る演算を表す表を示す。本発明の種々の実装の場合、データブロックマネージャ４０５は、例えば、従来のプロセス間の通信（ＩＰＣ）技術を使用するＵＮＩＸ（登録商標）ドメインソケットを通して、その関連付けられたデータブロックリソースサーバ４１３と通信してもよい。当然ながら、適切な場合、使用される基礎オペレーティングシステム、ハードウェア構成等に対して、さらに他の通信技術を採用可能である。
【００５１】
（分散データ）
図６は、本発明の種々の実施例に従って、マスタ計算デバイスの異なるプロセス間でデータを共有可能な並列処理計算システムの実施例を示す。本図から分かるように、並列処理計算システム６０１は、マスタ計算デバイス６０３（図中、ラベル「マスタノード」によって識別される）と、複数のリモート計算デバイス６０５Ａ、６０５Ｂ…６０５ｙ（図中、ラベル「リモートノード」によってそれぞれ識別される）とを含む。マスタコンピュータ５０３は、上述のように、Ｎ＋１個の数の計算プロセス４０３のインスタンス化（０、１・・・Ｎ）を含み、これらの「マスタ」計算プロセス４０３はそれぞれ、データブロックマネージャ４０５を含み、主要計算プロセス４０３’は、データブロックリソースマネージャ４０７を含む。
【００５２】
リモート計算デバイスはそれぞれ、リモート計算プロセス６０７の１つ以上のインスタンス化（図中、「ＨＤＢ＿ＲＣＳ」として標識化される）を含む。各リモート計算プロセス６０７は、マスタ計算デバイス５０３上の対応する計算プロセス４０３のコピーであってもよく、またはマスタ計算デバイス５０３上の対応する計算プロセス４０３のサブプロセスであってもよい。各リモート計算プロセス６０７は、リモートデータクライアント（図示せず）を含む、または別様に採用する。また、各リモート計算デバイス６０５は、リモートデータサーバ６０９（リモートデータブロックリソースマネージャとも称される）を実装する。データブロックリソースマネージャ４０７と同様に、各リモートデータサーバ６０９は、そのリモート計算デバイス６０５のメモリにデータを保存し、そこからデータを読み出すことが可能である。再び、リモート計算デバイス６０５のためのメモリは、リモート計算デバイスの処理ユニットに隣接して動作する集積回路メモリデバイスによって提供される「高速」メモリ、磁気または光学ディスクによって提供される「低速」メモリ、またはそれらのいくつかの組み合わせであってもよい。リモートデータクライアント、リモートデータサーバ６０９、およびデータブロックマネージャ４０５はそれぞれ、ネットワーク内に相互接続される。
【００５３】
上述のように、各リモートデータクライアント（図示せず）は、リモートデータクライアント、リモートデータサーバ６０９、およびデータブロックマネージャ４０５によって形成されるネットワークを介する１６Ｋブロック内のデータ送受信（読み／書き）機能の提供に関与する。各リモート計算プロセス６０７は、リモートデータクライアントを有し、各リモートデータクライアントは、インスタンス化される時、データブロックリソースマネージャ４０７から一意の識別子を取得する。
【００５４】
次いで、各リモートデータサーバ６０９は、任意のリモートデータクライアントからの１６Ｋブロックの受信と、その関連付けられたリモート計算デバイス６０５のメモリ内へのデータ記憶とに関与する。また、各リモートデータサーバ６０９は、その関連付けられたリモート計算デバイス６０５のメモリからのデータ受信と、任意のリモートデータクライアントへのそのデータの送信とに関与する。リモートデータサーバ６０９がインスタンス化される時、データブロックリソースマネージャ４０７は、リモートデータサーバ６０９を追跡し、それと通信可能であるように通知されるであろう。本発明の種々の実装の場合、リモートデータサーバ６０９は、１ＧＢ等の固定量のメモリを管理してもよい。また、リモートデータサーバ６０９を制御するための制御情報は、伝送制御プロトコル（ＴＣＰ）を使用するインターフェース等の標準計算プロセスインターフェースを介して、リモートデータサーバ６０９へ送信され、そこから読み出すことが可能である。
【００５５】
計算プロセス６０７のリモートインスタンス化がデータへのアクセスを必要とする時、データを要求するように、その関連付けられたリモートデータクライアントに命令する。データが、別のリモート計算プロセス６０７によって管理されている場合、リモートデータクライアントは、そのリモート計算プロセス６０７と関連付けられたリモートデータサーバ６０９からデータを要求するであろう。代替として、データが、マスタ計算デバイス上の計算プロセスによって管理されている場合、リモートデータクライアントは、そのマスタ計算プロセスと関連付けられたデータブロックマネージャからデータを要求するであろう。上述のように、データブロックマネージャは、次に、マスタ計算デバイス上の主要計算プロセスと関連付けられたデータブロックリソースマネージャを通して、データを取得してもよい。同様に、リモート計算プロセスが、データの保存を必要とする場合、対応するメモリ内への記憶のために、適切なリモートデータサーバまたはデータブロックリソースマネージャにデータを提供するように、その関連付けられたリモートデータクライアントに命令する。
【００５６】
本発明の種々の実施例の場合、データブロックマネージャ、リモートデータクライアント、およびリモートデータサーバは、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）またはユーザデータグラムプロトコル等の好適なネットワーク通信プロトコルを使用して、電子通信ネットワークによって相互接続されてもよい。本発明のいくつかの実装の場合、データブロックマネージャ、リモートデータクライアント、およびリモートデータサーバは、ＵＤＰの信頼性のある形態を使用して、相互接続されてもよい。例えば、本発明のいくつかの実装は、ＵＤＰを使用して、それぞれデータのブロックを確実に読み出し、送信するために、図７および８に示されるデータフォーマットを使用してもよい。これらのブロックの要素は、以下に論じられる。
【００５７】
ａ．シーケンス番号：４バイト、ＲＤＣ維持ブロックシーケンス番号、毎成功トランザクション後に増加させられる。この番号は、ＲＤＣが指定のトランザクションが成功したことを確認することが可能なように、ＲＤＳによって返される。
【００５８】
ｂ．トランザクションＩＤ：４バイト、ＲＤＣ／ＲＤＳ維持、ＲＤＳ指定トランザクションＩＤ、ＲＤＳが失効トランザクションを検出可能なように、毎成功トランザクション後に増加させられる。
【００５９】
ｃ．クライアントＩＤ：４バイト、ＲＤＣに対して一意である（リソースマネージャによって割り当てられる）。理由：ＲＤＣトランザクションＩＤ情報の参照として、ＲＤＳによって使用される。
【００６０】
ｄ．タイムスタンプ：８バイト。クライアントによって使用され、往復時間を推定し、再送ＲＴＴの曖昧性問題を回避する。
【００６１】
ｅ．ブロック指数：ＲＤＣがＲＤＳから所望するブロックの指数である。
【００６２】
ｆ．ＲＤＳ  ＩＰアドレス：４バイト、ＲＤＣによって使用され、受信されたデータが正しいＲＤＳからのものであることを保証する。クライアントＵＤＰソケットは、どこからでも、そのＩＰアドレスおよびポートのために予定された任意のデータを受信する。
【００６３】
ｇ．ＲＤＳポート：２バイト、上記と同一目的である。
【００６４】
ＲＤＣは、シーケンス番号、トランザクションＩＤ、およびリモートアドレスを使用して、トランザクションを認証するが、また、ＲＤＣは、ＲＤＳから応答を取得しない場合に、再送する準備をしなければならない。再送は、ＲＴＴ推定値に基づいてもよい（ＴＣＰと同様）。ＲＤＣは、最大回数まで再送を試み、その再送タイマの最大時間まで指数関数的バックオフを使用するであろう（ＴＣＰと同様）。
【００６５】
（結論）
上述のように、本発明は、その好適でかつ例示的な実施形態の観点から説明された。添付の請求項の範囲および精神内における数多くの他の実施形態、修正例、および変形例が、本開示の検討から当業者には想起されるであろう。
【図１】
2010539588.tif 000004
【図２】
2010539588.tif 000005
【図３】
2010539588.tif 000006
【図４】
2010539588.tif 000007
【図５】
2010539588.tif 000008
【図６】
2010539588.tif 000009
【図７】
2010539588.tif 000010
【図８】
2010539588.tif 000011
【国際調査報告】
2010539588.tif 000012
2010539588.tif 000013
2010539588.tif 000014