(57)【要約】【課題】非同期π計算に基づいたマシンコードを直接実行するように設計されたプロセッサを提供すること。【解決手段】このようなプロセッサは、π計算に基づくプログラムを実行するためのスケーラブルで疎結合されたアーキテクチャを提供することを目的とする、マルチプロセッサシステムの要素とすることができる。【選択図】図５Ｂ
2006155600.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサを備え、前記プロセッサは、π計算プリミティブに基づくハードウェア命令を実行するようになされた電子回路を含むことを特徴とするコンピュータプロセッサシステム。
【請求項２】
前記π計算プリミティブは、非同期π計算プリミティブであることを特徴とする請求項１に記載のコンピュータプロセッサシステム。
【請求項３】
前記少なくとも１つのプロセッサは、複数の電子回路をさらに含み、前記複数の電子回路の各々は、対応する１組のπ計算プリミティブに基づく１組のハードウェア命令のうち該当する１つを実行するように適合していることを特徴とする請求項１に記載のコンピュータプロセッサシステム。
【請求項４】
前記１組のハードウェア命令は、１対のワードを非同期で送るための命令と、チャネルから１対のワードを読み取るための命令とを含むことを特徴とする請求項３に記載のコンピュータプロセッサシステム。
【請求項５】
前記１対のワードを非同期で送るための命令は、少なくとも部分的に、明細書の付録に示されているＳＥＮＤ２命令のハードウェア定義言語の記述に基づくことを特徴とする請求項４に記載のコンピュータプロセッサシステム。
【請求項６】
前記チャネルから１対のワードを読み取るための命令は、少なくとも部分的に、明細書の付録に示されているＲＥＣＥＩＶＥ２命令のハードウェア定義言語の記述に基づくことを特徴とする請求項４に記載のコンピュータプロセッサシステム。
【請求項７】
前記１組のハードウェア命令は、
新しい通信チャネルを動的に作成するための命令と、
チャネルのリストをリスンし、次いで、前記リストにおけるチャネルの１つにデータが出現したときに、処置を実行するための命令と、
前記プロセッサ上で走っているプロセスのリストに新しいプロセスを追加するための命令と、
チャネル上で受け取られたデータ値を処理するための新しいプロセスを生成するための命令と、
プロセスの実行を停止するための命令とのうち少なくとも１つを含むことを特徴とする請求項４に記載のコンピュータプロセッサシステム。
【請求項８】
前記新しい通信チャネルを動的に作成するための命令は、少なくとも部分的に、明細書の付録に示されているＮＥＷ命令のハードウェア定義言語の記述に基づくことを特徴とする請求項７に記載のコンピュータプロセッサシステム。
【請求項９】
前記チャネルのリストをリスンするための命令は、少なくとも部分的に、明細書の付録に示されているＳＥＬＥＣＴ命令のハードウェア定義言語の記述に基づくことを特徴とする請求項７に記載のコンピュータプロセッサシステム。
【請求項１０】
前記新しいプロセスを追加するための命令は、少なくとも部分的に、明細書の付録に示されているＰＡＲ命令のハードウェア定義言語の記述に基づくことを特徴とする請求項７に記載のコンピュータプロセッサシステム。
【請求項１１】
前記新しいプロセスを生成するための命令は、少なくとも部分的に、明細書の付録に示されているＳＥＲＶＥ命令のハードウェア定義言語の記述に基づくことを特徴とする請求項７に記載のコンピュータプロセッサシステム。
【請求項１２】
前記プロセスの実行を停止するための命令は、少なくとも部分的に、明細書の付録に示されているＨＡＬＴ命令のハードウェア定義言語の記述に基づくことを特徴とする請求項７に記載のコンピュータプロセッサシステム。
【請求項１３】
コンピュータで使用するための回路基板であって、
各プロセッサは、対応する１組のπ計算プリミティブに基づく１組のハードウェア命令のうち該当する１つを実行するようになされている、複数のプロセッサと、
前記複数の各プロセッサに接続されたメモリとを備えたことを特徴とする回路基板。
【請求項１４】
前記メモリは、デュアルポートメモリであることを特徴とする請求項１３に記載の回路基板。
【請求項１５】
前記デュアルポートメモリは、メッセージパッシングシステムにおいて使用されるチャネルを表すことを特徴とする請求項１４に記載の回路基板。
【請求項１６】
前記デュアルポートメモリは、プログラムおよびデータのためのキャッシュの役割をすることを特徴とする請求項１５に記載の回路基板。
【請求項１７】
前記メモリは、ＳＤＲＡＭコントローラを介してアクセスされることを特徴とする請求項１３に記載の回路基板。
【請求項１８】
ＳＤＲＡＭコントローラは、より大きいメモリとの通信を管理することを特徴とする請求項１７に記載の回路基板。
【請求項１９】
ハードウェアリソースに対する接続を提供する１つまたは複数のチャネルをさらに備えたことを特徴とする請求項１３に記載の回路基板。
【請求項２０】
他のプロセッサに所有されるチャネルに、前記プロセッサがそれを介してアクセスすることができるスイッチネットワークをさらに備えたことを特徴とする請求項１３に記載の回路基板。
【請求項２１】
前記プロセッサは、フィールドプログラマブルゲートアレイに実装されることを特徴とする請求項１３に記載の回路基板。
【請求項２２】
前記プロセッサは、シリコンチップに実装されることを特徴とする請求項１３に記載の回路基板。
【請求項２３】
通信経路と、
前記通信経路に独立して結合された複数のプロセッサとを備え、各前記プロセッサは、対応する１組のπ計算プリミティブに基づく１組のハードウェア命令のうち該当する１つを実行するようになされていることを特徴とするコンピュータプロセッサシステム。
【請求項２４】
前記通信経路に結合された処理サービスをさらに備え、各前記プロセッサは、前記通信経路を介して前記処理サービスにアクセスすることができることを特徴とする請求項２３に記載のシステム。
【請求項２５】
前記通信経路に結合されたメモリをさらに備え、各前記プロセッサは、前記通信経路を介して前記メモリにアクセスすることができることを特徴とする請求項２３に記載のシステム。
【請求項２６】
前記通信経路に結合されたメモリをさらに備え、各前記プロセッサは、前記通信経路を介して前記メモリを読み取りまたそれに書き込むことができることを特徴とする請求項２３に記載のシステム。
【請求項２７】
ハードウェア命令を実行するためのプロセッサであって、
複数の電子回路を備え、各前記電子回路は、少なくとも部分的に、明細書の付録に示されているハードウェア定義言語のステートメントの１つによって定義されることを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータプロセッサに関する。より詳細には、本発明は、非同期π計算に基づくマシンコードを直接実行するように設計されたプロセッサに関する。
【背景技術】
【０００２】
本明細書に開示され主張される主題は、２００４年３月１１日に出願された「Ｐｒｏｃｅｓｓ  Ｌａｎｇｕａｇｅ  Ｆｏｒ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒｓ  Ｗｉｔｈ  Ｆｉｎｉｔｅ  Ｒｅｓｏｕｒｃｅｓ」という名称の米国特許出願第１０／８１６５５８号明細書で開示され主張された主題に関係する。上記の米国特許出願の開示は、参照により本明細書に組み込まれる。
【０００３】
π計算は、例えば携帯電話がある基地局から他の基地局に移動するとき、通信リンクを動的に再編成することができる、疎結合されたメッセージパッシング（ｍｅｓｓａｇｅ  ｐａｓｓｉｎｇ）システムを、効果的にモデル化する方法を提供する。π計算については、詳しく説明されている（例えば、非特許文献１参照）。当初、このモデルは、このようなシステムについての形式的な理論づけをするために用いられていたが、最近では、実際にシステムを実装するために、プログラミング言語に基づくπ計算が提案されている。また、当初のπ計算は、メッセージの送信側が受信側から肯定応答を受ける同期モデルであった。現在では、（インターネットの様式で）応答を待つ必要なしにメッセージを送信することができる、非同期π計算が開発された。
【０００４】
π計算手法に基づいた形式化により、通信システムの挙動に関する厳密な理論づけが可能になる。例えば、２つの並行するプロセスを解析して、２つの並行するプロセス間の通信が、あるプロトコルに準拠することを保証することが可能になる。π計算に基づく言語で書かれたプログラムは、プログラムに課せられる規律を有し、この規律により、手動または自動の解析が、任意のＣ＃コードでの同等の解析の実行を試みるよりも容易になる。
【０００５】
一部の人々にとっては、π計算が、プログラミング言語の基礎を形成することができるという考えは、急進的な発想であるが、いくつかのプロジェクトにより、この手法が多数の利点を有することが示されている。π計算に基づくプログラミング言語は、いくつかの特定のウェブサービスにおいて、疎結合されたメッセージパッシングシステムを設計し実装するために開発されている。π計算の実際の適用の１つとして、ウェブサービスに対する「コントラクト（ｃｏｎｔｒａｃｔ）」の解析がある。
【０００６】
【非特許文献１】Ｒｏｂｉｎ  Ｍｉｌｎｅｒ，“Ｃｏｍｍｕｎｉｃａｔｉｎｇ  ａｎｄ  ｍｏｂｉｌｅ  ｓｙｓｔｅｍｓ  ｔｈｅ  ｐｉ−ｃａｌｃｕｌｕｓ”，Ｃａｍｂｒｉｄｇｅ  Ｕｎｉｖｅｒｓｉｔｙ  Ｐｒｅｓｓ，１９９９
【発明の開示】
【発明が解決しようとする課題】
【０００７】
π計算に基づいたプログラミング言語を用いる例示的システムは、従来のシステムソフトウェア（例えば、共通言語ランタイム（「ＣＬＲ」）、および従来のプロセッサアーキテクチャ（例えば、インテルのｘ８６プロセッサ）上で実行されることにより動作する。ただし、システムアーキテクチャまたはプロセッサは、疎結合されたメッセージパッシングプログラムを直接実行するために利用可能であることが望ましい。すなわち、π計算レベルのコードと従来の命令セットアーキテクチャの意味論的な格差を埋めるために、π計算に基づくプログラムを直接実行するメッセージパッシングプロセッサシステムを有することが望ましい。
【０００８】
このようなシステムは、さらにプロセッサを追加するのに応じて拡張することができるように、適切なプロセッサおよびメモリアーキテクチャで設計されることが望ましい。すなわち、このようなプロセッサは、ｘ８６アーキテクチャの場合のように単一のプロセッシングエンジンに集約された膨大な複雑さによってではなく、多数の単純な小型プロセッサのスケーラブルな展開によって、パフォーマンスを達成できることが特に望ましい。疎結合されたアーキテクチャに基づく小型のプロセッサは、パフォーマンスと電力のトレードオフの関係をより容易にする。低い電力が適用された場合は、１つのプロセッサのみが必要とされ得る。インターネット検索の加速やバイオコンピューティングなどの高度なコンピューティングの課題では、数百のプロセッサを展開することが望ましい。
【課題を解決するための手段】
【０００９】
本明細書に記載の発明は、従来のプロセッサ上で、π計算ベースのプログラムを効果的に実装するための適切な中間コンパイル技術を提供し、さらに、π計算プリミティブ（ｐｒｉｍｉｔｉｖｅ）に基づく新規の命令セットアーキテクチャを提供する。π計算用のプロトタイプのプロセッサは、実際のハードウェア上で設計され実装されている。
【００１０】
本発明は、π計算に基づくプログラムをハードウェア上で直接実行するための、命令セットアーキテクチャおよびプロセッサの設計を提供する。本発明のプロセッサの例示的実施形態は、基本的なオペレーティングシステムカーネルを有することができるが、複数のプロセスおよびコンテキストスイッチ（ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈ）などを管理するためのコードを書く必要がない。例えば、タスクスイッチング（ｔａｓｋ  ｓｗｉｔｃｈｉｎｇ）は、ハードウェアにおいてプロセッサにより実行することができ、π計算に基づくプログラムを用いることによって、コードの並列可能性を明らかにされる。これにより、他のプロセッサやリモート位置においてさえ、コードを実行することが可能になる。
【００１１】
このようなアーキテクチャは、「疎結合」されているものとして記述され得る。つまり、異なるマシンで実行されている、プログラムのいくつかのコンポーネントは、互いにメッセージを受け渡すことによって通信を行うことができる。従来のプロセッサでは、コンポーネントは、特定のタスクの実行を要求し、その要求に対する応答を待機する。疎結合されたアーキテクチャでは、通常、処理のフローを制御する中央処理装置が存在しない。個々のプロセッサは、単に、特定の機能の実行を要求するメッセージを送り、次いで、通常は、この最初の要求に対する応答を待機せずに、次に行うようにプログラムされている処理に移る。したがって、このようなシステムは、非同期である。最終的に、応答は、いくつかの所定のルールセットに従って、メッセージを送ったプロセッサ、または他のプロセッサによって受け取られる。このタイプのアーキテクチャは、プロセッサができる限り独立して（したがって並列して）進行することを可能にする疎結合されたフレームワークを提供することによって、シリコンチップの電力をより有効に利用する助けとなることができる。
【００１２】
しかし、このような疎結合アーキテクチャでは、このようなメッセージパッシングの結果を、制御された予測可能な方法で調整する理論が必要とされる。非同期π計算は、このような理論を提供する。本発明によるプロセッサでは、非同期π計算に焦点が当てられる。π計算プリミティブに対応する命令セットは、ハードウェアで定義されている。また、プロセッサは、それ自体を、典型的にはソフトウェアによって達成される機能であるスレッド間でスケジュールする。本発明によるプロセッサシステムは、例えば、ＦＰＧＡハードウェア上で直接演算されるウェブサービスの設計および実装の際に使用することができる。
【発明を実施するための最良の形態】
【００１３】
非同期π計算に基づく命令セットアーキテクチャを直接実行するプロセッサの例示的実施形態をここで説明する。このようなプロセッサは、言語レベルの概念とマシンコードレベルの実装の間の意味論的格差を埋めることによって、非同期π計算に基づく言語で書かれたプログラムを実行するために使用することができるエンジンを提供する。
【００１４】
π計算は、チャネル名が伝送媒体と伝送データの両方の役割をすることができるプロセス代数である。したがって、π計算は、モバイルシステム（ｍｏｂｉｌｅ  ｓｙｓｔｅｍ）として知られる自律エージェントのシステムをモデル化するために使用することができる。モバイルシステムは、個々のコンポーネントが、自由に自発的に選択することが可能な方法で互いに対話する、通信ネットワークの１つの形態である。π計算は、携帯電話ネットワーク、インターネット、およびオブジェクト指向ソフトウェアプログラムなどの多様な並行計算システムにおける対話をモデル化するために開発された。π計算は、ＢＰＭＩ．ｏｒｇによって開発されたＢＰＭＬ（ビジネスプロセスモデリング言語（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ））などのビジネスプロセス仕様の基礎として、また、ＢＰＥＬ４ＷＳの先行モデルのＭｉｃｒｏｓｏｆｔ（登録商標）のＸＬＡＮＧにおいて採用されている。
【００１５】
非同期π計算は、選択および出力プレフィックス変換（ｏｕｔｐｕｔ−ｐｒｅｆｉｘｉｎｇ）のための明示的な演算子を含まないπ計算の部分集合である。非同期π計算に基づく命令セットの例示的実施形態の基本的要素は、次の７つの命令を含むことができる。
【００１６】
ＮＥＷ  −  新しい通信チャネルを動的に作成するための命令
ＳＥＮＤ２  −  １対のワードを（直接または間接的に）非同期で送るための命令
ＲＥＣＥＩＶＥ２  −  チャネルから１対のワードを読み取るための命令
ＳＥＬＥＣＴ  −  チャネルのリストをリスン（ｌｉｓｔｅｎ）して、データがチャネルの１つに出現したときに、ある種の処置を行うための命令
ＰＡＲ  −  プロセッサ上で走っているプロセスのリストに、新しいプロセスを追加するための命令
ＳＥＲＶＥ  −  チャネルに新たに到着したデータ値を取り扱う新しいプロセスを生成するための命令
ＨＡＬＴ  −  プロセスの実行を停止するための命令
本発明によれば、上記の各命令を実行するために、それぞれのハードウェア回路を定義することができる。本発明によるシステムは、これらの命令のうちの１つまたは複数を含むことができる。ソフトウェアは、π計算プリミティブに基づいたプログラミング言語で書かれることが期待されるため、そのソフトウェアが実行されるマシンは、π計算プリミティブに対応するハードウェア命令を使用して管理され得る。したがって、本発明によるシステムにおいて、π計算モデルは、「トップからボトムまで（ｔｏｐ  ｔｏ  ｂｏｔｔｏｍ）」徹底して適用することができる。それぞれの命令を実行するための、ハードウェアプロセッサの例示的実施形態のハードウェア定義言語（Ｈａｒｄｗａｒｅ  ｄｅｆｉｎｉｔｉｏｎ  ｌａｎｇｕａｇｅ）（「ＨＤＬ」）の記述は、本明細書の付録に示されている。
【００１７】
二つの部分から成る（ｄｙａｄｉｃ）非同期送信を選択することにより、第２の引数として「継続チャネル（ｃｏｎｔｉｎｕａｔｉｏｎ  ｃｈａｎｎｅｌ）」を渡すことによって同期送信をモデル化することができる。受信側は、メッセージを受け取ると、次いで、受信に肯定応答をするために、継続チャネルを介してダミー値を送信側に送ることができる（すなわち、基本的なハンドシェークプロトコル）。ＲＥＣＥＩＶＥ２命令は、実際的には、ＳＥＬＥＣＴ命令の変質した事例であることに留意されたい。ＲＥＣＥＩＶＥ２命令は、一般的にプログラムが非決定的選択よりも多数の受信を有するので、効率のためにプリミティブ命令として提供される。
【００１８】
これら７つの命令は、任意の計算可能な関数の実行（すなわち、プロセッサは「チューリング完全（Ｔｕｒｉｎｇ  ｃｏｍｐｌｅｔｅ）」）およびモデルデータ型を提供する。しかし、効率のために、３２ビット符号付き整数が、基本データ型としてサポートされることが好ましい。チャネルもまた、３２ビットアドレスで表現され得る。
【００１９】
非同期π計算で書かれたプログラムは、典型的には、チャネルを介した通信、または新しいチャネルの作成を試みる、プロセスの集合体である。あるプロセスが、チャネルを介して他のプロセスにメッセージを送るとき、どの期間にメッセージが送られたかについて対話が行われうる。この送信プロセスは、強制終了することができ（非同期送信に対する後続の処理がない）、受信側は、受け取ったばかりの新しいデータ値で実行を再開することができる。したがって、プログラムの実行は、プロセス間の一連の対話に相当し得る。
【００２０】
好ましい実施形態では、３６ビットの値を有するメモリをサポートできるＦＰＧＡハードウェアを用いることができる。図１は、３６ビットメモリワードの例示的実施形態を示す。図に示されるように、ＯＰコード（およびチャネル状況情報）は、４桁の最上位ビットに格納することができ（すなわち、図１に示す左端の４ビット）、３６ビットワードの残り（すなわち、右端の３２ビット）に、３２ビット値を格納することができる。
【００２１】
一般に、大部分の命令に対し最初の引数がチャネルとなる。チャネルは、グローバルメモリ空間におけるアドレスによって表すことができる。命令セットアーキテクチャは、その絶対アドレスによってチャネルを識別する必要はない。代わりに、絶対チャネルアドレスを含む「変数」を介して、間接的にチャネルを参照することができる。例えば、ＮＥＷ  ＯＰコードは、新しく割り当てられたチャネルのアドレスが貯蔵される、ローカル変数（すなわち、現在の「スタックフレーム（ｓｔａｃｋ  ｆｒａｍｅ）」からのオフセット）を指定する引数によって呼び出すことができる。
【００２２】
ＳＥＮＤ２命令もまた、同様の方法で、すなわち、チャネルの実アドレスを含むスタックフレーム上のローカル変数を識別することによって、通信に使用するチャネルを指定することができる。ＳＥＮＤ２命令は、ローカル変数の内容を参照してその内容（例えば、チャネルの絶対アドレス）を送ることにより、ローカル変数を指定することができる間接引数を送ることができる。これにより、π計算の基本的特徴である、チャネルを介したチャネルの送信が可能になる。ＳＥＮＤ２命令はまた、即時モード引数を送ることもできる。他のモードの送信命令は、送られるネストされたスコープ（ｎｅｓｔｅｄ  ｓｃｏｐｅ）で変数を送ることができる。このＯＰコードは、ネストされたプロシージャおよび関数がＰａｓｃａｌのような言語で使用されるときに、スタックフレームを外から利用するためのＮＳ３２０１６プロセッサにおける命令と同様である。
【００２３】
新しいプロセスは、ＳＥＲＶＥコマンドにより、新しいタスクフレームをヒープ（ｈｅａｐ）上に割り当てることによって生成することができる。このタスクフレームの最初のワードは、エンクロージングタスクフレーム（ｅｎｃｌｏｓｉｎｇ  ｔａｓｋ  ｆｒａｍｅ）を指し示す。
【００２４】
同時および分散アプリケーションのより大きいクラスによるプロファイルが所望されるとき、周知の技術を使用して、ガーベッジコレクタを実装することができる。したがって、他の実施形態では、既存のスタックフレームを複製し拡張して、ガーベッジコレクションをより容易にすることができる。このような実施形態では、ＳＥＲＶＥ  ＯＰコードは、異なるプロセッサ上で生成されたプロセスのインスタンスを自由に生成することができる。
【００２５】
コンパイルされたアセンブリの第１のワードは、初期タスクフレームのアドレスを含み、第２のワードは、そのサイズを含むことができる。これにより、ランタイムシステムが、ヒープの初期アドレスを解決することが可能になる。したがって、プログラムコードは、メモリアドレス２から開始することができる。
【００２６】
チャネルの集合体を同時にリスンし、次いで、チャネルの１つにデータが出現したときに適切な処置を取り、他のリスンを中止することが望まれることがある。この機能は、ＳＥＬＥＣＴ命令によって実行され、チャネルとアドレスの対のリストが付随することがある。プロセッサは、不特定の順序でチャネルを検査してリスンし、チャネルがデータを有する場合、対応するコードを実行することができる。
【００２７】
命令セットは、（固定されたままの専用チャネルのアドレスをモジュロ（ｍｏｄｕｌｏ）として）ＰＡＲおよびＳＥＬＥＣＴ命令に対する引数で指定される絶対アドレスにオフセットを追加することにより、容易に再配置可能なマシンコードが可能になるように設計することができる。命令セットアーキテクチャに関し、プロセスがどのようにスケジュールされるか、または、特定のチャネルにいくつのデータ項目が収容することができるかについて特に言うべきことはない。フェアネス（ｆａｉｒｎｅｓｓ）など他のものを含め、それらの問題点については、特定のアーキテクチャの実装によって設定することができる。
【００２８】
命令セットアーキテクチャは、数値処理集中のアプリケーションではなく、制御およびプロトコルアプリケーションに適するように設計することができる。数値集中のサブコンポーネントを組み込む有効な方法として、例えば、この機能に対して、何らかの専用のハードウェアを設計し、通常のチャネルにアクセスするために使用するのとまったく同じチャネルプロトコルを用いて通信を行う。
【００２９】
本発明の趣旨から逸脱することなく、他の命令を命令セットに追加することができることに留意されたい。このような命令の例には、同期送信、ならびに単体の送信および受信が含まれる。しかし、これらの追加の命令を含めることにより必要となるシリコン面積の増加のため、それらを含めることに起因し得るパフォーマンスの向上が、保証されないことがあることを理解されたい。例えば、同期送信が、ある種のアプリケーションで共通することがあっても、それらのリモートの実装は、いずれにせよ、前述の継続パッシングに基づくコード化で行われる、ある種のハンドシェークプロトコルに変質することになる。したがって、わずかにより大きなプログラム（および継続チャネル）を格納するのに必要な追加の数バイト、およびローカル設定における数サイクルの損失を負担することが好ましい。
【００３０】
ハードウェアプラットフォームおよびプロセッサアーキテクチャ
本発明によるメッセージパッシングプロセッサシステムに採用することができるハードウェアプラットフォームの例示的実施形態または「基板（ｂｏａｒｄ）」は、マルチメディアシステムを構成する様々なリソースに接続されるフィールドプログラマブルゲートアレイ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）（「ＦＰＧＡ」）を含むことができる。本発明に従って設計された１つまたは複数（例えば１０個）のプロセッサを含むことができるＦＰＧＡは、（それぞれが例えば２ＭＢ  ＺＢＴメモリである）全体として独立した複数のメモリバンク、ビデオ入出力ロジック（ｖｉｄｅｏ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｌｏｇｉｃ）、音声入出力、Ｅｔｈｅｒｎｅｔ（登録商標）インターフェース、シリアル入力、キーボード入力、マウス入力、ＣｏｍｐａｃｔＦｌａｓｈインターフェース、ならびに、様々なスイッチおよびＬＥＤに接続することができる。
【００３１】
π計算プロセッサのための上述の命令セットアーキテクチャは、従来の意味ではどのようなレジスタも必要としない。ＦＰＧＡアーキテクチャは、（例えば、好ましい実施形態では５６の）多数のデュアルポートメモリを提供し、各メモリのサイズは、例えば、１８Ｋにすることができる。このようなＦＰＧＡは、メッセージパッシングシステム、ならびにプログラムおよびデータ用のキャッシュで使用されるチャネルを表すために使用することができる。メインメモリは、より大きい（例えば、好ましい実施形態では５バンクの２ＭＢの）メモリチップとの通信を管理する「ＳＤＲＡＭ」コントローラを介してアクセスされ得る。例えば、加算器、乗算器、シリアルポート通信用のＵＡＲＴのようなハードウェアリソースへの接続を可能にするいくつかの専用チャネルが存在し得る。他のプロセッサが所有するチャネルには、スイッチネットワーク（ｓｗｉｔｃｈ  ｎｅｔｗｏｒｋ）を介して到達することができる。本発明によるプロセッサアーキテクチャの例示的実施形態のブロック図が、図２に示されている。
【００３２】
ユーザのプログラムにおける論理チャネルは、２階層メモリにおけるグローバルアドレスによって表すことができる。プロセッサの１つのメモリポートは、高速クロックインターフェース（ｃｌｏｃｋｅｄ  ｉｎｔｅｒｆａｃｅ）を介してローカルキャッシュと直接対話することができる。他のポートは、１つまたは複数のプロセッサをグローバルメモリ空間に接続するメモリ「スイッチ」と対話することができる。しかし、これらのメモリ間のインターフェースは、固定サイクルの同期インターフェースである必要はない。このインターフェースは、ちょうどプロセッサがサポートしている基礎となるコンピューティングモデルのように、リモートメモリ位置の内容を要求するメモリトランザクション（例えばメッセージ）を非同期で送る、メッセージパッシングシステムとすることができる。このようなデカップリング（ｄｅｃｏｕｐｌｉｎｇ）により、スケーラブルなメモリアーキテクチャを実施することが可能になり、特定のプロセッサに対するデータを含むローカルメモリへの高パフォーマンスのリンクが維持される。
【００３３】
３２ビットアドレスワードは、特定のプロセッサおよびメモリグループを識別する高位のビットと、このようなグループ内での位置を識別する下位のビットに区分することができる。したがって、高位のビットを検査することによって、チャネルがローカルのコンテキストで通信を行っているかどうかを決定することが可能である。このアーキテクチャは、従来の命令セットアーキテクチャでのコンパイルのための踏み台として使用される場合、この編成は、いくつかのチャネルに基づく計算をレジスタに基づく演算に置き換える最適化を可能にする。
【００３４】
命令セットアーキテクチャの他の特徴は、どのような算術演算も必要としないことである。ほぼすべてのコンピューティング要素は、加算器や乗算器などの外部プロセスによってモデル化される。これは、どのように２つの数を足してその結果をシリアルポートに書き込むかを示す、π計算マクロアセンブリの下記の抜粋によって例示される。
【００３５】
【表１】
2006155600.tif 000003
【００３６】
このコードは、加算器が計算結果（ｋ１）を返すための新しいチャネルを作成する。次いで、並行して２つのプロセスを実行する。一方のプロセスは、専用の加算器チャネルに、（ｘ，ｙ）の加算のための値を含む２つのチャネルと、（ｋ１）の結果を返すためのチャネルを送る。他方のプロセスは、チャネルｋ１についての結果をリスンし、次いで、その合計を、例えばシステムのＲＳ２３２ポートに接続されたデバイス上に表示するために、ＵＡＲＴに書き込む。
【００３７】
このようなチャネルベースの演算は、従来のプロセッサで実行するために、通常のｘ８６またはＲＩＳＣベースの加算演算に変換することができる。このような命令を外部化することにより、大幅によりコンパクトなプロセッサをもたらす、より非常に小さな命令セットを有し、それにより、所与のダイ（ｄｉｅ）面積において、より多数のこのようなプロセッサの実装が可能になる。
【００３８】
例えば、本発明による基本的π計算のシングルプロセッサの実施形態は、使用可能な論理リソースの約３％を表す、中型のＦＰＧＡ（例えばＸＣ２Ｖ２０００）の、５９２個までの論理セル、３０８個のフリップフロップ（ｆｌｉｐ−ｆｌｏｐ）、および、３つの１８Ｋデュアルポートメモリブロックを含むことができる。これには、一般に複数のプロセッサによって共有されるＳＤＲＡＭコントローラに対するリソースが含まれていない。
【００３９】
例示的実施形態のプロトタイプは、１００ＭＨｚの動作周波数を与える１０ナノ秒より小さくすべてのサイクルを実行するように設計され構築される。これは、例えばインテルの「ＰＥＮＴＩＵＭ（登録商標）」プロセッサなど周知の多くのプロセッサよりも、大幅に動作周波数が低いが、１つのプロセッサを非常に複雑にするより、むしろシンプルなプロセッサの数を大きくすることによって、パフォーマンスを改善することができる。さらに、ＦＰＧＡのプロトタイプの技術は、一般に、カスタムシリコン（ｃｕｓｔｏｍ  ｓｉｌｉｃｏｎ）の実装より一桁遅いことを理解されたい。したがって、本発明によるプロセッサは、例えば９０ｎｍＣＭＯＳシリコンプロセッサ上の１ＧＨｚより速く実行されるべきであることを理解されたい。
【００４０】
スイッチマトリックス（ｓｗｉｔｃｈ  ｍａｔｒｉｘ）は、複数のπ計算プロセッサを一緒に通信結合するために使用することができる。現在使用可能な最も大きいＦＰＧＡでは、最大１００個までのπ計算プロセッサを連結できることが期待される。
【００４１】
本発明によるプロセッサシステムの例示的実施形態は、プロセッサのブートメモリを初期化するための、マクロアセンブラ、逆アセンブラ、およびコードジェネレータを含むことができる。プロトタイプの環境では、プロセッサ自体の実装を、周知のツールを用いて論理ネットリスト（ｎｅｔｌｉｓｔ）にまとめることができるＶＨＤＬコードで行うことができる。
【００４２】
マクロアセンブラは、π計算プログラムコンパイラのバックエンドに接続するように設計することができる。π計算に基づくプログラムは、マクロアセンブラで直接書くこともできる。例えば、アセンブリプログラムの下記の抜粋は、非同期π計算フレームワークにおける２つのメッセージの同期送信をコード化している。
【００４３】
【表２】
2006155600.tif 000004
【００４４】
このプログラムは、１つの通信チャネルと２つの継続チャネルを作成し、以下の動作を並行して実行する。（ａ）ｃｈａｎ１に、値５と継続ｋ１を含む対を送る。（ｂ）継続ｋ１に対する応答を待機し、次いで、値７と継続ｋ２を含む対をｃｈａｎ１に送る。（ｃ）継続ｋ２に対する応答を待機し、次いで、そのプロセスを強制終了する。（ｃ）ｃｈａｎ１上の通信を待機し、何らかのデータが受け取られる度に、それに対処するために、別個にプロセスが分岐する（この場合、専用のチャネルＦＦＥＥに書き込むことによってある出力を書く）。
【００４５】
このプログラムは、以下のアセンブリコードにコンパイルすることができる。
【００４６】
【表３】
2006155600.tif 000005
【００４７】
プロセッサは、基本的なオペレーティングシステムカーネルを有することができるが、複数のプロセス、およびコンテキストスイッチなどを管理するために、コードを書く必要がない。これらのタスクは、プロセッサによって実行することができる。コードの並列の可能性は、ＰＡＲおよびＳＥＲＶＥ  ＯＰコードを使用することによって明らかにすることができる。次いで、システムは、与えられた任意のプロセッサでコードを自由に実行することができ、リモート位置で実行することもできる。
【００４８】
生成されたアセンブリコードは、プロセッサのブートメモリ用の初期設定情報に変換することができ、このプログラムのサイクルに忠実な実行は、これらの命令が８００ナノ秒以内に完了することを示すＶＨＤＬシミュレータ（図３参照）を用いて決定することができる。試験的セットアップが、上述の実際のハードウェア上でコンパイルされたπ計算プログラムを実行するために使用されており、内部状態を検査するために、それらの進捗が、点滅ＬＥＤ、ハイパーターミナルなどを介して、あるいはロジックアナライザ（図４参照）を使用して監視される。
【００４９】
図５Ａおよび図５Ｂはそれぞれ、典型的な従来技術の処理システム１０、および本発明による処理システム２０のブロック図である。図５Ａに示されるように、複数のプロセッサ１１は、例えばバスであり得る通信経路１２に結合することができる。各プロセッサ１１は、制御ユニット１３、データレジスタ１４、および演算論理ユニット（ＡＬＵ）１５を含むことができる。制御ユニット１３は、命令の実行を行う。データレジスタ１４は、制御ユニットによって操作されるデータを含む。ＡＬＵ１５は、加算、減算、論理演算、マスキング、およびシフティング（ｓｈｉｆｔｉｎｇ）（乗算および除算）を行う。ランダムアクセスメモリ（「ＲＡＭ」）１６もまた、通信経路１２に接続されている。プロセッサ１１は、ＲＡＭ１６に、アクセス（すなわち読取りおよび書込み）をすることができる。これらのプロセッサは、ＲＡＭに対するアクセスを共有している。各プロセッサは、１組のプログラム命令を順次に実行し、必要に応じて、それ自体のＡＬＵおよびデータレジスタ、ならびに共有メモリにアクセスする。
【００５０】
図５Ｂに示すように、複数の命令プロセッサ２１は、通信経路２２に結合することができる。ＲＡＭ２６、ＡＬＵサービス２５、およびポート２７もまた、通信経路２２に結合することができる。複数のプロセッサ２１は、ＡＬＵサービスおよびＲＡＭへのアクセスを共有している。複数のプロセッサ２１はまた、ポート２７を共有している。本発明によるシステム２０において、プログラムは、ネットワーク全体にわたり渡されるメッセージを介して実行することができる。例えば、命令プロセッサ２１は、命令ストリームを含むメッセージを受け取ることができる。命令プロセッサ２１は、命令ストリームに基づいて動作することができ、プロセス中に、それぞれ共有されているＲＡＭ２６、ＡＬＵサービス２５、およびポート２７にアクセスすることができる。命令プロセッサは、ポートからデータを読み取り、また、ポートにデータを書き込むことができる。このようなシステムは、単純により多くの命令プロセッサ２１を通信ネットワークに追加することにより、拡張することができる。
【００５１】
例示的コンピューティング環境
図６は、本発明を実装することができる適切なコンピューティングシステム環境１００の例を示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能にいかなる制限も示唆するものではない。コンピューティング環境１００はまた、例示的動作環境１００に示されるコンポーネントの任意の１つまたは組合せに関係するどのような依存関係または要件も有するものとして解釈されるべきではない。
【００５２】
本発明は、他の多数の汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明での使用に適切となり得る周知のコンピューティングシステム、環境、および／または構成には、以下に限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
【００５３】
本発明は、コンピュータにより実行されるプログラムモジュールなどコンピュータに実行可能な命令の一般的コンテキストにおいて説明することができる。一般的に、プログラムモジュールには、特定のタスクを実行するまたは抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。本発明はまた、通信ネットワークまたは他のデータ伝送媒体を介して連結されるリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含め、ローカルとリモートの両方のコンピュータ記憶媒体に、プログラムモジュールおよび他のデータを配置することができる。
【００５４】
図６を参照すると、本発明を実装するための例示的システムが、コンピュータ１１０の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントには、以下に限定されないが、処理装置１２０、システムメモリ１３０、および、システムメモリから処理装置１２０までも含め様々なシステムコンポーネントを結合するシステムバス１２１が含まれ得る。システムバス１２１は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、および、（メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られる）ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００５５】
コンピュータ１１０は、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の使用可能な媒体とすることができ、それには、揮発性と不揮発性の両方の媒体、および、リムーバルと固定の両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と不揮発性の両方の媒体、および、リムーバルと固定の両方の媒体が含まれる。コンピュータ記憶媒体には、以下に限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、あるいは、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また、任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するように設定または変更された１つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
【００５６】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ１３１およびＲＡＭ１３２などの揮発性および／または不揮発性のメモリの形態で含む。始動時などにコンピュータ１１０内の要素間で情報を転送する助けとなる基本ルーチンを含むＢＩＯＳ（基本入出力システム）１３３は、通常、ＲＯＭ１３１に格納されている。ＲＡＭ１３２は、通常、処理装置１２０により、即座にアクセス可能および／または現在処理中である、データおよび／またはプログラムモジュールを含む。図６は、限定ではなく例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００５７】
コンピュータ１１０は、他のリムーバル／固定、および揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図６では、固定で不揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ１４１、リムーバルで不揮発性の磁気ディスク１５２から読み取りまたはそれに書き込む磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭまたは他の光媒体などリムーバルで不揮発性の光ディスク１５６から読み取りまたはそれに書込みを行う光ディスクドライブ１５５を示している。例示的動作環境において使用することができる他のリムーバル／固定で揮発性／不揮発性のコンピュータ記憶媒体には、以下に限定されないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、固体ＲＡＭ、および固体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの固定メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などのリムーバルメモリインターフェースによってシステムバス１２１に接続される。
【００５８】
これらのドライブおよび関連するコンピュータ記憶媒体は、コンピュータ１１０のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。例えば、図６では、ハードディスク１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じにすることも異なるものにすることもできることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、キーボード１６２、ならびにマウス、トラックボール、またはタッチパッドとして通常は示されるポインティングデバイス１６１などの入力装置を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）など他のインターフェースおよびバス構造によって接続してもよい。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。このコンピュータはまた、モニタに加え、スピーカ１９７およびプリンタ１９６など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース１９５を介して接続することができる。
【００５９】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、図６にはメモリ記憶装置１８１のみが示されているが、通常、コンピュータ１１０に関係する上述の要素の多くまたは全部を含む。図に示される論理接続は、ＬＡＮ１７１、およびＷＡＮ１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
【００６０】
ＬＡＮネットワーク環境で使用する場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータ１１０は、通常、モデム１７２、または、インターネットなどのＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵モデムでも外部のモデルでもよく、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関係して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。限定ではなく例として、図６には、メモリ装置１８１に常駐するリモートアプリケーションプログラム１８５が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることは認識されよう。
【００６１】
上述のように、本発明の例示的実施形態を様々なコンピューティングデバイスと関連して説明したが、基となる概念は、任意のコンピューティングデバイスまたはシステムに適用することができる。
【００６２】
本明細書で説明した様々な技法は、ハードウェアまたはソフトウェア、あるいは適切な場合は両方の組合せと関連して実装することができる。したがって、本発明の方法および装置、いくつかの態様、またはそれらの部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他のマシン可読記憶媒体などの有形媒体として具体化されるプログラムコード（すなわち命令）の形態を取ることができ、プログラムコードがコンピュータなどのマシンによって読み込まれ実行されたとき、このマシンは、本発明を実施するための装置となる。プログラム可能なコンピュータ上でプログラムコードが実行される場合、このコンピューティングデバイスは、一般に、プロセッサ、プロセッサによって可読の（揮発性および不揮発性のメモリおよび／または記憶要素を含めた）記憶媒体、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。プログラムは、必要な場合は、アセンブリまたは機械語として実装できることができる。いずれの場合も、言語は、コンパイルまたはインタープリットされた言語とすることができ、ハードウェアの実装と組み合わせることができる。
【００６３】
本発明の方法および装置は、電気配線またはケーブル、光ファイバ、あるいは他の任意の伝送形態など何らかの伝送媒体によって伝送されるプログラムコードの形態で具体化される通信を介して実施することもでき、プログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログラマブル論理デバイス（ＰＬＤ）、またはクライアントコンピュータなどのマシンによって読み込まれ実行されるとき、このマシンは、本発明を実施するための装置となる。プログラムコードは、汎用プロセッサ上で実装されたとき、このプロセッサと結合して、本発明の機能を呼び出す働きをする固有の装置を提供する。さらに、本発明に関連して使用される任意の記憶技法は、常に、ハードウェアとソフトウェアの組合せとなり得る。
【００６４】
したがって、非同期π計算に基づくマシンコードを直接実行するように設計されたハードウェアプロセッサについて説明されている。本発明は、種々の図面に示されているいくつかの好ましい実施形態に関連して説明されているが、本発明から逸脱することなく、本発明を実施するために、他の同様の実施形態を使用することもでき、上述の実施形態に修正および追加を行うこともできることを理解されたい。したがって、本発明は、どの単一の実施形態にも限定されるものではなく、添付の特許請求の範囲による幅および範囲において解釈されるべきである。
【００６５】
例えば、ＦＰＧＡは、「仮想ハードウェア」の可能性を与え、すなわち、実行時にハードウェアをチップから出し入れして動的に交換することを理解されたい。この機能を活用する手の込んだ多数の試みがあるが、動的再構成のための申し分のないモデルは存在していなかった。このようなシステムのモデル化のために、例えばπ計算などのモバイルプロセス代数（ｍｏｂｉｌｅ  ｐｒｏｃｅｓｓ  ａｌｇｅｂｒａ）の適用可能性を検討することができる。容易に管理できる再構成技術は、どの演算がハードウェアの加速を必要とするかを動的に決定することができる将来のオペレーティングシステムのために非常に有用になる可能性がある。
【００６６】
他の最近の技術革新として、非常に高速のシリアルリンク（ｓｅｒｉａｌ  ｌｉｎｋ）の使用がある。現在では、シリコンチップは、複数の１０ＧＢシリアルトランシーバにアクセスすることができ、したがって、チップ間、基板レベル、およびそれらを超えるレベルで高速通信を実施するために使用することが可能である。この能力を利用するためには、おそらく、疎結合されたシステムのためのプロトコルの注意深い設計および実装が必要となる。
【００６７】
さらに、上述の例示的アーキテクチャにおいて、第１のメッセージがチャネルで既に待機している場合、第２のメッセージを送信する（すなわちそのチャネルに配置する）ことができない。代わりに、第１のメッセージが除去されるまで待機する必要があり得る。したがって、上述の例示的アーキテクチャは、受信コマンドがタイムアウトしたが送信コマンドはタイムアウトしていない場合、送信コマンドがメッセージをポストするときに、送信側はそれを知らないことなどがあり、見方によっては純粋な意味で「非同期」と見なすことができない。このような「擬似非同期（ｑｕａｓｉ−ａｓｙｎｃｈｒｏｎｏｕｓ）」アーキテクチャを同期アーキテクチャに変更することが単純であるべきことを理解されたい（例えば、送信側がメッセージをポストする場合、受信側は、ある関数を実行し、送信側が、その関数に対する応答を得る）。非同期アーキテクチャは、コードに実装することがより容易になり、したがって、いくつかの特定のアプリケーションにおいて同期アーキテクチャより有用なものとなり得る。
【００６８】
付録
この付録は、非同期π計算プリミティブに基づく命令を実行するためのハードウェアプロセッサの例示的実施形態のハードウェア定義言語（「ＨＤＬ」）の記述を含む。ここに与えられるＨＤＬ記述は、例に過ぎず、他の任意の数のハードウェア定義によって、非同期π計算プリミティブに基づく命令を実行するプロセッサを記述することもできることを理解されたい。
【００６９】
【表４】
2006155600.tif 000006
【００７０】
【表５】
2006155600.tif 000007
【００７１】
【表６】
2006155600.tif 000008
【００７２】
【表７】
2006155600.tif 000009
【００７３】
【表８】
2006155600.tif 000010
【００７４】
【表９】
2006155600.tif 000011
【００７５】
【表１０】
2006155600.tif 000012
【００７６】
【表１１】
2006155600.tif 000013
【００７７】
【表１２】
2006155600.tif 000014
【００７８】
【表１３】
2006155600.tif 000015
【００７９】
【表１４】
2006155600.tif 000016
【００８０】
【表１５】
2006155600.tif 000017
【００８１】
【表１６】
2006155600.tif 000018
【００８２】
【表１７】
2006155600.tif 000019
【００８３】
【表１８】
2006155600.tif 000020
【００８４】
【表１９】
2006155600.tif 000021
【００８５】
【表２０】
2006155600.tif 000022
【００８６】
【表２１】
2006155600.tif 000023
【００８７】
【表２２】
2006155600.tif 000024
【００８８】
【表２３】
2006155600.tif 000025
【００８９】
【表２４】
2006155600.tif 000026
【００９０】
【表２５】
2006155600.tif 000027
【００９１】
【表２６】
2006155600.tif 000028
【００９２】
【表２７】
2006155600.tif 000029
【００９３】
【表２８】
2006155600.tif 000030
【図面の簡単な説明】
【００９４】
【図１】３６ビットメモリワードの例示的実装形態を示す図である。
【図２】本発明による、プロセッサアーキテクチャの例示的実施形態を示すブロック図である。
【図３】ＶＨＤＬシミュレータのユーザインターフェースを示す図である。
【図４】ロジックアナライザのユーザインターフェースを示す図である。
【図５Ａ】典型的な従来技術の処理システムを示す機能ブロック図である。
【図５Ｂ】本発明による処理システムを示す機能ブロック図である。
【図６】本発明の態様を実装することができる例示的コンピューティング環境を示すブロック図である。
【符号の説明】
【００９５】
１１  プロセッサ
１３  制御ユニット
１４  レジスタ
１５  演算論理ユニット（ＡＬＵ）
１６  ＲＡＭ
２０  処理システム
２１  プロセッサ
２５  ＡＬＵサービス
２６  ＲＡＭ
２７  ポート
１００  コンピューティング環境
１１０  コンピュータ
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定非揮発性メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバル非揮発性メモリインターフェース
１５１  磁気ディスクドライブ
１５２  磁気ディスク
１５５  光ディスクドライブ
１５６  光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ＬＡＮ
１７２  モデム
１７３  ＷＡＮ
１８０  リモートコンピュータ
１８１  メモリ装置
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺装置インターフェース
１９６  プリンタ
１９７  スピーカ
【図１】
2006155600.tif 000031
【図２】
2006155600.tif 000032
【図３】
2006155600.tif 000033
【図４】
2006155600.tif 000034
【図５Ａ】
2006155600.tif 000035
【図５Ｂ】
2006155600.tif 000036
【図６】
2006155600.tif 000037