JP2005166056A - マルチタスク処理方法および装置 - Google Patents

マルチタスク処理方法および装置 Download PDF

Info

Publication number
JP2005166056A
JP2005166056A JP2004349195A JP2004349195A JP2005166056A JP 2005166056 A JP2005166056 A JP 2005166056A JP 2004349195 A JP2004349195 A JP 2004349195A JP 2004349195 A JP2004349195 A JP 2004349195A JP 2005166056 A JP2005166056 A JP 2005166056A
Authority
JP
Japan
Prior art keywords
reservation
shared memory
data
memory
interface unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004349195A
Other languages
English (en)
Inventor
Takeshi Yamazaki
剛 山崎
Michael N Day
マイケル・ノルマン・デイ
Thuong Truong
スオン・トゥルン
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 JP2005166056A publication Critical patent/JP2005166056A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

【課題】共有メモリを用いた広帯域処理環境での効率的なマルチタスク処理方法および装置を提供する。
【解決手段】システムは、共有メモリと、共有メモリに接続され共有メモリの要求されたアドレスからデータを取り出し、かつ共有メモリの要求されたアドレスにデータを書き込むように動作するメモリインタフェイスユニットと、メモリインタフェイスと通信し、(i)メモリインタフェイスユニットに共有メモリの特定のアドレスのデータに対してデータ上で任意の操作を実行するよう予約付きロードを命令し、(ii)メモリインタフェイスユニットにデータを共有メモリの特定のアドレスにストアするよう命令する複数の処理ユニットとを含む。処理ユニットの少なくとも1つは、予約消失の有無および共有メモリの特定アドレスのデータの更新の有無を示すステータスレジスタを含む。
【選択図】図2

Description

