JP4805341B2 - アドレス空間の仮想化のための方法および装置 - Google Patents

アドレス空間の仮想化のための方法および装置 Download PDF

Info

Publication number
JP4805341B2
JP4805341B2 JP2008504560A JP2008504560A JP4805341B2 JP 4805341 B2 JP4805341 B2 JP 4805341B2 JP 2008504560 A JP2008504560 A JP 2008504560A JP 2008504560 A JP2008504560 A JP 2008504560A JP 4805341 B2 JP4805341 B2 JP 4805341B2
Authority
JP
Japan
Prior art keywords
processor
memory
multiprocessor system
address
data
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.)
Active
Application number
JP2008504560A
Other languages
English (en)
Other versions
JP2009503624A (ja
Inventor
雅一 鈴置
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 Interactive Entertainment Inc
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 Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of JP2009503624A publication Critical patent/JP2009503624A/ja
Application granted granted Critical
Publication of JP4805341B2 publication Critical patent/JP4805341B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)

Description

本発明は、マルチプロセッシングシステム内でデータを転送するための方法および装置に関する。
最先端のコンピュータアプリケーションには、リアルタイムのマルチメディア機能が伴うため、近年、コンピュータ処理のデータスループットの向上が常に望まれている。グラフィックアプリケーションは処理システムへの要求が最も大きいアプリケーションの1つであり、その理由は、グラフィックアプリケーションが所望の視覚的効果を得るために、比較的短い時間に膨大なデータアクセス、データの演算処理、およびデータの操作を要求するからである。これらのアプリケーションは、1秒間に何千メガビットものデータ処理等の非常に高速な処理速度を要求する。シングルプロセッサを採用して、高速の処理速度を実現している処理システムもあるが、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、所望の処理結果を得るために、複数のプロセッサが並列に(あるいは少なくとも協調して)動作することができる。
マルチプロセッシングシステムのなかには、各プロセッサが、プログラムコードを実行するための(容量の大きなランダムアクセスメモリ(RAM)ではなく)比較的小さなローカルメモリを使用するものもある。容量の大きなRAM(メインメモリまたはシステムメモリ)は、大容量記憶に使用されうる。また、プロセッサは、ダイレクトメモリアクセス(DMA)技術を使用して、メインメモリからそれぞれのローカルメモリにデータを転送することができる。
マルチプロセッサシステムにおいては、複数のプロセッサが、非常に広い空間(リモートに存在するが、ネットワークを介して利用可能な他のマルチプロセッサシステム内など)にあるデータにアクセスすることが望ましいことがある。リモートに存在するシステム間でのデータ転送に関連するレーテンシは予測不可能のことがあるため、マルチプロセッサシステムでメモリ空間を管理するための先行技術による手法は、この点に関しては満足のいくものではない。
本発明の各種態様は、マルチプロセッサ環境内のプロセッサに、広範なメモリ空間へのアクセスを提供することを考察するものである。好ましくは、データがメモリ空間のどこに存在していても、データの要求元のプロセッサが、DMAコマンドを発行するだけでデータを取得できるように、専用プロセッサが、アドレス変換、データのクエリー即ちデータ問い合わせなどを担当する。
例えば、プロセッサが、ネットワーク(インターネットなど)上でリモートに存在するマルチプロセッサシステムにあるデータを要求すると、好ましくは、以下のアクションが実行される。
(i)データの要求元のプロセッサがDMAコマンドを発行し、これによって、専用プロセッサへのページフォルト割込が発生する。
(ii)専用プロセッサはデータのアドレスを検査して、当該データがメモリ空間内にあるかどうかを決定する(DMAプロセスが終了していない場合)。
(iii)専用プロセッサが、(DMAコマンドアドレスに対応する)IPアドレスに対する要求を管理サーバに送信する。
(iv)管理サーバは、IPアドレスとメモリ空間のアドレス間を対応付けているテーブルにアクセスして、専用プロセッサにIPアドレスを返す。
(v)専用プロセッサは、このIPアドレスに(リモートのマルチプロセッサシステムに)、DMAコマンドを送信する。
(vi)リモートマルチプロセッサシステムは、DMA要求に対応し、要求元のプロセッサのメインメモリにデータを返す。
(vii)専用プロセッサは、元のDMA要求に対する対応を支援する。
本発明の1つ以上の実施形態によれば、方法ならびに装置は、マルチプロセッサシステムの開始プロセッサから、データに対するメモリアクセス要求を受信し、前記メモリアクセス要求の前記データが、通信ネットワークを介して前記マルチプロセッサシステムと結合されたリモート処理システムに記憶されているかどうかを決定するようになっている。前記方法および装置は、更に、前記リモート処理システムから前記データを要求し、前記通信ネットワークを介して前記リモート処理システムから前記データを受信することを支援し、前記開始プロセッサに前記データを提供することを支援するようになっていてもよい。前記方法および装置は、更に、前記リモート処理システムのネットワークアドレスを取得して、前記リモート処理システムの前記ネットワークアドレスに、前記データに対する仲介メモリアクセス要求を送信するようになっていてもよい。
1つ以上の実施形態によれば、前記方法および装置は、更に、前記リモート処理システムのネットワークアドレスに対する要求を、前記通信ネットワークを介して管理サーバに送信して、前記管理サーバから前記ネットワークアドレスを受信するようになっていてもよい。1つ以上の実施形態によれば、前記方法および装置は、更に、1つ以上のリモート処理システムの1つ以上のネットワークアドレスをメモリアドレスの1つ以上の範囲と関連付けているネットワークアドレステーブルにアクセスして、前記メモリアクセス要求の前記データと関連付けられている前記ネットワークアドレスの1つ以上を選択するようになっていてもよい。
1つ以上の実施形態によれば、前記方法および装置は、更に、前記仲介メモリアクセス要求を生成するために、前記マルチプロセッシングシステムのネットワークアドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求する、前記要求されたデータに関連する仮想アドレスに関連する前記リモート処理システムの1つ以上の物理アドレスを取得する、前記仲介メモリアクセス要求を生成するために、前記リモート処理システムの前記1つ以上の物理アドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求する、の少なくとも1つを行うようになっていてもよい。
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、特徴および利点等は当業者に自明となるであろう。
本発明の各種態様を説明するために、現時点での好ましい形態を図面の形式で示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
図面において、同一の要素は同じ参照符号によって参照される。図1に、本発明の1つ以上の特徴を実行するために適合されうる処理システム10を例示する。簡潔を期すと共に明確になるように、図1〜2のブロック図は装置の説明として本明細書において参照かつ記載される。しかし、この記載は同等の効力を有する方法のさまざまな態様に容易に適用できることを理解されたい。
処理システム10は、複数のマルチプロセッシングシステム100A,100B,…,100N、管理サーバ152、およびこれらの要素を相互接続している通信ネットワーク150を有する。マルチプロセッサシステム100については、本明細書において、図2を参照して更に詳細に後述する。通信ネットワーク150は、マルチプロセッサ100、管理サーバ152、および他の任意の要素(図示せず)を相互接続する公知の技術であれば、どのようなものでも使用することができる。例えば、通信ネットワーク150は、インターネットなどの広域ネットワークであってもよい。
図2は、ここに記載した特徴および発明の1つ以上の更に別の実施形態を実装するのに適合されうるマルチプロセシングシステム100のブロック図である。システム100は、複数のプロセッサ102A〜D、関連するローカルメモリ104A〜D、および共有メモリ106を備え、これらはバス108によって相互に接続されている。共有メモリ106は、本明細書において、メインメモリまたはシステムメモリとも呼ばれることがある。例示のため4つのプロセッサ102を示したが、本発明の趣旨および範囲から逸脱することなく、任意の個数のプロセッサを使用することができる。各プロセッサ102は構成が同じであっても、構成が異っていてもよい。
プロセッサ102は、システムメモリ106からデータを要求し、このデータを操作して所望の結果を得ることができる公知の技術であればいずれを利用しても実装することができる。例えば、プロセッサ102は、通常のマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェアおよび/またはファームウェアを実行することができる公知のマイクロプロセッサのいずれかを利用して実装することができる。例えば、プロセッサ102のうちの1つ以上は、グレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報等を含むピクセルデータなどのデータを要求して操作することができるグラフィックプロセッサであり得る。
ローカルメモリ104は、好ましくは、対応するプロセッサ102と同じチップ(同じ半導体基板)に配置される。しかし、ローカルメモリ104は、ハードウェアキャッシュメモリ機能を実装するためのオンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないという点で、好ましくは従来のハードウェアキャッシュメモリでない。チップ上のスペースには限りがある場合があるため、ローカルメモリ104はシステムメモリ106よりも相当サイズが小さいことがある。
プロセッサ102は、好ましくは、プログラムを実行したりデータを操作するために、バス108経由でシステムメモリ106から対応するローカルメモリ104にデータ(プログラムデータを含みうる)をコピーするため、データアクセス要求を出す。データアクセスを容易にするためのメカニズムは、好ましくは図示しないダイレクトメモリアクセスコントローラ(DMAC)を利用して実装され、これは、プロセッサ102からみてその内部に設けられても、外部に設けられてもよい。
システムメモリ106は、好ましくは高帯域メモリ接続(図示せず)を介してプロセッサ102に結合されたダイナミックランダムアクセスメモリ(DRAM)である。好ましくは、システムメモリ106はDRAMであるが、メモリ106は例えば、スタティックランダムアクセスメモリ(SRAM: Static Random Access Memory)、磁気ランダムアクセスメモリ(MRAM: Magnetic Random Access Memory)、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
各プロセッサ102は、好ましくは、論理命令がパイプライン方式で処理される、処理パイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは1つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、および命令の実行ステップを有している。これに関連して、プロセッサ102は命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを有する。
1つ以上の実施形態では、プロセッサ102とローカルメモリ104は共通の半導体基板に配置されうる。1つ以上の更に別の実施形態では、共有メモリ106も共通の半導体基板に配置されていても、別個に配置されていてもよい。
1つ以上の別の実施形態では、プロセッサ102の1つ以上が、メインプロセッサとして動作し、他のプロセッサに動作可能に結合されており、バス108経由で共有メモリ106に結合可能でありうる。メインプロセッサは、他のプロセッサ102によるデータの処理をスケジューリングし調整を行う。しかし、他のプロセッサ102と異なり、メインプロセッサは、共有メモリ106とプロセッサ102の1つ以上のローカルメモリ104との少なくとも一方から取得したデータをキャッシュすることができるハードウェアキャッシュメモリに結合されてもよい。メインプロセッサは、プログラムを実行したりデータを操作するために、DMA法などの公知の技術のいずれかを使用して、バス108経由でシステムメモリ106からキャッシュメモリにデータ(プログラムデータを含みうる)をコピーするため、データアクセス要求を出す。
本発明の1つ以上の態様によれば、マルチプロセッサシステム100は、好ましくは、自身の関連するメモリのほかに、ネットワーク150を介して結合された他のマルチプロセッサシステム100のメモリを利用して、プログラムを実行したりデータを操作するように動作可能である。このため、例えば、マルチプロセッサ100Aは、好ましくは、マルチプロセッサ100Dに関連するメモリにあるデータを要求して、ネットワーク150を介してこれを受け取ることによって、このデータを要求するように動作可能である。この意味では、マルチプロセッサ100Aのメモリ空間には、その関連するメモリ(ローカルメモリ104A、他のローカルメモリ104、共有メモリ106など)と、他のマルチプロセッサ100B,100C,100D等に関連する1つ以上のメモリが含まれる。この特徴については、本明細書において更に詳細に後述する。
図1〜3を参照すると、システム100Aのプロセッサ120の1つ(プロセッサ120Aなど)が、別のマルチプロセッサシステム100のプロセッサ(マルチプロセッサ100Dなど)に記憶されているデータを要求しうる。より詳細には、プロセッサコア102Aが、マルチプロセッサシステム100Dの共有メモリ106に記憶されているデータにアクセスしうる。この意味では、プロセッサコア102Aに関連するメモリ空間には、プロセッサ102Aに関連するローカルメモリ104A、マルチプロセッサシステム100Aの共有メモリ106、およびマルチプロセッサシステム100Dの共有メモリ106の一部またはその全てが含まれる。
本発明の1つ以上の実施形態によれば、かつ上の例に合わせれば、プロセッサコア102Aは、好ましくは、そのメモリ空間の特定の仮想アドレスにあるデータに対するモリアクセス要求を生成するように動作可能である。ここで、メモリアクセス要求は、所定の範囲の仮想メモリアドレスを対象としていてもよいが、説明を簡単にするために、このようなアドレスが1つしかないものとする点に留意されたい。好ましい実施形態では、メモリアクセス要求は、プロセッサ102Aのローカルメモリ104Aに記憶させるデータのブロックを指定するDMA要求である(アクション202)。別のプロセッサ102(プロセッサ102Dなど)が、好ましくは管理プロセッサの役割を担う。管理プロセッサ102Dは、プロセッサコア102Aによるメモリアクセス要求を受けて、好ましくは、メモリアクセス要求のデータが、参加しているリモート処理システム(マルチプロセッサ100Dなど)に記憶されているかどうかを決定する。
好ましい実施形態では、DMA要求(メモリアクセス要求)は、最初は、DMAハンドラに対して発行される。メモリアクセス要求が、マルチプロセッサ100Aの共有メモリ106に記憶されているデータに対するものである場合、DMAハンドラは、好ましくは、管理プロセッサ102Dの介入なしに、このようなデータの転送を支援する。メモリアクセス要求に関連する仮想アドレスが所定の範囲から外れている(ネットワーク150を介して関連するデータを転送する必要がある)場合には、DMAハンドラは、好ましくはページフォルト割込み要求を発行する。ページフォルト割込み要求は、好ましくは、管理プロセッサ102Dに、メモリアクセス要求に対するアクションを開始させる。
最初に、管理プロセッサ102Dは、好ましくは、仮想アドレスが適切であるか(例えば、リモートメモリ位置にマップされてはいるが、許容される範囲内にあるなど)、あるいは仮想メモリが正しくないか(例えば、許容される範囲から外れているなど)かを決定する。例えば、許可されるアドレス範囲には、参加している任意のマルチプロセッサシステム100(例えばマルチプロセッサ100B,100C,100Dなど)に関連するアドレスが含まれる。仮想アドレスが許容される範囲から外れている場合、管理プロセッサ102Dは、好ましくはメモリアクセス要求を終了する。しかし、仮想アドレスが許容される範囲内にある場合、管理プロセッサ102Dは、好ましくは、データに対する要求と、マルチプロセッサシステム100Dからのデータの転送を支援する。
管理プロセッサ102Dは、要求されたデータがリモートのマルチプロセッサシステム100に記憶されていると決定すると、好ましくは、そのリモート処理システムのネットワークアドレスに対する要求を、通信ネットワーク150を介して管理サーバ152に送信する(アクション204)。ネットワークアドレスに対する要求には、プロセッサコア102Aによって発行されたメモリアクセス要求内で指定されていた仮想アドレスが含まれうる。管理サーバ152は、好ましくは管理プロセッサ102Dからネットワークアドレス要求を受け取って、要求されたデータが記憶されているマルチプロセッサシステム100のネットワークアドレス(マルチプロセッサ100Dのネットワークアドレスなど)を返す(アクション206)。
図4を参照すると、本発明の別の実施形態では、ネットワーク150を介して結合された複数の管理サーバ152が含まれていてもよい。このような実施形態では、管理プロセッサ102Dは、好ましくは、複数の管理サーバを、対応する1つ以上の条件と関連付けているサーバテーブル160にアクセスする。このような条件には、マルチプロセッサシステム100Aおよび/または管理サーバ自体の地理的位置および/またはネットワーク位置が含まれうる。また、この条件には、マルチプロセッサシステム100Aで実行されているアプリケーションプログラムによって定義されるパラメータ、仮想アドレスの範囲と程度などが含まれていてもよい。
図5を参照すると、本発明の好ましい実施形態によれば、管理サーバ152は、好ましくは、数多くのネットワークアドレスを、それぞれのメモリアドレス範囲と関連付けているネットワークアドレステーブル162を維持している。例えば、ネットワークアドレス0がメモリアドレス範囲0に関連付けられ、ネットワークアドレス1がメモリアドレス範囲1に関連付けられ、ネットワークアドレス2がメモリアドレス範囲2に関連付けられ…、という具合に続いていく。メモリアドレス範囲は、好ましくは、管理サーバ152と、参加しているマルチプロセッサシステム100との間で実行される登録プロセスに従って決定される(アクション200)。例えば、マルチプロセッサシステム100Dは既に登録プロセスを行っており、その際、マルチプロセッサ100Dは、メモリアドレス範囲2が、そのネットワークアドレス2と関連付けられていることを特定している。これを受けて、管理サーバ152は、好ましくは、ネットワークアドレステーブル162に、ネットワークアドレス2をメモリアドレス範囲2に関連付けるエントリを維持し、これによりマルチプロセッサ100Dを登録している。
管理プロセッサ102Dから管理サーバ152に対してネットワークアドレス要求が発行されると(アクション204)、管理サーバ152は、好ましくは、ネットワークアドレステーブル162にアクセスし、仮想アドレスをメモリアドレス範囲と比較する。仮想アドレスが特定のメモリアドレス範囲(メモリアドレス範囲2など)にマップされている場合、管理サーバ152は、好ましくは、関連するネットワークアドレス(ネットワークアドレス2など)を選択する。その後、管理サーバ152は、好ましくは、ネットワーク150を介して管理プロセッサ102Dにネットワークアドレス2を返す。管理サーバ152から管理プロセッサ102Dへの応答には、ネットワークアドレスのほか、要求されたデータの仮想アドレスに関連する物理アドレス(またはアドレス範囲)が含まれうる点に留意されたい。つまり、管理サーバ152は、プロセッサコア102Aによって要求された元のメモリアクセス要求の仮想アドレスを、マルチプロセッサシステム100Dの共有メモリ106の物理アドレスに変換するメモリ変換機能を提供することができる。
次に、管理プロセッサ102Dは、好ましくは、管理サーバ152によって提供されたネットワークアドレスを利用して、マルチプロセッサ100Dに、データに対する仲介メモリ(intermediate memory)要求を送信する(アクション208)。好ましい実施形態では、仲介メモリアクセス要求には、マルチプロセッサシステム100Aのネットワークアドレスと、要求されたデータが記憶されているマルチプロセッサシステム100Dの物理アドレス(またはアドレス範囲)のうちの少なくとも1つが含まれる。好ましい実施形態では、仲介メモリアクセス要求は、マルチプロセッサシステム100Dの共有メモリ106からマルチプロセッサシステム100Aへ、ブロックデータの転送を要求するDMA要求である。
管理プロセッサは、好ましくは、マルチプロセッサ100Aの共有メモリ106内に、ネットワーク150を介してマルチプロセッサ100Dから転送されたデータを受け入れるための空間を予約する。
アクション210において、マルチプロセッサシステム100Dは、好ましくは、通信ネットワーク150を介してデータ転送を行い、マルチプロセッサシステム100Aの共有メモリ106への要求されたデータの転送を支援することによって、仲介メモリアクセス要求に対応する。
本発明の1つ以上の別の実施形態によれば、管理プロセッサ102Dは、ネットワークアドレステーブル162、および/またはマルチプロセッサ100A内のその複製(facsimile)の一部またはその全体にアクセスすることができる。この場合、管理プロセッサ102Dは、マルチプロセッサ100Dのネットワークアドレスを取得するために、管理サーバ152とハンドシェークを行う必要がない(アクション204、206)。ネットワークアドレステーブル162へのアクセスは、数多くの方法で取得することができ、これには、管理サーバ152からマルチプロセッサ100Aにデータをダウンロードする方法、管理プロセッサ102Dが、ネットワークアドレステーブル162を作成するために十分な分の、ネットワークアドレスに対する要求と、それに対する応答の履歴を記憶する学習プロセスなどがある。
データが、マルチプロセッサシステム100Dからマルチプロセッサシステム100Aに転送されると、管理プロセッサ102Dは、好ましくは、このデータの、共有メモリ106からプロセッサ102Aのローカルメモリ104Aへの転送を支援する(アクション212)。特に、プロセッサ102Aからみると、リモートに記憶されているデータに対するメモリアクセス要求が、マルチプロセッサ100A自体の記憶メモリ106内に記憶されているデータとは異なる方法によって開始も対応もされなかったという点に留意されたい。このため、プロセッサ102Aは、ハンドシェークを作製および実行し、ネットワーク150を介したマルチプロセッサ100Dからマルチプロセッサ100Aへのデータ転送を支援するために必要なインタフェースを行うことに関連する負荷を過度に負うことなく、効率的に、プログラムコードを実行して、データを操作することができる。その代わり、このような活動に関連する処理の負荷は、管理プロセッサ102Dが担う。好ましい実施形態では、管理プロセッサ102Dは、マルチプロセッサ100Aに参加している全てのプロセッサに関してこのような負荷を負う。同様に、管理プロセッサ102Dは、好ましくは、マルチプロセッサ100Aからデータを取得しようとしている他のマルチプロセッサ100によって行われる、マルチプロセッサ100Aへのデータ要求の全てを支援する。
以下に本明細書で説明している1つ以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。1つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、PCシステム、サーバシステム、およびワークステーションなどのメディアを多用したアプリケーションを、スタンドアロン処理、および/または分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのアプリケーションのなかには、リアルタイムの演算処理が必須なものがある。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、1つ以上のネットワーク化された画像の復元、三次元コンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、および人工知能処理が実行される必要がある。したがって、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
このために、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール(あるいはセル)から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、1つ以上のクライアント、サーバ、PC、モバイルコンピュータ、ゲームマシン、PDA、セットトップボックス、電気器具、デジタルテレビ、およびコンピュータプロセッサを使用する他のデバイスから形成されうる。
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫したモジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーションおよびデータの効率的な高速処理が可能になる。またネットワークが採用される場合は、ネットワークを介したアプリケーションおよびデータの高速送信が可能となる。また、この構造は、サイズや処理能力が様々に異なるネットワークのメンバーの構築を簡略にし、これらのメンバーが処理するアプリケーションの準備を簡略にする。
図6を参照すると、基本的な処理モジュールはプロセッサエレメント(PE)500である。PE500はI/Oインタフェース502、プロセッシングユニット(PU)504、および複数のサブプロセッシングユニット508、すなわち、サブプロセッシングユニット508A、サブプロセッシングユニット508B、サブプロセッシングユニット508C、およびサブプロセッシングユニット508Dを備えている。なお、好適には、PUとしてパワーPC(PPE: Power PC Element)を、SPUとしてシナジスティックプロセッシングエレメント(SPE: Synergistic Processing Element)を用いる。ローカル(あるいは内部)PEバス512は、データおよびアプリケーションを、PU504、サブプロセッシングユニット508、およびメモリインタフェース511間に送信する。ローカルPEバス512は、例えば従来のアーキテクチャを備えることができ、または、パケット−スイッチネットワークとして実装されうる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるものの、利用可能な帯域幅を増やす。
PE500はデジタル論理回路を実装するために様々な方法を用いて構成されうる。しかし、好ましくは、PE500はSOI基板を用いた集積回路として構成でき、あるいは、シリコン基板に相補性金属酸化膜半導体(CMOS:Complementary Metal Oxide Semiconductor)を用いた単一の集積回路とすることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミ二ウムヒ素、および、様々なドーパントを採用している他の、いわゆる、III−B化合物を含む。また、PE500は、高速単一磁束量子(RSFQ:Rapid Single-flux-Quantum)論理回路などの超電導デバイスを用いて実装されうる。
PE500は高帯域のメモリ接続516を介して、共有(メイン)メモリ514と密接に結合するよう構成できる。なお、メモリ514をオンチップ化してもよい。好ましくは、メモリ514はダイナミックランダムアクセスメモリ(DRAM:Dynamic Random Access Memory)であるが、メモリ514は例えば、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、磁気ランダムアクセスメモリ(MRAM:Magnetic Random Access Memory)、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
PU504とサブプロセッシングユニット508は好ましくは、それぞれダイレクトメモリアクセス(DMA)の機能を備えたメモリフローコントローラ(MFC:Memory Flow Controller)と結合されており、当該コントローラはメモリインタフェース511と共に、PE500のDRAM514とサブプロセッシングユニット508、PU504間のデータ転送を支援する。DMACおよび/またはメモリインタフェース511は、サブプロセッシングユニット508およびPU504からみて、一体化されて配置されても、または別個に配置されてもよい。実際、DMACの機能および/またはメモリインタフェース511の機能は、1つ以上の(好ましくは全ての)サブプロセッシングユニット508およびPU504に統合することができる。また、DRAM514はPE500と統合されていても、別個に配置されていてもよいことに留意されたい。例えば、DRAM514は、図示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
PU504はデータおよびアプリケーションをスタンドアロン処理できる標準プロセッサなどでありうる。作動時、PU504は、好ましくは、サブプロセッシングユニットによるデータおよびアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニットは好ましくは、単一命令複数データ(SIMD:Single Instruction Multiple Data)プロセッサである。PU504の管理下、サブプロセッシングユニットは並列で、かつ独立して、これらのデータおよびアプリケーション処理を行う。PU504は好ましくは、RISC(Reduced Instruction Set Computing)技術を採用しているマイクロプロセッサアーキテクチャであるパワーPC(PowerPC)コアを用いて実装される。RISCは、単純な命令の組合せを用いて、より複雑な命令を実行する。したがって、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
PU504は、サブプロセッシングユニット508による、データおよびアプリケーションの処理をスケジューリングし調整を行う、メインプロセッシングユニットの役割を果たしている、サブプロセッシングユニット508のうちの1つのサブプロセッシングユニットにより実装されてもよい点に留意されたい。更に、プロセッサエレメント500内には1つ以上の実装されたPUが存在しうる。
本モジュール構造によれば、特定のコンピュータシステムが採用するPE500の数は、そのシステムが要求する処理能力に基づく。例えば、サーバにおけるPE500の数は4、ワークステーションにおけるPE500の数は2、PDAにおけるPE500の数は1とすることができる。特定のソフトウェアセルの処理に割当てられるPE500のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。
図7は、サブプロセッシングユニット(SPU)508の好ましい構造および機能を示す。SPU508アーキテクチャは好ましくは、多目的プロセッサ(平均して高性能を広範なアプリケーションに実現するように設計されているもの)と、特殊目的プロセッサ(高性能を単一のアプリケーションに実現するように設計されているもの)間の間隙を埋める。SPU508は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマに高度な制御を提供するように設計される。SPU508は、グラフィックジオメトリパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリーム処理、MPEGのエンコード/デコード、暗号化、復号化、デバイスドライバの拡張、モデリング、ゲームの物理学、コンテンツ制作、音響合成および処理が可能である。
サブプロセッシングユニット508は、SPUコア510Aおよびメモリフローコントローラ(MFC)510Bの2つの基本機能ユニットを有する。SPUコア510Aはプログラムの実行、データ操作などを行い、MFC510BはシステムのSPUコア510AとDRAM514の間のデータ転送に関連する機能を実施する。
SPUコア510Aはローカルメモリ550、命令ユニット(IU:Instruction Unit)552、レジスタ554、1つ以上の浮動小数点実行ステージ556、および1つ以上の固定小数点実行ステージ558を有している。ローカルメモリ550は好ましくは、SRAMなどの、シングルポートのランダムメモリアクセスを用いて実装される。ほとんどのプロセッサはキャッシュの採用により、メモリへのレイテンシを低減する一方、SPUコア510Aはキャッシュより小さいローカルメモリ550を実装している。更に、リアルタイムアプリケーション(および本明細書に述べているような他のアプリケーション)のプログラマに一貫した、予測可能なメモリアクセスのレイテンシを提供するためには、SPU508A内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット/ミスという特徴のために、数サイクルから数百サイクルまでの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましい、アクセス時間の予測可能性が低下する。DMA転送をデータの演算処理に重複させることで、ローカルメモリSRAM550においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。DMAの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスに対応するレイテンシのオーバーヘッドを超過していることから、DMAの転送サイズが十分に大きく、十分に予測可能な場合(例えば、データが必要とされる前にDMAコマンドが発行される場合)に、このSRAMのローカルメモリ手法による利点が得られる。
サブプロセッシングユニット508のうちの、所定の1つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ550を参照する。しかし、ローカルメモリ550のそれぞれの場所には、システムのメモリマップ全体内に実アドレス(RA:Real Address)も割当てられる。これにより、プリビレッジソフトウェア(Privilege Software)はローカルメモリ550をプロセスの有効アドレス(EA:Effective Address)にマッピングする、ローカルメモリ550と別のローカルメモリ550間のDMA転送を支援する。また、PU504は、有効アドレスを用いてローカルメモリ550に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ550は556キロバイトの記憶容量を有し、またレジスタ552の容量は128×128ビットである。
SPUコア504Aは、好ましくは、論理命令がパイプライン式で処理される、処理パイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは1つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、および、命令の実行ステップを有している。これに関連して、IU552は命令バッファ、命令デコード回路、依存性チェック回路、および命令発行回路を有する。
命令バッファは、好ましくは、ローカルメモリ550と結合され、フェッチされる際に一時的に命令を格納するよう動作できる、複数のレジスタを備えている。命令バッファは好ましくは、全ての命令が1つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファのサイズは任意のサイズであってもよいが、好ましくは、レジスタの2つあるいは3つ分を超えないサイズである。
一般に、デコード回路は命令を分解して、対応する命令の関数を実施する論理マイクロオペレーションを生成する。例えば、論理マイクロオペレーションは、算術論理演算、ローカルメモリ550へのロードおよびストアオペレーション、レジスタソースオペランド、および/または即値データオペランドを特定しうる。また、デコード回路は、ターゲットレジスタアドレス、構造リソース、機能ユニット、および/またはバスなど、命令がどのリソースを使用するかを示しうる。また、デコード回路は、リソースが要求される命令パイプラインステージを示す情報を与えることができる。命令デコード回路は好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために検査を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが(例えば、他の命令が実行を完了することを許可することにより)更新されるまで、実行すべきではない。依存性チェック回路は好ましくは、デコーダ回路112から同時に送られる複数の命令の依存性を判断する。
命令発行回路は浮動小数点実行ステージ556、および/または固定小数点実行ステージ558へ命令を発行するように動作することができる。
レジスタ554は好ましくは、128エントリのレジスタファイルなどの、比較的大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するためのレジスタリネーミングを必要としない、階層深くパイプライン化された高周波数での実装が可能になる。一般に、リネーミング用ハードウェアは、処理システムの面積と電力のかなりの割合を消費する。その結果、ソフトウェアのループ展開、または他のインターリーブ技術によりレイテンシがカバーされると、有利な処理が実現されうる。
好ましくは、SPUコア510Aはスーパースカラアーキテクチャであり、これにより1つ以上の命令がクロックサイクル毎に発行される。SPUコア510Aは好ましくは、命令バッファから同時に送られる命令の数、例えば2〜3命令(クロックサイクル毎に2命令あるいは3命令が発行される)に対応する程度までは、スーパースカラとして動作する。所望の処理能力に応じて、採用する浮動小数点実行ステージ556と固定小数点実行ステージ558の数が増減してもよい。好ましい実施形態では、浮動小数点実行ステージ556の演算速度は1秒あたり320億回の浮動小数点演算であり(32GFLOPS)、固定小数点実行ステージ558の演算速度は1秒あたり320億回の演算(32GOPS)である。
MFC510Bは、好ましくは、バスインタフェースユニット(BIU:Bus Interface Unit)564、メモリ管理ユニット(MMU:Memory Management Unit)562、およびダイレクトメモリアクセスコントローラ(DMAC:Direct Memory Access Controller)560を備えている。DMAC560は例外として、MFC510Bは好ましくは、低電力化設計とするため、SPUコア510Aやバス512と比べて半分の周波数(半分の速度)で動作する。MFC510Bはバス512からSPU508に入力されるデータや命令を処理するように動作することができ、DMACに対しアドレス変換を行い、データコヒーレンシーのためにスヌープオペレーションを提供する。BIU564はバス512とMMU562およびDMAC560間をインタフェースする。したがって、SPU508(SPUコア510AおよびMFC510Bを含む)およびDMAC560は、バス512と、物理的および/または論理的に接続されている。
MMU562は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、MMU562は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかし、下位のアドレスビットは好ましくは変換不能であり、実アドレスの生成およびメモリへのアクセス要求に使用する場合には、ともに論理的および物理的なものと考えられる。1つ以上の実施形態では、MMU562は、64ビットのメモリ管理モデルに基づいて実装され、また、4Kバイト、64Kバイト、1Mバイト、および16Mバイトのページサイズを有する264バイトの有効アドレススペースと、256MBのセグメントサイズを提供しうる。MMU562は好ましくは、DMAコマンドに対し、265バイトまでの仮想メモリ、242バイト(4テラバイト)までの物理メモリをサポートするように動作することができる。MMU562のハードウェアは、8エントリのフルアソシエイティブのSLBと、256エントリ、4ウエイのセットアソシアティブのTLBと、ハードウェアTLBのミスハンドリングに使用されるTLBの4×4リプレースメント管理テーブル(RMT:Replacement Management Table)とを含む。
DMAC560は、好ましくは、SPUコア510Aや、PU504、および/または他のSPUなどの、1つ以上の他のデバイスからのDMAコマンドを管理するように動作することができる。DMAコマンドには、プットコマンド、ゲットコマンド、およびストレージ制御コマンドの3つの分類が存在する。プットコマンドは、ローカルメモリ550から共有メモリ514へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ514からローカルメモリ550へデータを移動させるよう動作する。また、ストレージ制御コマンドには、SLIコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド(atomic command)、信号送信コマンド、および専用バリアコマンドを有しうる。DMAコマンドに応答して、MMU562は有効アドレスを実アドレスに変換し、実アドレスがBIU564に送られる。
SPUコア510Aは、好ましくは、DMAC560内のインタフェースと通信する(DMAコマンド、ステータスなどを送る)ために、チャネルインタフェースおよびデータインタフェースを使用する。SPUコア510Aはチャネルインタフェースを介して、DMAC560のDMAキューへDMAコマンドを送る。DMAコマンドがDMAキューに入ると、そのコマンドはDMAC560内の発行および完了論理により処理される。DMAコマンドに対する全てのバストランザクションが終了すると、完了信号が、チャネルインタフェースを介してSPUコア510Aに送られる。
図8はPU504の一般的な構造および機能を示している。PU504は、PUコア504Aとメモリフローコントローラ(MFC)504Bの2つの機能ユニットを有している。PUコア504Aは、プログラムの実行、データ操作、マルチプロセッサ管理機能などを実行し、MFC504Bはシステム100のPUコア504Aとメモリ空間間のデータ転送に関連する機能を実行する。
PUコア504AはL1キャッシュ570、命令ユニット572、レジスタ574、1つ以上の浮動小数点実行ステージ576、および1つ以上の固定小数点実行ステージ578を有することができる。L1キャッシュは、共有メモリ106、プロセッサ102、またはMFC504Bを介してメモリ空間の他の部分から受信したデータに対するデータキャッシングの機能を提供する。PUコア504Aは好ましくはスーパーパイプラインとして実装されるため、命令ユニット572は好ましくは、フェッチ、デコード、依存性チェック、発行などを含む、多くのステージを備えた命令パイプラインとして実装される。また、PUコア504は好ましくは、スーパースカラ構成であり、このため、1つ以上の命令がクロックサイクル毎に命令ユニット572から発行される。高度な処理能力を実現するために、浮動小数点実行ステージ576と固定小数点実行ステージ578は、パイプライン構成で複数のステージを有する。所望の処理能力に応じて、採用する浮動小数点実行ステージ556と固定小数点実行ステージ558の数が増減してもよい。
MFC504Bは、バスインタフェースユニット(BIU)580、L2キャッシュメモリ、キャッシュ不可能なユニット(NCU:Non-Cachable Unit)584、コアインタフェースユニット(CIU:Core Interface Unit)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は好ましくは、キャッシュ抑制ロード/ストア、バリアオペレーション、およびキャッシュコヒーレンシーオペレーションなどの、L2キャッシュ582によって処理されないPUコア504Aとの全ての通信を処理する。NCU584は好ましくは、上述の低電力化目的を満たすように、半分の速度で動作しうる。
CIU586は、MFC504BとPUコア504Aの境界に配置され、実行ステージ576,578、命令ユニット572、およびMMUユニット588からの要求に対し、また、L2キャッシュ582およびNCU584への要求に対し、ルーティング、仲裁、およびフロー制御ポイントして機能する。PUコア504AおよびMMU588は好ましくはフルスピードで実行され、L2キャッシュ582およびNCU584は2:1の速度比で動作することができる。したがって、周波数の境界がCIU586に存在し、その機能の1つは、2つの周波数ドメイン間で要求の送信およびデータのリロードを行いながら、周波数の差を適切に処理することである。
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は、好ましくはPUコア540Aに対して、第2レベルのアドレス変換機能などによりアドレス変換を行う。第1レベルの変換は好ましくは、MMU588よりも小型で高速でありうる、別々の命令およびデータERAT(Effective to Real Address Translation)アレイにより、PUコア504Aにおいて提供されうる。
好ましい実施形態では、PUコア504は64ビットの実装で、4〜6GHz、10F04で動作する。レジスタは好ましくは64ビット長(1つ以上の特殊用途のレジスタは小型でありうるが)であり、また、有効アドレスは64ビット長である。命令ユニット570、レジスタ572、および実行ステージ574,576は好ましくは、(RISC)演算技術を実現するために、PowerPCステージ技術を用いて実装される。
本コンピュータシステムのモジュール構造に関する更に詳しい詳細は、米国特許第6,526,491号明細書に記載されており、この明細書は参照により本明細書に援用される。
本発明の少なくとも1つの更に別の態様によれば、上述の方法および装置は、図面に図示しているような、適切なハードウェアを利用して実現されうる。この種のハードウェアは、公知の技術のいずれかを用いて実装することができる。この例には、標準的なディジタル回路、ソフトウェアプログラムおよび/またはファームウェアプログラムを実行するように動作可能な公知のプロセッサのいずれか、プログラマブル読出し専用メモリ(PROM)、プログラマブルアレイロジックデバイス(PAL)などの、1つ以上のプログラム可能なディジタル装置またはシステムなどがある。更に、図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別々の回路を用いて、および/あるいは1つ以上の機能ユニットに組み合わせて実装されうる。更に、本発明の様々な態様は、輸送および/または配布のために、[フロッピーディスク(登録商標)、メモリチップなどの]適切な記憶媒体に格納されうる、ソフトウェア、および/またはファームウェアプログラムによって実装されうる。
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および利用の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
本発明の1つ以上の態様による、ネットワークを介して相互に結合された複数のマルチプロセッサシステムのブロック図である。 本発明の1つ以上の態様により適合されうる、サブプロセッサを2つ以上有するマルチプロセシングシステムの構造を示すブロック図である。 図1〜2および/またはここに記載の他の実施形態における要素のうちの1つ以上によって実行されうる処理ステップを示す部分ブロック図および部分フローチャートである。 図2(および/またはここに記載の他の実施形態)のシステムのプロセッサの1つ以上によって使用されうるサーバテーブルの構造を示すブロック図である。 図1(および/またはここに記載の他の実施形態)のシステムのサーバによって使用されうるネットワークアドレステーブルの構造を示すブロック図である。 本発明の1つ以上の更に別の態様の実装に使用されうる好適なプロセッサエレメント(PE)を示すブロック図である。 本発明の1つ以上の更に別の態様により適合されうる、図6のシステムの例示的なサブプロセッシングユニット(SPU)の構造を示すブロック図である。 本発明の1つ以上の更に別の態様により適合されうる、図6のシステムの例示的なプロセッシングユニット(PU)の構造を示すブロック図である。

