[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP2006221645A - マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 - Google Patents

マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 Download PDF

Info

Publication number
JP2006221645A
JP2006221645A JP2006029780A JP2006029780A JP2006221645A JP 2006221645 A JP2006221645 A JP 2006221645A JP 2006029780 A JP2006029780 A JP 2006029780A JP 2006029780 A JP2006029780 A JP 2006029780A JP 2006221645 A JP2006221645 A JP 2006221645A
Authority
JP
Japan
Prior art keywords
processor
local memory
data transfer
interface circuit
memory
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.)
Granted
Application number
JP2006029780A
Other languages
English (en)
Other versions
JP4322259B2 (ja
Inventor
Takeshi Yamazaki
剛 山崎
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2006221645A publication Critical patent/JP2006221645A/ja
Application granted granted Critical
Publication of JP4322259B2 publication Critical patent/JP4322259B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】データアクセスの処理に対する高速化が求められている。
【解決手段】まず管理プロセッサ102Bは、一以上のプログラムを実行するためにローカルメモリ104Aへのデータ転送を起動する起動デバイス116からの要求を受け付ける。ローカルメモリ104Aは、共有メモリと通信することのできる複数の並列プロセッサの1つと連動する。ローカルメモリ104Aへのデータ転送が遂行されると、ローカルメモリ104Aへのデータ転送が完了したことを示す同期信号が生成される。
【選択図】図5

Description

本発明は、マルチプロセッサシステムにおいてローカルメモリへのデータアクセスを同期化する方法および装置に関する。
リアルタイムでマルチメディアのアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速の処理速度を達成するために単一のプロセッサを用いる処理システムがある一方、マルチプロセッサ構成によって実装された処理システムもある。マルチプロセッサシステムにおいて複数のサブプロセッサは、望まれる処理結果を達成するために、並列に(または少なくとも協働して)動作することができる。
最先端のコンピュータアプリケーションは益々複雑さを増し、処理システムへの要求が高まっているため、コンピュータ処理のより高速なデータスループットへの欲求は留まるところを知らない。なかでもグラフィックアプリケーションは、所望の視覚的結果を得るために、比較的短い期間における膨大な数のデータアクセス、データ演算、およびデータ操作を必要とするため、処理システムへの要求が最も高い。
本発明はこのような課題に鑑みてなされたものでありその目的は、ローカルメモリへのアクセスを正確に行うことのできる技術を提供することにある。
広帯域エンジン(BE)マルチプロセッサシステムにおいて、メインプロセッサ(PU)と複数のサブプロセッサ(SPU)は共通のシステムメモリを共有している。各SPUは、命令を実行するローカルメモリと、ローカルメモリへのデータ転送の機能的パスを複数備えたプロセッサインターフェース回路と、を有する。あるSPUのローカルメモリの与えられたメモリ領域へデータ書き込みを行い、同じ機能的パスを通じて同じ領域から読み出しを行う場合は、同期化することによりデータが読み出される前に新たなデータが書き込まれていることを保証することができる。ところが、1つの機能的パスを通じてSPUのローカルメモリへのデータ書き込みを行い、別の機能的パスを通じて同一の領域のデータ読み出しを起動する(例えばPUからSPUへ通知することにより)場合は、そのような同期化ができなかった。実際に、システムのレイテンシに依存して、ローカルメモリの領域に新しいデータが書き込まれる前に、そこにある古いデータが読み出される可能性があった。
本発明のある態様によれば、機能的パスの一つを通じてSPUのローカルメモリにデータが書き込まれ、その後に、別の機能的パスを通じて起動された、同一の領域に対するデータ読み出しを行う際、SPUによって同期化を制御することができる。データ書き込みの(例えばPUによる)通知に応じて、SPUはSPUチャンネルインターフェースへ書き込みを行う同期再生コマンドを発行する。これにより、データ転送のトラッキングと、データ書き込みをSPUが認識したときのチャンネルカウントの変更がなされる。チャンネルカウントがリセットされるまでSPUはローカルメモリ領域からのデータの読み出しを待つ。
本発明の別の態様によれば、機能的パスの一つを通じてSPUのローカルメモリにデータが書き込まれ、その後に、別の機能的パスを介して、同一の領域から共有メモリへのデータ転送を行う際、PUによって同期化を制御することができる。例えば、I/Oデバイスがローカルメモリ内の領域へのデータ書き込みの起動を割り込みによりPUへ通知する。それに応じてPUは、SPUの専用目的レジスタに、同期再生コマンドを発行する。このレジスタはプロセッサインターフェースがアクセス可能であり、プロセッサインターフェースは、データ転送のトラッキングを開始し、データ書き込みがDTEに認識されたときに、レジスタの値を固有の値(例えばゼロ)に設定する。レジスタの値がゼロになるまで、PUは、ローカルメモリ領域から共有メモリへデータを転送するデータ転送コマンドの発行を待つ。
ここで述べる一以上の態様による装置は、共有メモリと通信を行うことができる複数の並列プロセッサと、プロセッサのうち第1のプロセッサと連動し、第1のプロセッサにおいて1つ以上のプログラムを実行するために共有メモリとの間でデータの転送を行うローカルメモリと、第1のプロセッサとそれに対応するローカルメモリとに連結され、(1)ローカルメモリへ、およびローカルメモリからのデータ転送の遂行、および(2)第1のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行うプロセッサインターフェース回路と、を備える。プロセッサインターフェース回路はローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示す同期信号を生成する。
第1のプロセッサは好適には、同期信号に応じて、転送されたデータをローカルメモリから読み出す。あるいは、第1のプロセッサは同期信号に応じて、転送されたデータの、ローカルメモリから共有メモリへの転送を起動してもよい。
プロセッサインターフェース回路は、(1)第1のプロセッサによる同期再生要求、および(2)ローカルメモリへ、またはローカルメモリからのデータ転送の完了に応じて、同期信号を生成してよい。一例として、プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、同期再生要求は、第1のプロセッサが、プロセッサが読み出し可能な値が同期再生要求がなされたことを示すように、チャンネルインターフェース回路に同期命令を書き込むことによって発行されてよい。
プロセッサインターフェース回路は、プロセッサが読み出し可能な値が、ローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示すように、チャンネルインターフェース回路に同期命令を書き込むことによって、同期信号を生成してよい。プロセッサインターフェース回路は、ローカルメモリへ、およびローカルメモリからのデータ転送を遂行するメモリインターフェース回路を含み、メモリインターフェース回路は、少なくとも、ローカルメモリへ、またはローカルメモリからのデータ転送が完了した時点をモニタすることによって同期信号の生成を開始してよい。
第1のプロセッサは好適には、チャンネルインターフェース回路へ読み出し命令を発行し、ローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示すプロセッサが読み出し可能な値を取得することにより、同期信号を受信する。第1のプロセッサは、同期信号に応じて、(1)転送されたデータのローカルメモリからの読み出し、および(2)転送されたデータのローカルメモリから共有メモリへの転送の起動、の少なくとも一方を行ってよい。
第1のプロセッサは好適には、プロセッサのうち第2のプロセッサが発行した、ローカルメモリへ、またはローカルメモリからのデータ転送が起動したことを示す通知信号に応じて、同期信号を求める同期再生要求をプロセッサインターフェース回路に発行する。
第2のプロセッサは、ローカルメモリへ、またはローカルメモリからのデータ転送を起動してよい。あるいは、他の並列プロセッサ以外のデバイスが、ローカルメモリへ、またはローカルメモリからのデータ転送を起動してもよい。
さらなる一以上の実施形態によれば、プロセッサインターフェース回路は、(1)プロセッサのうち第2のプロセッサによる同期再生要求、および(2)ローカルメモリへ、またはローカルメモリからのデータ転送の完了に応じて、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成してよい。この実施の形態において、第1のプロセッサは好適には、第2のプロセッサが発行した、ローカルメモリへ、またはローカルメモリからのデータ転送が完了したことを示す通知信号に応じて、(1)転送されたデータのローカルメモリからの読み出し、および(2)転送されたデータのローカルメモリから共有メモリへの転送の起動、の少なくとも一方を行う。
さらなる一以上の実施形態によれば、第1のプロセッサまたは前記第2のプロセッサは、装置と通信ネットワークを介して通信している外部機器による、ローカルメモリへのデータ転送の起動に応じて、同期再生要求を発行してよい。
なお、以上の構成要素の任意の組合せや、本発明の構成要素や表現を、方法、装置、システムなどの間で相互に置換したものもまた、本発明の態様として有効である。
本発明によれば、ローカルメモリに対する読み出しや書き込みに際して、正確な処理の同期化を達成することができる。
同等の構成要素に同一の符号を付したいくつかの図面を参照しながら、実施の形態について説明する。図1は、本発明の少なくとも1つの特徴を具現化するための演算処理システム100(単にシステム100とも呼ぶ)を示す。説明の簡略化、明確化のため、対応する方法の態様についても、装置として記述される図1のブロック図に関する説明を適応することができる。
システム100は、ローカルメモリ104A〜104Dを連結した複数のプロセッサ102A〜102Dと、それらとバス108により相互接続された共有メモリ106(システムメモリ106とも呼ぶ)を含む。ここで共有メモリは、メインメモリまたはシステムメモリと呼んでもよい。ここでは例として4つのプロセッサ102が図示されているが、いかなる数のプロセッサでも本発明の主旨および範囲を逸脱しない。
プロセッサ102のそれぞれの構成は同一であってもよいし、異なってもよい。そのプロセッサは、またはシステムメモリ106からのデータを要求するとともにそのデータを操作することで所望の結果を得ることを可能にする任意の既知の技術を用いて実装されてもよい。例えば、プロセッサ102はソフトウエアおよび/またはファームウエアを実行可能な、標準的なマイクロプロセッサや分散型のマイクロプロセッサなどの任意の既知のマイクロプロセッサを用いることで実装されてもよい。例として、一つ以上のプロセッサ102は、ピクセルデータなどのデータを要求するとともにそのデータを操作可能なグラフィックプロセッサであってもよい。なお、そのピクセルデータには、グレースケール情報や、カラー情報や、テクスチャデータや、ポリゴン情報や、ビデオフレーム情報などが含まれる。
システムメモリ106は、高いバンド幅のメモリ接続(図示せず)を通じてプロセッサ102に接続されるダイナミックランダムアクセスメモリ(DRAM)であるのが好ましい。そのシステムメモリ106は、好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
システム100の一つ以上のプロセッサ102は、メイン(または管理)プロセッサとして機能してよい。そのメインプロセッサは他のプロセッサ102によるデータの処理のスケジューリングと調整を行ってよい。メインプロセッサの機能の例は、以下にさらに詳細に説明する。
次にシステム100の一つ以上のプロセッサ102をより詳細に示した図2を参照する。それぞれのプロセッサ102はプロセッサコア102A、ローカルメモリ104A、およびプロセッサインターフェース回路109(単にプロセッサインターフェース109とも呼ぶ)を含んでいてよく、これらの構成要素は共通の半導体基板上に一体的に設けられてもよいし、あるいは、設計者の意図により分離されて設けられてもよい。
プロセッサコア102Aは好適には、パイプライン処理を用いて実行される。なお、パイプライン処理においては、パイプライン型の方法で論理命令が処理される。そのパイプラインは、命令が処理される任意の数のステージに分割されてよいが、一般的には、一つ以上の命令をフェッチするステージ、その命令をデコードするステージ、命令間の依存性をチェックするステージ、その命令を出力するステージ、その命令を実行するステージを有する。この点に関連して、そのプロセッサコア102Aには、命令バッファ、命令デコード回路、依存性チェック回路、命令出力回路、および実行段階を含んでよい。
ローカルメモリ104Aは、プロセッサコア102Aにバス114を介して接続される。ローカルメモリ104Aはプロセッサコア102Aと同一チップ(同一の半導体基板)上に設けられるのが好ましい。しかしながら、ローカルメモリ104Aは、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に設けられたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどを備えない、従来のハードウェアキャッシュメモリではないことが好ましい。チップ上の実装面積が限られているので、ローカルメモリ104Aのサイズは、共有メモリ106のサイズよりはるかに小さい。
プロセッサ102は、プログラムの実行とデータの操作のために、バス108を介してシステムメモリ106からそれぞれのローカルメモリ104にデータ(プログラムデータを含みうる)をコピーするためのデータアクセス要求を行うことが好ましい。データアクセスを遂行するメカニズムとして、後述するダイレクト・メモリ・アクセス(DMA)技術などの任意の既知の技術を用いてもよい。
プロセッサインターフェース回路109はメモリインターフェース回路110(単にメモリインターフェース110とも呼ぶ)およびチャンネルインターフェース回路112(単にチャンネルインターフェース112とも呼ぶ)を含むことが望ましい。メモリインターフェース回路110はローカルメモリ104Aへの、またはローカルメモリ104Aからのデータ転送を遂行するように動作する。例えばメモリインターフェース回路110はローカルメモリ104Aへの、またはローカルメモリ104Aからのデータブロックを転送するためのダイレクト・メモリ・アクセス(DMA)を行えるようにしてもよい。そのようなデータ転送は共有メモリ106とローカルメモリ104Aとの間、プロセッサ102B(以後、管理プロセッサ102Bとも呼ぶ)のような他のプロセッサとローカルメモリ104Aとの間、および/または他の起動デバイス116間で行われる。ここで起動デバイス116は、システム100内部の入力/出力デバイス、システム100と通信ネットワークを介して接続された外部機器などでよい。この点において、システム100を既知のネットワークインターフェース技術によって他の処理システムと接続し、それらのシステムでデータを共有できるようにして、分散型コンピュータシステムを実現するようにしてもよい。
チャンネルインターフェース回路112は、プロセッサ102Aと、プロセッサ102B、102C、および102Dのような他のプロセッサとの間の通信を遂行する。メモリインターフェース回路110とチャンネルインターフェース回路112の個々の機能は非常に有用であるうえ、ローカルメモリ104Aへのデータ転送と、その後にプロセッサコア102A、システム100に含まれるその他の機器、または、広域に分散したコンピュータシステムにおける機器が、そのデータへアクセスを行うのを管理するうえで、特徴的な役割を果たす。システム100のこれらの態様は、図3〜6を参照してより詳細に説明する。
図3はプロセッサコア102A、ローカルメモリ104A、管理プロセッサ102B、および起動デバイス116においてなすことのできるデータアクセスのシナリオを示すフローチャートである。アクション200において、起動デバイス116は、メモリインターフェース回路110にデータ転送命令を送信することにより、ローカルメモリ104Aへのデータ転送を起動する。これによりメモリインターフェース回路110はデータの転送を待機する状態となる。次に起動デバイス116は管理プロセッサ102Bと通信し、ローカルメモリ104Aへのデータ転送の起動について通知する(アクション202)。この通知は管理プロセッサ102Bへの割り込みの形式をとってよい。管理プロセッサ102Bはその管理機能として、その割り込みに応じ、プロセッサコア102Aへチャンネルインターフェース回路112を介して通知を行う(アクション204)。
起動デバイス116は、アクション200でデータ転送の起動を行った後、メモリインターフェース回路110へデータを転送してもよい(アクション206)。これは、データ転送が起動された時点(アクション200)に対して、アクション206でメモリインターフェース回路110がデータを取得する時点の時間的遅れが発生することを意味している。メモリインターフェース回路110がデータを取得したかどうかに関わらず、そのデータが実際にローカルメモリ104Aへ格納される前に、プロセッサコア102Aは、チャンネルインターフェース回路112を介した管理プロセッサ102Bからの通知に応答して、ローカルメモリ104Aからのデータの読み出しを完了する(アクション208)。
ここでローカルメモリ104Aからのデータの読み出しが行われる(アクション208)のは、データがメモリインターフェース回路110によりローカルメモリ104Aに実際に格納される(アクション210)前である点に留意すべきである。これは、ローカルメモリ104Aへの複数の機能的パス、すなわちメモリインターフェース回路110およびチャンネルインターフェース回路112が存在することによる。したがって、アクション210でメモリインターフェース回路110がローカルメモリ104Aに格納する新しいデータの代わりに、プロセッサコア102Aがバス114を介してローカルメモリ104Aから古いデータを取り出すことができる。
図4は別のシナリオを示している。アクション200において、起動デバイス116は、メモリインターフェース回路110にデータ転送命令を送信することにより、ローカルメモリ104Aへのデータ転送を起動する。次に起動デバイス116は管理プロセッサ102Bと通信し、ローカルメモリ104Aへのデータ転送の起動を、管理プロセッサ102Bへの割り込みなどによって通知する(アクション202)。管理プロセッサ102Bはその管理機能として、チャンネルインターフェース回路112を介してプロセッサコア102Aと通信し、ローカルメモリ104Aから共有メモリ106へのデータ転送を起動する(アクション212)。それに応じて、プロセッサコア102Aはローカルメモリ104Aから共有メモリ106へのデータ転送を、DMAコマンドにより命令する(アクション214)。
起動デバイス116は、アクション200でデータ転送の起動を行った後、メモリインターフェース回路110へデータを転送してもよい(アクション206)。この場合も、データ転送が起動された時点(アクション200)に対して、メモリインターフェース回路110がアクション206でデータを取得した時点、または実際にデータがローカルメモリ104Aに格納された時点(アクション210)に時間的遅れが発生する。メモリインターフェース回路110がデータを取得したかどうかに関わらず、そのデータが実際にローカルメモリ104Aへ格納される前に、アクション216において、ローカルメモリ104Aから共有メモリ106へのデータ転送が完了する。したがって、共有メモリ106は、プロセッサインターフェース回路109が提供する、ローカルメモリ104Aへの複数の機能的パスにより、要求された新しいデータに代わり古いデータを受け取ることができる。
ここで、図3、4で示した例が意図するところでは、起動デバイス116は、システム100内部のその他のプロセッサ(プロセッサ102B〜102Dなど)のうちの1つでもよいし、システム100とネットワーク(インターネットのようなパケットスイッチデータネットワークなど)を介して通信を行っている、システム100外部の外部機器でもよい。さらに、管理プロセッサ102Bは事象シーケンスにおいて用いられることが望ましいが、起動デバイス116は図3および/または図4において図示された、管理プロセッサ102Bおよび起動デバイス116双方のアクションを処理してよい。
図5はローカルメモリ104Aへのデータ転送および、それに続くローカルメモリ104Aからのデータ転送の同期化を、プロセッサインターフェース回路109によって制御するメカニズムを示している。アクション200、202、および204は図3を参照して上述したとおりである。管理プロセッサ102Bからの通知に対する応答として、プロセッサコア102Aはチャンネルインターフェース回路112に対し同期再生要求を発行可能であることが望ましい(アクション220)。メモリインターフェース回路110はその同期再生要求に応じて、ローカルメモリ104Aへのデータの格納の監視を行い、ローカルメモリ104Aへのデータ転送が完了した際、同期信号の生成処理が可能であることが望ましい(アクション222)。好適には、同期信号はチャンネルインターフェース回路112を経てプロセッサコア102Aへ送信される(アクション224)。同期信号への応答として、プロセッサコア102Aは、新たなデータがローカルメモリ104A内に格納されたことが確認された時点で、ローカルメモリ104Aに対するデータ読み出しを完了させる。
図6は、望ましい同期化を確実に行うために、ローカルメモリ104Aへの、およびローカルメモリ104Aからのデータ転送を管理する、別のメカニズムを示している。図5は、プロセッサコア102Aが同期再生要求を発生させるメカニズムを示しているのに対し、図6は、管理プロセッサ102B(またはシステム100内のその他のプロセッサ)が同期再生要求を発生させる手法について示している。アクション200および202は図3〜5を参照して詳述したとおりである。起動デバイス116からの割り込みに対する応答として、管理プロセッサ102Bは同期再生要求をプロセッサインターフェース回路109の専用レジスタ118に発行可能であることが望ましく(アクション230)、メモリインターフェース回路110はその専用レジスタ118に応じて、ローカルメモリ104Aへのデータ転送(アクション210)を監視し、データ転送が完了した際に同期信号を発行する(アクション232)。一例として、同期信号を専用レジスタ118に書き込むことにより発生させ、管理プロセッサ102Bはそれを読み込むことにより、同期が得られたことを認識する(アクション234)。その後、管理プロセッサ102Bは、チャンネルインターフェース回路112へ書き込むことにより、ローカルメモリ104Aからのデータ転送を起動する(アクション212)。これにより、その後のDMAコマンド(アクション214)およびローカルメモリ104Aからのデータ転送の完了(アクション216)が、新たなデータがローカルメモリ104Aに格納された後になされることが保証される。
チャンネルインターフェース回路112と専用レジスタ118はいかなる方法で実装されてもよいが、一方または双方が、プロセッサが書き込み可能な命令に応答してプロセッサが読み出し可能な値を変更できることが望ましい。したがって、例えばプロセッサコア102Aの、チャンネルインターフェース回路112への同期再生要求の発行(図5のアクション220)は、同期命令をチャンネルインターフェース回路112へ書き込み、同期要求がなされたことをプロセッサが読み出し可能な値が示すようにすることによって行ってよい。
チャンネルインターフェース回路112がローカルメモリ104Aへのデータ転送の監視および同期信号の発行を適切に開始できるように、メモリインターフェース回路110は、チャンネルインターフェース回路112のプロセッサが読み出し可能な値の読み出しを行えることが望ましい。データ転送の監視および同期信号の発行は、同期要求に応じて生成された仲介信号を介して開始するようにしてもよい。メモリインターフェース回路110は好適には、同期命令をチャンネルインターフェース回路112へ書き込み、プロセッサが読み出し可能な値が、ローカルメモリ104Aへのデータ転送が完了したことを示すようにすることにより、同期信号を発行する(アクション222)。
同期信号への応答としてプロセッサコア102Aは、チャンネルインターフェース回路112に対し、ローカルメモリ104Aへのデータ転送が完了したことを示すプロセッサが読み出し可能な値を取得するための読み出し命令を発行してよい(アクション224)。ここでプロセッサコア102Aは、同期信号を取得するためにチャンネルインターフェース回路112をポールし、さらに/または割り込みによって同期信号を取得してもよい。
さらなる例として、チャンネルインターフェース回路112について上述したのと同様の方法で専用レジスタ118を動作させ、レジスタの1つ以上のビットが同期再生信号の発行および/または同期信号の発行を示すようにしてもよい。
ここで図5、6に示された例の意図するところでは、起動デバイス116はプロセッサ102B〜102Dのような、システム100内の他のプロセッサの1つでもよい。さらに管理プロセッサは事象シーケンスにおいて用いられることが望ましいが、起動デバイス116は図5、6に示された管理プロセッサ102Bおよび起動デバイス116双方のアクションを処理してよい。例えば起動デバイス116は、図5に示したデータ転送の起動(アクション200)、およびデータ転送の起動のプロセッサコア102Aへの通知(アクション204)を行ってよい。同様に図6では、起動デバイス116はデータ転送の起動(アクション200)、同期再生要求の発行(アクション230)、同期表示の取得(アクション234)、同期表示を受けてのローカルメモリ104Aからのデータ転送の起動(アクション212)を行ってよい。
一以上の別の実施の形態において、起動デバイス116は、システム100の外部にあり、インターネットのようなパケットスイッチデータネットワークのようなネットワークを介してシステム100と通信している外部機器であってもよい。この実施形態において起動デバイスである外部機器116は、ローカルメモリ104Aへのデータ転送の起動(アクション200)、および、プロセッサ102Bなど他のプロセッサへの割り込みによるデータ転送起動の通知(アクション202)を行ってよい。その後プロセッサ102Bは図5および/または図6に示した他の処理を実行する管理プロセッサとして動作してもよい。
図7は本発明の一以上の実施の形態において、単独でおよび/または集合的に導入することのできる態様を示したフローチャートである。図7のフローチャートは概して、プロセッサインターフェース回路109が、システム100内の同一の機器、および/またはシステム100内、かつ/またはシステム100外部の異なる機器によって起動される、ローカルメモリ104Aへの複数のデータ転送を監視することができる点が図示されている。したがってプロセッサインターフェース回路109は、ローカルメモリ104Aへの複数のデータ転送が完了したことを示す同期信号を生成できることが望ましい。
アクション300においてプロセッサインターフェース回路109はローカルメモリ104Aへの書き込み要求を複数、受け付けてよい。好適には、プロセッサインターフェース回路109は、ローカルメモリ104Aへの起動されたデータ転送のそれぞれに対する同期フラグを有する同期キュー(図示せず)を含む。各同期フラグは、対応するデータ転送が起動され、かつ、完了していないときに「セット」されることが望ましい。同期キューにおける同期フラグの数は、ローカルメモリ104Aへの起動されたデータ転送の数の増加とともに増加することが望ましい。
プロセッサインターフェース回路109が1つの同期再生要求を受け付けたとしても、同期フラグの値はグループまたはセットで記憶回路(図示せず)に記憶されることが望ましい。ここでは、複数の起動されたデータ転送のうち一つのみに対応する単一の同期要求であったとしても、複数のデータ転送に対する同期フラグの値のセットを記憶回路に記憶させてよい。このことは同期回路の実装および制御を平易にする点で有効である。
ローカルメモリ104Aへのデータ転送が完了すると、記憶回路に記憶された同期フラグの値はリセットされる(アクション306〜308)。セットに含まれる同期フラグの値が全てリセットされると(アクション310)、プロセッサインターフェース回路109は同期信号を発行することが望ましい(アクション312)。
ある期間にわたってプロセッサインターフェース回路109が複数の同期再生要求を受け付けると(アクション304)、同期フラグの値の複数のセットが記憶回路に記憶され、ローカルメモリ104Aへのデータ転送がそれぞれ完了するのに応じて区別して扱われる。したがってプロセッサインターフェース回路109は、同期フラグの値の各セットがリセットされるのに従い、複数の同期信号を発行してよい。
ここで、上述した一つ以上の特徴の実現に適した、好適なマルチプロセッサシステムのコンピュータアーキテクチャについて説明する。一つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、PCシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および/または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、3Dコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
図8は、基本的な処理モジュールであるプロセッサ要素(PE)500を示す。PE500は、I/Oインタフェース502と、処理ユニット(PU)504と、複数のサブ処理ユニット508、すなわち、サブ処理ユニット508Aと、サブ処理ユニット508Bと、サブ処理ユニット508Cと、サブ処理ユニット508Dとを含む。ローカル(すなわち内部)PEバス512(単にバス512とも呼ぶ)は、PU504、SPU(またはサブ処理ユニット)群508、およびメモリインタフェース511間のデータおよびアプリケーションの伝送を行う。ローカルPEバス512は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
PE500はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、PE500はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE500はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)ロジック回路等として実装することもできる。
PE500は、広帯域メモリ接続516を介して共有(メイン)メモリ514に密接に関連付けられる。共有メモリ514は好適にはダイナミックランダムアクセスメモリ(DRAM)だが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
PU504およびサブ処理ユニット508は、それぞれ、ダイレクトメモリアクセス(DMA)機能を有するメモリフローコントローラ(MFC)と接続されることが望ましい。MFCは、メモリインタフェース511と協働して、共有メモリ(またはDRAM)514、PE500におけるサブ処理ユニット508、PU504間のデータの転送を円滑にするものである。ここで、DMACおよび/またはメモリインタフェース511は、サブ処理ユニット508とPU504とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、DMACの機能および/またはメモリインタフェース511の機能は、サブ処理ユニット508およびPU504の一つ以上(好ましくはすべて)に一体化できる。ここで、共有メモリ(またはDRAM)514もまた、PE500から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、共有メモリ(またはDRAM)514は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
PU504は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU504はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群508は、好適には、一命令複数データ(SIMD)プロセッサである。PU504の制御下で、サブ処理ユニット群508はデータおよびアプリケーションの処理を並列に、かつ独立して行う。PU504としては、RISC(reduced instruction−set computing)技術を用いるマイクロプロセッサアーキテクチャとなるPowerPC(登録商標)コアを用いることが好ましい。RISCは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
ここで、PU504は、サブ処理ユニット508のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット508は、メイン処理ユニットPUによる処理、すなわち各々のサブ処理ユニット508によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、PE500内において、複数のPUを実装してもよい。
このモジュール構造では、あるコンピュータシステムで使用されるPE500の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE群500、ワークステーションは2つのPE群500、PDAは1つのPE500を使用しうる。あるソフトウェアセルの処理に割り当てられるPE500のサブ処理ユニット508の数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
図9は、サブ処理ユニット(SPU)508の好適な構造と機能を示す図である。サブ処理ユニット508のアーキテクチャは、汎用プロセッサ(多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの)と特殊用途のプロセッサ(一つのアプリケーションにおいて高い性能を実現するように設計されている)との間に位置するものであることが望ましい。サブ処理ユニット508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット508の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGエンコード/デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
サブ処理ユニット508は、すなわちSPUコア510Aとメモリフローコントローラ(MFC)510Bという二つの基本機能ユニットを有する。SPUコア510Aは、プログラムの実行、データの操作などを担うものであり、一方、MFC510Bは、SPUコア510Aと、システムの共有メモリ514との間のデータ転送に関連する機能を担うものである。
SPUコア510Aはローカルメモリ550と、命令(インストラクション)ユニット(IU)552と、レジスタ554と、一つ以上の浮動小数点処理ステージ556と、一つ以上の固定小数点処理ステージ558とを有する。ローカルメモリ550は、SRAMのようなシングルポートのRAMを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、SPUコア510Aは、キャッシュよりも、比較的小さいローカルメモリ550を用いる。実際には、リアルタイムのアプリケーション(およびここで言及したほかのアプリケーション)のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット508A内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット/ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うDMA転送をオーバーラップすることで、ローカルメモリSRAM550内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。DMA転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、SRAMローカルメモリアプローチは、DMA転送サイズが十分大きいかつ十分予測可能なとき(例えばデータが要求される前にDMAコマンドを発行することができるとき)において優位性を提供する。
サブ処理ユニット508のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ550を参照する。なお、ローカルメモリ550の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス(RA)が付与されている。これは、特権レベルのソフトウェアがローカルメモリ550を一つの処理における実効アドレス(EA)にマッピングすることを可能とし、それによって二つのローカルメモリ550間のDMA転送が容易になる。PU504は、実効アドレスを用いてローカルメモリ550に直接アクセスすることもできる。ローカルメモリ550は、356キロバイトの容量を有し、レジスタ354の容量は128×128ビットであることが望ましい。
SPUコア510Aは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の従属関係のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット552は、命令バッファと、命令デコード回路と、従属関係チェック回路と、命令発行回路とを含む。
命令バッファは、ローカルメモリ550と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして(すなわち実質上同時に)レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ2または3以下となるようにするサイズであることが好ましい。
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ550へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび/または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび/またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
従属関係チェック回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに従属するか否かを判定するためのチェックを行うデジタルロジックを含む。従属するならば、チェック対象となる命令は、これらの他のオペランドが(例えば、これらの他の命令の実行の完了を許可することによって)更新されるまで、実行されるべきではない。従属関係チェック回路は、デコード回路から同時に送信されてきた複数の命令の従属関係を判定することが好ましい。
命令発行回路は、浮動小数点処理ステージ556および/または固定小数点処理ステージ558に命令を発行することができる。
レジスタ554は、128―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
SPUコア510Aは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。SPUコア510Aは、命令バッファから同時に送信される命令の数、例えば2と3の間(クロックサイクル毎に二つまたは3つの命令が発行されることを意味する)に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点処理ステージ556と固定小数点処理ステージ558を用いることができる。好適な実施の形態では、浮動小数点処理ステージ556と固定小数点処理ステージ558の望ましいスピードは、それぞれ、毎秒32ギガ浮動小数点オペレーション(32 GFLOPS)と毎秒32ギガオペレーション(32 GOPS)である。
MFC510Bは、バスインターフェースユニット(BIU)564と、メモリマネジメントユニット(MMU)562と、ダイレクトメモリアクセスコントローラ(DMAC)560とを有することが望ましい。低電力消費の設計目的を達成するために、MFC510Bは、DMAC560を除いて、SPUコア510Aおよびバス512の半分の周波数(半分のスピード)で動作することが好ましい。MFC510Bは、バス512からサブ処理ユニット508に入るデータと命令を操作することができ、DMACのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。BIU564は、バス512とMMU562とDMAC560との間のインターフェースを提供する。したがって、サブ処理ユニット508(SPUコア510AとMFC510Bを含む)とDMAC560は、物理的および/または論理的にバス512と接続されている。
MMU562は、メモリアクセスのために実効アドレス(DMAコマンドから取得される)をリアルアドレスへ変換することができるようにすることが望ましい。例えば、MMU562は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、MMU562は、64ビットのメモリマネジメントモジュールをベースにして実装でき、4Kバイト、64Kバイト、1メガバイト、16メガバイトのページサイズと256MBのセグメントサイズを有する264のバイトの実効アドレス空間を提供することができる。MMU562は、DMAコマンドのために、265までの仮想メモリと、242バイト(4テラバイト)の物理メモリをサポート可能であることが好ましい。MMU562のハードウェアは、8−エントリの完全連想SLB、256−エントリの4ウェイセット連想TLB、TLBのための4×4代替マネジメントテーブル(RMT)を含むものとすることができる。なお、RMTはハードウェアTLBミスのハンドリングに用いられるものである。
DMAC560は、SPUコア510AからのDMAコマンドと、一つ以上の、PU504および/または他のSPUのような他のデバイスからのDMAコマンドとを管理することができることが望ましい。DMAコマンドは下記の3つのカテゴリがある。すなわち、ローカルメモリ550から共有メモリ514へデータを移動させるPutコマンド、共有メモリ514からローカルメモリ550へデータを移動させるGetコマンド、SLIコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。DMAコマンドに応じて、MMU562は実効アドレスをリアルアドレスに変換し、このリアルアドレスはBIU564に転送される。
SPUコア510Aはチャンネルインターフェースとデータインターフェースとを用いて、DMAC560内のインターフェースと通信(DMAコマンド、ステータスなどの送信)することが好ましい。SPUコア510Aは、チャンネルインターフェースを介してDMAコマンドをDMAC560内のDMAキューに送信する。いったん、DMAキューに格納されたDMAコマンドは、DMAC560内の発行ロジックと完了ロジックにより操作される。一つのDMAコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がSPUコア510Aに返送される。
サブ処理ユニット508はSPUチャンネルを有し、サブ処理ユニットで実行されるプログラムはそのSPUチャンネルを通じて他のサブ処理ユニット、PU、または他のデバイスと通信する。その通信には、1つ以上のプロセッサ内部通信のメールボックスと信号通知レジスタ、DMAコマンドの発行およびステータス、デクリメンター(タイマー)アクセス、およびイベントステータスを含む。
チャンネルはプログラムコードから個別のチャンネル命令を用いてアクセスされる。これらの命令には、読み出しチャンネル(指定されたチャンネルに格納され、選択されたレジスタファイルへロードすべきデータの読み出しをもたらす)と、書き込みチャンネル(選択されたレジスタファイルから読み出し、指定されたチャンネルへ格納する)と、読み出しチャンネルカウント(選択されたレジスタに格納すべき、指定されたチャンネルに対応した数をもたらす)が含まれる。
いくつか、または全てのSPUチャンネルは対応するカウントを有していてよく、そのカウントは、各チャンネル(数)に対しチャンネル命令が発行されたときはデクリメントされ、外部のイベントがそのチャンネルに入力されたときはインクリメントされる。
サブ処理ユニット508は、サブ処理ユニット508の設定および動作を制御するメモリ管理I/O(MMIO)レジスタをさらに含んでよい。MMIOレジスタはチャンネルインターフェースを介して読み出しおよび書き込みが行われてよい。MMIOレジスタはサブ処理ユニット508の起動および制御、エラーおよびデバッグの監視および制御、メールボックスや通知レジスタ(チャンネルにマッピングされている)を介したプロセッサ内部通信に用いられる。
本発明の種々の態様において、1つ以上のSPUチャンネルは上述したプロセッサ内部通信の機能のために用いてよい。これは、1つ以上のサブ処理ユニット508において実行されているプログラムソフトウェアに、ローカルメモリ550とPU504とに渡るアドレスドメインにおいて累積的な順序付けを実現するメカニズムを提供する。複数のソース(すなわち複数のプロセッサまたはユニット)によってなされた、他のプロセッサまたはユニットに対するストレージアクセスの順序付けを、累積的な順序付けと呼ぶ。
2つの独立した同期機能、すなわちMMIO・SPCマルチソース同期機能と、チャンネル・SPCマルチソース同期機能が提供されてもよい。MMIO機能によって、プロセッサおよび/またはユニットはPU504のアドレスドメインから同期化を制御することができ、チャンネル機能によって、サブ処理ユニット508はローカルメモリ550のアドレスドメインから同期化を制御することができる。これらの機能はどちらも、転送先が対応するMFC510Bである転送(例えばMFCをターゲットとした書き込み転送)が、SPCマルチソース同期要求の完了より先に受け付けられることを保証する。
MMIO機能には、SPC_MSSyncとも呼ぶMMIOレジスタを用いてアクセスしてよい。このレジスタにいずれかの値を書き込むと、MFC510Bは、MMIOのSPC_MSSyncへの書き込みに先んじて受け付けた、対応するサブ処理ユニット508をターゲットとする転送のうち、実施されていない全ての転送を記録する。もし記録された転送のどれかがまだ未実施であれば、PC_MSSyncレジスタの読み出しによりその値が返される。記録された転送が全て完了したとき、このレジスタの読み出しによりゼロ値が返される。
MMIO機能を使用するためには、1.PC_MSSyncレジスタに書き込む、2.値が0になるまでPC_MSSyncレジスタをポールする、というステップをプログラムによって処理する。
チャンネル機能はSPC_MSSyncReqチャンネルと、外部イベント、外部マスクを含んでよい。SPC_MSSyncReqチャンネルにいずれかの値を書き込むことにより、対応するMFC510Bがターゲットであり、同期要求以前には未実施であった全ての転送が、完了したことの確認が要求される。
チャンネル機能を使用するためには、1.SPC_MSSyncReqチャンネルに書き込む、2.SPC_MSSyncReqチャンネルが利用可能となるまで(例えばチャンネルカウントが1に戻るまで)待機する、というステップをプログラムによって処理する。
図10は、PU504の好ましい構造と機能を示す図である。PU504は、PUコア504Aとメモリフローコントローラ、すなわちMFC504Bとの二つの基本機能ユニットを有する。PUコア504Aは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、MFC504Bは、PUコア504Aと、システム100のメモリスペースとの間のデータ転送に関連する機能を担うものである。
PUコア504Aは、L1キャッシュ570と、命令ユニット572と、レジスタ574と、少なくとも一つの浮動小数点処理ステージ576と、少なくとも一つの固定小数点処理ステージ578とを有する。L1キャッシュ570は、共有メモリ106、プロセッサ102、あるいはMFC504Bにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。PUコア504Aはスーパーパイプラインとして実装されることが好ましいため、命令ユニット572は、フェッチ、デコード、従属関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。PUコア504Aは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット572から2以上の命令が発行される。高い演算パワーを実現するために、浮動小数点処理ステージ576と固定小数点処理ステージ578は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点処理ステージ576と固定小数点処理ステージ578とを用いることができる。
MFC504Bは、バスインターフェースユニット(BIU)580と、L2キャッシュ582と、キャッシュ不可ユニット(NCU)584と、コアインターフェースユニット(CIU)586と、メモリマネジメントユニット(MMU)588とを有する。低電力消費の設計目的を達成するために、MFC504Bのほとんどは、PUコア504Aとバス108の半分の周波数(半分のスピード)で動作することが好ましい。
BIU580は、バス108と、L2キャッシュ582と、NCU584のロジックブロックとの間のインターフェースを提供する。BIU580は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス108上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、BIU580は、L2キャッシュ582とNCU584の代わりに、バス108へのロードリクエストとストアリクエストを発信する。BIU580は、バス108へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス108上のデータオペレーションは、8ビートになるように設計されることができ、そして、BIU580は、キャッシュラインが128バイト前後であり、一貫性と同期の精度が128KBであるように設計されることが好ましい。
L2キャッシュ582(およびそれをサポートするハードウェアロジック)は、512KBデータをキャッシュするように設計されることが好ましい。例えば、L2キャッシュ582は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。L2キャッシュ582は、8ウエイセットアソシエイティブシステムであることが好ましい。L2キャッシュ582は、6つのキャストアウトキュー(例えば6つのRCマシン)に合わせた6つのリロードキューと、8つの(64バイトの幅の)ストアキューとを有することができる。L2キャッシュ582は、L1キャッシュ570の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ(動作中に変更)されたときの、復元状況において有用である。この構成は、L1キャッシュ570が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる(リクエストがL2キャッシュ582で止まることができるから)。この構成は、L2キャッシュ582にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
NCU584はインターフェースによってCIU586と、L2キャッシュ582と、BIU580と接続されており、通常、PUコア504Aとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。NCU584は、PUコア504Aとの通信のうちの、L2キャッシュ582によって扱わない全ての通信を操作することが好ましい。ここで、L2キャッシュ582によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、NCU584は、半分のスピードで動作することが好ましい。
CIU586は、MFC504BとPUコア504Aとの境界線上に配置され、浮動小数点処理ステージ576、固定小数点処理ステージ578、命令ユニット572、MMU588から、L2キャッシュ582とNCU584へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。PUコア504AとMMU588はフルスピードで動作し、L2キャッシュ582とNCU584は2:1のスピード比で動作可能であることが好ましい。こうすることによって、CIU586に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
CIU586は、ロードユニット、ストアユニット、リロードユニットの3つの機能ブロックから構成される。さらに、データをプリフェッチする機能がCIU586により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。CIU586は、下記の動作を実行可能であることが好ましい:(i)PUコア504AとMMU588からのロードリクエストとストアリクエストを受信する、(ii)これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する(2:1クロック周波数変換)、(iii)キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれL2キャッシュ582とNCU584へルーティングする、(iv)L2キャッシュ582とNCU584へのリクエストが均等になるように調整する、(v)リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、L2キャッシュ582とNCU584へ送信するリクエストのフローコントロールを提供する、(vi)ロードリターンデータを受信すると共に、これらのデータを浮動小数点処理ステージ576、固定小数点処理ステージ578、命令ユニット572、またはMMU588へルーティングする、(vii)スヌープリクエストを浮動小数点処理ステージ576、固定小数点処理ステージ578、命令ユニット572、またはMMU588へ転送する、(viii)ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
MMU588は、第2レベルアドレス変換手段のごとく、PUコア504Aのためにアドレス変換を提供することが好ましい。変換の第1レベルは、PUコア504A内において、セパレート命令と、MMU588より遥かに小さくてかつ速いデータERAT(実効アドレスからリアルアドレスへの変換)アレイとにより提供されることが好ましい。
PU504は64ビットで実装され、4〜6GHz、10F04(Fan−out−of−four)で動作することが好ましい。レジスタは64ビットの長さを有することが好ましく(特定用途のための一つまたはより多くのレジスタが64ビットより小さいかもしれないが)、実効アドレスは64ビットの長さを有することが好ましい。命令ユニット572、レジスタ574、浮動小数点処理ステージ576と固定小数点処理ステージ578はRISCコンピューティング技術を達成するためにPowerPC技術により実装されることが好ましい。
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第6526491号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のPEを含め、さらに、このPEに、PU、DMACおよび8個のAPUを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ(VS)の構造を有してもよく、この場合、VSに、PU、DMACおよび4つのAPUを含めてもよい。
本発明の少なくとも1つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウエアを用いて実現することができる。そのようなハードウエアは、標準的なデジタル回路、ソフトウエアおよび/またはファームウエアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ(PROM)やプログラマブル・アレイ・ロジック・デバイス(PAL)のような1つ以上のプログラマブルなデジタルデバイス/システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装され、かつ/または、1つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウエアおよび/またはファームウエアプログラムにより実装されてもよく、それらのプログラムは、運送および/または配布の便宜のため、好適な記録媒体もしくはフロッピーディスク(登録商標)、メモリチップなどのメディアに格納されてもよい。
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものであることは理解されるべきである。したがって、上述した実施形態に対して様々な変更を加えることができ、請求項により定義された本発明の主旨および範囲から逸脱することなく、他の構成を考案できることは理解されるところである。
本発明の一以上の実施の形態における、二以上のサブプロセッサを備えたマルチプロセッサシステムの構造を示すブロック図である。 図1のプロセッサシステムにおける一以上のプロセッサの詳細を示すブロック図である。 本発明の一以上の実施の形態において、図1のプロセッサシステムによって実行することのできる処理手順を示すイベント/フローチャートである。 本発明の一以上の実施の形態において、図1のプロセッサシステムによって実行することのできる別の処理手順を示すイベント/フローチャートである。 本発明の一以上の実施の形態において、図1のプロセッサシステムによって実行することのできるさらに別の処理手順を示すイベント/フローチャートである。 本発明の一以上の実施の形態において、図1のプロセッサシステムによって実行することのできるさらに別の処理手順を示すイベント/フローチャートである。 本発明の一以上の実施の形態において、図1のプロセッサシステムによって実行することのできるさらに別の処理手順を示すフローチャートである。 本発明の一以上の実施の形態を実現するために用いることのできる好適なプロセッサ要素(PE)を示す図である。 本発明の一以上の実施の形態において、図8のシステムのサブ処理ユニット(SPU)の構造例を示す図である。 本発明の一以上の実施の形態において、図8のシステムの処理ユニット(PU)の構造例を示す図である。
符号の説明
100 システム、 102 プロセッサ、 104 ローカルメモリ、 106 共有メモリ、 108 バス、 109 プロセッサインターフェース回路、 110 メモリインターフェース回路、 112 チャンネルインターフェース回路、 116 起動デバイス。