本発明は、コンピュータのプロセッサにマルチプロセッサ構成を用いた効率的なデータ処理方法および装置に関し、より特定的には、1つ以上の共有メモリを用いた広帯域処理環境での効率的なマルチタスク処理方法および装置に関する。
リアルタイムマルチメディアアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速処理は単独の処理装置でも可能だが、一般にはマルチプロセッサ構成の処理速度には追いつかない。実際、マルチプロセッサシステムでは、複数のプロセッサが並列に(または少なくとも協調して)動作して、所望の処理結果を達成できる。
マルチ処理技術を用いることのできるコンピュータおよびコンピューティングデバイスの種類は多岐にわたる。こうしたコンピューティングデバイスには、パーソナルコンピュータ(PC)およびサーバ以外に、携帯電話、モバイルコンピュータ、個人情報端末(PDA)、セットトップボックス、ディジタルTV、およびその他多数の装置が含まれる。
マルチプロセッサシステムの設計上の留意点は、複数の処理ユニット間でどのように共有メモリを使用するかということである。もちろん望ましい処理結果を得るにはプロセッサの同期が必要と考えられ、これにはマルチエクスクルージョン(複数主体に対する排他制御)処理が必要である。例えば、いわゆるアトミックな(すなわち、マルチプロセッサ環境において、他のプロセッサが行う操作との相互作用なしに実行されることが保証される一連の操作状態)リードシーケンス、アトミックな更新シーケンス、および/またはアトミックなライトシーケンスを利用して、適正な同期を達成できる。
こうしたマルチプロセッサシステムにおける他の留意点は、特にハンドヘルド装置等の小型パッケージ中で複数のプロセッサを使用する場合に、プロセッサ群によって生じる熱の管理方法である。機械的な手法を用いる熱管理技術を利用してもよいが、この技術は一般に、最終製品における部品コストおよび製造コストを押し上げるため、完全に満足いくものとはいえない。また機械的な熱管理技術は冷却が不十分な場合がある。
マルチプロセッサシステムの他の留意点は、特にラップトップコンピュータおよびハンドヘルドの装置等のポータブルデバイス中で複数のプロセッサを使用する場合に、利用可能なバッテリー電力の効率的な利用方法である。当然ながら、あるシステム中で使用するプロセッサの数が増大すると、より多くの電力が消費される。一般に、所与のプロセッサによって消費される電力量は、そのプロセッサによって実行されている命令の数およびそのプロセッサの動作クロック周波数の関数である。
従って当該技術分野では、プロセッサが生じる熱とプロセッサが消費するエネルギを削減する効率的なマルチ処理を達成する新規な方法および装置が必要とされている。
上記の問題の少なくとも一部を解決するために、新たなコンピュータ構成が開発された。この新規のコンピュータ構成では、マルチプロセッサコンピュータシステムの全てのプロセッサは、共通のコンピューティングモジュール(またはセル)から構成される。この共通コンピューティングモジュールは、コンシステントな、すなわち一貫性のある構造をしており、好適には同一の命令セットのアーキテクチャを用いる。マルチプロセッサコンピュータシステムは、1つ以上のクライアント、サーバ、PC、モバイルコンピュータ、ゲーム機、PDA、セットトップボックス、電化機器、ディジタルTV、その他、コンピュータプロセッサを用いる装置から構成できる。
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備が簡略化できる。
基本的な処理モジュールはプロセッサ要素(PE)である。PEは、好適には処理ユニット(PU)と、ダイレクトメモリアクセスコントローラ(DMAC)と、共通の内部アドレスおよびデータバスで接続された、複数の、例えば4つの付属処理ユニット(APU)とを含む。PUおよびAPUは、クロスバー構成をもちうる共有ダイナミックランダムアクセスメモリ(DRAM)にアクセスする。PUは、APUによるデータおよびアプリケーションの処理のスケジューリングと調整を行う。APUはこの処理を並列かつ独立して行う。DMACは、共有DRAMに保存されたデータおよびアプリケーションに対するAPUのアクセスを制御する。
このモジュール構造では、あるコンピュータシステムで使用されるPEの数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE、ワークステーションは2つのPE、PDAは1つのPEを使用しうる。あるソフトウェアセルの処理に割り当てられるPEのAPUの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
複数のPEを共有DRAMに関連付けることができ、そのDRAMは複数のセクションに分別され、各セクションは複数のメモリバンクに分別されうる。DRAMの各セクションはバンクコントローラによって制御され、PEの各DMACが各バンクコントローラにアクセスできる。本構成では、各PEのDMACは共有DRAMの任意の個所にアクセスできる。
この新規のコンピュータ構成はまた、データおよびアプリケーションをネットワークを介して伝送し、かつデータおよびアプリケーションをネットワークメンバ間で処理する新たなプログラミングモデルを用いる。このプログラミングモデルは、ネットワークを介して伝送され任意のネットワークメンバによって処理されるソフトウェアセルを用いる。各ソフトウェアセルは同一構造をもち、データとアプリケーション両方を収容できる。モジュール式コンピュータ構成による高速処理および伝送の結果、これらセルの高速処理が可能である。アプリケーション用のコードは、好適には同一の共通命令セットおよび命令セットアーキテクチャに基づく。各ソフトウェアセルは、好適にはグローバル(大域的)識別名(ID)と、セルの処理に必要な計算リソース量を記述した情報とを含む。すべての計算リソースは同一の基本構造をもち、かつ同じ命令セットアーキテクチャを用いるので、処理を実行する特定のリソースをネットワーク上の任意の場所に配置してダイナミックに割り当てを行うことができる。
本発明の1つ以上の態様では、本方法は、a)共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令を発行するステップと、b)前記データをそのデータに対して任意の操作が実行できるよう前記共有メモリから受けるステップと、c)(i)低電力消費モードに入る、(ii)他の処理タスクを開始する、の少なくとも一方を行うステップと、d)前記共有メモリ中の前記アドレスのデータが更新されると予約消失の通知を受信するステップとを含む。
好適には、予約消失の通知は、(i)低電量消費モードに対する割込、(ii)他の処理タスクに対する割込、の少なくとも一方の割込として機能する。該通知が予約消失を示す場合は、好適には本方法の上記のステップa)〜d)を繰り返す。
この方法はまた、共有メモリからデータがアクセスされると、予約付ロード命令を発行するプロセッサに関連付けられた識別番号を、共有メモリ中のアドレス指定された位置に関連付けられたステータス位置に書き込むステップを含みうる。
この方法はまた、共有メモリ中の上記アドレスのデータが更新されたかどうかをモニタすることによって、予約消失の有無をモニタするステップを含みうる。好適には、この方法はさらに、共有メモリ中の該アドレスのデータがストア命令に応答して保存される前に更新された場合、プロセッサのステータスレジスタ中の予約消失ビットに予約消失を表示させるステップを含む。予約消失の有無を判定するステップは、ステータスレジスタを定期的に監視(すなわちポーリング)して、予約消失ビットが予約消失を示していれば予約消失があったと判定するステップを含みうる。
本発明の他の態様では、システムは、共有メモリと、動作時に共有メモリに接続されるメモリインタフェイスユニットと、メモリインタフェイスユニットと通信する複数の処理ユニットとを含む。好適には、処理ユニットの少なくとも1つは、本発明の方法に関して上述したステップのうちの1つ以上のステップを実行する。
本発明のさらに他の態様では、システムは、共有メモリと、共有メモリに接続され、共有メモリの要求されたアドレスからデータを読み出し、かつデータを要求されたアドレスに書き込むよう動作するメモリインタフェイスユニットと、メモリインタフェイスユニットと通信する複数の処理ユニットとを含む。
処理ユニットは、好適には、(i)メモリインタフェイスユニットに、前記共有メモリの特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを命令し、かつ(ii)メモリインタフェイスユニットに、前記データを前記共有メモリの前記特定アドレスにストアするよう命令する。処理ユニットの少なくとも1つは、好適には、共有メモリ中の特定アドレスのデータが他の処理ユニットによって更新されると消失する予約消失の有無を示すビットを有するステータスレジスタを含む。
少なくとも1つの処理ユニットは、好適には、データが所定値でない場合は低電力消費モードに入るように動作できる。処理ユニットの少なくとも1つはさらに、低電力消費モードに対する割込の発生を許可するイベントに応答し、低電力消費モードから抜けるように動作できる。処理ユニットの少なくとも1つはさらに、好適には、ステータスレジスタのビットを定期的に監視して該イベントが発生したかどうかを判定するように動作できる。
少なくとも1つの処理ユニットはさらに、好適には、ステータスレジスタのビットが予約消失を示す場合に、メモリインタフェイスユニットに、共有メモリの特定のアドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するように動作できる。
低電力消費モードに対する割込の発生が許可されるイベントは、予約の消失であってもよい。これに代わり、または、これに加えて、低電力消費モードに対する割込の発生が許可されるイベントは、データが共有メモリの特定のアドレスにストアされたことの確認でもよい。
好適には、メモリインタフェイスユニットは、データが共有メモリからアクセスされると、予約付ロード命令を発行する少なくとも1つの処理ユニットに関連付けられた識別番号を、共有メモリの特定アドレスに関連付けられたステータス位置に書き込むように動作できる。メモリインタフェイスユニットはさらに、好適には、共有メモリ中の特定アドレスのデータが更新されたかどうかをモニタすることによって、予約消失の有無をモニタするように動作できる。
好適には、メモリインタフェイスユニットはさらに、共有メモリ中の特定アドレスのデータが更新されると、少なくとも1つの処理ユニットのステータスレジスタのビットに予約消失を表示させるように動作できる。
本発明の1つ以上のさらに他の態様では、システムは、共有メモリと、共有メモリに接続され、共有メモリの要求されたアドレスからデータを読み出し、かつ共有メモリの要求されたアドレスにデータを書き込むように動作できるメモリインタフェイスユニットと、メモリインタフェイスユニットと通信する複数の処理ユニットとを含む。処理ユニットは、好適には、(i)メモリインタフェイスユニットに、共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令し、かつ(ii)低電力消費モードに入るように動作できる。
少なくとも1つの処理ユニットはさらに、好適には、低電力消費モードに対する割込が許可されるイベントに応答し、低電力消費モードから抜けるように動作できる。低電力消費モードに対する割込が許可されるイベントは、予約の消失でありうる。これに代えて、またはこれに加えて、低電力消費モードに対する割込が許可されるイベントは、データが共有メモリの特定アドレスにストアされたことの確認でもよい。
好適には、少なくとも1つの処理ユニットは、共有メモリ中の特定アドレスのデータが更新されたかどうか等の予約消失の有無を示すビットを有するステータスレジスタを含む。
メモリインタフェイスユニットは、好適には、共有メモリ中の特定アドレスのデータが更新されると、少なくとも1つの処理ユニットのステータスレジスタのビットに予約消失を示させるように動作できる。
好適には、少なくとも1つの処理ユニットはさらに、ステータスレジスタのビットを定期的に監視して予約消失を判定するように動作できる。少なくとも1つの処理ユニットはさらに、好適には、ステータスレジスタのビットが予約消失を示す場合に、共有メモリの特定のアドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するように動作できる。
好適には、メモリインタフェイスユニットは、データが共有メモリからアクセスされると、予約付ロード命令を発行する少なくとも1つの処理ユニットに関連付けられた識別番号を、共有メモリの特定アドレスに関連付けられたステータス位置に書き込むように動作できる。メモリインタフェイスユニットはさらに、好適には、共有メモリの特定アドレスにおけるデータが更新されたかどうかをモニタするように動作できる。
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
以下、図面を参照するが、図中、同一符号は同一要素を示す。図1は、本発明の1つ以上の態様に従う基本的な処理モジュールまたはプロセッサ要素(PE)のブロック図である。図示するように、PE201は、I/Oインタフェイス202と、処理ユニット(PU)203と、ダイレクトメモリアクセスコントローラ(DMAC)205と、複数の付属処理ユニット(APU)、すなわちAPU207,APU209,APU211およびAPU213とを含む。ローカル(すなわち内部)PEバス223は、PU203、APU群、DMAC205およびメモリインタフェイス215間のデータおよびアプリケーションの伝送を行う。ローカルPEバス223は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
PE201はディジタル論理回路を実装する各種方法を利用して構成できる。ただし好適には、PE201はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる1つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE201はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)論理回路等として実装することもできる。
PE201は、広帯域メモリ接続227を介してダイナミックランダムアクセスメモリ(DRAM)225に密接に関連付けられる。DRAM225は、PE201用の主メモリとして機能する。DRAM225は好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。DMAC205およびメモリインタフェイス215により、DRAM225とPE201のAPU群およびPU203間のデータ転送が容易になる。
DMAC205および/またはメモリは、1つ以上のAPUおよびPU203中に一体化して設けてもよい。PU203は、APU群によるデータおよびアプリケーションの処理のスケジューリングおよび/または調整を行う主処理ユニットの役割を果たす1つのAPUによって実装しうる。
PU203は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU203はAPU群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。APU群は、好適には一命令複数データ(SIMD)プロセッサである。PU203の制御下で、APU群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。DMAC205は、共有DRAM225に保存されたデータおよびアプリケーションに対するPU203およびAPU群のアクセスを制御する。
PE201等の多数のPEを接続し、または一緒にパッケージングして、処理能力を向上させることができる。例えば図2に示すように、2つ以上のPEを例えば1つ以上のチップパッケージ中でパッケージングまたは接続して、1つのプロセッサシステムを形成できる。この構成を広帯域エンジン(BE)と称する。図2に示すように、BE301は、2つのPEすなわちPE201AとPE201Bとを含む。これらPE間の通信はBEバス311によって行う。広帯域メモリ接続227は、共有DRAM225とこれらPE群間の通信を行う。DRAM225とこのメモリ接続とによって、BEバス311の代わりにBE301中のPE間の通信を行うことができる。
1つ以上の入出力(I/O)インタフェイス202Aおよび202Bと外部バス(図示せず)とによって、広帯域エンジン301と他の外部装置との間の通信を行う。BE301のPE201Aおよび201Bはそれぞれ、1つのPEのAPU群によるアプリケーションおよびデータの並列かつ独立の処理と同様、アプリケーションを並列かつ独立して処理する。
図3は、APU400の構造および機能を示す。APU400は、ローカルメモリ406と、レジスタ410と、1つ以上の浮動小数点ユニット412と、1つ以上の整数ユニット414とを含む。ただしここでも、必要な処理能力に応じて、使用する浮動小数点ユニット412および整数ユニット414の数を増減させてもよい。好適な実施形態では、ローカルメモリ406は256キロバイトの容量をもち、レジスタ410の容量は128×128ビットである。浮動小数点ユニット412は、好適には1秒間に320億回(32GFLOPS)の浮動小数点演算を実行する。整数ユニット414は、好適には1秒間に320億回(32GOPS)の整数演算を実行する。
ローカルメモリ406は、好適にはキャッシュメモリではない。APUにはキャッシュコヒーレンシ、すなわちキャッシュデータの一貫性のサポートを不要とする代わりに、ローカルメモリ406は好適にはスタティックランダムアクセスメモリ(SRAM)として構成される。PU203は、PU203が開始するダイレクトメモリアクセスのためにキャッシュコヒーレンシを必要とする場合がある。しかしAPU400が開始するダイレクトメモリアクセスまたは外部装置との間のアクセスにはキャッシュコヒーレンシサポートは不要である。
APU400はさらに、APU400とアプリケーションおよびデータの送受信を行うバス404を含む。好適な実施形態では、バス404の幅は1024ビットである。APU400はさらに、内部バス408,420および418を含む。好適な実施形態では、バス408は幅256ビットで、ローカルメモリ406とレジスタ410間の通信を行う。バス420および418は、それぞれレジスタ410−浮動小数点ユニット412間、およびレジスタ410−整数ユニット414間の通信を行う。好適な実施形態では、レジスタ410−浮動小数点ユニット間のバス420またはレジスタ410−整数ユニット間のバス418の幅は384ビットで、一方、浮動小数点ユニット412または整数ユニット414からレジスタ410へのバス420および418の幅は128ビットである。レジスタ410から浮動小数点ユニット412または整数ユニット414へのバスの幅のほうが、これら装置からレジスタ410へのバス幅より広いことで、処理中にレジスタ410からのより大量のデータフローに対処できる。各計算には最大3ワードが必要である。ただし各計算の結果は通常は1ワードだけである。
APU400のレジスタ410は、好適には、イベントステータスレジスタ410Aと、イベントステータスマスクレジスタ410Bと、イベント終了ステータス確認レジスタ410Cとを含む。以下で説明するが、これらレジスタ410A〜410Cは、処理効率向上のために用いることができる。イベントステータスレジスタ410Aは複数のビット、例えば32ビットを含む。各ビット(または各ビットグループ)は、外部イベント等のイベントのステータスを示す。イベントステータスレジスタ410Aは、好適にはロックライン予約消失イベントのステータスを含むビットを含む。ロックライン予約消失イベントは、APU400がある特定の命令(例えばロックラインの入手および予約命令等)を発行し、かつDRAM225の同じロックライン中で、ある動作主体がデータを更新して予約が消失したことを契機として発生する。このイベントの重要性については後述する。
ロックライン予約消失イベント以外に、信号通知イベント、デクリメンタイベント、PUイベントによって書き込まれるSPUメールボックス、DMAキュー空きイベント、DMAタグコマンド停止および通知イベント、DMAタグステータス更新イベント等のイベントが含まれうる。
APU400の信号通知レジスタ(図示せず)を目標にした命令を受けたことを契機として信号通知イベントが発生する。信号通知は、他のプロセッサ(または外部装置)がAPU400に信号を伝送すると発生する。信号は、APU400の信号通知アドレスへのライトによって伝送される。この通知を用いて、他のプロセッサは、APU400が何らかのアクションを取る必要があることをAPU400に通知できる。信号ビットをソフトウェアによって特定の装置に割り当てれば、これにより複数の信号を一緒に受信し、かつAPU400のソフトウェアによって正しく識別できる。
APU400のデクリメンタカウンタが論理値0から論理値1へ変わったことを契機として、デクリメンタイベントが発生する。PU203がAPU400のメールボックス(図示せず)に、APU400のメールボックスチャネルからメールボックスデータが利用できるというメッセージを書き込むと、APUメールボックスイベントの契機となる(すなわち、APUメールボックスイベントがトリガされる)。
DMA命令キューがフル状態からノンフル状態へ移ると、DMAキュー空きイベントの契機となる。DMAキュー空きイベントを使用して、APU400は、DMAキューに命令を受ける空きスペースがあることを判定する。必ずしもDMAキュー空きイベントを使用する必要はなく、それ以前のDMAC205への命令伝送の試みが失敗した場合に用いる。
メモリインタフェイス215および/またはDMAC205が1つ以上のDMA命令(停止および通知フラグがセットされた状態のリストのエレメント付き)を受けると、DMAタグ命令停止および通知イベントが発生する。これが発生すると、リストエレメントが完了され、APU400上で稼動しているプログラムによって停止が確認されるまでリストの残り部分の処理が中止される。DMAタグ命令停止および通知イベントは、APU400がDMAリスト中のある特定の命令エレメントが完了したかどうかを判定するのに使用される。これは、データの移動に対するプログラムの同期に使用してもよいし、またはAPU400がDMAリストの残りのエレメントを更新できるようにDMAリストの処理延期に使用してもよい。
APU400中のある特定の(タグステータス更新を要求する)チャネルにタグステータス更新リクエストが書き込まれると、DMAタグステータス更新イベントが発生する。DMAタグステータス更新イベントは、DMAC205によって特定のDMA命令の組が完了した場合に、割込(通知)を受けるべきAPU400により、必要に応じて使用できる。これを利用して、プログラムの実行と同時にDMA転送を実行することをサポートし、リソースの効率的使用を行う。
データ処理中に必要な場合、APU400はイベントステータスレジスタ410Aをポーリングして、1つ以上のこれらまたは他のイベントの状態を判定できる。好適には、1つ以上のイベントはAPU400外部および/または特定のPE201の外部のものである。イベントステータスマスク410Bは、好適には、特定の1つまたは複数のビットだけが稼動状態となるように、イベントステータスレジスタ410Aの一部のビットをマスクするように用いられる。好適には、イベントステータスマスクレジスタ410Bによって与えられるデータは、その後のライト動作によって変更されるまで保持される。従って、(外部)イベントステータス問い合わせまたは待機イベントごとにデータを再度特定する必要はない。このため、マスクされている間に発生するイベントは、イベントステータスには示されない。ただしマスクイベントは、マスクがはずされるまで、またはイベント終了ステータス確認レジスタ410Cに書き込むことによって確認されるまで、未決のまま中断にされる。中断中でマスクされたイベントをイベント終了ステータス確認レジスタ410Cに書き込むと、イベントがクリアーされる。もちろん、マスクされたイベントは好適にはマスクがはずされるまで中断されるので、イベントステータスレジスタ410Aに報告されていないマスクイベントが確認されるとそのイベントはクリアーされる。
本実施形態は、好適には図2のBE301を用いて実行されるが、他のマルチプロセッサシステムを用いてもよい。例えば、図4のマルチプロセッサシステム450を用いて、本実施形態の1つ以上の態様を実行できる。マルチプロセッサシステム450は、バス458によってメモリインタフェイス454に接続された複数のプロセッサ452A〜452C(使用数は任意)を含む。メモリインタフェイス454は、別のバス460を介してDRAM等の共有メモリ456と通信する。メモリインタフェイス454は、(図2のメモリインタフェイス215Aと同様に)プロセッサ群452A〜452C間で分散されてもよく、かつ必要に応じてDAMCと共に動作してもよい。プロセッサ群452A〜452Cは、好適には図3と同一または同様の構造を用いて実装される。
イベントステータスレジスタ410A〜410C(図3)の重要性、特にロックライン予約消失イベントに関連するレジスタの重要性は、同期および/または相互排他制御のためのアトミック更新プリミティブを説明すればより明確になる。本実施形態の重要かつ有利な態様をより完全に理解するため、従来のマルチプロセッサ同期および/または相互排他制御動作についてまず説明する。同期および相互排他制御はPE201によって行われ、APU400上で稼動しているソフトウェアが、共有メモリであるDRAM225中のデータへのアクセスを同期させ、かつ複数のAPU群400による動作実行を同期させる能力をもつようにする。このために、リードシーケンス、更新シーケンス、およびライトシーケンスを含むアトミックシーケンスが与えられる。一般に、これらシーケンスは、比較かつスワップ命令、フェッチかつNO−OP(動作なし)命令、フェッチかつストア命令、フェッチかつAND命令、フェッチかつインクリメント/ADD命令、およびテストかつセット命令という形をとる。PU203上では、これらシーケンスは実際の命令ではないが、予約付ロードおよび条件付きストアのように、アトミック更新プリミティブに関連したソフトウェアを使用して実装される。一例として、既存のテストかつセットプリミティブ、および比較かつスワッププリミティブのソフトウェア実装は、以下の擬似コードを用いる。
loop: 予約付きロード
期待値と比較
同じでなければloopへ
条件付きで新たな値をストア
予約消失の場合はloopに戻る
exit: continue
上記の擬似コードシーケンス、およびその他の同様の同期シーケンスは、データが期待値と等しくなるまで、ロックライン上で「スピン」を要求する。このスピンは長時間にわたって発生しうるので、CPUサイクルおよびメモリサイクルの浪費となる。従ってAPU400は、過度の電力量を消費し、かつ過度の熱を発する。
本実施形態の1つ以上の態様では、イベントステータスレジスタ410Aの1つ以上のイベント、例えばロックライン予約消失イベント等を用いて、アトミック更新予約の消失をAPU400に通知する。アトミック更新予約は、特定のデータロード命令(ロックラインを入手かつ予約等)を用いて実現する。一般に、共有メモリDRAM225中の予約したアドレス(ロックライン)においてデータの更新、特に外部からの更新が発生すると、予約は消失する。この技術を用いて、テストアンドセットプリミティブ、およびコンペアアンドスワッププリミティブのソフトウェア実装を、以下の擬似コード等によって書き直すことができる。
loop: 予約付きロード
期待値と比較
同じならcontinue
外部イベントチャネルから読取り
停止して外部イベントを待機
イベントが「予約消失」ならば、loopへ
そうでなければ他のタスクへ進む
continue: 条件付きで新たな値をストア
予約が取消されればloopへ戻る
上記擬似コードをイベントステータスレジスタ410Aと組み合わせることにより、APU群400が消費する電力、ひいては発熱量を大幅に削減する。具体的には、APU群400は、ある外部イベントが割り込むまで「休止モード」すなわち低電力消費モードに入ることができる。例えば、APU400のシステムクロックを停止すれば低電力消費モードに入るようにしてもよい。従って、あるAPU400が共有メモリDRAM225中のある1つのデータの取得を待機中であるか、または同期バリア値が所定値になることを待機中である場合、APU400は低電力消費モードに入り、外部イベントによる低電力消費モードに対する割込、すなわち当該モード中に発生する割込を待機できる。予約消失イベント(イベントステータスレジスタ410A中で表示)をAPU400の低電力消費モードに対して許可された割込を発生する外部イベントとすることは、アトミック更新予約システムに対するユニークかつ強力な改良であり、より効率的なマルチ処理を可能するという利点をもつ。
次に図3および図5を参照して、予約消失イベントを使用したAPU群400のアトミック更新への参加許可についてより詳細に説明する。図5は、好適には1つ以上のPE201(図2)によって実行されるある動作を示すフロー図である。プロセスの開始として、あるAPU400がロード命令をDMACおよび/またはメモリインタフェイス215に発行する(動作500)。DMAC205とメモリインタフェイス215とは一緒に機能して、DRAM225との間でデータのリード/ライトを行う。これら各要素は個別要素として示すが、1つの装置として実装してもよい。またDMAC205の機能および/またはメモリインタフェイス215の機能は、「メモリインタフェイス」または「メモリマネジメント」ユニットによって実行されると表現できる。
ロード命令は、好適にはデータを予約付きロードすることであり、上記ではロックライン入手および予約命令と呼んでいる。本質的には、これは共有メモリDRAM225のある実効アドレスのデータに対する要求である。動作502では、メモリインタフェイス(DMAC205および/またはメモリインタフェイス215)は、好適にはロード命令が標準的なロード命令か、またはロックライン入手および予約命令かを判定する。もしロード命令が標準的な命令ならば、プロセスフローは好適には動作504へ分岐し、標準的な処理技術を使用してロード命令を履行する。
一方、もしロード命令がロックライン入手および予約命令ならば、プロセスフローは好適には動作506へ分岐する。そこでメモリインタフェイスは、好適には、APU400が発行した実効アドレスを共有メモリDRAM225の物理アドレスに変換する。動作508では、メモリインタフェイスはDRAM225の当該物理アドレスにストアされたデータにアクセスして、APU400に転送する。好適には、DRAM225の物理アドレスの1つまたは複数のラインからデータがアクセスされる場合、メモリインタフェイスはAPU400の識別番号を当該物理アドレスに関連付けられたステータス位置に書き込む。動作512では、メモリインタフェイス215は、好適には、APU400のイベントステータスレジスタ410Aの予約消失ステータスビット(単数または複数)をリセットする。これによりその物理アドレスの1つまたは複数のラインをロックする。メモリインタフェイスは、好適にはDRAM225のこの予約された1つまたは複数のラインをモニタする。もしPE201の外部にあるプロセッサ等の他のプロセッサがDRAM225の予約された1つまたは複数のラインのデータを更新すれば(動作516)、メモリインタフェイスは、好適には当該ラインを予約したAPU400のイベントステータスレジスタ410Aの予約消失ステータスビットをセットする(動作518)。
図6も参照すると、メモリインタフェイスがDRAM225の予約された1つまたは複数のラインをモニタしている間(動作514)、APU400は好適には要求されたデータ(予約付き)を共有メモリDRAM225から受ける(動作520)。データを処理する必要がある場合(動作522)、APU400はAPU400上で稼動しているソフトウェアプログラムによって必要とされる任意の処理を実行する(動作524)。動作526では、APU400は低電力消費モード(スリープモード)に入る。例えば、APU400はデータが所定値でない場合にのみ低電力消費モードに入るようにしてもよい。これは特に、バリヤ同期が望ましい場合(これについては以下で詳述する)に有用である。APU400は、割込の発生が許可された適格な外部イベントが発生するまで低電力消費モードにとどまる(動作528)。
例えば、外部イベントは、予約の消失(外部プロセッサがDRAM225の1つまたは複数の予約ラインからのデータを更新した等)でありうる。動作530では、APU400は好適にはイベントステータスレジスタ410Aをポーリングして、1つまたは複数の予約ステータスビットがセットされているかどうかを判定する(動作532)。もし予約が消失していなければ(すなわち予約ステータスビットがセットされていなければ)、APU400は他のタスクを自由に実行できる(動作534)。しかしAPU400が予約消失を判定すれば(すなわち予約ステータスビットがセットされていれば)、プロセッサは、好適にはループをたどって最初に戻り(図5)、APU400が予約消失なくデータ操作タスクを実行するまで、プロセスが繰り返される。
上述したように、本実施形態は、バリヤ同期技術に従うマルチ処理の実行に関連して使用してもよい。例えば、マルチ処理システム(図4のシステム450等)の複数のプロセッサの1つがいわゆる同期バリア値が所定値になるまで待機している場合、そのプロセッサは、予約消失イベント等の外部イベントが発生するまで、低電力消費モードに入るか、または他の処理タスクの実行を開始する。バリヤ同期技術は、マルチ処理システム中の全プロセッサが現在の処理タスクを完了するまでそれら複数のプロセッサ群が次の処理タスク開始しないようにしたい場合に用いられる。
以下、図4および図7〜図8を参照して、バリヤ同期技術に関連した本実施形態の使用に関してより詳細に説明する。バリヤ同期技術では、共有変数「s」が共有メモリ456中にストアされ、これを用いてプロセッサ群452A〜452Cのすべてが現在の処理タスクを完了するまで次の処理タスクの実行を阻止または許可する。より特定的には、図7を参照して、所与のプロセッサ452が他のプロセッサ群の処理タスクと同期すべき複数の処理タスクの1つ(すなわち現在の処理タスク)を実行する(動作600)。現在のタスクが完了すると、プロセッサ452はメモリインタフェイス454に予約付ロード命令を発行して共有変数「s」の値を入手し、これを局所変数「w」としてストアする(動作602)。説明のため共有変数sの値は「0」に初期化されると仮定するが、初期値は適当な任意の値にできる。動作604では、プロセッサ452は、局所変数wの値を、バリヤ同期プロセスに参加しているプロセッサ群452の数を表す値Nに対してインクリメントまたはデクリメントする。バリヤ同期プロセスに参加しているプロセッサが3つとすると、適当なN値は3である。本例では、動作604でプロセッサ452は局所変数wをインクリメントする。
動作606では、プロセッサ452は条件付ストア命令を発行して、局所変数wの値を共有DRAM456の共有変数sに関連付けられたメモリ位置にストアできるようにする。ステップ602でロードされた共有変数sの値が初期値0だったと仮定すると、動作606で条件付でストアされる値は1となる。動作608では、予約消失の有無の判定が行われる。もし予約が消えていれば、プロセスフローは動作602へ戻り、動作602,604および606が繰り返される。もし予約が消えていなければ、プロセスフローは動作610(図8)へ進む。共有変数sに値1をうまくストアできれば、3つのプロセッサのうちの1つが現在のタスクを完了したことを示す。
動作610では、局所変数wの値がNに等しいかどうかが判定される。もし等しければ、プロセスフローは動作612へ進み、目標値が共有変数sとして共有DRAM456中にストアされる。その後、プロセスフローは動作614へ進むが、動作610の判定が「No」だった場合にもプロセスフローは動作614へ進む。動作614では、プロセッサ452は予約付ロード命令をメモリインタフェイス454に発行して、共有DRAM456から共有変数sの値を入手し、この値を局所変数wにストアする。
動作616では、局所変数wが目標値と等しいかどうかが判定される。例えば、目標は0またはそれ以外の数でもよい。もし判定が「Yes」ならば、プロセスフローは好適には動作618へ進み、複数の処理タスクのうちの次のタスクが実行される。つまり、共有変数の値sが目標値に設定されていれば、プロセッサ群452は次の処理タスクを開始することが許可される。動作616の判定が「No」ならば、プロセッサ452は低電力消費状態に入るか、またはバリヤ同期プロセスとは関連のない別の処理タスクを開始する。
動作622では、予約(すなわち動作614の予約付ロード)が消失したかどうかが判定される。消失していなければ、プロセッサ452は動作620の状態にとどまる。予約が消えていれば、動作624で低電力消費モードが中断され(または他の処理タスクが中止または終了され)、プロセスループは動作614へ戻る。動作614,616,620,622および624は、動作616の判定が肯定になり、これによりプロセスフローが動作618へ進んで複数の処理タスクの次のタスクが開始されるまで繰り返される。プロセッサ452が次の処理タスクを完了すると、プロセスフローは動作602へ戻り、全プロセスが繰り返される。
バリヤ同期技術にアトミック更新の原理を用いる利点は、バリヤ同期プロセスに参加しているプロセッサ452が低電力消費モードに入るか、または別の処理タスクに入ることができ(動作620)、これにより電力消費を低減し、マルチ処理機能全体の効率を改善できることである。
本実施形態の他の態様では、PE201および/またはBE301を用いて、図9に示すようなコンピュータシステム101の分散型アーキテクチャを実装できる。システム101は、複数のコンピュータおよびコンピューティングデバイスが接続されたネットワーク104を含む。ネットワーク104は、LAN、インターネット等のグローバルネットワーク、またはその他のコンピュータネットワークで構成できる。
ネットワーク104に接続されたコンピュータおよびコンピューティングデバイス(ネットワークの「メンバ」)は、クライアントコンピュータ106、サーバコンピュータ108、個人携帯端末(PDA)110、ディジタルテレビ(DTV)112、ならびにその他の有線または無線コンピュータおよびコンピューティングデバイス等を含む。ネットワーク104のメンバによって用いられるプロセッサは、PE201および/またはBE301で構成される。
システム101のサーバ108は、クライアント106よりも多くのデータおよびアプリケーションを実行し、クライアント106よりも多くの計算モジュールを含む。一方、PDA110は本例では処理量が最も少ない。従ってPDA110に含まれる計算モジュール数は一番少ない。DTV112はクライアント106とサーバ108との間のあるレベルの処理を実行する。従って、DTV112はクライアント106とサーバ108の間の数の計算モジュールを含む。
システム101のこのホモジーニャスな(均一な)構成により、適応性、処理速度、および処理効率が向上する。システム101の各メンバは同一計算モジュール(PE201)を1つ以上用いて(またはそのある部分を用いて)処理を行うので、データおよびアプリケーションの処理を実際に行っているのはどのコンピュータまたはコンピューティングデバイスであるかは重要ではない。さらに、特定のアプリケーションおよびデータの処理は、ネットワークメンバ間で共有できる。システム101によって処理されるデータおよびアプリケーションを含むセルをシステム中で一意に識別することにより、処理がどこで発生したかに関係なく、処理を要求しているコンピュータまたはコンピューティングデバイスに処理結果を伝送できる。処理を実行しているモジュールは共通の構造をもち、かつ共通の命令セットアーキテクチャを使用しているので、プロセッサ間で互換性を得るためにソフトウェアに追加すべきレイヤによる計算負荷を回避できる。この構成およびプログラミングモジュールによって、例えばマルチメディア・アプリケーションのリアルタイムの実行に必要な処理速度を達成できる。
システム101によって改善される処理速度および処理効率の利点をさらに高めるため、本システムによって処理されるデータおよびアプリケーションは、一意に識別され、均一にフォーマットされたソフトウェアセル102にパッケージされる。各ソフトウェアセル102は、アプリケーションおよびデータ両方を含む、または含みうる。各ソフトウェアセルはまた、ネットワーク104およびシステム101中でセルをグローバルに識別するIDを含む。このソフトウェアセルの均一な構造、およびソフトウェアセルのネットワーク中での一意的な識別により、ネットワークの任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント106はソフトウェアセル102をフォーミュレート(すなわち所与の形式で生成)するが、クライアント106の処理能力の限度のため、そのソフトウェアセルをサーバ108に伝送して処理してもよい。従ってソフトウェアセル102は、ネットワーク104上で利用できる処理リソースに応じてネットワーク104中を移動できる。
システム101のプロセッサおよびソフトウェアセル102の均一構造はまた、既存の異種ネットワークの多くの問題を回避する。例えば、任意の命令セットを用いて任意の命令セットアーキテクチャ上でアプリケーションの処理の許可を求める、効率的とはいえないプログラミングモデル、例えばJava(登録商標)仮想マシーン等の仮想マシーンが回避される。従って、システム101は従来のネットワークに比べて、はるかに効果的かつ効率的な広帯域処理を実現できる。
好適には、計算ネットワークの1つ以上のメンバは、予約消失イベントを、あるAPU400の低電力消費モードに対する割込許可の契機(すなわちトリガ)として利用する。さらに、予約が取消された場合、APU400は、好適には共有メモリDRAM中で予約が取り消されることなく操作タスクが完了するまで、その操作タスクを繰り返す。これはアトミック更新予約システムの独自かつ強力な改良であり、より効率的なマルチ処理を可能にする。
実施形態において説明した「予約」ということばは、「当該アドレスのデータが更新されたかどうかを監視する対象とする」という意味をもち、その本義は、「当該アドレスのデータが更新されないよう保存の対象とする」という意味である。したがって、「予約消失」とは、保存の対象としたにもかかわらず更新が発生したら生じる。また、「予約付きロード」は、そのアドレスからデータをロードするとともに、以降、そのアドレスに対する更新が発生するかどうかを検査の対象とする命令と考えることができる。すなわち、実施形態でいう「予約」は、更新を禁止しないが、保存の対象とする、という意味と考えることができる。「更新」は、一般には書換や修正を意味するが、いわゆるリードモディファイライトのように、そのデータを読み出して更新し、書き込む狭い意味のモディファイを含む。「確認」は、その通常の意味のほかに、ソフトウェアまたはハードウェアによってアクノリッジされるプロセス自体を指すこともある。
以上、本発明を実施形態を参照して説明したが、この実施形態は本発明の原理および適用法を例示するにすぎない。従って、これら例示としての実施形態には多数の変形が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案することができる。
実施の形態に係る処理要素(PE)の構成の一例を示す図である。 実施の形態に係る広帯域エンジン(BE)の構成の一例を示す図である。 実施の形態に係る付属処理ユニット(APU)の構成の一例を示す図である。 実施の形態の1つ以上の態様に係るマルチプロセッサシステムの実装に適した他の構成を示す図である。 実施の形態に係る処理ルーチンの1つ以上の他の態様を示すフロー図である。 実施の形態に係る処理ルーチンの1つ以上の他の態様を示すフロー図である。 実施の形態に係る処理ルーチンの1つ以上の他の態様を示すフロー図である。 実施の形態に係る処理ルーチンの1つ以上の他の態様を示すフロー図である。 実施の形態に係るコンピュータネットワークの全体構成の一例を示す図である。
符号の説明
201 処理要素(PE)、203 処理ユニット(PU)、207、209、211、213 付属処理ユニット(APU)、215 メモリインタフェイス、225 DRAM。