Claims (16)

  1. 複数のマルチプロセッサシステムを含むプロセッシングシステム内でデータを転送するための方法であって、
    第1マルチプロセッサシステムの第1プロセッサから、データに対するメモリアクセス要求を、前記第1マルチプロセッサシステムの第2プロセッサが受信するステップと、
    前記メモリアクセス要求の前記データが、広域通信ネットワークを介して前記第1マルチプロセッサシステムと結合されたリモートマルチプロセッサシステムに記憶されているかどうかを、前記メモリアクセス要求で要求されるアドレスを、当該アドレスが所定のメモリアドレス範囲にマッピングされているか否かを評価し、前記所定のメモリアドレス範囲にマッピングされている場合に、前記結合されたリモートマルチプロセッサシステムに前記データが記憶されていると前記第2プロセッサが決定するステップと、
    第1マルチプロセッサシステムと結合されたリモートマルチプロセッサシステムに記憶されている前記アドレスが所定のメモリ範囲にマッピングされていると前記第2プロセッサが決定した場合に、前記第2プロセッサが、前記リモートマルチプロセッサシステムのネットワークアドレスへの前記メモリアクセス要求を、前記広域通信ネットワークを介して、複数のネットワークアドレスがメモリアドレスの複数の範囲と関連付けて登録されたネットワークアドレステーブルを維持している管理サーバに送信するステップと、
    前記第2プロセッサが、前記広域通信ネットワークを介して、前記管理サーバから、前記管理サーバが前記ネットワークアドレステーブルにアクセスして前記メモリアクセス要求で要求されるメモリアドレスに対応するネットワークアドレスとして選択した、前記リモートマルチプロセッサシステムの前記ネットワークアドレスを受信するステップと、
    前記第2プロセッサが、前記リモートマルチプロセッサシステムの前記ネットワークアドレスに、前記データに対するメモリアクセス要求を送信することで、前記リモートマルチプロセッサシステムに前記データを要求するステップと、
    前記第2プロセッサが、前記広域通信ネットワークを介して前記リモートマルチプロセッサシステムから前記データを受信するステップと、
    前記第2プロセッサが、前記第1マルチプロセッサシステムの前記第1プロセッサに前記データを提供するステップと、を有する方法。
  2. 前記管理サーバが、前記マルチプロセッサシステムとの間で登録プロセスを実行して、ネットワークアドレスとアドレス範囲との関連づけを行うことで、前記メモリアドレス範囲を予め決定し、
    前記管理サーバが、前記第2プロセッサから送信された前記ネットワークアドレスへの前記メモリアクセス要求を受信して、前記ネットワークアドレステーブルにアクセスして、前記メモリアクセス要求のデータで要求される前記リモートマルチプロセッサシステムのネットワークアドレスを選択して、この選択されたネットワークアドレスを前記第2プロセッサに送信し、
    前記第2プロセッサが決定するステップは、前記メモリアクセス要求で要求されるメモリアドレスが、所定の範囲から外れているかどうかを評価するステップを有する、請求項1に記載の方法。
  3. 前記ネットワークアドレステーブルを維持している管理サーバに送信するステップは、前記管理サーバが維持する、1つ以上の管理サーバのリストを含むサーバテーブルにアクセスして、前記リモートマルチプロセッサシステムのネットワークアドレスに対する前記メモリアクセス要求を送信すべき前記管理サーバに関連付けけられたネットワークアドレスを選択するステップを更に有する請求項1に記載の方法。
  4. 前記広域通信ネットワークを介して前記リモートマルチプロセッサシステムから前記データを受信する前記ステップは、前記第1マルチプロセッサシステムの前記ネットワークアドレスに関連づけられたメモリアドレスにおいて前記データを受信するステップを有する、請求項1に記載の方法。
  5. 前記メモリアクセス要求は、データに対するダイレクトメモリアクセス(DMA)要求である、請求項1に記載の方法。
  6. 前記管理サーバが、前記第1マルチプロセッサシステムから、前記リモートマルチプロセッサシステムに記憶されている、前記第1プロセッサによって要求されたデータを指定している1つ以上の仮想アドレスを含む前記ネットワークアドレスへのアクセス要求を、前記管理サーバに送信するステップを通じて受信するステップと、
    前記管理サーバが、前記要求されたデータを指定している前記1つ以上の仮想アドレスに基づいて、前記リモートマルチプロセッサシステムのネットワークアドレスを選択するステップと、
    前記管理サーバが、前記リモートマルチプロセッサシステムの前記ネットワークアドレスを、前記広域通信ネットワークを介して前記第1マルチプロセッサシステムに送信するステップと、を、更に有する請求項1に記載の方法。
  7. 前記管理サーバが、前記1つ以上の仮想アドレスを1つ以上の物理アドレスに変換するステップを含む、
    請求項に記載の方法。
  8. 前記広域通信ネットワークを介して、前記管理サーバが、前記第1マルチプロセッサシステムに前記1つ以上の物理アドレスを送信するステップを更に有する請求項に記載の方法。
  9. 複数のプロセッサと、前記複数のプロセッサにより共有されるメインメモリを含む第1マルチプロセッサシステムと、
    前記プロセッサのそれぞれに結合された各々のローカルメモリと、を有し、
    前記第1マルチプロセッサシステムの前記プロセッサ、前記第1マルチプロセッサシステムの第1プロセッサから、データに対するメモリアクセス要求を受信して、前記メモリアクセス要求の前記データが、広域通信ネットワークを介して前記第1マルチプロセッサシステムに結合されたリモートマルチプロセッサシステムに記憶されているかどうかを、前記メモリアクセス要求で要求されるアドレスを、当該アドレスが所定のメモリアドレス範囲にマッピングされているか否かを評価し、前記所定のメモリアドレス範囲にマッピングされている場合に、前記結合されたリモートマルチプロセッサシステムに前記データが記憶されていると決定し、
    前記第1マルチプロセッサシステムの前記プロセッサは、
    第1マルチプロセッサシステムと結合されたリモートマルチプロセッサシステムに記憶されている前記アドレスが所定のメモリ範囲にマッピングされていると決定した場合に、前記リモートマルチプロセッサシステムの前記ネットワークアドレスに対する要求を、前記広域通信ネットワークを介して、複数のネットワークアドレスがメモリアドレスの複数の範囲と関連付けて登録されたネットワークアドレステーブルを維持している管理サーバに送信して、前記管理サーバから、前記管理サーバが前記ネットワークアドレステーブルにアクセスして前記メモリアクセス要求で要求されるメモリアドレスに対応するネットワークアドレスとして選択した、前記リモートマルチプロセッサシステムの前記ネットワークアドレスを受信する、
    複数のマルチプロセッサシステムを含むプロセッシングシステム。
  10. 前記管理サーバが、前記マルチプロセッサシステムとの間で登録プロセスを実行して、ネットワークアドレスとアドレス範囲との関連づけを行うことで、前記メモリアドレス範囲を予め決定し、
    前記管理サーバが、前記ネットワークアドレスに対する要求を受信して、前記ネットワークアドレステーブルにアクセスして、前記メモリアクセス要求のデータで要求される前記リモートマルチプロセッサシステムのネットワークアドレスを選択して、この選択されたネットワークアドレスを第2プロセッサに送信し、
    前記第1マルチプロセッサシステムの前記プロセッサは、前記メモリアクセス要求で要求されるメモリアドレスが、所定の範囲から外れているかどうかを評価することで、前記メモリアクセス要求で要求されるアドレスを評価する、請求項に記載のプロセッシングシステム。
  11. 前記第1マルチプロセッサシステムの前記プロセッサは、前記リモートマルチプロセッサシステムに前記データを要求し、前記広域通信ネットワークを介して前記リモートマルチプロセッサシステムから前記データを取得し、前記第1マルチプロセッサシステムの前記開始第1プロセッサに前記データを転送する、請求項に記載のプロセッシングシステム。
  12. 前記第1マルチプロセッサシステムの前記第1マルチプロセッサシステムの第1プロセッサから、データに対するメモリアクセス要求を受信した前記プロセッサは、
    前記要求されたデータの仮想アドレスの、前記リモートマルチプロセッサシステムの1つ以上の物理アドレスを取得する、請求項に記載のプロセッシングシステム。
  13. 前記ローカルメモリは、ハードウェアキャッシュメモリではない、請求項に記載のプロセッシングシステム。
  14. 前記第1マルチプロセッサシステムの各プロセッサは、そのローカルメモリ内でプログラムを実行することができるが、前記各プロセッサは、前記メインメモリ内でプログラムを実行することができない、請求項に記載のプロセッシングシステム。
  15. 前記第1マルチプロセッサシステムの前記プロセッサおよび関連するローカルメモリは共通の半導体基板に配置されている、
    前記第1マルチプロセッサシステムの複数のプロセッサ、関連するローカルメモリおよび前記メインメモリは共通の半導体基板に配置されている、の少なくともいずれかに該当する請求項に記載のプロセッシングシステム。
  16. 第1マルチプロセッサシステムの第1プロセッサから、データに対するメモリアクセス要求を、前記第1マルチプロセッサシステムの第2プロセッサが受信し、
    前記メモリアクセス要求の前記データが、広域通信ネットワークを介して前記第1マルチプロセッサシステムと結合されたリモートマルチプロセッサシステムに記憶されているかどうかを、前記メモリアクセス要求で要求されるアドレスを、当該アドレスが所定のメモリアドレス範囲にマッピングされているか否かを評価し、前記所定のメモリアドレス範囲にマッピングされている場合に、前記結合されたリモートマルチプロセッサシステムに前記データが記憶されているとすることで、前記第2プロセッサが決定し、
    第1マルチプロセッサシステムと結合されたリモートマルチプロセッサシステムに記憶されている前記アドレスが所定のメモリ範囲にマッピングされている記憶されていると前記第2プロセッサが決定した場合に、前記第2プロセッサが、前記リモートマルチプロセッサシステムのネットワークアドレスへの前記メモリアクセス要求を、前記広域通信ネットワークを介して、複数のネットワークアドレスがメモリアドレスの複数の範囲と関連付けて登録されたネットワークアドレステーブルを維持している管理サーバに送信するステップと、
    前記第2プロセッサが、前記広域通信ネットワークを介して、前記管理サーバから、前記管理サーバが前記ネットワークアドレステーブルにアクセスして前記メモリアクセス要求で要求されるメモリアドレスに対応するネットワークアドレスとして選択した、前記リモートマルチプロセッサシステムの前記ネットワークアドレスを受信するステップと、を含むアクションを、前記第1マルチプロセッサシステムに実行させるように動作可能な実行可能プログラムを含む記憶媒体。