Claims (45)

  1. 共有メモリと通信を行うことができる複数の並列プロセッサと、
    前記並列プロセッサのうち第1のプロセッサと連動し、前記第1のプロセッサにおいて1つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
    前記第1のプロセッサとそれに対応する前記ローカルメモリとに連結され、(1)前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および(2)前記第1のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行うプロセッサインターフェース回路と、
    を備え、
    前記プロセッサインターフェース回路は前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
  2. 請求項1に記載の装置であって、前記第1のプロセッサは前記同期信号に応じて、転送されたデータを前記ローカルメモリから読み出すことを特徴とする装置。
  3. 請求項1または2に記載の装置であって、前記第1のプロセッサは前記同期信号に応じて、転送されたデータの、前記ローカルメモリから前記共有メモリへの転送を起動することを特徴とする装置。
  4. 請求項1から3のいずれかに記載の装置であって、前記プロセッサインターフェース回路は、(1)前記第1のプロセッサによる同期再生要求、および(2)前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了に応じて、前記同期信号を生成することを特徴とする装置。
  5. 請求項4に記載の装置であって、
    前記プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、
    前記同期再生要求は、前記プロセッサが読み出し可能な値が前記同期再生要求がなされたことを示すように、前記第1のプロセッサが前記チャンネルインターフェース回路に同期命令を書き込むことによって発行されることを特徴とする装置。
  6. 請求項5に記載の装置であって、前記プロセッサインターフェース回路は、前記プロセッサが読み出し可能な値が、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示すように、前記チャンネルインターフェース回路に同期命令を書き込むことによって、前記同期信号を生成することを特徴とする装置。
  7. 請求項1から6のいずれかに記載の装置であって、
    前記プロセッサインターフェース回路は、前記ローカルメモリへ、および前記ローカルメモリからのデータ転送を遂行するメモリインターフェース回路を含み、
    前記メモリインターフェース回路は、少なくとも、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した時点をモニタすることによって前記同期信号の生成を開始することを特徴とする装置。
  8. 請求項6に記載の装置であって、前記第1のプロセッサは、前記チャンネルインターフェース回路へ読み出し命令を発行し、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す前記プロセッサが読み出し可能な値を取得することにより、前記同期信号を受信することを特徴とする装置。
  9. 請求項1から3のいずれかに記載の装置であって、前記第1のプロセッサは、前記並列プロセッサのうち第2のプロセッサが発行した、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号に応じて、前記同期信号を求める同期再生要求を前記プロセッサインターフェース回路に発行することを特徴とする装置。
  10. 請求項9に記載の装置であって、前記第2のプロセッサは、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を起動することを特徴とする装置。
  11. 請求項9または10に記載の装置であって、
    前記プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、
    前記通知信号は、前記プロセッサが読み出し可能な値が前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示すように、前記第2のプロセッサが前記チャンネルインターフェース回路に同期命令を書き込むことによって発行され、
    前記第1のプロセッサは、前記チャンネルインターフェース回路へ読み出し命令を発行し、前記プロセッサが読み出し可能な値を取得することにより、前記通知信号を受信することを特徴とする装置。
  12. 共有メモリと通信を行うことができる複数の並列プロセッサと、
    前記並列プロセッサのそれぞれと連動し、各プロセッサにおいて1つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行う複数のローカルメモリと、
    各プロセッサとそれに対応する各ローカルメモリとに連結され、(1)前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および(2)対応するプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行う複数のプロセッサインターフェース回路と、
    を備え、
    前記プロセッサインターフェース回路はそれぞれ、対応する前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
  13. 共有メモリと通信を行うことができる複数の並列プロセッサと、
    前記並列プロセッサのうち第1のプロセッサと連動し、前記第1のプロセッサにおいて1つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
    前記第1のプロセッサとそれに対応する前記ローカルメモリとに連結され、(1)前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および(2)前記第1のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行うプロセッサインターフェース回路と、
    を備え、
    前記プロセッサインターフェース回路は、(1)前記並列プロセッサのうち第2のプロセッサによる同期再生要求、および(2)前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了に応じて、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
  14. 請求項13に記載の装置であって、
    前記プロセッサインターフェース回路はプロセッサが書き込み可能な命令に応じてプロセッサが読み出し可能な値を変更するチャンネルインターフェース回路を含み、
    前記同期再生要求は、前記プロセッサが読み出し可能な値が前記同期再生要求がなされたことを示すように、前記第2のプロセッサが前記チャンネルインターフェース回路に同期命令を書き込むことによって発行されることを特徴とする装置。
  15. 請求項14に記載の装置であって、
    前記プロセッサインターフェース回路は、前記ローカルメモリへ、および前記ローカルメモリからのデータ転送を遂行するメモリインターフェース回路を含み、
    前記メモリインターフェース回路は、少なくとも、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した時点をモニタすることによって前記同期信号の生成を開始し、
    前記プロセッサインターフェース回路は、前記プロセッサが読み出し可能な値が前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示すように、前記チャンネルインターフェース回路に同期命令を書き込むことにより、前記同期信号を生成することを特徴とする装置。
  16. 請求項13から15のいずれかに記載の装置であって、前記第1のプロセッサは、前記第2のプロセッサが発行した、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す通知信号に応じて、(1)転送されたデータの前記ローカルメモリからの読み出し、および(2)転送されたデータの前記ローカルメモリから前記共有メモリへの転送の起動、の少なくとも一方を行うことを特徴とする装置。
  17. 請求項9または13から16のいずれかに記載の装置であって、
    他の並列プロセッサ以外のデバイスが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を起動し、
    前記デバイスは、前記第2のプロセッサへ、前記データ転送が起動したことを示す割り込みを行うことを特徴とする装置。
  18. 請求項13から17のいずれかに記載の装置であって、
    前記並列プロセッサのそれぞれと連動し、各プロセッサにおいて1つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行う複数のローカルメモリと、
    各プロセッサとそれに対応する各ローカルメモリとに連結され、(1)前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および(2)対応するプロセッサとその他のプロセッサとの間の通信の遂行、を独立して行う複数のプロセッサインターフェース回路と、
    を備え、
    前記プロセッサインターフェース回路はそれぞれ、(1)対応するプロセッサ以外のプロセッサのうちの1つによる同期再生要求、および(2)対応する前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了に応じて、対応する前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
  19. 共有メモリと通信を行うことができる複数の並列プロセッサと、
    前記並列プロセッサのうち第1のプロセッサと連動し、前記第1のプロセッサにおいて1つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
    前記第1のプロセッサとそれに対応する前記ローカルメモリとに連結され、(1)前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および(2)前記第1のプロセッサとその他のプロセッサとの間の通信の遂行、を独立して動作可能なプロセッサインターフェース回路と、
    を備え、
    前記プロセッサインターフェース回路は前記ローカルメモリへ、または前記ローカルメモリからの複数のデータ転送が完了したことを示す同期信号を生成することを特徴とする装置。
  20. 請求項19に記載の装置であって、前記プロセッサインターフェース回路は、起動した、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送のそれぞれに対応する同期フラグを有する同期キューを含むことを特徴とする装置。
  21. 請求項20に記載の装置であって、前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの各データ転送が完了したかどうかに応じて、対応する同期フラグの値を変更することを特徴とする装置。
  22. 請求項21に記載の装置であって、前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの前記複数のデータ転送が完了したことを、それぞれに対応する同期フラグの値が示したとき、前記同期信号を生成することを特徴とする装置。
  23. 請求項20に記載の装置であって、
    前記ローカルメモリへ、または前記ローカルメモリからの複数のデータ転送は、第1のデータ転送セットを含み、
    前記プロセッサインターフェース回路は記憶回路を含み、第1の同期再生要求に応じて、前記第1のデータ転送セットにそれぞれ対応した同期フラグの値である第1の同期フラグ値セットを前記記憶回路にコピーし、
    前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの各データ転送の完了に応じて、前記記憶回路内の前記第1の同期フラグ値セットの値を変更し、
    前記プロセッサインターフェース回路は、前記第1の同期フラグ値セットが、前記ローカルメモリへ、または前記ローカルメモリからの前記第1のデータ転送セットが完了したことを示したとき、第1の同期信号を生成することを特徴とする装置。
  24. 請求項23に記載の装置であって、
    前記複数のデータ転送は少なくとも第2のデータ転送セットを含み、
    前記プロセッサインターフェース回路は、第2の同期再生要求に応じて、前記第2のデータ転送セットにそれぞれ対応した同期フラグの値である第2の同期フラグ値セットを前記記憶回路にコピーし、
    前記プロセッサインターフェース回路は、前記ローカルメモリへ、または前記ローカルメモリからの、前記第2のデータ転送セットの各データ転送の完了に応じて、前記記憶回路内の前記第2の同期フラグ値セットの値を変更し、
    前記プロセッサインターフェース回路は、前記第2の同期フラグ値セットが、前記ローカルメモリへ、または前記ローカルメモリからの前記第2のデータ転送セットが完了したことを示したとき、第2の同期信号を生成することを特徴とする装置。
  25. 共有メモリと通信を行うことができる複数の並列プロセッサと、
    前記並列プロセッサのうち第1のプロセッサと連動し、前記第1のプロセッサにおいて1つ以上のプログラムを実行するために前記共有メモリとの間でデータの転送を行うローカルメモリと、
    前記第1のプロセッサとそれに対応する前記ローカルメモリとに連結され、(1)前記ローカルメモリへ、および前記ローカルメモリからのデータ転送の遂行、および(2)前記第1のプロセッサとその他のプロセッサとの間の通信の遂行、(3)(a)少なくとも前記第1のプロセッサおよび前記並列プロセッサのうち第2のプロセッサのいずれかによる同期再生要求、および(b)前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了、に応じた、前記ローカルメモリへ、または前記ローカルメモリからの前記データ転送が完了したことを示す同期信号の生成、を行うプロセッサインターフェース回路と、
    を備え、
    少なくとも前記第1のプロセッサおよび前記第2のプロセッサの一方は、前記装置と通信ネットワークを介して通信している外部機器による、前記ローカルメモリへのデータ転送の起動に応じて、前記同期再生要求を発行することを特徴とする装置。
  26. 請求項25に記載の装置であって、前記外部機器は前記第2のプロセッサに対し、前記データ転送を起動したことを示す割り込み信号を発行することを特徴とする装置。
  27. 請求項26に記載の装置であって、前記第2のプロセッサは、前記データ転送が起動したことを前記第1のプロセッサに対して示す通知信号を生成することを特徴とする装置。
  28. 請求項1から11および25から27のいずれかに記載の装置であって、前記第1のプロセッサは、前記同期信号に応じて、(1)転送されたデータの前記ローカルメモリからの読み出し、および(2)転送されたデータの前記ローカルメモリから前記共有メモリへの転送の起動、の少なくとも一方を行うことを特徴とする装置。
  29. 請求項1から28のいずれかに記載の装置であって、前記ローカルメモリはハードウェア・キャッシュメモリでないことを特徴とする装置。
  30. 共有メモリと通信を行うことができる複数の並列プロセッサのうち第1のプロセッサにおいて1つ以上のプログラムを実行するために前記第1のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する起動デバイスからの要求を受け付けるステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を遂行するステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成するステップと、
    を含むことを特徴とする方法。
  31. 請求項30に記載の方法であって、前記同期信号に応じて、転送されたデータを前記ローカルメモリから前記第1のプロセッサに読み出すステップをさらに含むことを特徴とする方法。
  32. 請求項30または31に記載の方法であって、前記同期信号に応じて、転送されたデータの前記ローカルメモリから前記共有メモリへの転送を、前記第1のプロセッサが起動するステップをさらに含むことを特徴とする方法。
  33. 請求項30から32のいずれかに記載の方法であって、(1)前記第1のプロセッサによる同期再生要求、および(2)前記ローカルメモリへ、または前記ローカルメモリからのデータ転送の完了、に応じて、前記同期信号を生成するステップをさらに含むことを特徴とする方法。
  34. 請求項30から33のいずれかに記載の方法であって、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号を、前記第1のプロセッサが前記並列プロセッサのうち第2のプロセッサから受信するステップと、
    前記第1のプロセッサが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、前記同期信号を求める同期再生要求を前記第1のプロセッサが発行するステップと、
    をさらに含むことを特徴とする方法。
  35. 請求項30から34のいずれかに記載の方法であって、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を起動する起動デバイスは前記第2のプロセッサであることを特徴とする方法。
  36. 請求項30から34のいずれかに記載の方法であって、
    前記起動デバイスは前記並列プロセッサのうちの1つでなく、
    前記起動デバイスは、前記第2のプロセッサに対し、前記データ転送を起動したことを示す割り込みを行うことを特徴とする方法。
  37. 共有メモリと通信を行うことができる複数の並列プロセッサのうち第1のプロセッサにおいて1つ以上のプログラムを実行するために前記第1のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する起動デバイスからの要求を受け付けるステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を遂行するステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す、前記起動デバイスからの通知信号を、前記並列プロセッサのうち第2のプロセッサが受信するステップと、
    前記第2のプロセッサが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、同期信号を求める同期再生要求を前記第2のプロセッサが発行するステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したときに、前記同期信号を生成するステップと、
    を含むことを特徴とする方法。
  38. 請求項37に記載の方法であって、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す前記第2のプロセッサからの通知信号に応じて、(1)転送されたデータを前記ローカルメモリから読み出すステップ、および(2)転送されたデータの前記ローカルメモリから前記共有メモリへの転送を起動するステップ、の少なくとも一方をさらに含むことを特徴とする方法。
  39. 共有メモリと通信を行うことができる複数の並列プロセッサのうち第1のプロセッサにおいて1つ以上のプログラムを実行するために前記第1のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する、前記並列プロセッサと通信ネットワークを介して通信している外部機器からの要求を受け付けるステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号を、前記第1のプロセッサおよび、前記複数の並列プロセッサのうち第2のプロセッサ、のいずれかが、前記外部機器から受信するステップと、
    前記第1のプロセッサおよび第2のプロセッサのいずれかが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、同期信号を求める同期再生要求を、前記第1のプロセッサおよび第2のプロセッサのいずれかが発行するステップと、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したときに前記同期信号を生成するステップと、
    を含むことを特徴とする方法。
  40. 請求項39に記載の方法であって、前記外部機器は前記第2のプロセッサに対し、前記データ転送を起動したことを示す割り込み信号を発行することを特徴とする方法。
  41. 請求項40に記載の方法であって、前記データ転送が起動したことを示す通知信号を、前記第2のプロセッサから前記第1のプロセッサへ発行するステップをさらに含むことを特徴とする方法。
  42. 共有メモリと通信を行うことができる複数の並列プロセッサのうち第1のプロセッサにおいて1つ以上のプログラムを実行するために前記第1のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送をそれぞれ起動する複数の要求を、1つ以上の起動デバイスから受け付けるステップと、
    前記ローカルメモリへ、または前記ローカルメモリからの、少なくともあるグループのデータ転送が完了したことを示す同期信号を生成するステップと、
    を含むことを特徴とする方法。
  43. 共有メモリと通信を行うことができる複数の並列プロセッサのうち第1のプロセッサにおいて1つ以上のプログラムを実行するために前記第1のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する起動デバイスからの要求を受け付ける機能と、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送を遂行する機能と、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したことを示す同期信号を生成する機能と、
    をプロセッサに実現させることを特徴とするコンピュータプログラム。
  44. 共有メモリと通信を行うことができる複数の並列プロセッサのうち第1のプロセッサにおいて1つ以上のプログラムを実行するために前記第1のプロセッサと連動するローカルメモリへの、または前記ローカルメモリからの、データ転送を起動する、前記並列プロセッサと通信ネットワークを介して通信している外部機器からの要求を受け付ける機能と、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が起動したことを示す通知信号を、前記第1のプロセッサおよび、前記複数の並列プロセッサのうち第2のプロセッサ、のいずれかが、前記外部機器から受信する機能と、
    前記第1のプロセッサおよび第2のプロセッサのいずれかが、前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了した通知を受け取るために、同期信号を求める同期再生要求を、前記第1のプロセッサおよび第2のプロセッサのいずれかが発行する機能と、
    前記ローカルメモリへ、または前記ローカルメモリからのデータ転送が完了したときに前記同期信号を生成する機能と、
    をプロセッサに実現させることを特徴とするコンピュータプログラム。
  45. 請求項43または44に記載のコンピュータプログラムを格納した、コンピュータにて読み取り可能な記録媒体。