Claims (29)

  1. a)共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令を発行するステップと、
    b)前記データをそのデータに対して任意の操作が実行できるよう前記共有メモリから受けるステップと、
    c)(i)低電力消費モードに入る、(ii)他の処理タスクを開始する、の少なくとも一方を行うステップと、
    d)前記共有メモリ中の前記アドレスのデータが更新されると予約消失の通知を受信するステップと、
    を含む方法。
  2. 請求項1に記載の方法において、前記予約消失の通知は、(i)低電力消費モードに対する割込、(ii)他の処理タスクに対する割込、の少なくとも一方の割込として機能する方法。
  3. 請求項1に記載の方法において、前記低電力消費モードに入るステップ、または他の処理タスクを開始するステップは、前記データが所定値でない場合に限り実行される方法。
  4. 請求項3に記載の方法であって、前記通知が予約消失を示す場合、ステップa)〜d)を繰り返す方法。
  5. 請求項1に記載の方法であって、前記共有メモリにおいて前記データがアクセスされると、前記予約付ロード命令を発行するプロセッサに関連付けられた識別番号を前記共有メモリの前記アドレスで指定された位置に関連付けられたステータス位置に書き込むステップをさらに含む方法。
  6. 請求項1に記載の方法であって、前記共有メモリ中の前記アドレスのデータが更新されると、前記プロセッサのステータスレジスタ中の予約消失ビットに予約消失を表示せしめるステップをさらに含む方法。
  7. 請求項6に記載の方法において、予約消失を判定するステップは、前記ステータスレジスタを定期的に監視し、前記予約消失ビットが予約消失を示していれば予約消失と判定するステップを含む方法。
  8. 共有メモリと、
    前記共有メモリに動作時に接続されるメモリインタフェイスユニットと、
    前記メモリインタフェイスユニットと通信する複数の処理ユニットとを含み、前記処理ユニットの少なくとも1つは以下の動作を実行するシステム。
    a)共有メモリにおいて、データが格納されうる、要求されたアドレスを含む予約付ロード命令を発行する動作と、
    b)前記データをそのデータに対して任意の操作が実行できるよう前記共有メモリから受ける動作と、
    c)(i)低電力消費モードに入る、(ii)他の処理タスクを開始する、の少なくとも一方の動作と、
    d)前記共有メモリ中の前記アドレスのデータが更新されると消失する予約消失の通知を受信する動作。
  9. 請求項8に記載のシステムにおいて、前記予約消失の通知は、(i)低電量消費モードに対する割込、(ii)他の処理タスクに対する割込、の少なくとも一方の割込として機能するシステム。
  10. 請求項8に記載のシステムにおいて、前記処理ユニットの少なくとも1つは、データが所定値でない場合に限り、低電力消費モードに入るか、他の処理タスクを開始するように動作するシステム。
  11. 請求項10に記載のシステムにおいて、前記処理ユニットの少なくとも1つは、前記通知が予約消失を示す場合、前記ステップa)〜d)を繰り返すシステム。
  12. 共有メモリと、
    前記共有メモリに接続され、前記共有メモリについて要求されたアドレスからデータを読み出し、かつデータを前記共有メモリについて要求されたアドレスに書き込むメモリインタフェイスユニットと、
    前記メモリインタフェイスユニットと通信し、前記メモリインタフェイスユニットに、前記共有メモリの特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを命令する複数の処理ユニットと、
    を含み、前記処理ユニットの少なくとも1つは、前記共有メモリ中の前記特定アドレスのデータが他の1つ以上の処理ユニットによって更新されると消失する予約消失の有無を示すビットを有するステータスレジスタを含むシステム。
  13. 請求項12に記載のシステムにおいて、前記少なくとも1つの処理ユニットは、前記データが所定値でなければ低電力消費モードに入るシステム。
  14. 請求項13に記載のシステムにおいて、前記少なくとも1つの処理ユニットはさらに、低電力消費モードに対する割込が許可されたイベントに応答し、低電力消費モードを抜けるシステム。
  15. 請求項14に記載のシステムにおいて、前記少なくとも1つの処理ユニットはさらに、前記ステータスレジスタのビットを定期的に監視して、予約が消失したかどうかを判定するシステム。
  16. 請求項15に記載のシステムにおいて、前記少なくとも1つの処理ユニットはさらに、(i)前記メモリインタフェイスユニットに、前記共有メモリの前記特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するシステム。
  17. 請求項14に記載のシステムにおいて、低電力消費モードに対する割込が許可されるイベントは予約の消失であるシステム。
  18. 請求項12に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記共有メモリから前記データがアクセスされると、予約付ロード命令を発行する前記少なくとも1つの処理ユニットに関連付けられた識別番号を、前記共有メモリの前記特定アドレスに関連付けられたステータス位置に書き込むシステム。
  19. 請求項12に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記共有メモリ中の前記特定アドレスのデータが他の処理ユニットによって更新されたかどうかをモニタすることにより、前記予約の消失の有無をモニタするシステム。
  20. 請求項19に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記少なくとも1つの処理ユニットのステータスレジスタの前記ビットに予約消失を表示させるシステム。
  21. 共有メモリと、
    前記共有メモリに接続され、前記共有メモリについて要求されたアドレスからデータを読み出し、かつデータを前記共有メモリについて要求されたアドレスに書き込むメモリインタフェイスユニットと、
    前記メモリインタフェイスユニットと通信し、前記メモリインタフェイスユニットに、前記共有メモリの特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを命令する複数の処理ユニットとを含み、
    前記処理ユニットの少なくとも1つは、(i)前記データを前記共有メモリの前記特定アドレスにストアする命令を発行した後、低電力消費モードに入る、(ii)他の処理タスクを開始する、の少なくとも一方を行うシステム。
  22. 請求項21に記載のシステムにおいて、前記少なくとも1つの処理ユニットは、前記データが所定値でない場合にのみ、低電力消費モードに入るか、または他の処理タスクを開始するシステム。
  23. 請求項21に記載のシステムにおいて、前記少なくとも1つの処理ユニットはさらに、予約消失に応答し、(i)低電力消費モードから抜ける、(ii)他の処理タスクを中止する、の少なくとも一方を行うシステム。
  24. 請求項21に記載のシステムにおいて、前記少なくとも1つの処理ユニットは、前記共有メモリ中の前記特定アドレスのデータが更新された場合に消失する予約消失の有無を示すビットを有するステータスレジスタを含むシステム。
  25. 請求項24に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記少なくとも1つの処理ユニットの前記ステータスレジスタの前記ビットに予約消失を表示させるシステム。
  26. 請求項24に記載のシステムにおいて、前記少なくとも1つの処理ユニットはさらに、前記ステータスレジスタの前記ビットを定期的に監視して、予約が消失したかどうかを判定するシステム。
  27. 請求項25に記載のシステムにおいて、前記少なくとも1つの処理ユニットはさらに、(i)前記メモリインタフェイスユニットに、前記共有メモリの前記特定アドレスのデータに対し、そのデータについて任意の操作が実行できるよう予約付ロードを再度命令するシステム。
  28. 請求項21に記載のシステムにおいて、前記メモリインタフェイスユニットは、前記データが前記共有メモリからアクセスされると、前記予約付きロード命令を発行する前記少なくとも1つの処理ユニットに関連付けられた識別番号を、前記共有メモリの前記特定アドレスに関連付けられたステータス位置に書き込むシステム。
  29. 共有メモリと、
    前記共有メモリに動作時に接続されるメモリインタフェイスユニットと、
    前記メモリインタフェイスユニットと通信し、バリヤ同期を用いて複数のタスクを並列に実行するよう動作するN個の処理ユニットとを含むシステムであって、前記N個の処理ユニットは、
    a)前記複数のタスクの1つを実行するステップと、
    b)局所変数wを初期化するステップと、
    c)前記メモリインタフェイスユニットに予約付ロード命令を発行し、前記共有メモリからの共有変数sを前記局所変数wにロードするステップと、
    d)前記局所変数wを値Nへ向かってインクリメントまたはデクリメントさせるステップと、
    e)前記メモリインタフェイスユニットに条件付ストア命令を発行して、前記局所変数wの値を前記共有メモリ中の前記共有変数sとしてストアさせるステップと、
    f)前記共有メモリ中の前記アドレスの変数が更新されて予約が消失すると、前記ステップa)〜e)を繰り返すステップと、
    g)前記局所変数がNに達すると、前記メモリインタフェイスユニットにストア命令を発行して、目標値を前記共有メモリ中に前記共有変数sとしてストアさせるステップと、
    h)前記メモリインタフェイスユニットに予約付ロード命令を発行して、前記共有メモリからの前記共有変数sを前記局所変数wにロードするステップと、
    i)前記局所変数が前記目標値でなければ、低電力消費モードに入るか、または他の処理タスクを開始し、それ以外の場合はステップk)へ進むステップと、
    j)他のプロセッサが前記共有メモリ中の前記共有変数に対する要求を行うと消失する予約消失通知を受信すると、低電力消費モードから抜けるか、または前記他の処理タスクを中止して、前記ステップh)およびi)を繰り返すステップと、
    k)前記複数のタスクのうちの次のタスクを実行するステップとによって、複数のタスクを並列に実行する、システム。
