JP2006155600A - メッセージパッシングプロセッサ - Google Patents

メッセージパッシングプロセッサ Download PDF

Info

Publication number
JP2006155600A
JP2006155600A JP2005314530A JP2005314530A JP2006155600A JP 2006155600 A JP2006155600 A JP 2006155600A JP 2005314530 A JP2005314530 A JP 2005314530A JP 2005314530 A JP2005314530 A JP 2005314530A JP 2006155600 A JP2006155600 A JP 2006155600A
Authority
JP
Japan
Prior art keywords
processor
instruction
hardware
memory
instructions
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
JP2005314530A
Other languages
English (en)
Inventor
Satnam Singh
シン サットナム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006155600A publication Critical patent/JP2006155600A/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】非同期π計算に基づいたマシンコードを直接実行するように設計されたプロセッサを提供すること。
【解決手段】このようなプロセッサは、π計算に基づくプログラムを実行するためのスケーラブルで疎結合されたアーキテクチャを提供することを目的とする、マルチプロセッサシステムの要素とすることができる。
【選択図】図5B

Description

本発明は、一般に、コンピュータプロセッサに関する。より詳細には、本発明は、非同期π計算に基づくマシンコードを直接実行するように設計されたプロセッサに関する。
本明細書に開示され主張される主題は、2004年3月11日に出願された「Process Language For Microprocessors With Finite Resources」という名称の米国特許出願第10/816558号明細書で開示され主張された主題に関係する。上記の米国特許出願の開示は、参照により本明細書に組み込まれる。
π計算は、例えば携帯電話がある基地局から他の基地局に移動するとき、通信リンクを動的に再編成することができる、疎結合されたメッセージパッシング(message passing)システムを、効果的にモデル化する方法を提供する。π計算については、詳しく説明されている(例えば、非特許文献1参照)。当初、このモデルは、このようなシステムについての形式的な理論づけをするために用いられていたが、最近では、実際にシステムを実装するために、プログラミング言語に基づくπ計算が提案されている。また、当初のπ計算は、メッセージの送信側が受信側から肯定応答を受ける同期モデルであった。現在では、(インターネットの様式で)応答を待つ必要なしにメッセージを送信することができる、非同期π計算が開発された。
π計算手法に基づいた形式化により、通信システムの挙動に関する厳密な理論づけが可能になる。例えば、2つの並行するプロセスを解析して、2つの並行するプロセス間の通信が、あるプロトコルに準拠することを保証することが可能になる。π計算に基づく言語で書かれたプログラムは、プログラムに課せられる規律を有し、この規律により、手動または自動の解析が、任意のC#コードでの同等の解析の実行を試みるよりも容易になる。
一部の人々にとっては、π計算が、プログラミング言語の基礎を形成することができるという考えは、急進的な発想であるが、いくつかのプロジェクトにより、この手法が多数の利点を有することが示されている。π計算に基づくプログラミング言語は、いくつかの特定のウェブサービスにおいて、疎結合されたメッセージパッシングシステムを設計し実装するために開発されている。π計算の実際の適用の1つとして、ウェブサービスに対する「コントラクト(contract)」の解析がある。
Robin Milner,"Communicating and mobile systems the pi−calculus",Cambridge University Press,1999
π計算に基づいたプログラミング言語を用いる例示的システムは、従来のシステムソフトウェア(例えば、共通言語ランタイム(「CLR」)、および従来のプロセッサアーキテクチャ(例えば、インテルのx86プロセッサ)上で実行されることにより動作する。ただし、システムアーキテクチャまたはプロセッサは、疎結合されたメッセージパッシングプログラムを直接実行するために利用可能であることが望ましい。すなわち、π計算レベルのコードと従来の命令セットアーキテクチャの意味論的な格差を埋めるために、π計算に基づくプログラムを直接実行するメッセージパッシングプロセッサシステムを有することが望ましい。
このようなシステムは、さらにプロセッサを追加するのに応じて拡張することができるように、適切なプロセッサおよびメモリアーキテクチャで設計されることが望ましい。すなわち、このようなプロセッサは、x86アーキテクチャの場合のように単一のプロセッシングエンジンに集約された膨大な複雑さによってではなく、多数の単純な小型プロセッサのスケーラブルな展開によって、パフォーマンスを達成できることが特に望ましい。疎結合されたアーキテクチャに基づく小型のプロセッサは、パフォーマンスと電力のトレードオフの関係をより容易にする。低い電力が適用された場合は、1つのプロセッサのみが必要とされ得る。インターネット検索の加速やバイオコンピューティングなどの高度なコンピューティングの課題では、数百のプロセッサを展開することが望ましい。
本明細書に記載の発明は、従来のプロセッサ上で、π計算ベースのプログラムを効果的に実装するための適切な中間コンパイル技術を提供し、さらに、π計算プリミティブ(primitive)に基づく新規の命令セットアーキテクチャを提供する。π計算用のプロトタイプのプロセッサは、実際のハードウェア上で設計され実装されている。
本発明は、π計算に基づくプログラムをハードウェア上で直接実行するための、命令セットアーキテクチャおよびプロセッサの設計を提供する。本発明のプロセッサの例示的実施形態は、基本的なオペレーティングシステムカーネルを有することができるが、複数のプロセスおよびコンテキストスイッチ(context switch)などを管理するためのコードを書く必要がない。例えば、タスクスイッチング(task switching)は、ハードウェアにおいてプロセッサにより実行することができ、π計算に基づくプログラムを用いることによって、コードの並列可能性を明らかにされる。これにより、他のプロセッサやリモート位置においてさえ、コードを実行することが可能になる。
このようなアーキテクチャは、「疎結合」されているものとして記述され得る。つまり、異なるマシンで実行されている、プログラムのいくつかのコンポーネントは、互いにメッセージを受け渡すことによって通信を行うことができる。従来のプロセッサでは、コンポーネントは、特定のタスクの実行を要求し、その要求に対する応答を待機する。疎結合されたアーキテクチャでは、通常、処理のフローを制御する中央処理装置が存在しない。個々のプロセッサは、単に、特定の機能の実行を要求するメッセージを送り、次いで、通常は、この最初の要求に対する応答を待機せずに、次に行うようにプログラムされている処理に移る。したがって、このようなシステムは、非同期である。最終的に、応答は、いくつかの所定のルールセットに従って、メッセージを送ったプロセッサ、または他のプロセッサによって受け取られる。このタイプのアーキテクチャは、プロセッサができる限り独立して(したがって並列して)進行することを可能にする疎結合されたフレームワークを提供することによって、シリコンチップの電力をより有効に利用する助けとなることができる。
しかし、このような疎結合アーキテクチャでは、このようなメッセージパッシングの結果を、制御された予測可能な方法で調整する理論が必要とされる。非同期π計算は、このような理論を提供する。本発明によるプロセッサでは、非同期π計算に焦点が当てられる。π計算プリミティブに対応する命令セットは、ハードウェアで定義されている。また、プロセッサは、それ自体を、典型的にはソフトウェアによって達成される機能であるスレッド間でスケジュールする。本発明によるプロセッサシステムは、例えば、FPGAハードウェア上で直接演算されるウェブサービスの設計および実装の際に使用することができる。
非同期π計算に基づく命令セットアーキテクチャを直接実行するプロセッサの例示的実施形態をここで説明する。このようなプロセッサは、言語レベルの概念とマシンコードレベルの実装の間の意味論的格差を埋めることによって、非同期π計算に基づく言語で書かれたプログラムを実行するために使用することができるエンジンを提供する。
π計算は、チャネル名が伝送媒体と伝送データの両方の役割をすることができるプロセス代数である。したがって、π計算は、モバイルシステム(mobile system)として知られる自律エージェントのシステムをモデル化するために使用することができる。モバイルシステムは、個々のコンポーネントが、自由に自発的に選択することが可能な方法で互いに対話する、通信ネットワークの1つの形態である。π計算は、携帯電話ネットワーク、インターネット、およびオブジェクト指向ソフトウェアプログラムなどの多様な並行計算システムにおける対話をモデル化するために開発された。π計算は、BPMI.orgによって開発されたBPML(ビジネスプロセスモデリング言語(Business Process Modeling Language))などのビジネスプロセス仕様の基礎として、また、BPEL4WSの先行モデルのMicrosoft(登録商標)のXLANGにおいて採用されている。
非同期π計算は、選択および出力プレフィックス変換(output−prefixing)のための明示的な演算子を含まないπ計算の部分集合である。非同期π計算に基づく命令セットの例示的実施形態の基本的要素は、次の7つの命令を含むことができる。
NEW − 新しい通信チャネルを動的に作成するための命令
SEND2 − 1対のワードを(直接または間接的に)非同期で送るための命令
RECEIVE2 − チャネルから1対のワードを読み取るための命令
SELECT − チャネルのリストをリスン(listen)して、データがチャネルの1つに出現したときに、ある種の処置を行うための命令
PAR − プロセッサ上で走っているプロセスのリストに、新しいプロセスを追加するための命令
SERVE − チャネルに新たに到着したデータ値を取り扱う新しいプロセスを生成するための命令
HALT − プロセスの実行を停止するための命令
本発明によれば、上記の各命令を実行するために、それぞれのハードウェア回路を定義することができる。本発明によるシステムは、これらの命令のうちの1つまたは複数を含むことができる。ソフトウェアは、π計算プリミティブに基づいたプログラミング言語で書かれることが期待されるため、そのソフトウェアが実行されるマシンは、π計算プリミティブに対応するハードウェア命令を使用して管理され得る。したがって、本発明によるシステムにおいて、π計算モデルは、「トップからボトムまで(top to bottom)」徹底して適用することができる。それぞれの命令を実行するための、ハードウェアプロセッサの例示的実施形態のハードウェア定義言語(Hardware definition language)(「HDL」)の記述は、本明細書の付録に示されている。
二つの部分から成る(dyadic)非同期送信を選択することにより、第2の引数として「継続チャネル(continuation channel)」を渡すことによって同期送信をモデル化することができる。受信側は、メッセージを受け取ると、次いで、受信に肯定応答をするために、継続チャネルを介してダミー値を送信側に送ることができる(すなわち、基本的なハンドシェークプロトコル)。RECEIVE2命令は、実際的には、SELECT命令の変質した事例であることに留意されたい。RECEIVE2命令は、一般的にプログラムが非決定的選択よりも多数の受信を有するので、効率のためにプリミティブ命令として提供される。
これら7つの命令は、任意の計算可能な関数の実行(すなわち、プロセッサは「チューリング完全(Turing complete)」)およびモデルデータ型を提供する。しかし、効率のために、32ビット符号付き整数が、基本データ型としてサポートされることが好ましい。チャネルもまた、32ビットアドレスで表現され得る。
非同期π計算で書かれたプログラムは、典型的には、チャネルを介した通信、または新しいチャネルの作成を試みる、プロセスの集合体である。あるプロセスが、チャネルを介して他のプロセスにメッセージを送るとき、どの期間にメッセージが送られたかについて対話が行われうる。この送信プロセスは、強制終了することができ(非同期送信に対する後続の処理がない)、受信側は、受け取ったばかりの新しいデータ値で実行を再開することができる。したがって、プログラムの実行は、プロセス間の一連の対話に相当し得る。
好ましい実施形態では、36ビットの値を有するメモリをサポートできるFPGAハードウェアを用いることができる。図1は、36ビットメモリワードの例示的実施形態を示す。図に示されるように、OPコード(およびチャネル状況情報)は、4桁の最上位ビットに格納することができ(すなわち、図1に示す左端の4ビット)、36ビットワードの残り(すなわち、右端の32ビット)に、32ビット値を格納することができる。
一般に、大部分の命令に対し最初の引数がチャネルとなる。チャネルは、グローバルメモリ空間におけるアドレスによって表すことができる。命令セットアーキテクチャは、その絶対アドレスによってチャネルを識別する必要はない。代わりに、絶対チャネルアドレスを含む「変数」を介して、間接的にチャネルを参照することができる。例えば、NEW OPコードは、新しく割り当てられたチャネルのアドレスが貯蔵される、ローカル変数(すなわち、現在の「スタックフレーム(stack frame)」からのオフセット)を指定する引数によって呼び出すことができる。
SEND2命令もまた、同様の方法で、すなわち、チャネルの実アドレスを含むスタックフレーム上のローカル変数を識別することによって、通信に使用するチャネルを指定することができる。SEND2命令は、ローカル変数の内容を参照してその内容(例えば、チャネルの絶対アドレス)を送ることにより、ローカル変数を指定することができる間接引数を送ることができる。これにより、π計算の基本的特徴である、チャネルを介したチャネルの送信が可能になる。SEND2命令はまた、即時モード引数を送ることもできる。他のモードの送信命令は、送られるネストされたスコープ(nested scope)で変数を送ることができる。このOPコードは、ネストされたプロシージャおよび関数がPascalのような言語で使用されるときに、スタックフレームを外から利用するためのNS32016プロセッサにおける命令と同様である。
新しいプロセスは、SERVEコマンドにより、新しいタスクフレームをヒープ(heap)上に割り当てることによって生成することができる。このタスクフレームの最初のワードは、エンクロージングタスクフレーム(enclosing task frame)を指し示す。
同時および分散アプリケーションのより大きいクラスによるプロファイルが所望されるとき、周知の技術を使用して、ガーベッジコレクタを実装することができる。したがって、他の実施形態では、既存のスタックフレームを複製し拡張して、ガーベッジコレクションをより容易にすることができる。このような実施形態では、SERVE OPコードは、異なるプロセッサ上で生成されたプロセスのインスタンスを自由に生成することができる。
コンパイルされたアセンブリの第1のワードは、初期タスクフレームのアドレスを含み、第2のワードは、そのサイズを含むことができる。これにより、ランタイムシステムが、ヒープの初期アドレスを解決することが可能になる。したがって、プログラムコードは、メモリアドレス2から開始することができる。
チャネルの集合体を同時にリスンし、次いで、チャネルの1つにデータが出現したときに適切な処置を取り、他のリスンを中止することが望まれることがある。この機能は、SELECT命令によって実行され、チャネルとアドレスの対のリストが付随することがある。プロセッサは、不特定の順序でチャネルを検査してリスンし、チャネルがデータを有する場合、対応するコードを実行することができる。
命令セットは、(固定されたままの専用チャネルのアドレスをモジュロ(modulo)として)PARおよびSELECT命令に対する引数で指定される絶対アドレスにオフセットを追加することにより、容易に再配置可能なマシンコードが可能になるように設計することができる。命令セットアーキテクチャに関し、プロセスがどのようにスケジュールされるか、または、特定のチャネルにいくつのデータ項目が収容することができるかについて特に言うべきことはない。フェアネス(fairness)など他のものを含め、それらの問題点については、特定のアーキテクチャの実装によって設定することができる。
命令セットアーキテクチャは、数値処理集中のアプリケーションではなく、制御およびプロトコルアプリケーションに適するように設計することができる。数値集中のサブコンポーネントを組み込む有効な方法として、例えば、この機能に対して、何らかの専用のハードウェアを設計し、通常のチャネルにアクセスするために使用するのとまったく同じチャネルプロトコルを用いて通信を行う。
本発明の趣旨から逸脱することなく、他の命令を命令セットに追加することができることに留意されたい。このような命令の例には、同期送信、ならびに単体の送信および受信が含まれる。しかし、これらの追加の命令を含めることにより必要となるシリコン面積の増加のため、それらを含めることに起因し得るパフォーマンスの向上が、保証されないことがあることを理解されたい。例えば、同期送信が、ある種のアプリケーションで共通することがあっても、それらのリモートの実装は、いずれにせよ、前述の継続パッシングに基づくコード化で行われる、ある種のハンドシェークプロトコルに変質することになる。したがって、わずかにより大きなプログラム(および継続チャネル)を格納するのに必要な追加の数バイト、およびローカル設定における数サイクルの損失を負担することが好ましい。
ハードウェアプラットフォームおよびプロセッサアーキテクチャ
本発明によるメッセージパッシングプロセッサシステムに採用することができるハードウェアプラットフォームの例示的実施形態または「基板(board)」は、マルチメディアシステムを構成する様々なリソースに接続されるフィールドプログラマブルゲートアレイ(field programmable gate array)(「FPGA」)を含むことができる。本発明に従って設計された1つまたは複数(例えば10個)のプロセッサを含むことができるFPGAは、(それぞれが例えば2MB ZBTメモリである)全体として独立した複数のメモリバンク、ビデオ入出力ロジック(video input/output logic)、音声入出力、Ethernet(登録商標)インターフェース、シリアル入力、キーボード入力、マウス入力、CompactFlashインターフェース、ならびに、様々なスイッチおよびLEDに接続することができる。
π計算プロセッサのための上述の命令セットアーキテクチャは、従来の意味ではどのようなレジスタも必要としない。FPGAアーキテクチャは、(例えば、好ましい実施形態では56の)多数のデュアルポートメモリを提供し、各メモリのサイズは、例えば、18Kにすることができる。このようなFPGAは、メッセージパッシングシステム、ならびにプログラムおよびデータ用のキャッシュで使用されるチャネルを表すために使用することができる。メインメモリは、より大きい(例えば、好ましい実施形態では5バンクの2MBの)メモリチップとの通信を管理する「SDRAM」コントローラを介してアクセスされ得る。例えば、加算器、乗算器、シリアルポート通信用のUARTのようなハードウェアリソースへの接続を可能にするいくつかの専用チャネルが存在し得る。他のプロセッサが所有するチャネルには、スイッチネットワーク(switch network)を介して到達することができる。本発明によるプロセッサアーキテクチャの例示的実施形態のブロック図が、図2に示されている。
ユーザのプログラムにおける論理チャネルは、2階層メモリにおけるグローバルアドレスによって表すことができる。プロセッサの1つのメモリポートは、高速クロックインターフェース(clocked interface)を介してローカルキャッシュと直接対話することができる。他のポートは、1つまたは複数のプロセッサをグローバルメモリ空間に接続するメモリ「スイッチ」と対話することができる。しかし、これらのメモリ間のインターフェースは、固定サイクルの同期インターフェースである必要はない。このインターフェースは、ちょうどプロセッサがサポートしている基礎となるコンピューティングモデルのように、リモートメモリ位置の内容を要求するメモリトランザクション(例えばメッセージ)を非同期で送る、メッセージパッシングシステムとすることができる。このようなデカップリング(decoupling)により、スケーラブルなメモリアーキテクチャを実施することが可能になり、特定のプロセッサに対するデータを含むローカルメモリへの高パフォーマンスのリンクが維持される。
32ビットアドレスワードは、特定のプロセッサおよびメモリグループを識別する高位のビットと、このようなグループ内での位置を識別する下位のビットに区分することができる。したがって、高位のビットを検査することによって、チャネルがローカルのコンテキストで通信を行っているかどうかを決定することが可能である。このアーキテクチャは、従来の命令セットアーキテクチャでのコンパイルのための踏み台として使用される場合、この編成は、いくつかのチャネルに基づく計算をレジスタに基づく演算に置き換える最適化を可能にする。
命令セットアーキテクチャの他の特徴は、どのような算術演算も必要としないことである。ほぼすべてのコンピューティング要素は、加算器や乗算器などの外部プロセスによってモデル化される。これは、どのように2つの数を足してその結果をシリアルポートに書き込むかを示す、π計算マクロアセンブリの下記の抜粋によって例示される。
Figure 2006155600
このコードは、加算器が計算結果(k1)を返すための新しいチャネルを作成する。次いで、並行して2つのプロセスを実行する。一方のプロセスは、専用の加算器チャネルに、(x,y)の加算のための値を含む2つのチャネルと、(k1)の結果を返すためのチャネルを送る。他方のプロセスは、チャネルk1についての結果をリスンし、次いで、その合計を、例えばシステムのRS232ポートに接続されたデバイス上に表示するために、UARTに書き込む。
このようなチャネルベースの演算は、従来のプロセッサで実行するために、通常のx86またはRISCベースの加算演算に変換することができる。このような命令を外部化することにより、大幅によりコンパクトなプロセッサをもたらす、より非常に小さな命令セットを有し、それにより、所与のダイ(die)面積において、より多数のこのようなプロセッサの実装が可能になる。
例えば、本発明による基本的π計算のシングルプロセッサの実施形態は、使用可能な論理リソースの約3%を表す、中型のFPGA(例えばXC2V2000)の、592個までの論理セル、308個のフリップフロップ(flip−flop)、および、3つの18Kデュアルポートメモリブロックを含むことができる。これには、一般に複数のプロセッサによって共有されるSDRAMコントローラに対するリソースが含まれていない。
例示的実施形態のプロトタイプは、100MHzの動作周波数を与える10ナノ秒より小さくすべてのサイクルを実行するように設計され構築される。これは、例えばインテルの「PENTIUM(登録商標)」プロセッサなど周知の多くのプロセッサよりも、大幅に動作周波数が低いが、1つのプロセッサを非常に複雑にするより、むしろシンプルなプロセッサの数を大きくすることによって、パフォーマンスを改善することができる。さらに、FPGAのプロトタイプの技術は、一般に、カスタムシリコン(custom silicon)の実装より一桁遅いことを理解されたい。したがって、本発明によるプロセッサは、例えば90nmCMOSシリコンプロセッサ上の1GHzより速く実行されるべきであることを理解されたい。
スイッチマトリックス(switch matrix)は、複数のπ計算プロセッサを一緒に通信結合するために使用することができる。現在使用可能な最も大きいFPGAでは、最大100個までのπ計算プロセッサを連結できることが期待される。
本発明によるプロセッサシステムの例示的実施形態は、プロセッサのブートメモリを初期化するための、マクロアセンブラ、逆アセンブラ、およびコードジェネレータを含むことができる。プロトタイプの環境では、プロセッサ自体の実装を、周知のツールを用いて論理ネットリスト(netlist)にまとめることができるVHDLコードで行うことができる。
マクロアセンブラは、π計算プログラムコンパイラのバックエンドに接続するように設計することができる。π計算に基づくプログラムは、マクロアセンブラで直接書くこともできる。例えば、アセンブリプログラムの下記の抜粋は、非同期π計算フレームワークにおける2つのメッセージの同期送信をコード化している。
Figure 2006155600
このプログラムは、1つの通信チャネルと2つの継続チャネルを作成し、以下の動作を並行して実行する。(a)chan1に、値5と継続k1を含む対を送る。(b)継続k1に対する応答を待機し、次いで、値7と継続k2を含む対をchan1に送る。(c)継続k2に対する応答を待機し、次いで、そのプロセスを強制終了する。(c)chan1上の通信を待機し、何らかのデータが受け取られる度に、それに対処するために、別個にプロセスが分岐する(この場合、専用のチャネルFFEEに書き込むことによってある出力を書く)。
このプログラムは、以下のアセンブリコードにコンパイルすることができる。
Figure 2006155600
プロセッサは、基本的なオペレーティングシステムカーネルを有することができるが、複数のプロセス、およびコンテキストスイッチなどを管理するために、コードを書く必要がない。これらのタスクは、プロセッサによって実行することができる。コードの並列の可能性は、PARおよびSERVE OPコードを使用することによって明らかにすることができる。次いで、システムは、与えられた任意のプロセッサでコードを自由に実行することができ、リモート位置で実行することもできる。
生成されたアセンブリコードは、プロセッサのブートメモリ用の初期設定情報に変換することができ、このプログラムのサイクルに忠実な実行は、これらの命令が800ナノ秒以内に完了することを示すVHDLシミュレータ(図3参照)を用いて決定することができる。試験的セットアップが、上述の実際のハードウェア上でコンパイルされたπ計算プログラムを実行するために使用されており、内部状態を検査するために、それらの進捗が、点滅LED、ハイパーターミナルなどを介して、あるいはロジックアナライザ(図4参照)を使用して監視される。
図5Aおよび図5Bはそれぞれ、典型的な従来技術の処理システム10、および本発明による処理システム20のブロック図である。図5Aに示されるように、複数のプロセッサ11は、例えばバスであり得る通信経路12に結合することができる。各プロセッサ11は、制御ユニット13、データレジスタ14、および演算論理ユニット(ALU)15を含むことができる。制御ユニット13は、命令の実行を行う。データレジスタ14は、制御ユニットによって操作されるデータを含む。ALU15は、加算、減算、論理演算、マスキング、およびシフティング(shifting)(乗算および除算)を行う。ランダムアクセスメモリ(「RAM」)16もまた、通信経路12に接続されている。プロセッサ11は、RAM16に、アクセス(すなわち読取りおよび書込み)をすることができる。これらのプロセッサは、RAMに対するアクセスを共有している。各プロセッサは、1組のプログラム命令を順次に実行し、必要に応じて、それ自体のALUおよびデータレジスタ、ならびに共有メモリにアクセスする。
図5Bに示すように、複数の命令プロセッサ21は、通信経路22に結合することができる。RAM26、ALUサービス25、およびポート27もまた、通信経路22に結合することができる。複数のプロセッサ21は、ALUサービスおよびRAMへのアクセスを共有している。複数のプロセッサ21はまた、ポート27を共有している。本発明によるシステム20において、プログラムは、ネットワーク全体にわたり渡されるメッセージを介して実行することができる。例えば、命令プロセッサ21は、命令ストリームを含むメッセージを受け取ることができる。命令プロセッサ21は、命令ストリームに基づいて動作することができ、プロセス中に、それぞれ共有されているRAM26、ALUサービス25、およびポート27にアクセスすることができる。命令プロセッサは、ポートからデータを読み取り、また、ポートにデータを書き込むことができる。このようなシステムは、単純により多くの命令プロセッサ21を通信ネットワークに追加することにより、拡張することができる。
例示的コンピューティング環境
図6は、本発明を実装することができる適切なコンピューティングシステム環境100の例を示している。コンピューティングシステム環境100は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能にいかなる制限も示唆するものではない。コンピューティング環境100はまた、例示的動作環境100に示されるコンポーネントの任意の1つまたは組合せに関係するどのような依存関係または要件も有するものとして解釈されるべきではない。
本発明は、他の多数の汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明での使用に適切となり得る周知のコンピューティングシステム、環境、および/または構成には、以下に限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
本発明は、コンピュータにより実行されるプログラムモジュールなどコンピュータに実行可能な命令の一般的コンテキストにおいて説明することができる。一般的に、プログラムモジュールには、特定のタスクを実行するまたは抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などが含まれる。本発明はまた、通信ネットワークまたは他のデータ伝送媒体を介して連結されるリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含め、ローカルとリモートの両方のコンピュータ記憶媒体に、プログラムモジュールおよび他のデータを配置することができる。
図6を参照すると、本発明を実装するための例示的システムが、コンピュータ110の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ110のコンポーネントには、以下に限定されないが、処理装置120、システムメモリ130、および、システムメモリから処理装置120までも含め様々なシステムコンポーネントを結合するシステムバス121が含まれ得る。システムバス121は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうち任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および、(メザニン(Mezzanine)バスとしても知られる)PCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、一般に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110がアクセスすることができる任意の使用可能な媒体とすることができ、それには、揮発性と不揮発性の両方の媒体、および、リムーバルと固定の両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性と不揮発性の両方の媒体、および、リムーバルと固定の両方の媒体が含まれる。コンピュータ記憶媒体には、以下に限定されないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、あるいは、CD−ROM、DVD(デジタル多用途ディスク)、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ110によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また、任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するように設定または変更された1つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組合せも、コンピュータ可読媒体の範囲に含まれることになる。
システムメモリ130は、コンピュータ記憶媒体を、ROM131およびRAM132などの揮発性および/または不揮発性のメモリの形態で含む。始動時などにコンピュータ110内の要素間で情報を転送する助けとなる基本ルーチンを含むBIOS(基本入出力システム)133は、通常、ROM131に格納されている。RAM132は、通常、処理装置120により、即座にアクセス可能および/または現在処理中である、データおよび/またはプログラムモジュールを含む。図6は、限定ではなく例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。
コンピュータ110は、他のリムーバル/固定、および揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図6では、固定で不揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ141、リムーバルで不揮発性の磁気ディスク152から読み取りまたはそれに書き込む磁気ディスクドライブ151、および、CD−ROMまたは他の光媒体などリムーバルで不揮発性の光ディスク156から読み取りまたはそれに書込みを行う光ディスクドライブ155を示している。例示的動作環境において使用することができる他のリムーバル/固定で揮発性/不揮発性のコンピュータ記憶媒体には、以下に限定されないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、固体RAM、および固体ROMなどが含まれる。ハードディスクドライブ141は、通常、インターフェース140などの固定メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などのリムーバルメモリインターフェースによってシステムバス121に接続される。
これらのドライブおよび関連するコンピュータ記憶媒体は、コンピュータ110のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。例えば、図6では、ハードディスク141が、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じにすることも異なるものにすることもできることに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、キーボード162、ならびにマウス、トラックボール、またはタッチパッドとして通常は示されるポインティングデバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイク、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどが含まれ得る。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など他のインターフェースおよびバス構造によって接続してもよい。モニタ191または他のタイプの表示装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。このコンピュータはまた、モニタに加え、スピーカ197およびプリンタ196など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境で動作することもできる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、図6にはメモリ記憶装置181のみが示されているが、通常、コンピュータ110に関係する上述の要素の多くまたは全部を含む。図に示される論理接続は、LAN171、およびWAN173を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
LANネットワーク環境で使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーク環境で使用する場合、コンピュータ110は、通常、モデム172、または、インターネットなどのWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵モデムでも外部のモデルでもよく、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関係して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。限定ではなく例として、図6には、メモリ装置181に常駐するリモートアプリケーションプログラム185が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることは認識されよう。
上述のように、本発明の例示的実施形態を様々なコンピューティングデバイスと関連して説明したが、基となる概念は、任意のコンピューティングデバイスまたはシステムに適用することができる。
本明細書で説明した様々な技法は、ハードウェアまたはソフトウェア、あるいは適切な場合は両方の組合せと関連して実装することができる。したがって、本発明の方法および装置、いくつかの態様、またはそれらの部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または他のマシン可読記憶媒体などの有形媒体として具体化されるプログラムコード(すなわち命令)の形態を取ることができ、プログラムコードがコンピュータなどのマシンによって読み込まれ実行されたとき、このマシンは、本発明を実施するための装置となる。プログラム可能なコンピュータ上でプログラムコードが実行される場合、このコンピューティングデバイスは、一般に、プロセッサ、プロセッサによって可読の(揮発性および不揮発性のメモリおよび/または記憶要素を含めた)記憶媒体、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。プログラムは、必要な場合は、アセンブリまたは機械語として実装できることができる。いずれの場合も、言語は、コンパイルまたはインタープリットされた言語とすることができ、ハードウェアの実装と組み合わせることができる。
本発明の方法および装置は、電気配線またはケーブル、光ファイバ、あるいは他の任意の伝送形態など何らかの伝送媒体によって伝送されるプログラムコードの形態で具体化される通信を介して実施することもでき、プログラムコードが、EPROM、ゲートアレイ、プログラマブル論理デバイス(PLD)、またはクライアントコンピュータなどのマシンによって読み込まれ実行されるとき、このマシンは、本発明を実施するための装置となる。プログラムコードは、汎用プロセッサ上で実装されたとき、このプロセッサと結合して、本発明の機能を呼び出す働きをする固有の装置を提供する。さらに、本発明に関連して使用される任意の記憶技法は、常に、ハードウェアとソフトウェアの組合せとなり得る。
したがって、非同期π計算に基づくマシンコードを直接実行するように設計されたハードウェアプロセッサについて説明されている。本発明は、種々の図面に示されているいくつかの好ましい実施形態に関連して説明されているが、本発明から逸脱することなく、本発明を実施するために、他の同様の実施形態を使用することもでき、上述の実施形態に修正および追加を行うこともできることを理解されたい。したがって、本発明は、どの単一の実施形態にも限定されるものではなく、添付の特許請求の範囲による幅および範囲において解釈されるべきである。
例えば、FPGAは、「仮想ハードウェア」の可能性を与え、すなわち、実行時にハードウェアをチップから出し入れして動的に交換することを理解されたい。この機能を活用する手の込んだ多数の試みがあるが、動的再構成のための申し分のないモデルは存在していなかった。このようなシステムのモデル化のために、例えばπ計算などのモバイルプロセス代数(mobile process algebra)の適用可能性を検討することができる。容易に管理できる再構成技術は、どの演算がハードウェアの加速を必要とするかを動的に決定することができる将来のオペレーティングシステムのために非常に有用になる可能性がある。
他の最近の技術革新として、非常に高速のシリアルリンク(serial link)の使用がある。現在では、シリコンチップは、複数の10GBシリアルトランシーバにアクセスすることができ、したがって、チップ間、基板レベル、およびそれらを超えるレベルで高速通信を実施するために使用することが可能である。この能力を利用するためには、おそらく、疎結合されたシステムのためのプロトコルの注意深い設計および実装が必要となる。
さらに、上述の例示的アーキテクチャにおいて、第1のメッセージがチャネルで既に待機している場合、第2のメッセージを送信する(すなわちそのチャネルに配置する)ことができない。代わりに、第1のメッセージが除去されるまで待機する必要があり得る。したがって、上述の例示的アーキテクチャは、受信コマンドがタイムアウトしたが送信コマンドはタイムアウトしていない場合、送信コマンドがメッセージをポストするときに、送信側はそれを知らないことなどがあり、見方によっては純粋な意味で「非同期」と見なすことができない。このような「擬似非同期(quasi−asynchronous)」アーキテクチャを同期アーキテクチャに変更することが単純であるべきことを理解されたい(例えば、送信側がメッセージをポストする場合、受信側は、ある関数を実行し、送信側が、その関数に対する応答を得る)。非同期アーキテクチャは、コードに実装することがより容易になり、したがって、いくつかの特定のアプリケーションにおいて同期アーキテクチャより有用なものとなり得る。
付録
この付録は、非同期π計算プリミティブに基づく命令を実行するためのハードウェアプロセッサの例示的実施形態のハードウェア定義言語(「HDL」)の記述を含む。ここに与えられるHDL記述は、例に過ぎず、他の任意の数のハードウェア定義によって、非同期π計算プリミティブに基づく命令を実行するプロセッサを記述することもできることを理解されたい。
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
Figure 2006155600
36ビットメモリワードの例示的実装形態を示す図である。 本発明による、プロセッサアーキテクチャの例示的実施形態を示すブロック図である。 VHDLシミュレータのユーザインターフェースを示す図である。 ロジックアナライザのユーザインターフェースを示す図である。 典型的な従来技術の処理システムを示す機能ブロック図である。 本発明による処理システムを示す機能ブロック図である。 本発明の態様を実装することができる例示的コンピューティング環境を示すブロック図である。
符号の説明
11 プロセッサ
13 制御ユニット
14 レジスタ
15 演算論理ユニット(ALU)
16 RAM
20 処理システム
21 プロセッサ
25 ALUサービス
26 RAM
27 ポート
100 コンピューティング環境
110 コンピュータ
120 処理装置
121 システムバス
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 固定非揮発性メモリインターフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 リムーバル非揮発性メモリインターフェース
151 磁気ディスクドライブ
152 磁気ディスク
155 光ディスクドライブ
156 光ディスク
160 ユーザ入力インターフェース
161 マウス
162 キーボード
170 ネットワークインターフェース
171 LAN
172 モデム
173 WAN
180 リモートコンピュータ
181 メモリ装置
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺装置インターフェース
196 プリンタ
197 スピーカ


Claims (27)

  1. 少なくとも1つのプロセッサを備え、前記プロセッサは、π計算プリミティブに基づくハードウェア命令を実行するようになされた電子回路を含むことを特徴とするコンピュータプロセッサシステム。
  2. 前記π計算プリミティブは、非同期π計算プリミティブであることを特徴とする請求項1に記載のコンピュータプロセッサシステム。
  3. 前記少なくとも1つのプロセッサは、複数の電子回路をさらに含み、前記複数の電子回路の各々は、対応する1組のπ計算プリミティブに基づく1組のハードウェア命令のうち該当する1つを実行するように適合していることを特徴とする請求項1に記載のコンピュータプロセッサシステム。
  4. 前記1組のハードウェア命令は、1対のワードを非同期で送るための命令と、チャネルから1対のワードを読み取るための命令とを含むことを特徴とする請求項3に記載のコンピュータプロセッサシステム。
  5. 前記1対のワードを非同期で送るための命令は、少なくとも部分的に、明細書の付録に示されているSEND2命令のハードウェア定義言語の記述に基づくことを特徴とする請求項4に記載のコンピュータプロセッサシステム。
  6. 前記チャネルから1対のワードを読み取るための命令は、少なくとも部分的に、明細書の付録に示されているRECEIVE2命令のハードウェア定義言語の記述に基づくことを特徴とする請求項4に記載のコンピュータプロセッサシステム。
  7. 前記1組のハードウェア命令は、
    新しい通信チャネルを動的に作成するための命令と、
    チャネルのリストをリスンし、次いで、前記リストにおけるチャネルの1つにデータが出現したときに、処置を実行するための命令と、
    前記プロセッサ上で走っているプロセスのリストに新しいプロセスを追加するための命令と、
    チャネル上で受け取られたデータ値を処理するための新しいプロセスを生成するための命令と、
    プロセスの実行を停止するための命令とのうち少なくとも1つを含むことを特徴とする請求項4に記載のコンピュータプロセッサシステム。
  8. 前記新しい通信チャネルを動的に作成するための命令は、少なくとも部分的に、明細書の付録に示されているNEW命令のハードウェア定義言語の記述に基づくことを特徴とする請求項7に記載のコンピュータプロセッサシステム。
  9. 前記チャネルのリストをリスンするための命令は、少なくとも部分的に、明細書の付録に示されているSELECT命令のハードウェア定義言語の記述に基づくことを特徴とする請求項7に記載のコンピュータプロセッサシステム。
  10. 前記新しいプロセスを追加するための命令は、少なくとも部分的に、明細書の付録に示されているPAR命令のハードウェア定義言語の記述に基づくことを特徴とする請求項7に記載のコンピュータプロセッサシステム。
  11. 前記新しいプロセスを生成するための命令は、少なくとも部分的に、明細書の付録に示されているSERVE命令のハードウェア定義言語の記述に基づくことを特徴とする請求項7に記載のコンピュータプロセッサシステム。
  12. 前記プロセスの実行を停止するための命令は、少なくとも部分的に、明細書の付録に示されているHALT命令のハードウェア定義言語の記述に基づくことを特徴とする請求項7に記載のコンピュータプロセッサシステム。
  13. コンピュータで使用するための回路基板であって、
    各プロセッサは、対応する1組のπ計算プリミティブに基づく1組のハードウェア命令のうち該当する1つを実行するようになされている、複数のプロセッサと、
    前記複数の各プロセッサに接続されたメモリとを備えたことを特徴とする回路基板。
  14. 前記メモリは、デュアルポートメモリであることを特徴とする請求項13に記載の回路基板。
  15. 前記デュアルポートメモリは、メッセージパッシングシステムにおいて使用されるチャネルを表すことを特徴とする請求項14に記載の回路基板。
  16. 前記デュアルポートメモリは、プログラムおよびデータのためのキャッシュの役割をすることを特徴とする請求項15に記載の回路基板。
  17. 前記メモリは、SDRAMコントローラを介してアクセスされることを特徴とする請求項13に記載の回路基板。
  18. SDRAMコントローラは、より大きいメモリとの通信を管理することを特徴とする請求項17に記載の回路基板。
  19. ハードウェアリソースに対する接続を提供する1つまたは複数のチャネルをさらに備えたことを特徴とする請求項13に記載の回路基板。
  20. 他のプロセッサに所有されるチャネルに、前記プロセッサがそれを介してアクセスすることができるスイッチネットワークをさらに備えたことを特徴とする請求項13に記載の回路基板。
  21. 前記プロセッサは、フィールドプログラマブルゲートアレイに実装されることを特徴とする請求項13に記載の回路基板。
  22. 前記プロセッサは、シリコンチップに実装されることを特徴とする請求項13に記載の回路基板。
  23. 通信経路と、
    前記通信経路に独立して結合された複数のプロセッサとを備え、各前記プロセッサは、対応する1組のπ計算プリミティブに基づく1組のハードウェア命令のうち該当する1つを実行するようになされていることを特徴とするコンピュータプロセッサシステム。
  24. 前記通信経路に結合された処理サービスをさらに備え、各前記プロセッサは、前記通信経路を介して前記処理サービスにアクセスすることができることを特徴とする請求項23に記載のシステム。
  25. 前記通信経路に結合されたメモリをさらに備え、各前記プロセッサは、前記通信経路を介して前記メモリにアクセスすることができることを特徴とする請求項23に記載のシステム。
  26. 前記通信経路に結合されたメモリをさらに備え、各前記プロセッサは、前記通信経路を介して前記メモリを読み取りまたそれに書き込むことができることを特徴とする請求項23に記載のシステム。
  27. ハードウェア命令を実行するためのプロセッサであって、
    複数の電子回路を備え、各前記電子回路は、少なくとも部分的に、明細書の付録に示されているハードウェア定義言語のステートメントの1つによって定義されることを特徴とするプロセッサ。
JP2005314530A 2004-10-28 2005-10-28 メッセージパッシングプロセッサ Pending JP2006155600A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/977,755 US20060095724A1 (en) 2004-10-28 2004-10-28 Message-passing processor

Publications (1)

Publication Number Publication Date
JP2006155600A true JP2006155600A (ja) 2006-06-15

Family

ID=35709333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005314530A Pending JP2006155600A (ja) 2004-10-28 2005-10-28 メッセージパッシングプロセッサ

Country Status (5)

Country Link
US (1) US20060095724A1 (ja)
EP (1) EP1653346A3 (ja)
JP (1) JP2006155600A (ja)
KR (1) KR20060053246A (ja)
CN (1) CN1766841A (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7549151B2 (en) * 2005-02-14 2009-06-16 Qnx Software Systems Fast and memory protected asynchronous message scheme in a multi-process and multi-thread environment
US7840682B2 (en) 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7680096B2 (en) * 2005-10-28 2010-03-16 Qnx Software Systems Gmbh & Co. Kg System for configuring switches in a network
US20080092146A1 (en) * 2006-10-10 2008-04-17 Paul Chow Computing machine
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US7958341B1 (en) 2008-07-07 2011-06-07 Ovics Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory
US7870365B1 (en) 2008-07-07 2011-01-11 Ovics Matrix of processors with data stream instruction execution pipeline coupled to data switch linking to neighbor units by non-contentious command channel / data channel
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US8327114B1 (en) 2008-07-07 2012-12-04 Ovics Matrix processor proxy systems and methods

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003102722A (ja) * 2001-09-27 2003-04-08 Ge Medical Systems Global Technology Co Llc 医療機器システム及びそのサーバ及びクライアント、並びにそれらの制御方法及びコンピュータプログラム及び記憶媒体
US20030204570A1 (en) * 2002-04-30 2003-10-30 Microsoft Corporation Behavioral analysis for message-passing application programs
WO2003096209A1 (en) * 2002-05-10 2003-11-20 Microsoft Corporation Cooperation of concurrent, distributed networks of resources
JP2004515966A (ja) * 2000-12-08 2004-05-27 ザ・ボーイング・カンパニー ネットワーク経由でデータチャネルをコントローラにデジタル方式でインターフェイスするためのネットワーク・デバイス・インターフェイス

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0150072B1 (ko) * 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
JP2001508214A (ja) * 1997-10-29 2001-06-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ブロック編制データ転送同期化方法及びシステム
US7685566B2 (en) * 2003-07-03 2010-03-23 Microsoft Corporation Structured message process calculus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004515966A (ja) * 2000-12-08 2004-05-27 ザ・ボーイング・カンパニー ネットワーク経由でデータチャネルをコントローラにデジタル方式でインターフェイスするためのネットワーク・デバイス・インターフェイス
JP2003102722A (ja) * 2001-09-27 2003-04-08 Ge Medical Systems Global Technology Co Llc 医療機器システム及びそのサーバ及びクライアント、並びにそれらの制御方法及びコンピュータプログラム及び記憶媒体
US20030204570A1 (en) * 2002-04-30 2003-10-30 Microsoft Corporation Behavioral analysis for message-passing application programs
WO2003096209A1 (en) * 2002-05-10 2003-11-20 Microsoft Corporation Cooperation of concurrent, distributed networks of resources

Also Published As

Publication number Publication date
US20060095724A1 (en) 2006-05-04
EP1653346A3 (en) 2006-05-10
KR20060053246A (ko) 2006-05-19
EP1653346A2 (en) 2006-05-03
CN1766841A (zh) 2006-05-03

Similar Documents

Publication Publication Date Title
JP2006155600A (ja) メッセージパッシングプロセッサ
US20210096823A1 (en) Transpose operations using processing element array
Saldaña et al. MPI as a programming model for high-performance reconfigurable computers
CN104820657A (zh) 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型
US20080216064A1 (en) Method, Architecture and Software of Meta-Operating System, Operating Systems and Applications For Parallel Computing Platforms
Maqsood et al. Dynamic task mapping for network-on-chip based systems
Ruan et al. ST-Accel: A high-level programming platform for streaming applications on FPGA
Zha et al. When application-specific ISA meets FPGAs: a multi-layer virtualization framework for heterogeneous cloud FPGAs
Dehyadegari et al. Architecture support for tightly-coupled multi-core clusters with shared-memory HW accelerators
Perez et al. Coyote: an open source simulation tool to enable RISC-V in HPC
Paulin et al. Distributed object models for multi-processor SoC's, with application to low-power multimedia wireless systems
D’Ambra et al. Advanced environments for parallel and distributed applications: a view of current status
Conti et al. He-P2012: Performance and energy exploration of architecturally heterogeneous many-cores
US11119787B1 (en) Non-intrusive hardware profiling
Ghasemi A scalable heterogeneous dataflow architecture for big data analytics using fpgas
Baxter et al. High-performance reconfigurable computing-the view from edinburgh
Paulin et al. MPSoC Platform Mapping Tools for Data-Dominated Applications................................ andMichelMetzger
Heinz et al. Supporting on-chip dynamic parallelism for task-based hardware accelerators
Kaouane et al. SysCellC: Systemc on cell
Chagoya-Garzon et al. Multi-device Driver Synthesis Flow for Heterogeneous Hierarchical Systems
Bansal PRESENT crypto-core as closely-coupled coprocessor for efficient embedded socs
CN107818071A (zh) 一种基于fpga的硬件线程实现方法
Zhao et al. The deployment of FPGA Based on Network in Ultra-large-scale Data Center
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines
Gerangelos et al. Efficient accelerator sharing in virtualized environments: A Xeon Phi use-case

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120420