JP4977159B2 - 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術 - Google Patents

特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術 Download PDF

Info

Publication number
JP4977159B2
JP4977159B2 JP2009072468A JP2009072468A JP4977159B2 JP 4977159 B2 JP4977159 B2 JP 4977159B2 JP 2009072468 A JP2009072468 A JP 2009072468A JP 2009072468 A JP2009072468 A JP 2009072468A JP 4977159 B2 JP4977159 B2 JP 4977159B2
Authority
JP
Japan
Prior art keywords
processor
value
address
cas
processing
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
JP2009072468A
Other languages
English (en)
Other versions
JP2009134771A (ja
JP2009134771A5 (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 JP2009134771A publication Critical patent/JP2009134771A/ja
Publication of JP2009134771A5 publication Critical patent/JP2009134771A5/ja
Application granted granted Critical
Publication of JP4977159B2 publication Critical patent/JP4977159B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)

Description

本出願は、その優先日と同時に出願され、本出願と譲受人が共通する米国特許出願「発明の名称:メモリ転送処理サイズが異なるプロセッサを含むアトミックな処理(ATOMIC OPERATION INVOLVING PROCESSORS WITH DIFFERENT MEMORY TRANSFER OPERATION SIZED)、James E.Marr,John P.Bates,Tatsuya Iwamoto」に関連し、関連出願の主題は、ここに引用により組み込まれる。
本実施例は、CELLプロセッサに関連し、より詳細には、CELLプロセッサのアトミック処理、に関する。
CELLプロセッサとは、並行処理可能なマイクロプロセッサの一種である。基本構成のCELLプロセッサには、1つのPPE(Power Processor Element)(「Processing Element」すなわち「PE」ともよばれる)と、複数のSPE(Synergistic Processing Elements)が含まれる。PPEとSPEは、EIB(Element Interconnect Bus)とよばれる内部高速バスによって接続される。CELLプロセッサは、携帯型デバイスからメインフレームまでのさまざまなアプリケーションについて対応可能に設計されている。
CELLプロセッサは、通常、1つのPPEと最高8つのSPEを持つ。通常、各SPEは、単一チップであるか、メインプロセッサ(main processor)や補助プロセッサ(co-processor)を含む単一チップの一部である。各SPEは、通常、SPU(Synergistic Processor Unit)とローカルストア(LS:Local store)を含む。PPEは、通常、PPU(Power Processor Unit)と1以上のキャッシュを含む。全てのSPEとPPEは、バスなどを介してメインメモリにアクセスできる。SPEは、PPEにて実行されるプログラムと連携して複数の処理を並列実行できる。SPEとPPEにおける並列処理の調整のために、アトミックな命令を実装することが多い。アトミック命令とは、SPUやPPUが単一操作にて(しばしば「アトミック」として参照されるアドレスである)メモリアドレスへの読み書きを実行し、その間は他のプロセッサの「アトミック」へのアクセスを禁じるような命令である。アトミック命令とは、相互排他的な(ミューテックス(mutex:mutual exclusion))「ロック(locked)」命令か「ロックフリー(lock-free)」命令である。ミューテックス処理では、プロセッサがアトミックをロックすると、ロックが解除されるまで他のプロセッサはアトミックへの書き込みができなくなる。「ロックフリー」処理では、1度に1つのプロセッサだけがアトミックアドレスに書き込み可能であり、他のプロセッサはアトミックに書き込まれたところに上書きできる。ロックフリーのアトミック命令は、「予約(reservation)」命令を使用する。予約命令は、予約を行ったプロセッサに対して、予約後にアトミックが上書きされたかどうかを通知する。
一般的によく知られているCELLプロセッサの連携のために使われる同期プリミティブとして、「コンペア・アンド・スワップ:compare and swap(比較と交換)」命令(以下、「CAS命令」とよぶ)がある。この命令の基本的な考え方は、「他の処理主体により変更済みでないことを条件としてメモリに保持されている値を変更すること」である。CAS命令は特定の値と保持値を比較する。一致すれば、メモリの値を更新する。不一致のときには、アプリケーションに「失敗」通知する。たとえば、CAS命令は、メモリの「0x7A」番地に保持されている値と「10」を比較する。一致すれば、「20」という値がメモリの「0x7A」番地に書き込まれる。
CAS命令は、通常、アトミックに実行されることが望ましい。CELLプロセッサでアトミック命令を実行するときに問題となるのは、PPUとSPUの間でアトミック命令のための予約サイズが違うことである。アトミック命令のサイズの違いは、PPUとSPUの間におけるメモリアクセス能力のサイズ違いに起因する。PPUのメモリアクセスは、一般的には、PPUコアのレジスタサイズにより制約される。PPUのレジスタの長さは8バイトである。1バイトは8ビットなので64ビットサイズとなる。メモリ・フロー・コントローラ(MFC:memory flow controller)はSPUのアトミック・サイズを設定する。MFCは、SPUのアトミック操作と非アトミック操作の両方についてのDMA処理に対応する。SPUのローカルストアは、16バイト、すなわち、128ビットレジスタのかたちで形成される。SPUのローカルストアのレジスタは、メインメモリのアドレスとは結びついていない。SPUは、MFCを介してメモリとアクセスする。MFCは128バイトの大きさ(chunk)で動作する。あるCELLの実装では、SPUの全てのアトミック命令は128バイトとなる。しかし、MFCが扱う非アトミック命令のサイズは1バイトから16キロバイトの範囲にわたる。そこで、SPUは予約付き読み出し(read with reservation)を実行し、128バイト分をローカルストアにコピーする。予約単位のサイズは任意である。アトミック・アクセスのサイズよりも大きなサイズであれば、論理的には正しく動作するであろう。
SPUが大容量のデータをアトミックに扱えることはとても強力であるが、PPUが1度に8バイトしかアトミックに扱えないことは不自由となりうる。アトミックな予約のサイズの違いは、ロックフリー・アルゴリズムの特徴を制限してしまう可能性がある。連結リストは、ミューテックスを使わなくても、ロックフリー・アルゴリズムで扱うことができる。しかし、もっと大きなアトミックを扱えれば、整数型よりも大きなサイズの型を一度の操作でアトミックに更新できるので、ロックフリー・アルゴリズムをもっと複雑な操作にも応用できる。PPUが8バイトよりも大きな値をアトミックに操作するためのなんらかのメカニズムを使えれば有効である。そうすれば、SPUを利用するためのいっそう高度なプログラミング・モデルを提供できるであろう。
したがって、PPEとSPEが異なるサイズのレジスタ・ラインを持つCELLプロセッサにおいて、アトミックなコンペア・アンド・スワップ命令を実行するための技術、が必要である。
上記課題を解決するために、本発明のある態様は、メインメモリ、第1のプロセッサ、第2のプロセッサを備えるプロセッサ・システムにおいて実装可能なアトミック・CAS命令に関する。第1のプロセッサと第2のプロセッサとはメモリ・アクセス・サイズに係るメモリアクセス能力が異なる。第2のプロセッサの最大メモリ転送サイズは第1のプロセッサのそれよりも大きい。第1のプロセッサは、メインメモリ上のあるアドレスについてCAS処理の実行を第2のプロセッサに指示する。アドレスにおける保持値のサイズは、第2のプロセッサの最大メモリ転送サイズ以下であり、第1のプロセッサの最大メモリ転送サイズよりも大きい。第2のプロセッサは、アトミックにCAS処理を実行し、CAS命令の成否を第1のプロセッサに通知する。
第2のプロセッサは、このアドレスの保持値について「予約付き読み出し」を実行し、保持値と1以上の参照値についての「比較処理」を実行することによって、CAS命令をアトミック実行する。比較が「成功」すると、第2のプロセッサは、そのアドレスに対する交換値の「条件付き書き込み(conditional write)」を実行する。
このような態様によれば、第2のプロセッサは第1のプロセッサの代わりにCAS命令を実行できる。それゆえ、第2のプロセッサによる処理本来の効率性を発揮できる。
本発明の教示するところは、添付図面とあわせて以下の詳細な説明を考慮することにより容易に理解されるでろう。
以下の記述においては、例示のために多くの特定的な詳細を含むけれども、本発明の範囲内において、以下の詳細について多くの変形や変更が可能であることは、当業者には理解されるところである。したがって、下記に示す本発明の実施例は、請求項に記載の発明の一般性を失わせるものでも制約を設けるものでもない。
本発明の実施例におけるCELLプロセッサでは、PPUのためにSPU・サイズのCAS命令を実装する。これには、CELLプロセッサにおけるSPU・PPU間の内部的な処理も含まれる。PPEからSPEへの通信に際しては無視しがたい遅延オーバーヘッドが発生するので、CAS命令実行中のPPEとSPEの通信はなるべく少ない方がよい。
制約的な意味ではない設例として、図1は、CBEA(CELLブロードバンドエンジン・アーキテクチャ:Cell Broadband engine architecture)として知られるアーキテクチャ準拠のCELLプロセッサ100を示している。同図設例に示すようにCELLプロセッサは、PPEの複数個の集合(PPEグループ)と、SPEの複数個の集合(SPEグループ)を備えることができる。あるいは、CELLプロセッサは、単一のSPEと単一のPPEにより、単一のSPEグループと単一のPPEグループだけを備えてもよい。グループ内の各ユニットは、ハードウェア資源を共有できる。ただし、ソフトウェアからは、SPEとPPEは独立した要素として見えなければならない。
図1に示す例では、CELLプロセッサ100は、SG−0、・・・、SG−nといった多数のSPEグループと、PG−0、・・・、PG−pといった多数のPPEグループを含む。各SPEグループは、SPE0、・・・、SPEgといった多数のSPEを含む。また、CELLプロセッサ100は、メインメモリ(MEM)と入出力機能(I/O)も含む。
各PPEグループは、PPE−0、・・・、PPE−gといった多数のPPEを含む。この例では、SPEグループは、単一のキャッシュSL1を共有する。キャッシュSL1は、ローカルストレージとメインストレージの間におけるDMA転送のためのファーストレベルキャッシュである。グループ内の各PPEは、それぞれ専用のファーストレベル(内部)キャッシュL1を持つ。加えて、グループ内のPPEは、単一のセカンドレベル(外部)キャッシュL2を共有する。図1では、SPEとPPEのためのキャッシュが示されているが、一般的なCELLプロセッサ、特にCBEA準拠プロセッサにとってこれは必須の構成ではない。
要素接続バスEIBは、上記に示したさまざまなコンポーネントを接続する。各SPEグループにおけるSPEと各PPEグループにおけるPPEは、バス・インタフェース・ユニットBIUを介して、EIBにアクセスできる。CELLプロセッサ100は、通常、プロセッサ内に2つのコントローラを含む。1つは、EIBとメインメモリMEMの間のデータの流れを制御するメモリ・インタフェース・コントローラMICである。もう一つは、I/OとEIBの間のデータの流れを制御するバス・インタフェース・コントローラBICである。MIC、BIC、BIU、EIBについての実装はさまざまであるが、各実装に応じた機能や回路については当業者にとっては既知のものである。
各SPEは、SPU(SPU0、・・・、SPUg)を備える。SPEグループにおける各SPUは、専用のローカルストレージ領域LSと専用のメモリ・フロー・コントローラMFCを備える。MFCは、メモリ管理ユニットMMUと対応づけられる。MMUは、メモリ保護やアクセス許可に関する情報の保持および処理を行う。
PPEは、キャッシュ付きの64ビットのパワーPC・プロセッサ・ユニット(PPU)である。CBEA準拠システムでは、PPEは、ベクトル・マルチメディア・拡張ユニット(vector multimedia extension unit)を内蔵する。PPEは汎用処理用ユニットであり、(メモリ保護テーブルのような)システム管理資源にアクセスできる。CBEA定義のハードウェア資源は、PPEから見えるように物理アドレスに明示的にマップされる。それゆえ、いずれのPPEも、適切かつ有効なアドレス値により、どんなリソースでも直接アドレスできる。PPEの主要機能は、システム内におけるSPEタスクの割り当てと管理である。
SPEは、PPEに比べれば計算ユニットとしては複雑ではない。SPEにはシステム管理機能がないからである。SPEは、SIMD(single instruction,multiple data)による処理機能を備え、割り当てられたタスクを実行するために必要なデータ転送を(PPEによってセットアップされたアクセス属性にしたがって)開始する。SPUの目的は、計算ユニットのいっそうの高密度集積を要求し、所与の命令セットを効果的に実行できるようなアプリケーションを実現とすることである。システムにおいて、PPEに管理されるべきSPUの数は、さまざまなアプリケーションについてコスト的に効率的な処理を実現できるように決められる。SPUは、新たな命令セットアーキテクチャを実装する。
MFCコンポーネントは、本質的にはデータ転送エンジンである。MFCは、CELLプロセッサのメインストレージとSPEのローカルストレージの間におけるデータの転送、保護、同期に関する主要機能を担う。MFCコマンドは、転送の実行を示す。アーキテクチャ上におけるMFCの最重要目的は、できるかぎり高速・正確にデータ転送を実行し、CELLプロセッサの全体としてのスループットを最大化することである。データ転送用コマンドは、MFC・DMAコマンドとして参照される。これらのコマンドが変換されて、ローカルストレージ領域とメインストレージ領域の間のDMA転送となる。
通常、各MFCは、同時に複数のDMA転送をサポートし、複数のMFCコマンドを保持・処理できる。このような機能を実現するため、MFCは、MFCコマンドキューを保持・処理する。MFCは、複数個の転送要求とキューに投入したり、それらを同時発行することもできる。各MFCは、対応するSPUのためのキュー(MFC・SPU・コマンドキュー)と、他のプロセッサやデバイスのためのキュー(MFC・プロキシ・コマンドキュー)を備える。論理的には、MFCキューの集合は、常に、CELLプロセッサ内の各SPUに対応づけられている。しかし、アーキテクチャ実装によっては、SPUグループのように複数のSPU間で単一の物理的なMFCを共有することもできる。このような場合にも、ソフトウェアからは、すべてのMFCに関連する装置がSPUごとに別々にあるように見えなければならない。各MFC・DMA・データ転送要求コマンドは、ローカルストレージのアドレス(LSA:local strage address)と有効アドレス(EA:effective address)の両方を含む。ローカルストレージアドレスは、該当SPUのローカルストレージ領域だけを直接アドレスできる。有効アドレスは、もう少し一般的に応用できる。実アドレス空間にエイリアス(別名:aliase)がなされているときには(すなわち、MFC-SR1[D]に'1'がセットされるとき)、全SPUのローカルストレージ領域も含めて、メインストレージを参照できるからである。
MFCは2種類のインタフェースを提供する。1つは、SPU用であり、もう1つは、プロセスグループ内における他のプロセッサやデバイス全てのためである。SPUは、MFC制御用にチャネルインタフェース(channel interface)を使う。この場合、SPUで実行されるコードは、当該SPU用のMFC・SPU・コマンドキューにだけアクセスできる。他プロセッサやデバイスは、メモリマップされたレジスタにより、MFCを制御できる。システム内のプロセッサやデバイスは、MFCを制御し、SPUに代わってMFC・プロキシ・要求コマンドを発行できる。MFCは、また、帯域予約やデータ同期もサポートする。SPU間、および/または、SPUとPPU間、SPEとPPE間の通信用の装置には、シグナルイベントと対応づけられるシグナル通知レジスタが含まれる。通常、PPEとSPEは、PPEがSPEへメッセージを転送するルーターの役割を担うスター型トポロジーにて接続される。このようなトポロジーでは、SPE同士はダイレクトに通信しない。代わりに、各SPEや各PPEは、一方通行のシグナル通知レジスタを持ち、これは、メールボックスとして参照される。メールボックスは、SPEとホストOSの同期をとるために使うことができる。
IICコンポーネントは、PPEに対する割り込みの優先順位を管理する。IICの主目的は、プロセッサ内の他のコンポーネントからの割り込みを、メインシステムの割込コントローラを使わずに扱うことである。IICは、実際、セカンドレベルのコントローラである。CBEA準拠プロセッサに対する内部割り込み、あるいは、CBEA準拠プロセッサによるマルチプロセッサシステム内における割り込みの全てを扱うように想定されている。通常、システム割込コントローラは、CELLプロセッサに対する外部割り込みの全てに対応する。
CELLプロセッサシステムにおいては、ソフトウェアは、まず、外部のシステム割込コントローラからの割り込みがあったかを判定するために、しばしば、IICをチェックしなければならない。IICは、全てのI/Oデバイスからの割り込みの処理に関し、メインのシステム割込コントローラを代替するものではない。
CELLプロセッサには、2種類のストレージドメイン(storage domain:記憶領域)がある。ローカルストレージドメインとメインストレージドメインである。SPEのローカルストレージは、ローカルストレージドメイン内にある。他の装置やメモリは、全てメインストレージドメイン内にある。ローカルストレージは、記憶領域を1以上の分離領域から成り、各領域は特定のSPUと関連付けられる。各SPUは、(データのロードやストアといった操作も含めて)自己に関連するローカルストレージドメイン内の命令のみを実行可能である。ローカルストレージのエイリアスが有効化されていないときには、システム内の他のストレージを対象とするデータ転送要求は、常に、(各SPUの)ローカルストレージドメインとメインストレージドメインの間でデータを転送するためのMFC・DMAコマンドを発行することでしか実行できない。
SPUプログラムは、ローカルアドレスによりローカルストレージドメインを参照する。ただし、特権ソフトウェアは、MFC-SR1の第Dビットを「1」にセットすることによって、SPUのローカルストレージドメインをメインストレージドメインにエイリアスできる。各ローカルストレージ領域には、メインストレージドメイン内の実アドレスが割り当てられることになる(実アドレスは、システムメモリにおけるバイト単位アドレスかI/Oデバイスにおけるバイト単位アドレスのいずれかである。)。これにより、特権ソフトウェアは、アプリケーションの有効アドレス空間にローカルストレージ領域を割り当てることが可能となり、あるSPUのローカルストレージと別のSPUのローカルストレージの間のDMA転送が可能となる。
別プロセッサやデバイスは、メインストレージドメインへのアクセスにより、直接的に、ローカルストレージ領域をアクセス可能となる。このローカルストレージ領域は、メインストレージドメインによって示される実アドレス空間に対して、所定の変換方式にてマップされている有効アドレスやI/Oバスアドレスによって、メインストレージドメインとエイリアスされている。
メインストレージドメインとエイリアスされているローカルストレージ領域を使ったデータ転送では、キャッシュが禁じられる。このようなアクセスは、ローカルストレージドメインにおいて、SPUのローカルストレージへのアクセス(たとえば、SPUのロード、ストア、命令フェッチ)と一貫性を保てないからである。ローカルストレージ領域をメインストレージドメインの実アドレス空間とエイリアスさせることにより、メインストレージ領域へアクセスする他のプロセッサやデバイスは、ローカルストレージに直接アクセスすることができる。しかし、エイリアスされたローカルストレージは、キャッシュ禁止にて処理されなければならないので、PPEのロード命令やストア命令による大量のデータ転送ではパフォーマンスが悪くなる。ローカルストレージドメインとメインストレージドメインの間におけるデータ転送では、ストール(stall)を避けるためにMFC・DMA・コマンドを使用する。
CBEAにおけるメインストレージへのアドレッシングは、パワーPC・アーキテクチャにおいて定義されているアドレッシングと互換性がある。CBEAは、パワーPCアーキテクチャのコンセプトを基礎としつつも、MFCによるメインストレージへのアドレッシングにまで拡張されている。
SPUやその他のプロセッサ、デバイス上において実行されるアプリケーションプログラムは、メインメモリにアクセスするために有効アドレスを使う。有効アドレスは、PPEがロード、ストア、分岐、キャッシュ命令を実行したり、後続命令をフェッチするときに計算される。SPUのプログラムは、MFCコマンドのパラメータとして有効アドレスを示さねばならない。「PowerPC Architecture,Book3」の「overview of address translation」に記載されている処理方法により、有効アドレスから実アドレスへの変換がなされる。実アドレスとは、変換された有効アドレスによって参照されるメインストレージ上における位置である。メインストレージは、システム内の全てのPPE、MFC、I/Oデバイスによって共有される。このレベルのストレージに保持される情報の全ては、システム内の全プロセッサ、全デバイスから見ることができる。このストレージ領域は、構造的にはフラットであってもよいし、階層的なキャッシュ構造を備えてもよい。プログラムは、有効アドレスによってこのレベルのストレージを参照する。
システムのメインメモリは、通常、システムコンフィギュレーション(system configuration)、データ転送同期、メモリマップドI/O、I/Oサブシステムといった処理用の特殊ハードウェアレジスタやアレーと、汎用の不揮発性記憶媒体も含む。メインメモリには、さまざまな設定をすることができる。制約的な意味ではない設例として、表1は、CBEAとして知られる実装のCELLプロセッサについて、メインメモリにおけるアドレス空間のサイズを示す。
Figure 0004977159
CELLプロセッサ100は、プロセッサとシステム内においてクリティカル・リソース(critical resource)の管理機能を持ってもよい。CELLプロセッサの管理対象となるリソースは、TLB(translation lookaside buffers)とデータ、命令キャッシュである。これらのリソースは実装依存のテーブルによって制御される。
TLBやキャッシュを管理するためのテーブルはRMTとして参照され、各MMUと対応づけられる。このようなテーブルはオプショナルなものであるが、システムのボトルネックとなりうるクリティカル・リソースのためのテーブルは有用であることが多い。SPEグループは、DMA転送のためのファーストレベルキャッシュとなるSL1キャッシュをキャッシュ階層に含んでもよい。SL1キャッシュも、RMTを持ってもよい。
本実施例におけるメインメモリMEMは、なんらかのアドレス102において、1つのPPEにより開始されるCAS命令によりアトミックに更新されるべき値を保持する。しかし、アドレス102のデータサイズは、PPEがアトミックに読み出すには大きすぎる。たとえば、PPEのレジスタ・ラインは8バイトであるが、アドレス102のデータは8バイトより大きいかもしれない。一方、SPEのローカルストアは、128バイトのレジスタを備えるかもしれない。アドレス102の保持値が128バイトより小さければ、SPEは単一のアトミック・読出命令にてアドレス102のデータを読み出せる。本実施例においては、1以上のPPEがコード104を実行し、1つのSPEにCAS命令を実行させる。CAS命令は、「特定SPEのローカルストアにあって、プロセッサ読取り可能な命令(instruction)106のセット」として実装される。コード104は、PPEのL1キャッシュにロードされるか、メインメモリMEMのもっと大きなプログラム108を呼び出すサブルーチンやファンクションとして、1以上のPPEにて実行される。コード106は、プログラム108を呼び出すサブルーチンやファンクションである。
アトミック・CASを実装するためには、「SPEがアドレス102の値を読み出したあと、アドレス102に値を書き戻す前に別のプロセッサがその値を上書きした」という状況が発生したときに、コード104はSPEにそれを通知する。このために「予約付き読み出し」や「条件付き書き込み」のような既知の命令を使う。予約付き読み出しコマンドは、アドレス102からデータをロードすると同時にアドレス102に「予約」を設定する。この「予約」とは、予約がなされてからSPEが値を書き戻そうとするまでの間において、そのアドレスになんらかのデータをロードしようとした別のプロセッサがあることをSPEに通知することの予約である。条件付き書き込みコマンドの場合、SPEは、予約が失効していないことを条件として、そのアドレスへの書き込みを行う。予約失効は、予約されたデータアドレスが更新された可能性を示すが、実際に更新されたかどうかは明確にしていない。更新されたか否かを明確にするために、(たとえば、予約付きで)そのアドレスを読み出し、現在の値と予約時にそのアドレスにあった値とを比較する。予約付き読み出しコマンドの実行と条件付き書き込みコマンドの実行の間に他のプロセッサによるアドレス102への書き込みがなされていないときだけ、アドレス102に対する条件付き書き込みが成功する。これは重要な点である。
本実施例のアトミック・CASにおいて、以下に示すように、PPEは、アドレス102についてのCAS命令を実行するようにSPEに通知する。PPEは、CAS命令を実行するためのアドレスおよび追加情報をSPEに提供する。SPEは予約付きでアドレス102の保持値を読み出し、保持値と追加情報により比較処理を実行する。比較に失敗すると、SPEはPPEに失敗通知する。比較に成功すると、SPEはアドレス102に対して交換値を条件付きで書き込む。交換値は、追加情報から決定してもよい。もし、条件付き書き込みが失敗すると、SPEはPPEに条件付き書き込みの失敗を通知する。条件付き書き込みが成功すると、SPEはCAS命令の成功をPPEに通知する。
CELLプロセッサの実装技術について更に詳述する。以下の内容は、本発明の実施例に関連したデータ構造と処理方法について説明するものである。以下の実施例は上記したアーキテクチャを持つCELLプロセッサについての実装を制約するものではない。とはいえ、以下の実施例は、多かれ少なかれ、SPEとPPEの両方についてのアトミック命令が直面し利用されうる環境としてのCELLアーキテクチャによる実装を示す。
図2は、本実施例に関して、PPEやSPEにより取り扱い可能なアトミック命令を実装するCELLプロセッサ200の一例を示す。このCELLプロセッサは、メインメモリ202と、単一のPPE204、8つのSPE206を備えている。ただし、CELLプロセッサには任意の数のSPEを設置できる。図2において、リング型のエレメント相互接続バス210により、メモリ、PPE、SPEは、互いに、また、I/Oデバイス208とも通信可能である。メモリ202のアドレス203は、上記したアドレス102のデータと特徴において共通するデータを保持するアドレスである。メモリ202のプログラム209は、上記したプログラム108と特徴において共通する。少なくとも1つのSPE206が持つローカルストアコード205は、上記したコード104と特徴において共通する。PPEはL1キャッシュに、上記したコード106と特徴が共通するコード207を含む。コード205、207は、上記したように必要時において、SPEやPPEからのアクセスのためにメモリ202に保持されてもよい。
コード104、106や205、207について上記したCELLプロセッサの動作は、図3Aや図3Bのフローチャートに関連して説明する。図3Aは、通常の場合におけるCASの処理方法300を示す。図3Aや図2をあわせて参照すればより理解しやすい。ステップ302において、コード207を実行するPPE204は、メモリ202のアドレス203についてのCAS命令の実行をSPE206に指示する。PPE204は、SPEに情報303を提供する。ここで提供される情報は、アドレス203の位置、アドレス203における保持値301のサイズ・パラメータ、CAS命令を実行するための1以上のパラメータ、CAS命令の実行に必要な1以上の関数の呼び出し、などであってもよい。サイズ・パラメータは、比較対象となるデータブロックの大きさをSPE206に伝えるパラメータである。通常、この値は、SPE206のレジスタ・ラインのサイズ以下であり、PPE224のレジスタ・ラインのサイズよりも大きい。他のパラメータ値については後述する。
ステップ304において、SPE206は、コード205の命令を実行し、アドレス203についての予約付き読み出しを行う。上記したように、SPE206によるこのコマンドの実行により、アドレス203からSPE206のローカルストア・レジスタに保持値301がロードされると同時に、アドレス203について予約設定がなされる。ステップ306において、SPE206は、情報303の一部として提供された1以上の参照値と保持値301に関する比較処理を実行する。
ここでいう比較処理とは、一般的には、2以上の入力に基づいて、2つの取りうる値のうちの一つを返す処理を意味する。2つの取りうる値は、「true/false(真/偽)」、「yes/no」、「1/0」などのように表現される。2つの取りうる値うちの一方は比較処理の成功を示し、他方は失敗を示す。比較処理は、通常、アドレスの保持値と1以上の参照パラーメータに関するなんらかの論理関数により行われる。参照パラメータは、SPEが比較処理を実行するときにPPEにより提供されてもよい。
表2は、比較処理を実行させるために、PPEがSPEに提供する情報の例である。
Figure 0004977159
表2に示す例の場合、比較関数は、保持値が参照値「10」と等しいか否かを判定する。等しければ、交換関数は保持値を交換パラメータ「20」にて上書きする。この例における参照パラメータは唯一の参照パラメータとしての参照値である。変形例として、比較関数は、2以上のパラメータを使ってもよい。これらのパラメータは、参照値を決定したり、保持値についての比較の結果を決定するために使われてもよい。この場合の交換パラメータは、比較成功時に保持値を上書きする単一値である。変形例として、比較成功時に保持値を上書きする値を計算するために、(できるかぎり保持値や参照値に関連して)1以上の交換パラメータを使用してもよい。
比較関数についてなんらかの制約を設ける意味ではない例として、表3に比較関数の例を示す。
Figure 0004977159
たとえば、数値関数f(A)は、Aが偶数であれば所定値を返し、Aが奇数であれば別の値を返す関数である。一般的には、Aの数値関数は、どんな数値関数とも適切なかたちで比較できる。上記設例では、BやCとして表されている値は、PPE204により情報303の一部として提供される参照パラメータとしての参照値であり、Aは保持値301として参照される値であるとしてもよい。更に、関数としての等価性に関しては、関数f(B)はBの値に関するなんらかの適切な数値関数であればよい。このような関数f(B)は、(B+C)、B−C、B×C、B÷C、C÷B、BのC乗、CのB乗、Bの対数、Bの三角関数、あるいは、2以上のこれらの関数の組み合わせであってもよい。先の例の場合、Cは情報303の一部としてPPE204により提供されるパラメータであってもよい。関数f(B)の形式は、情報303の一部としてPPEにより提供される関数呼び出し(function call)により決定されてもよい。更に、比較処理は論理関数の組み合わせにより実行されてもよい。このような「組み合わせ」は、AND、OR、NOT、NAND、NOR、XORなどを含む。たとえば、(A<B)AND(A<C)の論理的組み合わせが真となるのは、AがBより大きく、かつ、AがCより小さいときだけである。
先の例においては、比較処理が成功すると、比較関数は「真」値を返す。これは、本発明の実施例に関する制約とはならない。比較処理が成功したときに、比較関数が「偽」値を返すという変更も可能であることは当業者には理解されるであろう。
比較処理に失敗すると、ステップ308において、SPE206はPPE204にCAS命令の失敗を通知する。比較処理に成功すると、ステップ310において、SPEはアドレス203へ交換値305を条件付き書き込みする。交換値305は、情報303の一部としてPPE204により提供される。あるいは、SPE206は、情報303の一部としてPPE204により提供されるパラメータや関数呼び出しにより、交換値305を計算してもよい。上述したように、ステップ304の予約付き読み出しからステップ308の条件付き書き込みまでの間にアドレス203に書き込みがなされていないことを条件として、交換値305の条件付き書き込みが成功する。条件付き書き込みが成功すると、アドレス203の保持値301は交換値305に変更される。ステップ312において、SPE206はPPE204にCAS命令の成功を通知する。ステップ312やステップ314におけるPPEへの通知は、たとえば、シグナル通知レジスタやメールボックス、コード207の一部としてPPE204によって定期的にポーリングされるメモリ202の位置への書き込み、などにより実装されてもよい。
条件付き書き込みが失敗すると、ステップ314において、SPE206はPPE204にCAS命令の失敗を通知する。SPE206は、ステップ306における比較処理の成否もPPE204に通知してもよい。プログラム209のコンテキストにおいて、PPE204やSPE206が保持値301が変更されたか否か、どのような値に変更されたか、SPEとPPEのどちらによって変更されたか、を知ることができれば有効である。このような情報があれば、SPE206は他のSPEやSPE206を手助けできる。条件付き書き込みが失敗したとき、SPE206は、新しい値を決めるためにアドレス203を再読み出しし、ステップ314においてPPE204に通知する前に別のステップを実行できれば有効である。
図3Bは、比較処理は成功したけれども条件付き書き込み命令が失敗したときのCASの処理過程300’のフローチャートを示す。処理過程300’では、上記した処理過程300の各ステップのあと、ステップ306における保持値301の比較処理とステップ310における交換値305の条件付き書き込みが実行される。ここでは、ステップ306Aにて比較処理が成功したとする。しかし、ステップ304の予約付き読み出しからステップ308の条件付き書き込みまでの間の306Bにおいて、PPEのスレッドか別のSPEがアドレス203に新しい値307を書き込み、ステップ309にて保持値301が新しい値307に変更されている。このためステップ304においてアドレス203に設定された予約が失効する。ステップ311では、予約失効により条件付き書き込みが失敗する。SPE206は、一連の条件付き命令316を実行する。条件付き命令316はコード205の一部であってもよい。条件付き命令316の実行に際して、SPEはアドレス203を読み出して、新しい値307を特定する。それから、SPEは、ステップ320において、比較処理を実行する。この比較処理はステップ306において実行される比較処理と同等であってもよいし異なってもよい。いずれにしても、ステップ322において、SPE206はPPE204に条件付き書き込みの失敗を通知する。SPE206は、新しい値307とステップ320の比較処理の結果をPPE204に通知してもよい。
好ましくは、特定のSPE、すなわち、CAS命令のために特別に予約されているSPE、によりCAS命令を実行してもよい。この特定SPEは、他のPPE補助関数(PPE-supplementary functions)のために使われてもよい。補助関数は、PPEが、たとえば、より高速なDMA転送、より大きなサイズのレジスタラインといったSPEの特徴を利用するために、SPUに実行委任される関数であってもよい。制約的な意味ではない設例として、PPE補助関数は、メインメモリのある場所から別の場所へのデータコピーをPPEがSPEに指示するmemcopy関数であってもよい。SPEにおけるmemcopyの実装は、本出願と譲受人が共通し、係属中の米国特許出願11/238,085に関連し、米国特許出願に開示されており、関連出願の主題は、ここに引用により組み込まれる。
予約付き読み出しや条件付き書き込みにより、ロックを使わないかたちでアトミック・CAS命令を実現できる。このようなCAS命令は、PPUのスレッドのスワップ・アウトにも対応しやすい。CAS命令は、特に、比較に成功したのにPPEの予約が失効した場合においてもPPEがそれを気にしなくてすむというという点で特に有効である。こういった状況が発生するのは、たとえば、SPEが実行すべきタスクの情報(discription)を比較・交換する場合である。このような場合、SPEは、実行コードのあるメモリ位置へのポインタ値とそのコードのパラメータを比較してもよい。あるいは、SPEは、アプリケーションの状態情報について比較・交換(CAS操作)してもよい。ビデオゲームの場合、ゲームの変数(たとえば、プレーヤーの生命力)、仮想環境の情報(たとえば、ある岩オブジェクトの場所)、あるいは、音声処理情報といった情報などでもよい。
以上は、本発明の最適な実施例の完全な記述であるが、さまざまな変更、変形、等価物への置き換えが可能である。それゆえ、本発明の範囲は、上記記述に関してではなく、請求項により定義されるべきであり、完全な等価物の範囲も含まれる。記述された特徴は、それが好ましいものであれ、そうでないものであれ、上記したさまざまな特徴と組み合わされてもよい。請求項においては、通常、特に断らない限りは、各要素は1またはそれ以上の数量を想定している。請求項の記載事項は、「〜手段」のような記載によって、明示される場合のほかは、いわゆるミーンズ・プラス・ファンクション特有の限定的意味で解してはならない。
本実施例において、CELLのタスクおよびデータの管理を実装するCELLブロードバンドエンジンアーキテクチャの模式図である。 本実施例におけるCELLプロセッサの模式図である。 本実施例において、CELLプロセッサによるアトミック・CAS命令の処理過程を示すフローチャートである。 本実施例において、CELLプロセッサによるアトミック・CAS命令の処理過程が中断されるときのフローチャートである。

Claims (38)

  1. メインメモリと、
    メモリ・アクセス・サイズに係るメモリアクセス能力の異なる第1のプロセッサと第2のプロセッサとを含み、
    前記第1のプロセッサは前記第2のプロセッサに対して前記メインメモリのアドレスについてCAS(compare and swap:比較・交換)処理の実行を通知し
    前記第2のプロセッサアトミックなCAS処理を実行
    前記第2のプロセッサCAS処理の成否を第1のプロセッサに通知
    前記第2のプロセッサの最大メモリ転送サイズは前記第1のプロセッサの最大メモリ転送サイズよりも大きく設定され、CAS処理の実行時のメモリアドレスにおける保持値のサイズが第2のプロセッサの最大メモリ転送サイズ以下であり、かつ、第1のプロセッサの最大メモリ転送サイズより大きく設定されており
    前記CAS処理は、
    第2のプロセッサに前記アドレスの保持値の予約付き読み出しを実行させるステップと、
    第2のプロセッサに前記保持値と1以上の参照パラメータに関する比較処理を実行させるステップと、
    比較処理が成功したときに、第2のプロセッサに前記アドレスへの交換値の条件付き書き込みを実行させるステップと、
    を含むことを特徴とするプロセッサシステム。
  2. 第2のプロセッサに前記保持値と1以上の参照パラメータに関する比較処理を実行させるステップは、前記保持値と前記1以上の参照パラメータについての論理演算を第2のプロセッサに実行させるステップ、を更に備え、
    前記論理演算の結果は、真値または偽値のいずれかであることを特徴とする請求項1に記載のシステム。
  3. 前記論理演算の結果が真値であって、かつ、前記交換値の条件付き書き込みが成功することが、CAS処理の成功を示すことを特徴とする請求項2に記載のシステム。
  4. 前記論理演算の結果が偽値であって、かつ、前記交換値の条件付き書き込みが成功することが、CAS処理の成功を示すことを特徴とする請求項2に記載のシステム。
  5. 前記1以上の参照パラメータは単一参照値を含み、前記論理演算は、前記保持値と前記単一参照値との比較結果に基づいて、真値または偽値となることを特徴とする請求項2に記載のシステム。
  6. 前記1以上の参照パラメータは単一参照値を含み、前記論理演算は、前記保持値が前記単一参照値と等しいときに真値となる論理等価演算であることを特徴とする請求項2に記載のシステム。
  7. 第1のプロセッサから第2のプロセッサに対して、メインメモリのアドレスについてCAS処理の実行を指示する手段は、第2のプロセッサにアドレス、前記1以上の参照パラメータおよび1以上の交換パラメータを転送する手段、を含むことを特徴とする請求項1に記載のシステム。
  8. 第1のプロセッサから第2のプロセッサに対して、メインメモリのアドレスについてCAS処理の実行を指示する手段は、第2のプロセッサにアドレス、前記交換値および前記1以上の参照パラメータを転送する手段、を含むことを特徴とする請求項1に記載のシステム。
  9. 第1のプロセッサから第2のプロセッサに対して、メインメモリのアドレスについてCAS処理の実行を指示する手段は、第2のプロセッサにアドレスと前記保持値のサイズを転送する手段、を含むことを特徴とする請求項1に記載のシステム。
  10. 第1のプロセッサから第2のプロセッサに対して、メインメモリのアドレスについてCAS処理の実行を指示する手段は、第2のプロセッサにアドレス、前記1以上の参照パラメータ、1以上の交換パラメータを転送する手段を含み、
    CAS処理は、前記1以上の交換パラメータにより前記交換値を計算するステップ、を含むことを特徴とする請求項1に記載のシステム。
  11. 前記保持値と1以上の参照パラメータを比較するステップは、前記保持値が参照値と等しいかを判定するステップ、を含むことを特徴とする請求項1に記載のシステム。
  12. CAS処理は、
    予約付き読み出しの実行から条件付き書き込みの実行までに前記保持値が上書きされていれば、前記保持値の予約付き読み出しを再実行し、更に、前記保持値と1以上の参照値についての比較処理を実行し、比較失敗時には第1のプロセッサに通知することを特徴とする請求項1に記載のシステム。
  13. CAS処理を実行する手段は、前記交換値を計算するステップ、を含むことを特徴とする請求項1に記載のシステム。
  14. CAS処理を実行する手段は、前記1以上の交換パラメータにより参照値を計算するステップ、を含むことを特徴とする請求項1に記載のシステム。
  15. 前記交換値は、前記保持値についての所定関数の実行結果として算出されることを特徴とする請求項1に記載のシステム。
  16. 前記交換値は、前記保持値と第1のプロセッサが提供する1以上のパラメータについての所定関数の実行結果として算出されることを特徴とする請求項1に記載のシステム。
  17. 前記交換値は、前記保持値に増分値を加算した値であることを特徴とする請求項1に記載のシステム。
  18. 第1のプロセッサによりCAS処理を実行指示されるべき第2のプロセッサを指定することを更に含むことを特徴とする請求項1に記載のシステム。
  19. 第1のプロセッサによりCAS処理を実行指示されるべき第2のプロセッサを指定することを更に含み、前記指定された第2のプロセッサはアトミックにCAS処理を実行することを特徴とする請求項1に記載のシステム。
  20. メインメモリと、
    前記メインメモリに接続される第1のプロセッサと、
    前記メインメモリおよび第1のプロセッサに接続される1以上の第2のプロセッサとを備え、
    各1以上の第2のプロセッサは結合したローカルストア(Local Store)を含み、
    第2のプロセッサの最大メモリ転送サイズが第1のプロセッサの最大メモリ転送サイズよりも大きくなるように第2のプロセッサのメモリ転送サイズと第1のプロセッサのメモリ転送サイズは異なる値に設定され、
    メインメモリのアドレスに対するCAS(compare and swap:比較・交換)処理の実行を1以上の第2のプロセッサの1つに指示する第1の命令セットが第1のプロセッサの1以上のレジスタまたはメインメモリに実装され、
    CAS処理の実行時のメモリアドレスにおける保持値のサイズは第2のプロセッサの最大メモリ転送サイズ以下で第1のプロセッサの最大メモリ転送サイズよりも大きく設定され、
    前記アドレスについてのCAS処理を実行する命令と、CAS処理の成否を第1のプロセッサに通知する命令を含む第2の命令セットが1以上の第2のプロセッサ・ローカルストアの1以上のレジスタまたはメインメモリに実装されたことを特徴とするシステム
  21. 前記アドレスについてのCAS処理を実行する命令は、
    第2のプロセッサに前記アドレスの保持値の読み出しを実行させる命令と、
    第2のプロセッサに前記保持値と1以上の参照パラメータに関する比較処理を実行させる命令と、
    比較処理が成功しなかったときに、第1のプロセッサに通知する命令と、
    を含むことを特徴とする請求項20に記載のシステム
  22. CAS処理における比較処理は、前記保持値と1以上の参照パラメータについての論理演算を含み、
    前記論理演算の結果は、真値または偽値のいずれかであることを特徴とする請求項20に記載のシステム
  23. 前記論理演算の結果が真値であって、かつ、交換値の条件付き書き込みが成功することが、CAS処理の成功を示すことを特徴とする請求項22に記載のシステム
  24. 前記論理演算の結果が偽値であって、かつ、交換値の条件付き書き込みが成功することが、CAS処理の成功を示すことを特徴とする請求項22に記載のシステム
  25. 前記論理演算は、前記保持値が単一参照値と等しいときに真値となる論理等価演算であることを特徴とする請求項22に記載のシステム
  26. 1以上の第2のプロセッサは特定第2のプロセッサを含み、
    前記第1の命令セットは、メインメモリのアドレスに対するCAS処理の実行を特定第2のプロセッサに指示する命令を含むことを特徴とする請求項20に記載のシステム
  27. 1以上の第2のプロセッサは特定第2のプロセッサを含み、
    前記第1の命令セットは、メインメモリのアドレスに対するCAS処理の実行を特定第2のプロセッサに指示する命令を含み、
    特定第2のプロセッサは、そのローカル・ストアに第2の命令セットを実装されることを特徴とする請求項20に記載のシステム
  28. 特定第2のプロセッサに第1のプロセッサ補助関数を実装したことを特徴とする請求項27に記載のシステム
  29. 第1のプロセッサ補助関数は、memcopy関数を含むことを特徴とする請求項28に記載のシステム
  30. CAS処理の実行命令は、
    予約付き読み出しの実行から条件付き書き込みの実行までに前記保持値が上書きされていることを条件として実行される条件付き命令のセットを含み、
    条件付き命令のセットは、
    第2のプロセッサに前記保持値の予約付き読み出しを再実行させる命令と、
    第2のプロセッサに前記保持値と1以上の参照値についての比較処理を実行させる命令と、
    を含むことを特徴とする請求項20に記載のシステム
  31. CAS処理は、交換値を計算するステップを含むことを特徴とする請求項20に記載のシステム
  32. CAS処理は、参照値を計算するステップを含むことを特徴とする請求項20に記載のシステム
  33. 前記交換値は、前記保持値についての所定関数の実行結果として算出されることを特徴とする請求項31に記載のシステム
  34. 前記交換値は、前記保持値と第1のプロセッサが提供する1以上のパラメータについての所定関数の実行結果として算出されることを特徴とする請求項31に記載のシステム。。
  35. 前記交換値は、前記保持値に増分値を加算した値であることを特徴とする請求項31に記載のシステム
  36. 第2のプロセッサの最大メモリ転送サイズは128バイトであり、第1のプロセッサの最大メモリ転送サイズは8バイトであることを特徴とする請求項20に記載のシステム
  37. メインメモリと、メモリ・アクセス・サイズに係るメモリアクセス能力の異なる第1のプロセッサと第2のプロセッサとを含む2以上のプロセッサを備えるシステムにおいて実行される処理方法であって、
    第1のプロセッサから第2のプロセッサに対してメインメモリのアドレスについてCAS処理の実行を指示するステップと、
    第2のプロセッサにアトミックなCAS処理を実行させるステップと、
    第2のプロセッサにCAS処理の成否を第1のプロセッサに通知させるステップと、を備え、
    第2のプロセッサの最大メモリ転送サイズは第1のプロセッサの最大メモリ転送サイズよりも大きく設定され、CAS(compare and swap)処理の実行時のメモリアドレスにおける保持値のサイズが第2のプロセッサの最大メモリ転送サイズ以下であり、かつ、第1のプロセッサの最大メモリ転送サイズより大きく設定されており
    CAS処理は、
    第2のプロセッサに前記アドレスの保持値の予約付き読み出しを実行させるステップと、
    第2のプロセッサに前記保持値と1以上の参照パラメータに関する比較処理を実行させるステップと、
    比較処理が成功したときに、第2のプロセッサに前記アドレスへの交換値の条件付き書き込みを実行させるステップと、
    を含むことを特徴とするアトミック命令実行方法。
  38. メインメモリと、メモリ・アクセス・サイズに係るメモリアクセス能力の異なる第1のプロセッサと第2のプロセッサとを含む2以上のプロセッサを備えるシステムにおいてアトミック処理の方法をプロセッサに実現させるための命令を格納した記録媒体であって、前記方法は、
    第1のプロセッサから1以上の第2のプロセッサの1つに対してメインメモリのアドレスについてCAS処理の実行を指示するステップと、
    第2のプロセッサにアトミックなCAS処理を実行するステップと、
    第2のプロセッサにCAS処理の成否を第1のプロセッサに通知させるステップと、を備え、
    第2のプロセッサの最大メモリ転送サイズは第1のプロセッサの最大メモリ転送サイズよりも大きく設定され、CAS(compare and swap)処理の実行時のメモリアドレスにおける保持値のサイズが第2のプロセッサの最大メモリ転送サイズ以下であり、かつ、第1のプロセッサの最大メモリ転送サイズより大きく設定されており、
    CAS処理は、
    第2のプロセッサに前記アドレスの保持値の予約付き読み出しを実行させるステップと、
    第2のプロセッサに前記保持値と1以上の参照パラメータに関する比較処理を実行させるステップと、
    比較処理が成功したときに、第2のプロセッサに前記アドレスへの交換値の条件付き書き込みを実行させるステップと、
    を含むことを特徴とする記録媒体。
JP2009072468A 2005-12-01 2009-03-24 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術 Active JP4977159B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/291,307 US7509463B2 (en) 2005-12-01 2005-12-01 Cell processor atomic compare and swap using dedicated synergistic processor element
US11/291,307 2005-12-01

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006323851A Division JP4309420B2 (ja) 2005-12-01 2006-11-30 特定のspeを使ってcellプロセッサのアトミックなコンペア・アンド・スワップ命令を実行するための技術

Publications (3)

Publication Number Publication Date
JP2009134771A JP2009134771A (ja) 2009-06-18
JP2009134771A5 JP2009134771A5 (ja) 2012-02-02
JP4977159B2 true JP4977159B2 (ja) 2012-07-18

Family

ID=38175139

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006323851A Active JP4309420B2 (ja) 2005-12-01 2006-11-30 特定のspeを使ってcellプロセッサのアトミックなコンペア・アンド・スワップ命令を実行するための技術
JP2009072468A Active JP4977159B2 (ja) 2005-12-01 2009-03-24 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006323851A Active JP4309420B2 (ja) 2005-12-01 2006-11-30 特定のspeを使ってcellプロセッサのアトミックなコンペア・アンド・スワップ命令を実行するための技術

Country Status (2)

Country Link
US (2) US7509463B2 (ja)
JP (2) JP4309420B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472261B2 (en) * 2005-11-08 2008-12-30 International Business Machines Corporation Method for performing externally assisted calls in a heterogeneous processing complex
US7509463B2 (en) * 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US8024521B2 (en) * 2007-03-13 2011-09-20 Sony Computer Entertainment Inc. Atomic operation on non-standard sized data using external cache
US7934063B2 (en) * 2007-03-29 2011-04-26 International Business Machines Corporation Invoking externally assisted calls from an isolated environment
US8291174B2 (en) 2007-08-15 2012-10-16 Micron Technology, Inc. Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same
US8055852B2 (en) 2007-08-15 2011-11-08 Micron Technology, Inc. Memory device and method having on-board processing logic for facilitating interface with multiple processors, and computer system using same
US7822911B2 (en) 2007-08-15 2010-10-26 Micron Technology, Inc. Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same
CN101398803B (zh) * 2007-09-28 2011-04-06 国际商业机器公司 管理数据移动的方法和使用该方法的细胞宽带引擎处理器
US8055856B2 (en) * 2008-03-24 2011-11-08 Nvidia Corporation Lock mechanism to enable atomic updates to shared memory
US8095769B2 (en) * 2008-08-19 2012-01-10 Freescale Semiconductor, Inc. Method for address comparison and a device having address comparison capabilities
JP5300005B2 (ja) * 2008-11-28 2013-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーション スレッド実行制御方法、およびシステム
SG175951A1 (en) 2009-06-25 2011-12-29 Intel Corp Optimizing code using a bi-endian compiler
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US10026458B2 (en) * 2010-10-21 2018-07-17 Micron Technology, Inc. Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
EP2742032B1 (en) 2011-08-08 2015-05-06 Tfchem Gem-difluorinated c-isopropylgalactoside derivates
US9411663B2 (en) * 2013-03-01 2016-08-09 Advanced Micro Devices, Inc. Conditional notification mechanism
US20140250442A1 (en) * 2013-03-01 2014-09-04 Advanced Micro Devices, Inc. Conditional Notification Mechanism
GB2512086A (en) 2013-03-20 2014-09-24 Ibm Transaction capable queuing
GB2570161B (en) * 2018-01-16 2020-03-25 Advanced Risc Mach Ltd Simulation of exclusive instructions

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6285372A (ja) * 1985-10-09 1987-04-18 Nec Corp マルチプロセツサシステムにおけるコンペアアンドスワツプ方式
AU645785B2 (en) 1990-01-05 1994-01-27 Maspar Computer Corporation Parallel processor memory system
US5224215A (en) * 1990-07-13 1993-06-29 International Business Machines Corporation Message queue processing among cooperative processors having significant speed differences
JPH0922397A (ja) * 1995-07-07 1997-01-21 Hitachi Ltd 並列計算機
US5613139A (en) * 1994-05-11 1997-03-18 International Business Machines Corporation Hardware implemented locking mechanism for handling both single and plural lock requests in a lock message
JPH0954761A (ja) 1995-08-15 1997-02-25 Sony Corp デイジタル信号処理装置及び情報処理システム
US5835925A (en) * 1996-03-13 1998-11-10 Cray Research, Inc. Using external registers to extend memory reference capabilities of a microprocessor
US5864738A (en) * 1996-03-13 1999-01-26 Cray Research, Inc. Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
FR2754925B1 (fr) * 1996-10-18 1998-11-20 Bull Sa Operation atomique sur memoire distante et dispositif permettant d'effectuer cette operation
US6880071B2 (en) * 2001-04-09 2005-04-12 Sun Microsystems, Inc. Selective signalling of later reserve location memory fault in compound compare and swap
US7274706B1 (en) * 2001-04-24 2007-09-25 Syrus Ziai Methods and systems for processing network data
US7502826B2 (en) * 2003-03-27 2009-03-10 Hewlett-Packard Development Company, L.P. Atomic operations
US7114042B2 (en) * 2003-05-22 2006-09-26 International Business Machines Corporation Method to provide atomic update primitives in an asymmetric heterogeneous multiprocessor environment
US20050120185A1 (en) * 2003-12-01 2005-06-02 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
US7509463B2 (en) 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US7398368B2 (en) 2005-12-01 2008-07-08 Sony Computer Entertainment Inc. Atomic operation involving processors with different memory transfer operation sizes

Also Published As

Publication number Publication date
JP2007157142A (ja) 2007-06-21
US8171235B2 (en) 2012-05-01
JP2009134771A (ja) 2009-06-18
JP4309420B2 (ja) 2009-08-05
US7509463B2 (en) 2009-03-24
US20070143551A1 (en) 2007-06-21
US20090138675A1 (en) 2009-05-28

Similar Documents

Publication Publication Date Title
JP4977159B2 (ja) 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術
US9753854B1 (en) Memory controller load balancing with configurable striping domains
JP5876458B2 (ja) Simdベクトルの同期
US6141734A (en) Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
US6665749B1 (en) Bus protocol for efficiently transferring vector data
JP4719655B2 (ja) ネットワーク上におけるプロセッサ制御技術
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
US10204046B1 (en) High-speed and memory-efficient flow cache for network flow processors
US8037271B2 (en) Method and system for performing memory copy function
US6704833B2 (en) Atomic transfer of a block of data
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US8024521B2 (en) Atomic operation on non-standard sized data using external cache
US20030135717A1 (en) Method and apparatus for transferring vector data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090831

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20101126

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111214

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20111214

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20120207

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4977159

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250