JP2004349195A 2003-12-01 2004-12-01 マルチタスク処理方法および装置 Pending JP2005166056A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/725,129 US20050120185A1 (en) 2003-12-01 2003-12-01 Methods and apparatus for efficient multi-tasking

Publications (1)

Publication Number Publication Date
JP2005166056A true JP2005166056A (ja) 2005-06-23

Family

ID=34620232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004349195A Pending JP2005166056A (ja) 2003-12-01 2004-12-01 マルチタスク処理方法および装置

Country Status (7)

Country Link
US (1) US20050120185A1 (ja)
EP (1) EP1702264A1 (ja)
JP (1) JP2005166056A (ja)
KR (1) KR100841864B1 (ja)
CN (1) CN1942858A (ja)
TW (1) TW200532471A (ja)
WO (1) WO2005055057A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134771A (ja) * 2005-12-01 2009-06-18 Sony Computer Entertainment Inc 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術
JP2010033556A (ja) * 2008-07-24 2010-02-12 Internatl Business Mach Corp <Ibm> 非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に猶予期間の低電力検出のための方法、システム及びコンピュータ・プログラム
JP2013519955A (ja) * 2010-02-18 2013-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム
JP2015210813A (ja) * 2014-04-24 2015-11-24 富士通株式会社 同期方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2445294B (en) * 2005-08-23 2009-01-21 Advanced Micro Devices Inc Method for proactive synchronization within a computer system
US7398368B2 (en) 2005-12-01 2008-07-08 Sony Computer Entertainment Inc. Atomic operation involving processors with different memory transfer operation sizes
US20070174411A1 (en) * 2006-01-26 2007-07-26 Brokenshire Daniel A Apparatus and method for efficient communication of producer/consumer buffer status
US8219763B2 (en) 2006-03-16 2012-07-10 International Business Machines Corporation Structure for performing cacheline polling utilizing a store and reserve instruction
US8117389B2 (en) * 2006-03-16 2012-02-14 International Business Machines Corporation Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions
US9983874B2 (en) * 2006-03-16 2018-05-29 International Business Machines Corporation Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling
US9390015B2 (en) * 2006-03-16 2016-07-12 International Business Machines Corporation Method for performing cacheline polling utilizing a store and reserve instruction
US8024521B2 (en) * 2007-03-13 2011-09-20 Sony Computer Entertainment Inc. Atomic operation on non-standard sized data using external cache
KR100895298B1 (ko) * 2007-04-30 2009-05-07 한국전자통신연구원 멀티미디어 데이터의 효율적인 병렬 처리를 위한 장치,방법, 데이터 처리 엘리먼트
EP2271992B1 (en) 2008-04-28 2013-04-03 Hewlett-Packard Development Company, L. P. Method and system for generating and delivering inter-processor interrupts in a multi-core processor and in certain shared-memory multi-processor systems
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
JP5304194B2 (ja) * 2008-11-19 2013-10-02 富士通株式会社 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
KR101553648B1 (ko) * 2009-02-13 2015-09-17 삼성전자 주식회사 재구성 가능한 구조의 프로세서
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8131935B2 (en) * 2009-04-07 2012-03-06 International Business Machines Corporation Virtual barrier synchronization cache
US8095733B2 (en) * 2009-04-07 2012-01-10 International Business Machines Corporation Virtual barrier synchronization cache castout election
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
US8966323B2 (en) * 2010-12-23 2015-02-24 Arm Limited Monitoring multiple data transfers
EP2798468A4 (en) * 2011-12-29 2016-08-10 Intel Corp ACCESS TO CONFIGURATION AND STATUS REGISTERS FOR A CONFIGURATION SPACE
US9285865B2 (en) * 2012-06-29 2016-03-15 Oracle International Corporation Dynamic link scaling based on bandwidth utilization
WO2014018912A1 (en) * 2012-07-27 2014-01-30 Huawei Technologies Co., Ltd. The handling of barrier commands for computing systems
US20140032854A1 (en) * 2012-07-30 2014-01-30 Futurewei Technologies, Inc. Coherence Management Using a Coherent Domain Table
GB2528115B (en) * 2014-07-11 2021-05-19 Advanced Risc Mach Ltd Dynamic saving of registers in transactions
GB2569775B (en) * 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
GB2575292B (en) 2018-07-04 2020-07-08 Graphcore Ltd Code Compilation for Scaling Accelerators
FR3091363B1 (fr) * 2018-12-27 2021-08-06 Kalray Système de synchronisation inter-processeurs configurable
CN111124696B (zh) * 2019-12-30 2023-06-23 北京三快在线科技有限公司 单元组创建、数据同步方法、装置、单元和存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0368144B1 (en) * 1988-11-10 1996-02-07 Motorola, Inc. Digital computing system with low power mode
JP2500101B2 (ja) * 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
JP2550897B2 (ja) * 1993-11-29 1996-11-06 日本電気株式会社 マルチプロセッサシステムのバリア同期装置
US5566321A (en) * 1993-12-13 1996-10-15 Cray Research, Inc. Method of managing distributed memory within a massively parallel processing system
US5774731A (en) * 1995-03-22 1998-06-30 Hitachi, Ltd. Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage
US5983326A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
US5953536A (en) * 1996-09-30 1999-09-14 Intel Corporation Software-implemented tool for monitoring power management in a computer system
JP2001508214A (ja) * 1997-10-29 2001-06-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ブロック編制データ転送同期化方法及びシステム
US6275907B1 (en) * 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
JP2002041489A (ja) * 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
JP3426223B2 (ja) * 2000-09-27 2003-07-14 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム
JP4253796B2 (ja) * 2001-11-08 2009-04-15 富士通株式会社 コンピュータ及び制御方法
JP3884990B2 (ja) * 2002-04-26 2007-02-21 富士通株式会社 マルチプロセッサ装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134771A (ja) * 2005-12-01 2009-06-18 Sony Computer Entertainment Inc 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術
JP2010033556A (ja) * 2008-07-24 2010-02-12 Internatl Business Mach Corp <Ibm> 非プリエンプタブルなデータ参照者に影響する共用データ要素の更新動作の後に猶予期間の低電力検出のための方法、システム及びコンピュータ・プログラム
JP2013519955A (ja) * 2010-02-18 2013-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム
US9052889B2 (en) 2010-02-18 2015-06-09 International Business Machines Corporation Load pair disjoint facility and instruction therefor
JP2015210813A (ja) * 2014-04-24 2015-11-24 富士通株式会社 同期方法