JP2008504560A 2006-01-27 2007-01-23 アドレス空間の仮想化のための方法および装置 Active JP4805341B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/341,724 2006-01-27
US11/341,724 US7814166B2 (en) 2006-01-27 2006-01-27 Methods and apparatus for virtualizing an address space
PCT/JP2007/051335 WO2007086542A2 (en) 2006-01-27 2007-01-23 Methods and apparatus for virtualizing an address space

Publications (2)

Publication Number Publication Date
JP2009503624A JP2009503624A (ja) 2009-01-29
JP4805341B2 true JP4805341B2 (ja) 2011-11-02

Family

ID=38291003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008504560A Active JP4805341B2 (ja) 2006-01-27 2007-01-23 アドレス空間の仮想化のための方法および装置

Country Status (6)

Country Link
US (1) US7814166B2 (ja)
EP (1) EP1861790B1 (ja)
JP (1) JP4805341B2 (ja)
AT (1) ATE485561T1 (ja)
DE (1) DE602007009895D1 (ja)
WO (1) WO2007086542A2 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4996929B2 (ja) * 2007-01-17 2012-08-08 株式会社日立製作所 仮想計算機システム
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
EP2210398A2 (en) * 2007-09-11 2010-07-28 Mentor Graphics Corporation Memory sharing and data distribution
US8200910B2 (en) 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US8239879B2 (en) 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8484307B2 (en) 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8255913B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8146094B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8275947B2 (en) 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US8487655B1 (en) * 2009-05-05 2013-07-16 Cypress Semiconductor Corporation Combined analog architecture and functionality in a mixed-signal array
US8179161B1 (en) 2009-05-05 2012-05-15 Cypress Semiconductor Corporation Programmable input/output circuit
JP5382133B2 (ja) * 2009-11-18 2014-01-08 日本電気株式会社 マルチコアシステム、マルチコアシステムの制御方法及びプログラム
US8612687B2 (en) * 2010-05-26 2013-12-17 International Business Machines Corporation Latency-tolerant 3D on-chip memory organization
US9652560B1 (en) * 2011-07-18 2017-05-16 Apple Inc. Non-blocking memory management unit
US10474395B2 (en) * 2012-06-05 2019-11-12 Pure Storage, Inc. Abstracting namespace mapping in a dispersed storage network through multiple hierarchies
US9830289B2 (en) 2014-09-16 2017-11-28 Apple Inc. Methods and apparatus for aggregating packet transfer over a virtual bus interface
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US10042794B2 (en) 2015-06-12 2018-08-07 Apple Inc. Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link
US10085214B2 (en) 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US10572390B2 (en) 2016-02-29 2020-02-25 Apple Inc. Methods and apparatus for loading firmware on demand
US10198364B2 (en) 2016-03-31 2019-02-05 Apple Inc. Memory access protection apparatus and methods for memory mapped access between independently operable processors
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10551902B2 (en) 2016-11-10 2020-02-04 Apple Inc. Methods and apparatus for providing access to peripheral sub-system registers
US11082523B2 (en) * 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
US10346226B2 (en) 2017-08-07 2019-07-09 Time Warner Cable Enterprises Llc Methods and apparatus for transmitting time sensitive data over a tunneled bus interface
US10949353B1 (en) * 2017-10-16 2021-03-16 Amazon Technologies, Inc. Data iterator with automatic caching
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US11792307B2 (en) 2018-03-28 2023-10-17 Apple Inc. Methods and apparatus for single entity buffer pool management
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
US10585699B2 (en) 2018-07-30 2020-03-10 Apple Inc. Methods and apparatus for verifying completion of groups of data transactions between processors
US10846224B2 (en) 2018-08-24 2020-11-24 Apple Inc. Methods and apparatus for control of a jointly shared memory-mapped region
US10719376B2 (en) 2018-08-24 2020-07-21 Apple Inc. Methods and apparatus for multiplexing data flows via a single data structure
US10838450B2 (en) 2018-09-28 2020-11-17 Apple Inc. Methods and apparatus for synchronization of time between independently operable processors
US10789110B2 (en) 2018-09-28 2020-09-29 Apple Inc. Methods and apparatus for correcting out-of-order data transactions between processors
US11487674B2 (en) * 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
WO2020243244A1 (en) 2019-05-28 2020-12-03 John Rankin Supporting a virtual memory area at a remote computing machine
US11558348B2 (en) 2019-09-26 2023-01-17 Apple Inc. Methods and apparatus for emerging use case support in user space networking
US11829303B2 (en) 2019-09-26 2023-11-28 Apple Inc. Methods and apparatus for device driver operation in non-kernel space
US11210248B2 (en) * 2019-12-20 2021-12-28 Advanced Micro Devices, Inc. System direct memory access engine offload
US11606302B2 (en) 2020-06-12 2023-03-14 Apple Inc. Methods and apparatus for flow-based batching and processing
US11775359B2 (en) 2020-09-11 2023-10-03 Apple Inc. Methods and apparatuses for cross-layer processing
US11954540B2 (en) 2020-09-14 2024-04-09 Apple Inc. Methods and apparatus for thread-level execution in non-kernel space
US11799986B2 (en) 2020-09-22 2023-10-24 Apple Inc. Methods and apparatus for thread level execution in non-kernel space
US11882051B2 (en) 2021-07-26 2024-01-23 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US11876719B2 (en) 2021-07-26 2024-01-16 Apple Inc. Systems and methods for managing transmission control protocol (TCP) acknowledgements
US20230289304A1 (en) * 2022-03-10 2023-09-14 Nvidia Corporation Method and apparatus for efficient access to multidimensional data structures and/or other large data blocks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816536A (ja) * 1994-06-30 1996-01-19 Nec Corp マルチプロセッサシステム
JP2001155004A (ja) * 1999-11-24 2001-06-08 Nec Corp マルチプロセッサシステム及びそのアドレス解決方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0821013B2 (ja) * 1987-05-13 1996-03-04 株式会社日立製作所 ダイレクトメモリアクセスオ−ダ競合制御方式
JP3360933B2 (ja) 1994-06-01 2003-01-07 富士通株式会社 情報処理システムにおける記憶制御方法および記憶制御装置
US6785767B2 (en) * 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7002956B2 (en) * 2001-07-05 2006-02-21 International Business Machines Corporation Network addressing method and system for localizing access to network resources in a computer network
US20030061462A1 (en) * 2001-09-26 2003-03-27 Fister James D.M. Memory expansion and enhanced system interaction using network-distributed memory mapping
US7177868B2 (en) * 2002-01-02 2007-02-13 International Business Machines Corporation Method, system and program for direct client file access in a data management system
US7185096B2 (en) * 2003-05-27 2007-02-27 Sun Microsystems, Inc. System and method for cluster-sensitive sticky load balancing
US7685601B2 (en) * 2005-02-28 2010-03-23 Sony Computer Entertainment Inc. Methods and apparatus for segmented stack management in a processor system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816536A (ja) * 1994-06-30 1996-01-19 Nec Corp マルチプロセッサシステム
JP2001155004A (ja) * 1999-11-24 2001-06-08 Nec Corp マルチプロセッサシステム及びそのアドレス解決方法