JP2006029780A 2005-02-08 2006-02-07 マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 Active JP4322259B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/053,689 US7613886B2 (en) 2005-02-08 2005-02-08 Methods and apparatus for synchronizing data access to a local memory in a multi-processor system

Publications (2)

Publication Number Publication Date
JP2006221645A true JP2006221645A (ja) 2006-08-24
JP4322259B2 JP4322259B2 (ja) 2009-08-26

Family

ID=36781248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006029780A Active JP4322259B2 (ja) 2005-02-08 2006-02-07 マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置

Country Status (4)

Country Link
US (1) US7613886B2 (ja)
EP (1) EP1854016B1 (ja)
JP (1) JP4322259B2 (ja)
WO (1) WO2006085665A2 (ja)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
JP4322232B2 (ja) * 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US9867530B2 (en) 2006-08-14 2018-01-16 Volcano Corporation Telescopic side port catheter device with imaging system and method for accessing side branch occlusions
US7552269B2 (en) * 2007-01-11 2009-06-23 International Business Machines Corporation Synchronizing a plurality of processors
US9596993B2 (en) 2007-07-12 2017-03-21 Volcano Corporation Automatic calibration systems and methods of use
US10219780B2 (en) 2007-07-12 2019-03-05 Volcano Corporation OCT-IVUS catheter for concurrent luminal imaging
JP5524835B2 (ja) 2007-07-12 2014-06-18 ヴォルカノ コーポレイション 生体内撮像用カテーテル
US9347765B2 (en) * 2007-10-05 2016-05-24 Volcano Corporation Real time SD-OCT with distributed acquisition and processing
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8555292B2 (en) * 2008-06-27 2013-10-08 Microsoft Corporation Synchronizing communication over shared memory
JP5501110B2 (ja) * 2010-06-16 2014-05-21 矢崎総業株式会社 画像表示装置
US11141063B2 (en) 2010-12-23 2021-10-12 Philips Image Guided Therapy Corporation Integrated system architectures and methods of use
US11040140B2 (en) 2010-12-31 2021-06-22 Philips Image Guided Therapy Corporation Deep vein thrombosis therapeutic methods
US9886455B1 (en) * 2011-02-16 2018-02-06 Lattice Engines, Inc. Digital data processing systems and methods for searching across user accounts
WO2012112234A1 (en) 2011-02-16 2012-08-23 Lattice Engines, Inc. Digital data processing systems and methods for searching and communicating via a social network
WO2013033592A1 (en) 2011-08-31 2013-03-07 Volcano Corporation Optical-electrical rotary joint and methods of use
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US10568586B2 (en) 2012-10-05 2020-02-25 Volcano Corporation Systems for indicating parameters in an imaging data set and methods of use
US9858668B2 (en) 2012-10-05 2018-01-02 Volcano Corporation Guidewire artifact removal in images
US9307926B2 (en) 2012-10-05 2016-04-12 Volcano Corporation Automatic stent detection
US9286673B2 (en) 2012-10-05 2016-03-15 Volcano Corporation Systems for correcting distortions in a medical image and methods of use thereof
EP2904671B1 (en) 2012-10-05 2022-05-04 David Welford Systems and methods for amplifying light
US9292918B2 (en) 2012-10-05 2016-03-22 Volcano Corporation Methods and systems for transforming luminal images
US10070827B2 (en) 2012-10-05 2018-09-11 Volcano Corporation Automatic image playback
US9367965B2 (en) 2012-10-05 2016-06-14 Volcano Corporation Systems and methods for generating images of tissue
US11272845B2 (en) 2012-10-05 2022-03-15 Philips Image Guided Therapy Corporation System and method for instant and automatic border detection
US9324141B2 (en) 2012-10-05 2016-04-26 Volcano Corporation Removal of A-scan streaking artifact
US9840734B2 (en) 2012-10-22 2017-12-12 Raindance Technologies, Inc. Methods for analyzing DNA
WO2014093374A1 (en) 2012-12-13 2014-06-19 Volcano Corporation Devices, systems, and methods for targeted cannulation
US10939826B2 (en) 2012-12-20 2021-03-09 Philips Image Guided Therapy Corporation Aspirating and removing biological material
WO2014113188A2 (en) 2012-12-20 2014-07-24 Jeremy Stigall Locating intravascular images
US10942022B2 (en) 2012-12-20 2021-03-09 Philips Image Guided Therapy Corporation Manual calibration of imaging system
CA2895989A1 (en) 2012-12-20 2014-07-10 Nathaniel J. Kemp Optical coherence tomography system that is reconfigurable between different imaging modes
JP6785554B2 (ja) 2012-12-20 2020-11-18 ボルケーノ コーポレイション 平滑遷移カテーテル
US11406498B2 (en) 2012-12-20 2022-08-09 Philips Image Guided Therapy Corporation Implant delivery system and implants
US9612105B2 (en) 2012-12-21 2017-04-04 Volcano Corporation Polarization sensitive optical coherence tomography system
EP2936241B1 (en) 2012-12-21 2020-10-21 Nathaniel J. Kemp Power-efficient optical buffering using a polarisation-maintaining active optical switch
WO2014100606A1 (en) 2012-12-21 2014-06-26 Meyer, Douglas Rotational ultrasound imaging catheter with extended catheter body telescope
US10058284B2 (en) 2012-12-21 2018-08-28 Volcano Corporation Simultaneous imaging, monitoring, and therapy
CA2895990A1 (en) 2012-12-21 2014-06-26 Jerome MAI Ultrasound imaging with variable line density
EP2936626A4 (en) 2012-12-21 2016-08-17 David Welford SYSTEMS AND METHODS FOR REDUCING LIGHT WAVE LENGTH TRANSMISSION
US10413317B2 (en) 2012-12-21 2019-09-17 Volcano Corporation System and method for catheter steering and operation
CA2895940A1 (en) 2012-12-21 2014-06-26 Andrew Hancock System and method for multipath processing of image signals
US9486143B2 (en) 2012-12-21 2016-11-08 Volcano Corporation Intravascular forward imaging device
US10332228B2 (en) 2012-12-21 2019-06-25 Volcano Corporation System and method for graphical processing of medical data
US10226597B2 (en) 2013-03-07 2019-03-12 Volcano Corporation Guidewire with centering mechanism
EP2965263B1 (en) 2013-03-07 2022-07-20 Bernhard Sturm Multimodal segmentation in intravascular images
US11154313B2 (en) 2013-03-12 2021-10-26 The Volcano Corporation Vibrating guidewire torquer and methods of use
EP2967391A4 (en) 2013-03-12 2016-11-02 Donna Collins SYSTEMS AND METHODS FOR DIAGNOSING CORONARY MICROVASCULAR DISEASE
JP6339170B2 (ja) 2013-03-13 2018-06-06 ジンヒョン パーク 回転式血管内超音波装置から画像を生成するためのシステム及び方法
US11026591B2 (en) 2013-03-13 2021-06-08 Philips Image Guided Therapy Corporation Intravascular pressure sensor calibration
US9301687B2 (en) 2013-03-13 2016-04-05 Volcano Corporation System and method for OCT depth calibration
US10292677B2 (en) 2013-03-14 2019-05-21 Volcano Corporation Endoluminal filter having enhanced echogenic properties
EP2967606B1 (en) 2013-03-14 2018-05-16 Volcano Corporation Filters with echogenic characteristics
US10219887B2 (en) 2013-03-14 2019-03-05 Volcano Corporation Filters with echogenic characteristics
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9606921B2 (en) 2013-09-21 2017-03-28 Oracle International Corporation Granular creation and refresh of columnar data
US10331583B2 (en) * 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
JP2017037505A (ja) * 2015-08-11 2017-02-16 ルネサスエレクトロニクス株式会社 半導体装置
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10061714B2 (en) * 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
WO2019222748A1 (en) * 2018-05-18 2019-11-21 Rigetti & Co, Inc. Computing platform with heterogenous quantum processors
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
WO2020047337A1 (en) * 2018-08-29 2020-03-05 Qualcomm Incorporated Method, apparatus, and system for an architecture for machine learning acceleration
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11231881B2 (en) * 2020-04-02 2022-01-25 Dell Products L.P. Raid data storage device multi-step command coordination system
US12086080B2 (en) 2020-09-26 2024-09-10 Intel Corporation Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US11966745B2 (en) 2021-11-15 2024-04-23 Google Llc Sparse SIMD cross-lane processing unit
US20230153116A1 (en) * 2021-11-15 2023-05-18 Google Llc Programmable Accelerator for Data-Dependent, Irregular Operations
US11972263B2 (en) 2021-11-22 2024-04-30 Google Llc Cooperative instruction prefetch on multicore system
US11977499B2 (en) * 2022-03-22 2024-05-07 Google Llc Streaming transfers and ordering model
US11785087B1 (en) * 2022-10-31 2023-10-10 Mellanox Technologies, Ltd. Remote direct memory access operations with integrated data arrival indication
US20240143539A1 (en) * 2022-10-31 2024-05-02 Mellanox Technologies, Ltd. Remote direct memory access operations with integrated data arrival indication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4891751A (en) * 1987-03-27 1990-01-02 Floating Point Systems, Inc. Massively parallel vector processing computer
JPH07134698A (ja) 1993-11-09 1995-05-23 Nippon Telegr & Teleph Corp <Ntt> メッセージ同期化装置
US6289434B1 (en) * 1997-02-28 2001-09-11 Cognigine Corporation Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates
US5748539A (en) * 1997-03-05 1998-05-05 Sun Microsystems, Inc. Recursive multi-channel interface
JPH11120156A (ja) * 1997-10-17 1999-04-30 Nec Corp マルチプロセッサシステムにおけるデータ通信方式
US6038646A (en) * 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6601138B2 (en) * 1998-06-05 2003-07-29 International Business Machines Corporation Apparatus system and method for N-way RAID controller having improved performance and fault tolerance
US6247101B1 (en) * 1998-07-01 2001-06-12 Lsi Logic Corporation Tagged access synchronous bus architecture
JP2002163239A (ja) 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6826662B2 (en) * 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP2004078683A (ja) * 2002-08-20 2004-03-11 Toshiba Corp コンピュータシステムおよび共有メモリ制御方法