Also Published As

Publication number Publication date
TW200532471A (en) 2005-10-01
EP1702264A1 (en) 2006-09-20
KR100841864B1 (ko) 2008-06-27
CN1942858A (zh) 2007-04-04
KR20060121266A (ko) 2006-11-28
WO2005055057A1 (en) 2005-06-16
US20050120185A1 (en) 2005-06-02

Similar Documents

Publication Publication Date Title
KR100841864B1 (ko) 효율적인 멀티태스킹을 위한 방법 및 장치
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
US7921151B2 (en) Managing a plurality of processors as devices
JP4322259B2 (ja) マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置
JP4421561B2 (ja) ハイブリッドdmaキュー及びdmaテーブルのデータ処理方法、装置及びシステム
KR100866739B1 (ko) 광대역 네트워크용 컴퓨터 구조에 있어서 데이터 동기를위한 시스템 및 방법
KR100959748B1 (ko) 컴퓨터 프로세서 상에서 프로그램들 및 상기 프로그램들과 관련된 데이터를 처리하는 방법
US7478390B2 (en) Task queue management of virtual devices using a plurality of processors
KR100840113B1 (ko) 광대역 네트워크상의 컴퓨터 구조를 위한 처리 모듈
US7516334B2 (en) Power management for processing modules
US8549521B2 (en) Virtual devices using a plurality of processors
US7680972B2 (en) Micro interrupt handler
US7689784B2 (en) Methods and apparatus for dynamic linking program overlay
US20060069879A1 (en) Methods and apparatus for providing a compressed network in a multi-processing system
JP2005235229A (ja) マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置
KR100570138B1 (ko) 복수의 프로세서들에 소프트웨어를 로딩하는 시스템 및 방법
JP2009093665A (ja) マルチスレッド・プロセッサ性能を制御する装置及び方法
KR20070100336A (ko) 컴퓨팅 시스템의 전력 관리 방법 및 장치
JP2007249960A (ja) キャッシュライン・ポーリングを実行する方法、装置、プログラム及び情報処理システム
JP2006216058A (ja) マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置
JP2005322240A (ja) インデックス付きレジスタアクセス用の方法および装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070319

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070925