Also Published As

Publication number Publication date
WO2007086542A3 (en) 2007-11-15
US7814166B2 (en) 2010-10-12
ATE485561T1 (de) 2010-11-15
JP2009503624A (ja) 2009-01-29
US20070180041A1 (en) 2007-08-02
EP1861790A2 (en) 2007-12-05
DE602007009895D1 (de) 2010-12-02
EP1861790B1 (en) 2010-10-20
WO2007086542A2 (en) 2007-08-02

Similar Documents

Publication Publication Date Title
JP4805341B2 (ja) アドレス空間の仮想化のための方法および装置
JP4645973B2 (ja) 命令セットのエミュレーションのための方法、装置及びシステム
US7613886B2 (en) Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
JP4451397B2 (ja) Simdプロセッサスライスの有効/無効の制御のための方法ならびに装置
US7526608B2 (en) Methods and apparatus for providing a software implemented cache memory
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
US7886112B2 (en) Methods and apparatus for providing simultaneous software/hardware cache fill
EP1834245B1 (en) Methods and apparatus for list transfers using dma transfers in a multi-processor system
JP4134182B2 (ja) タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置
WO2006064961A1 (en) Methods and apparatus for address translation from an external device to a memory of a processor
JP2006172468A (ja) システム内部のデータ転送を処理する装置および方法
US7818507B2 (en) Methods and apparatus for facilitating coherency management in distributed multi-processor system
US20060179275A1 (en) Methods and apparatus for processing instructions in a multi-processor system
US20060206732A1 (en) Methods and apparatus for improving processing performance using instruction dependency check depth

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100714

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100818

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101125

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

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: 20110809

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: 20110810

R150 Certificate of patent or registration of utility model

Ref document number: 4805341

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: 20140819

Year of fee payment: 3

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