Also Published As

Publication number Publication date
JP4322259B2 (ja) 2009-08-26
US20060179255A1 (en) 2006-08-10
EP1854016B1 (en) 2020-04-15
EP1854016A2 (en) 2007-11-14
US7613886B2 (en) 2009-11-03
WO2006085665A2 (en) 2006-08-17
WO2006085665A3 (en) 2008-05-22

Similar Documents

Publication Publication Date Title
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
JP3802042B2 (ja) キャッシュメモリ実装方法および装置、キャッシュメモリシステム
JP4386373B2 (ja) ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置
JP4645973B2 (ja) 命令セットのエミュレーションのための方法、装置及びシステム
JP4219369B2 (ja) プロセッサシステム内においてスタックを分離して管理する方法および装置
JP2009503624A (ja) アドレス空間の仮想化のための方法および装置
JP4346612B2 (ja) 情報処理方法および装置
JP2009508179A (ja) ソフトウェアとハードウエアで同時にキャッシュフィルする方法と装置
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
JP2006221638A (ja) タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置
KR100881810B1 (ko) 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구
JP2006260556A (ja) ラッチポイントを制御することにより、演算処理能力を改善する方法、装置ならびにシステム
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
JP4024271B2 (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置
JP4583327B2 (ja) 分散型のマルチプロセッサシステム内において一貫性管理を行う方法、システムおよび装置
JP2006260555A (ja) 命令の従属関係検査の深度を利用して処理能力の改善するための方法および装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090507

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090602

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090602

R150 Certificate of patent or registration of utility model

Ref document number: 4322259

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120612

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120612

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130612

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250