JP2020506483A - コンペアアンドスワップトランザクション - Google Patents

コンペアアンドスワップトランザクション Download PDF

Info

Publication number
JP2020506483A
JP2020506483A JP2019541737A JP2019541737A JP2020506483A JP 2020506483 A JP2020506483 A JP 2020506483A JP 2019541737 A JP2019541737 A JP 2019541737A JP 2019541737 A JP2019541737 A JP 2019541737A JP 2020506483 A JP2020506483 A JP 2020506483A
Authority
JP
Japan
Prior art keywords
transaction
data value
swap
data
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019541737A
Other languages
English (en)
Other versions
JP7158390B2 (ja
Inventor
クマール マンナバ、ファニンドラ
クマール マンナバ、ファニンドラ
ジェイムズ マシューソン、ブルース
ジェイムズ マシューソン、ブルース
マグナス ブルース、クラス
マグナス ブルース、クラス
マチュー ラクールバ、ジェフリー
マチュー ラクールバ、ジェフリー
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
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 エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2020506483A publication Critical patent/JP2020506483A/ja
Application granted granted Critical
Publication of JP7158390B2 publication Critical patent/JP7158390B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • 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/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

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

Abstract

マスタデバイスによって、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択するように処理ユニットに要求するために、コンペアアンドスワップトランザクションを発行することができる。比較データ値およびスワップデータ値は、コンペアアンドスワップトランザクションのデータフィールド内で転送される。比較データ値は、目標アドレスのオフセット部分に応じた、記憶場所内のアドレス目標データ値の位置に対応するデータフィールド内の位置を有するデータフィールドの第1の領域にパックされる。これにより、コンペアアンドスワップトランザクションを処理するために処理ユニットにおいて必要なレイテンシおよび回路が削減される。

Description

本発明の技法は、データ処理の分野に関する。
データ処理装置は、メモリまたはキャッシュ内の記憶場所からのデータ値の読み出し、読み出されたデータ値と比較データ値との比較、および比較データ値が目標データ値と一致する場合の、スワップデータ値の記憶場所への書き込みをトリガするコンペアアンドスワップトランザクションをサポートし得る。これは、複数の異なるプロセスが共有リソースにアクセスすることができる場合などに有用であり得る。たとえば、コンペアアンドスワップトランザクションの対象となる場所は、プロセスが共有データにアクセスすることができるか否かを制御するロック変数を記憶することができる。コンペアアンドスワップトランザクションは、ロック変数と特定の値との比較を実行して、ロックが現在別のプロセスによって設定されているか否かを確認し、ロックが現在設定されていない場合は、ロックを要求するためにその記憶場所にスワップデータ値を書き込む。このとき、共有リソースを使用する後続の処理は、ロックを要求するためにコンペアアンドスワップトランザクションの正常な実行に依存し得る。
少なくともいくつかの例は、装置であって、
目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するマスタデバイスであり、マスタデバイスは、コンペアアンドスワップトランザクションを発行するように構成されており、上記少なくとも1つのオペランド値が、コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、マスタデバイスと、
コンペアアンドスワップトランザクションに応答して、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択する処理ユニットであり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示す、処理ユニットと
を備え、
コンペアアンドスワップトランザクションを発行するとき、マスタデバイスは、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第1の領域に比較データ値をパックするように構成される、装置を提供する。
少なくともいくつかの例は、マスタデバイスであって、
目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するトランザクション発行回路を備え、
トランザクション発行回路は、コンペアアンドスワップトランザクションを発行するように構成されており、上記少なくとも1つのオペランド値が、コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含み、コンペアアンドスワップトランザクションは、処理ユニットが、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択することを制御するためのものであり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示し、
コンペアアンドスワップトランザクションを発行するとき、トランザクション発行回路は、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第1の領域に比較データ値をパックするように構成される、マスタデバイスを提供する。
少なくともいくつかの例は、処理ユニットであって、
目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含むトランザクションを受信するトランザクション受信回路であり、トランザクション受信回路は、コンペアアンドスワップトランザクションを受信するように構成されており、上記少なくとも1つのオペランド値が、コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、トランザクション受信回路と、
コンペアアンドスワップトランザクションに応答して、目標アドレスに対応する記憶場所を読み出すデータアクセス回路であり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示す、データアクセス回路と、
コンペアアンドスワップトランザクションに応答して、比較データ値が目標データ値に一致するか否かに応じてデータアクセス回路がスワップデータ値を上記記憶場所に書き込むべきか否かを選択する処理回路と
を備え、
処理回路は、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第1の領域内に比較データ値を配置するように構成される、処理ユニットを提供する。
少なくともいくつかの例は、データ処理方法であって、
目標アドレスを指定し、比較データ値およびスワップデータ値を転送するためのデータフィールドを含むコンペアアンドスワップトランザクションを発行することと、
コンペアアンドスワップトランザクションに応答して、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択することであり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示す、選択することと
を含み、
コンペアアンドスワップトランザクションにおいて、比較データ値は、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第1の領域にパックされる、データ処理方法を提供する。
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれるべき以下の実施例の説明から明らかになるであろう。
コンペアアンドスワップトランザクションをサポートする装置の一例を示す図である。 アトミックトランザクションの処理の一例を示す概略図である。 アトミックトランザクションの例示的な符号化を示す図である。 アトミックトランザクションのデータフィールドをパックする代替的な方法を比較のために示す図である。 図4に示すように符号化された場合のアトミックトランザクションを処理する処理回路の一例を示す図である。 比較データ値が、記憶場所の目標データ値の位置に対応するデータフィールドの領域にパックされるようなコンペアアンドスワップトランザクションの符号化の一例を示す図である。 さまざまなデータサイズのデータフィールドのさらなる例を示す図である。 図6に示すように符号化された場合のコンペアアンドスワップトランザクションを処理する処理回路の一例を示す図である。 データフィールドを符号化するためのいくつかの代替的な選択肢を比較のために示す図である。 要求元のマスタデバイスにおけるアトミックトランザクションを生成する方法を示す流れ図である。 処理ユニットにおけるアトミックトランザクションを処理する方法を示す流れ図である。
マスタデバイスは、目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含む1つまたは複数のタイプのトランザクションをサポートする。トランザクションは処理ユニットによって処理される。サポートされているトランザクションの1つのタイプは、データフィールドが、比較データ値およびスワップデータ値を含む少なくとも2つのオペランドを転送するコンペアアンドスワップトランザクションである。コンペアアンドスワップトランザクションに応答して、処理ユニットは、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択する。
目標アドレスのオフセット部分は、記憶場所内の目標データ値の位置を識別する。コンペアアンドスワップトランザクションを発行するとき、マスタデバイスは、第1の領域が記憶場所内の目標データ値の位置に対応するデータフィールド内の位置を有するように、比較データ値を、オフセット部分に応じて選択されるデータフィールドの第1の領域にパックする。アクセスされている特定のアドレスに応じてデータフィールド内の比較データ値の位置を変更することにより、比較データ値はすでに記憶場所内の目標データ値の位置に位置整合されており、そのため、比較データ値と目標データ値の比較を実行する前にデータフィールドをさらにシフトする必要はない。これにより、比較動作をより迅速に開始することによって性能が改善し、コンペアアンドスワップトランザクションの実行に関連する全体的なレイテンシが削減され、また、シフタを排除することによって処理回路の回路オーバーヘッドを削減することができる。
スワップデータ値は、第1の領域に隣接するデータフィールドの第2の領域にパックされ得る。単一のオペランドがデータフィールドで転送されることを指定する他のタイプのトランザクションとは異なり、コンペアアンドスワップトランザクションの場合、少なくとも2つのオペランドが転送される。通常、符号化および復号を簡素化するために、オペランドがデータフィールド内で特定の固定順序でパックされるようにトランザクションを定義する必要がある。しかしながら、本発明者らは、各トランザクションについて比較データ値およびスワップデータ値を同じ順序で符号化すると、データサイズ整合を依然として維持しながら、比較データ値を目標データ値と位置整合することが困難になることを認めた(所与のサイズのデータのブロックがそのサイズの倍数であるアドレスに位置整合される場合に、処理システムは多くの場合、データをより効率的に処理することができる)。
代わりに、アドレスのオフセット部分に応じて、比較データ値およびスワップデータ値の相対的な順序を変えることができる。第1の領域および第2の領域は、結合された部分のサイズの倍数に対応するデータフィールド内のオフセットにおいて始まるデータフィールドの結合された部分を形成し得る。目標アドレスが比較データとスワップデータ値との結合サイズの倍数に対して位置整合されると、スワップデータ値はデータフィールド内の第1の領域に後続する第2の領域にパックされ得る。目標アドレスが結合サイズの倍数に対して不整合であるとき、マスタデバイスは、データフィールド内の第1の領域に先行する第2の領域にスワップデータ値をパックし得る。したがって、スワップデータ値および比較データ値の順序付けは、アクセスされる特定のアドレスと、結合サイズの倍数に対するその位置整合に応じて異なり得る。これは避けるべき複雑さのように思われるかもしれないが(たとえば、代わりにスワップデータ値を常に比較データ値の前または後に配置することが考えられる)、この可変順序符号化には、比較データ値とスワップデータ値とを含むデータの全体ブロックが、依然としてデータサイズ境界に位置整合されながら、比較データ値が、記憶場所内の目標データ値の位置と位置整合された位置にあるという利点がある。たとえば、バッファ、マルチプレクサ、処理論理などは、特定のサイズのチャンクにおいてデータを処理し得、そのため、比較/スワップデータ値を含むブロックが位置整合されたチャンクに対応する場合により効率的に機能することができるため、オペランドブロックをデータサイズ境界に位置整合させることによって、トランザクションを処理する効率が向上する助けとなり得る。
処理ユニットは、データフィールドから抽出された比較データ値および記憶場所から読み出された目標データ値に対して比較演算を実行するための算術論理ユニット(ALU)を有することができる。比較演算において、ALUはその入力の1つとして、コンペアアンドスワップトランザクションのデータフィールドのシフトされていないバージョンを受信することができる。比較値を記憶場所の目標データ値の位置に位置整合させる上述した符号化は、ALUの前のシフトが不要であり、時間を節約して回路オーバーヘッドを減らすために省略することができることを意味する。
スワップデータ値を記憶場所内の目標データ値の位置と位置整合させるようにデータフィールドをシフトするためのシフト演算を実行するために、シフタが依然として処理ユニットに設けられてもよい。スワップ値のシフト演算は、ALUが比較演算を実行するのと並行して実行され、結果、スワップデータ値のシフトに関連するレイテンシは隠される。処理ユニットがシフトスワップデータ値を記憶場所に書き込むか否かを判断し得る前に比較演算の結果が必要になるため、比較演算は処理レイテンシに対してシフト演算よりも大きい全体的な影響を与え、そのため、比較演算に関連するレイテンシの短縮に有利になるようにトランザクションのデータフィールドを符号化することによって、コンペアアンドスワップ演算の全体的なレイテンシを短縮することができる。
マスタデバイスは、単一のオペランド値を搬送するためにデータフィールドが使用される、少なくとも1つの他のタイプのトランザクションをサポートすることもできる。他のタイプのトランザクションは、少なくとも単一のオペランドデータ値に依存する値によって記憶場所を更新するように、処理ユニットをトリガし得る。トランザクションの形式によっては、記憶場所に書き込まれる値は、記憶場所から読み出される値にも依存する場合がある。たとえば、処理ユニットは、転送されているオペランドと記憶場所の以前の値に対して算術/論理演算を実行することによって、新しい値を生成することができる(たとえば、値の加算または減算、またはそれらとAND、ORなどの論理演算との組み合わせなど)。
少なくとも1つの他のタイプのトランザクションでは、単一オペランドデータ値は、コンペアアンドスワップ演算の比較データ値の転送に使用されるアドレスのオフセット部分に基づいて選択されるデータフィールドの同じ第1の領域にパックされ得る。したがって、この第1の領域を使用して単一のオペランドを転送することにより、オペランドは記憶場所内の目標値の位置に位置整合され、これにより以降の処理が簡素化される。したがって、単一オペランドトランザクションおよびコンペアアンドスワップトランザクションの符号化は、受信トランザクションが単一オペランドトランザクションまたはコンペアアンドスワップトランザクションのうちの一方であるか否かに関係なく、ALUが受信トランザクションのデータフィールドとALUの入力のうちの1つとの間で同じマッピングを使用することができるようなものである。トランザクションタイプに関係なく、ALUに同じ入力オペランドマッピングを使用することにより、ALUへの入力のさまざまな選択肢を選択するための追加の多重化論理が不要になり、処理ユニットにおける回路量が削減され、レイテンシが削減される。
上述のデータフィールドを有するトランザクションは、記憶場所内のデータにする、不可分に観察される演算セットを実行するように処理ユニットを制御するためのアトミックトランザクションを含むことができる。アトミックトランザクションは、複数のプロセスが共有データへのアクセスを共有する場合に特に役立ち得る。たとえば、キャッシュ/メモリに関連付けられる論理は、アトミックトランザクションに関連付けられたすべての演算が完了するまで、同じアドレスへの他のアクセスが処理されるのを防止することによってアトミック性を強化することができる。トランザクションをアトミックにすることは、複数のプロセスからの不適切なタイミングのアクセスによって引き起こされるエラーを防ぐ助けとなる。たとえば、ロック変数の設定に関連付けられるコンペアアンドスワップ演算によって、これが別個の非アトミックな読み出し、比較、および書き込み演算として実施された場合、第1のプロセスがロック変数を読み出した後で、ただし、第1のプロセスがロックを要求するためにロック変数の書き込みを完了する前に第2のプロセスがロックを要求しようと試みる可能性があり、そのため、第2のプロセスによってトリガされる読み出しは、ロックがまだ要求されていないことを検出する可能性があり、結果、第2のプロセスがロック自体を要求するためにロックを書き込むことになる。したがって、これにより、第1のプロセスと第2のプロセスの両方がロックを保持していると考えるようになり得、ロックによって制御される関連する共有リソースへの同時アクセスによるエラーが発生する可能性がある。トランザクションをアトミックにすることによって、第1のプロセスが最初にそのトランザクションを開始した場合、第2のプロセスのトランザクションは成功し得ないため、このようなエラーを回避することができる。共有データへのアクセスを共有するプロセスは、システムの異なるマスタデバイス上で実行されるプロセス、または同じデバイス(たとえば、同じハードウェアデバイスで作動する異なる仮想機械、またはマルチスレッド環境内の異なるスレッド)上で実行されるプロセスであり得る。
トランザクションを処理するための処理ユニットは、マスタデバイス自体内の処理回路であり得る。ただし、性能は、目標データが記憶されているメモリまたはキャッシュに近い処理ユニットを使用することによって改善することができる。たとえば、処理ユニットは、マスタデバイスと少なくとも1つの他のマスタデバイスもしくはキャッシュとの間の一貫性を維持するために相互接続内に、またはメモリへのアクセスを制御するためのメモリコントローラ内に設けられ得る。キャッシュまたはメモリのより近くでアトミックトランザクションを実行することにより、マスタデバイスからデータ値を読み出し、マスタデバイス内でALU演算を実行し、その後、結果をメモリ書き戻すことによって生じる遅延を回避することにより、トランザクションに関連するレイテンシが短縮されるだけでなく、アトミックトランザクションにとっても、トランザクションのアトミック性を強制することがより単純になる。
図1は、メモリシステムへのアクセスを共有する複数のマスタデバイス4、6を含むデータ処理装置2の例を概略的に示している。この例では、マスタデバイスは中央処理ユニット(CPU)4とグラフィックス処理ユニット(GPU)6とを含むが、たとえば、例としてネットワークインターフェースコントローラまたはディスプレイコントローラなど、他のタイプのマスタデバイスも提供されてもよいことが理解されよう。CPU4およびGPU6は各々、メモリシステムからのデータをキャッシュするための少なくとも1つのキャッシュ8を有する。メモリシステムは、マスタデバイス4、6内のそれぞれのキャッシュ8とシステム内の任意の他のキャッシュ(たとえば、任意の特定のマスタに割り当てられていない相互接続に結合されたシステムレベルキャッシュ12)との間の一貫性を管理するコヒーレンシ相互接続10を介してアクセスされる。そのローカルキャッシュ8内のデータにアクセスするとき、マスタデバイス4、6は、コヒーレンシトランザクションをコヒーレンシ相互接続10に送信することができる。トランザクションに応答して、相互接続10は、必要なデータの最新のコピーを位置特定し、採用されているコヒーレンシプロトコルの要件に応じて、期限切れの無効化をトリガし、または、必要に応じて修正されたデータをメモリに書き戻すために、それらのキャッシュが対応するアドレスからのデータを保持していると判定される場合、他のキャッシュにスヌープ要求を送信する。データをメインメモリ14からフェッチする必要がある場合、コヒーレンシ相互接続10は、1つまたは複数のメモリコントローラ16を介してメモリ14への読み出し要求をトリガし、同様に、メインメモリへの書き込みはコヒーレンシ相互接続10によってトリガされ得る。マスタデバイスは各々、相互接続10に送信されるトランザクションを生成し、相互接続から応答を受信するとともに、他のマスタによって発行されるトランザクションに応答して相互接続によってトリガされるスヌープ要求を処理する役割を担うトランザクションインターフェース18を有する。インターフェース18は、トランザクションを生成するためのトランザクション発行回路として見ることができる。
データがキャッシュ8へと読み込まれ、メモリに書き込まれるようにすることができるコヒーレンシプロトコルの通常の読み出しまたは書き込みトランザクションに加えて、システムはまた、記憶されているデータの位置により近い処理ユニット20によって処理されるアトミックトランザクションもサポートすることができる。図2に示すように、一般に、アトミックトランザクションには、目標アドレスによって識別されるキャッシュ12またはメモリ14内の記憶場所から値を読み出すデータアクセス回路32、読み出されたデータ値および要求元のマスタデバイスによって提供されるオペランドに対する算術または論理演算を実施する算術/論理ユニット(ALU)34(ただし、以下で説明するアトミックスワップ演算ではALUをバイパスすることができる)、および、結果値をアドレス指定された記憶場所に書き戻すデータアクセス回路32が関与する。アトミックトランザクションを実行する前に記憶場所に記憶されている古い値、またはアトミックトランザクションに応答してALU 34によって生成される新しい値も、要求元のマスタデバイスに返される。読み出し、ALU演算、および書き込みはアトミックに行われ、結果、それらは、部分的に完了することができない、または、メモリもしくはキャッシュ上で実行される他の演算とインターリーブすることができない不可分な一連の演算として処理される。
たとえば、次のタイプのアトミックトランザクションを処理ユニット20によってサポートすることができる。
アトミックトランザクションの目標データがシステムキャッシュ12に記憶されるとき、相互接続内の処理ユニット20を使用してトランザクションを処理することができる。目標データがメインメモリ14に記憶されるとき、アトミックトランザクションは、対応するメモリコントローラ16内の処理ユニット20によって処理することができる。アトミックトランザクションを処理するための処理ユニット20は、システム2内の他の場所に配置することもできることが理解されよう。
したがって、各アトミックトランザクションでは、相互接続10を介してマスタデバイスから処理ユニット20に1つまたは2つのオペランドが転送される必要があり得る。アトミックロード、ストア、およびスワップ演算の場合、転送されるオペランドは1つであるが、アトミック比較演算の場合、比較データ値およびスワップデータ値の2つのオペランドが転送される。図3に示すように、トランザクションは、1つまたは2つのオペランドを転送するためのデータフィールド22と、アクセスする記憶場所の目標アドレス、および、実施されるアトミック演算のタイプを指定し、または、またはアトミックロード/ストアトランザクションのためのALU演算のタイプを指定する(たとえば、ALU演算は、たとえば、加算、減算、乗算、AND、OR、NAND、NOR、XORなどのさまざまな応用形態から選択することができる)情報などの任意の他の制御情報を提供する制御フィールド24とを含むことができる。
オペランド値がデータフィールドへとパックすることによって、処理ユニット20においてアトミック演算を実行するための論理の複雑さが影響を受ける。図4は、データフィールドをパックする代替的な方法を示す比較例を示す。システムは、さまざまなサイズの値を処理するアトミック演算をサポートすることができ、たとえば、オペランド値は、例として1バイト、2バイト、または4バイト値であり得る。一方、キャッシュまたはメモリへの読み出しは、より大きいサイズ(たとえば、8バイトまたは16バイト)を有し得るデータのキャッシュライン全体を返し得る。したがって、目標データ値は、読み出しキャッシュラインの一部内にのみ配置することができる。アトミックロード、アトミックストアおよびアトミックスワップなどの非比較アトミック演算の場合、データフィールドを、アドレス記憶場所から読み出されるデータ値と結合する前にシフトする必要性を回避するために、単一のオペランド(D)を、アドレス記憶場所内の目標データ値の位置に位置整合されたデータフィールドの領域へとパックすることが有用であり得る。たとえば、図4では、アドレスが、目標データがアドレス指定された位置の最下位バイトから始まることを示すオフセット部分0x0を有するとき、データ値Dはデータフィールド内のオフセット0において始まる領域内に配置され得る。図4の右側に示されている例では、アドレスオフセットが0x2であるとき、データ値Dはデータフィールド内の2のオフセットに位置整合され、結果、データフィールドを目標値と結合する前にさらにシフトする必要はない。使用されるオペランドのサイズに応じて、目標データ値を含まない記憶場所の他の部分がアトミック演算の結果によって上書きされないことを保証するために、ALUの適切なマスキングを実行することができる。
ただし、アトミックコンペアアンドスワップ演算の場合、2つのデータ値、比較値(C)およびスワップ値(S)が転送される。この場合、比較データ値およびスワップデータ値の少なくとも1つは、アドレス記憶場所内の目標データ値の位置に位置整合されたデータフィールドの領域に配置することができない。トランザクションの処理の効率を改善するには、一般に、コンペアアンドスワップデータ値の結合サイズの倍数に対応するデータサイズ境界に、転送するデータブロックを位置整合させることが望ましい。たとえば、図4では、結合データサイズは4バイトであり、そのため、4バイトのデータサイズに対してブロックを不整合にするのではなく、オフセット0またはオフセット4において開始するオペランドデータの結合ブロックを配置することが好ましい。図4は、アクセスされる特定のアドレスに関係なく、比較データがオペランドブロックの下部に配置され、スワップデータが上部に配置される例を示す。
ただし、図5に示すように、データフィールドが図4に示すようにパックされるとき、シフトされた値をALU 34に入力する前に、比較値Cをシフトして、アドレス指定されている記憶場所内の目標データ値の位置と位置整合させるシフタ50が、処理ユニット20内で必要とされる。また、データ値Dがすでに目標データAに位置整合されているため、非コンペアアンドスワップトランザクションはシフトを必要としないため、ALU 34に第2のオペランドを供給するときに、データフィールドのシフトバージョンと非シフトバージョンとの間で選択するために、マルチプレクサ52が提供される。シフタ50およびマルチプレクサ52は、追加の回路を必要とし、シフトの結果が利用可能になるまで比較動作を開始することができないため、演算に関連するレイテンシも増加させる。
図6は、コンペアアンドスワップデータ値の順序が目標アドレスのオフセット部分に依存データフィールドの符号化を示す。この例では、比較データ値Cは、目標アドレスのオフセット部分に基づいて選択され、記憶場所内のアドレス目標データAの位置に対応するデータフィールドの第1の領域にパックされる。スワップデータは、スワップおよび比較値の結合サイズに対応するデータサイズ境界に位置整合された、オペランドデータの位置整合されたブロックの残りの半分に配置される。
したがって、目標アドレスがその結合サイズに対応するデータサイズ境界に位置整合されている場合、比較データ値はデータフィールド内でスワップデータ値に先行することになり、比較データ値は、スワップデータ値を含む第2の領域よりも低いオフセットに対応する第1の領域内にある。たとえば、図6の左側は、2つのオペランドの結合サイズが2バイトである例を示し、この場合のアドレスオフセットは0x2であり、これは結合サイズの正確な倍数である。したがって、比較データCは、目標アドレスのオフセット部分に位置整合する2バイトの位置整合されたブロックのより下位の位置(オフセット2)にあり、スワップデータSはオフセット3のより上位の位置にある。
一方、図6の右側に示すように、アドレスオフセットが結合データサイズの正確な倍数ではない場合、スワップデータSを含む第2領域は、比較データCを含む第1の領域に先行する。たとえば、2バイトの倍数ではないアドレスオフセット0x5の場合、比較データCはオフセット5において2バイトの位置整合ブロックの上部にパックされ、スワップデータはオフセット4において位置整合ブロックの残りの半分に配置される。したがって、比較データCは、依然としてアドレス記憶場所内の目標データの位置に位置整合することができ、オペランドデータの結合ブロックは、依然として結合データサイズ境界に位置整合される。
図7は、さまざまなデータサイズのデータフィールドのパックのさらなる例を示す。図7の例A)およびB)は、オペランドサイズが2バイトであり、そのため、オペランドデータの4バイトの結合ブロックが4バイト境界に位置整合している、すなわちオフセット0または4に配置される場合を示している。例A)のようにアドレスオフセット0x0が4バイト境界に位置整合されるとき、比較データCはブロックの下半分のオフセット0にあり、スワップデータSは上半分のオフセット2にある。アドレスオフセット0x2が4バイトのデータ構造境界に対して不整合である例B)では、比較データは4バイトブロックの上半分の第1の領域(オフセット2)にあり、スワップデータは下半分の第2の領域(オフセット0)にある。例C)およびD)は、4バイトのオペランドの同様の例を示している。図6および図7のすべての例は、データを構成するための8バイトフィールドの例を示しているが、これは必須ではなく、他のサイズのデータフィールドが提供されてもよいことが理解されよう。また、データフィールドをトランザクション内の単一のフリット内で送信する必要はなく、一部の例では、データフィールドを、結合してトランザクションを表すパケット全体を形成する、2つ以上のフリット(より狭いバスを介した別個のデータ転送)に分割することができる。
図8に示すように、コンペアアンドスワップ演算のスワップおよび比較データが図6および図7で説明した方法でパックされるとき、図5に示すようなシフタ50およびマルチプレクサ52の必要性がなくなることによって処理ユニット20が簡素化する。比較データCは、アドレス記憶場所内の目標データAの位置にすでに位置整合しているため、ALU演算を開始し得る前にシフトする必要はありません。また、演算がコンペアアンドスワップ演算または別のタイプのアトミック演算であるかに関係なく、ALU 34への第2のオペランドはデータフィールドの同じ領域にあるため、マルチプレクサ52は必要ない。これは、データフィールドとALUの第2オペランドとの間のデータマッピングが、前述のすべてのタイプのアトミックトランザクションについて同じであるためである。すなわち、コンペアアンドスワップ演算と非コンペアアンドスワップアトミック演算の両方でALUに供給されるオペランドは、データパケットの同じバイトから得られる。スワップデータ値Sは目標データ値Aに位置整合しておらず、そのため、処理ユニット20内のシフタ54によって実行されるシフト演算の対象となるが、シフト演算54に関連するレイテンシはクリティカルパスから外れる可能性がある。これは、コンペアアンドスワップ演算を処理するときに、ALU 34によって実行される比較と並行してシフトが実行され得るためである。したがって、この手法により、論理サイズの削減に加えて、アトミック演算の処理におけるレイテンシがなくなる。レイテンシは、コンペアアンドスワップ演算についてだけでなく、マルチプレクサ52をトラバースする必要がないため、他のタイプのアトミック演算についても削減されることに留意されたい。
比較のために、図9は、サイズ境界に対するデータ位置整合を考慮しながら、アトミックコンペアアンドスワップ演算をデータフィールド内で符号化することができる他のいくつかの方法を示す。オプション2は、スワップデータがアドレス指定された目標データに位置整合され、比較データがサイズ整合されたブロックの残りの半分にパックされる例を示す。オプション3は、目標アドレスとサイズ整合された結合アドレス境界の位置整合に関係なく、サイズ整合されたブロックの下位アドレス位置に比較データが配置される例を示す。オプション4は、目標アドレスに関係なく、スワップデータが下位アドレス位置に配置される例を示す。オプション5は、比較データ値およびスワップデータ値を別個のデータフリットで送信することにより、比較データとスワップデータの両方が、記憶場所内の目標データ値Aの位置に合わせて送信されることを可能にする例を示す。
次の表は、図9に示すオプションに必要なさまざまなシフトを示す。
事例A)は、目標アドレスが、スワップ値と比較値との結合サイズに対応するサイズ境界に位置整合されている事例を指し、事例B)は、結合データサイズ境界に対して目標アドレスが不整合である場合を指す。選択されるオプションに関係なく、同等の量のシフトが必要である(比較値およびスワップ値のいずれかをシフトする必要がある)と考えられ得るが、図6に示す、提案されている手法の利点は、比較演算にシフトが必要なく、これによって、比較を実行するALUに関連するレイテンシの下でシフトレイテンシを隠すことが可能になることである。対照的に、比較値へのシフトは、ALU演算によって連続して実行する必要がある。提案されているオプションにより、シフタ50を完全に排除することが可能である。また、データフィールド22とALUへの入力との間のマッピングは、比較演算およびスワップ演算の両方、ならびに他のタイプのアトミックトランザクションの両方で同じであり、マルチプレクサ52が排除される。オプション5は、比較データ値およびスワップデータ値に対する追加の論理を一切必要としないが、アトミック比較トランザクションに2倍のアウトバウンドデータ帯域幅を使用するというデメリットがあり、また、アトミックコンペアアンドスワップ演算のフォーマットは他のアトミックトランザクションとは異なるため、相互接続10による特別な処理も必要になり得る。
図10は、要求元のマスタデバイス4、6におけるアトミックトランザクションを生成する方法を示す。ステップ100において、生成されるアトミックトランザクションのタイプが決定される。トランザクションが非コンペアアンドスワップトランザクションである場合、ステップ102において、トランザクションのオペランドが、目標アドレスのオフセット部分に基づいて選択されるデータフィールドの第1の領域にパックされ、結果、第1の領域がアドレス記憶場所内の目標値の位置と位置整合する。次にステップ104において、トランザクションが発行される。
一方、アトミックトランザクションがコンペアアンドスワップトランザクションである場合、ステップ106において、ステップ102と同じ方法で選択されたデータフィールドの第1の領域に比較値がパックされる。ステップ108において、目標アドレスが比較データ値およびスワップデータ値の結合サイズの倍数に位置整合されているか否かが判定される。アドレスが位置整合されている場合、ステップ110において、スワップデータ値は、比較値に使用される第1の領域に後続するデータフィールドの第2の領域にパックされ、一方、アドレスが結合データサイズの倍数に位置整合されていない場合、ステップ112において、スワップデータ値は、比較データ値を含む第1の領域に先行する第2の領域にパックされる。ステップ108、110、および112の効果は、オペランドデータのブロック全体が、結合データサイズの適切な倍数に位置整合されたデータサイズであるが、比較データ値の位置が、それをアドレス記憶場所内の目標値の位置と位置整合するために変化し、その後、スワップ値が結合データブロックの残りを充填することである。再び、ステップ104において、その後、マスタ内のトランザクション発行インターフェース18により、トランザクションが相互接続10に発行される。
図11は、処理ユニット20におけるアトミックトランザクションを処理する方法を示す。ステップ120において、トランザクション受信回路(図2のインターフェース36)によりアトミックトランザクションが受信される。ステップ122において、目標アドレスにより識別される記憶場所がデータアクセス回路32により読み出される。ステップ124において、トランザクションからのデータフィールドのシフトされていないバージョンと、メモリ14またはキャッシュ12から読み出されたキャッシュラインが、入力オペランドとしてALU34に供給される。ステップ126において、制御回路36は、実行されるトランザクションのタイプを決定する。トランザクションが非コンペアアンドスワップトランザクションである場合、ステップ128において、ALU 34はデータフィールドおよび読み出し値に対して算術演算を実行し、必要なデータを含む部分の外側にあるオペランドまたは結果の部分がマスクされ、その後、ステップ130において、結果はアドレス記憶場所に書き込まれる。アトミックスワップ演算の場合、ALU演算の結果はデータフィールド内で転送されたオペランドに等しく、そのため、記憶場所から読み出される値とは無関係である(代替的に、ALU 34はバイパスされてもよい)。ステップ132において、トランザクションのタイプに応じて、読み出されている記憶場所内の古い値またはALU34によって生成される新しい値のいずれかが要求元に返される。
コンペアアンドスワップトランザクションの場合、ステップ126に続いて、ステップ134において、ALUは比較演算を実行して、データフィールドとキャッシュまたはメモリから読み出された値とを比較する。比較値は、記憶場所内の目標データ値の位置に位置整合するように、目標アドレスのオフセット部分に基づいて選択されるデータフィールドの第1の領域内に配置される。したがって、目標値を含まないデータフィールドおよび読み出しキャッシュラインの部分は、比較中に、たとえばビットマスキングに基づいて無視することができる。一方、比較と並行して、ステップ136において、シフタ54はデータフィールドをシフトして、スワップ値を目標データ値に位置整合させる。ステップ138において、ALU34の結果に基づいて、比較データ値と目標データ値との間に一致があったか否かが判定され、一致がある場合、ステップ140において、シフトされたスワップ値がアドレス記憶場所に書き込まれる。ALUが比較値と目標データ値との間の不一致を検出する場合、ステップ140は省略される。ステップ132において、コンペアアンドスワップトランザクションについて、ステップ122において記憶場所から読み出された古い値が要求元に返される。
本出願において、「〜ように構成されている」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または方法を意味する。たとえば、装置は、規定の動作を提供する専用のハードウェアを有することができ、またはプロセッサもしくは他の処理デバイスが機能を実行するようにプログラムされてもよい。「〜ように構成されている」は、規定の動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
添付図面を参照して本発明の例示的な実施形態を詳細に説明したが、本発明はこれらの厳密な実施形態に限定されず、添付の特許請求の範囲によって規定される本発明の範囲および精神から逸脱することなく、さまざまな変更および修正が当業者によって実施され得ることが理解されるべきである。

Claims (17)

  1. 目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するマスタデバイスであって、前記マスタデバイスは、コンペアアンドスワップトランザクションを発行するように構成されており、前記少なくとも1つのオペランド値が、前記コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、マスタデバイスと、
    前記コンペアアンドスワップトランザクションに応答して、前記比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、前記目標アドレスに対応する前記記憶場所に前記スワップデータ値を書き込むか否かを選択する処理ユニットであって、前記目標アドレスのオフセット部分が、前記記憶場所内の前記目標データ値の位置を示す、処理ユニットと
    を備え、
    前記コンペアアンドスワップトランザクションを発行するとき、前記マスタデバイスは、前記比較データ値を、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第1の領域内にパックするように構成されている、装置。
  2. 前記マスタデバイスは、前記第1の領域に隣接する前記データフィールドの第2の領域に前記スワップデータ値をパックするように構成される、請求項1に記載の装置。
  3. 前記第1の領域および前記第2の領域は、前記データフィールドの結合部分であって、前記結合部分のサイズの倍数に対応する前記データフィールド内のオフセットにおいて始まる、前記データフィールドの結合部分を形成する、請求項2に記載の装置。
  4. 前記比較データ値と前記スワップデータ値との結合サイズの倍数に対して前記目標アドレスが位置整合されるとき、前記マスタデバイスは、前記データフィールド内の前記第1の領域に後続する第2の領域に前記スワップデータ値をパックするように構成され、
    前記目標アドレスが前記結合サイズの倍数に対して不整合であるとき、前記マスタデバイスは、前記データフィールド内の前記第1の領域に先行する第2の領域に前記スワップデータ値をパックするように構成されている、請求項1から3のいずれか一項に記載の装置。
  5. 前記処理ユニットは、前記データフィールドから抽出された前記比較データ値および前記記憶場所から読み出された前記目標データ値に対して比較演算を実行するための算術論理ユニットを備える、請求項1から4のいずれか一項に記載の装置。
  6. 前記比較演算において、前記算術論理ユニットは、該ユニットの入力オペランドの1つとして、前記コンペアアンドスワップトランザクションの前記データフィールドの非シフトバージョンを受信するように構成されている、請求項5に記載の装置。
  7. 前記処理ユニットは、前記スワップデータ値を前記記憶場所内の前記目標データ値の位置と位置整合させるために、前記データフィールドをシフトさせるシフト演算を実行するためのシフタを備える、請求項5または6に記載の装置。
  8. 前記シフタは、前記算術論理ユニットが前記比較演算を実行するのと並行して前記シフト演算を実行するように構成されている、請求項7に記載の装置。
  9. 前記マスタデバイスは、前記データフィールドが単一のオペランドデータ値を含む少なくとも1つの他のタイプのトランザクションを発行するように構成され、前記処理ユニットは、前記少なくとも1つの他のタイプのトランザクションに応答して、少なくとも前記単一のオペランドデータ値に依存する値によって前記目標アドレスに対応する記憶場所を更新し、
    前記少なくとも1つの他のタイプのトランザクションについて、前記マスタデバイスは、前記単一のオペランドデータ値を前記データフィールドの前記第1の領域にパックするように構成されている、請求項1から8のいずれか一項に記載の装置。
  10. 前記処理ユニットは、所与のトランザクションに応答して前記記憶場所に書き込まれる値を生成する算術論理ユニットを含み、前記所与のトランザクションの前記データフィールドと前記算術論理ユニットに対する前記入力の1つとの間のマッピングは、前記コンペアアンドスワップトランザクションと前記少なくとも1つの他のタイプのトランザクションの両方について同じである、請求項9に記載の装置。
  11. 前記データフィールドを含む前記トランザクションは、不可分に観察される演算セットを実行するように前記処理ユニットを制御するアトミックトランザクションを含む、請求項1から10のいずれか一項に記載の装置。
  12. 各々が前記トランザクションを発行するように構成されている複数のマスタデバイスを備える、請求項1から11のいずれか一項に記載の装置。
  13. 前記装置は、前記マスタデバイスと少なくとも1つの他のマスタデバイスまたはキャッシュとの間のコヒーレンシを維持する相互接続を備え、前記相互接続が前記処理ユニットを備える、請求項1から12のいずれか一項に記載の装置。
  14. 前記装置は、メモリへのアクセスを制御するメモリコントローラを備え、前記メモリコントローラが前記処理ユニットを備える、請求項1から13のいずれか一項に記載の装置。
  15. 目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するトランザクション発行回路を備え、
    前記トランザクション発行回路は、コンペアアンドスワップトランザクションを発行するように構成されており、前記少なくとも1つのオペランド値が、前記コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含み、前記コンペアアンドスワップトランザクションは、処理ユニットが、前記比較データ値が前記記憶場所から読み出された目標データ値と一致するか否かに応じて、前記目標アドレスに対応する記憶場所に前記スワップデータ値を書き込むか否かを選択することを制御するためのものであり、前記目標アドレスのオフセット部分が、前記記憶場所内の前記目標データ値の位置を示し、
    前記コンペアアンドスワップトランザクションを発行するとき、前記トランザクション発行回路は、前記比較データ値を、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第1の領域内にパックするように構成されている、マスタデバイス。
  16. 目標アドレスを指定し、少なくとも1つのオペランド値を転送するためのデータフィールドを含むトランザクションを受信するトランザクション受信回路であって、前記トランザクション受信回路は、コンペアアンドスワップトランザクションを受信するように構成されており、前記少なくとも1つのオペランド値が、前記コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、トランザクション受信回路と、
    前記コンペアアンドスワップトランザクションに応答して、前記目標アドレスに対応する記憶場所を読み出すデータアクセス回路であり、前記目標アドレスのオフセット部分が、前記記憶場所内の目標データ値の位置を示す、データアクセス回路と、
    前記コンペアアンドスワップトランザクションに応答して、前記比較データ値が前記目標データ値に一致するか否かに応じて前記データアクセス回路が前記スワップデータ値を前記記憶場所に書き込むべきか否かを選択する処理回路と
    を備え、
    前記処理回路は、前記比較データ値を、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第1の領域内に配置するように構成されている、処理ユニット。
  17. 目標アドレスを指定し、比較データ値およびスワップデータ値を転送するためのデータフィールドを含むコンペアアンドスワップトランザクションを発行することと、
    前記コンペアアンドスワップトランザクションに応答して、前記比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、前記目標アドレスに対応する前記記憶場所に前記スワップデータ値を書き込むか否かを選択することであり、前記目標アドレスのオフセット部分が、前記記憶場所内の前記目標データ値の位置を示す、選択することと
    を含み、
    前記コンペアアンドスワップトランザクションにおいて、前記比較データ値は、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第1の領域内にパックされる、データ処理方法。
JP2019541737A 2017-02-08 2017-12-20 コンペアアンドスワップトランザクション Active JP7158390B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/427,335 US10223002B2 (en) 2017-02-08 2017-02-08 Compare-and-swap transaction
US15/427,335 2017-02-08
PCT/GB2017/053827 WO2018146439A1 (en) 2017-02-08 2017-12-20 Compare-and-swap transaction

Publications (2)

Publication Number Publication Date
JP2020506483A true JP2020506483A (ja) 2020-02-27
JP7158390B2 JP7158390B2 (ja) 2022-10-21

Family

ID=60937794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019541737A Active JP7158390B2 (ja) 2017-02-08 2017-12-20 コンペアアンドスワップトランザクション

Country Status (8)

Country Link
US (1) US10223002B2 (ja)
EP (1) EP3580657B1 (ja)
JP (1) JP7158390B2 (ja)
KR (1) KR102558103B1 (ja)
CN (1) CN110235107B (ja)
IL (1) IL268320B (ja)
TW (1) TWI759397B (ja)
WO (1) WO2018146439A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445096B2 (en) 2017-04-05 2019-10-15 Cavium, Llc Managing lock and unlock operations using traffic prioritization
US10331500B2 (en) 2017-04-05 2019-06-25 Cavium, Llc Managing fairness for lock and unlock operations using operation prioritization
US20210373975A1 (en) * 2020-05-29 2021-12-02 Advanced Micro Devices, Inc. Workgroup synchronization and processing

Citations (3)

* 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 マルチプロセツサシステムにおけるコンペアアンドスワツプ方式
US20080184019A1 (en) * 2007-01-30 2008-07-31 International Business Machines Corporation Method for embedding short rare code sequences in hot code without branch-arounds
US20160253275A1 (en) * 2015-02-26 2016-09-01 Fujitsu Limited Information processing device, information processing system, and exclusive control program

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0039227A3 (en) * 1980-04-25 1982-09-01 Data General Corporation Data processing system
US5241635A (en) * 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
US5889983A (en) 1997-01-21 1999-03-30 Intel Corporation Compare and exchange operation in a processing system
US6480845B1 (en) 2000-06-14 2002-11-12 Bull Hn Information Systems Inc. Method and data processing system for emulating virtual memory working spaces
US6502170B2 (en) 2000-12-15 2002-12-31 Intel Corporation Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes
US7447869B2 (en) * 2005-04-07 2008-11-04 Ati Technologies, Inc. Method and apparatus for fragment processing in a virtual memory system
US8099448B2 (en) * 2005-11-02 2012-01-17 Qualcomm Incorporated Arithmetic logic and shifting device for use in a processor
US8103764B2 (en) * 2008-10-14 2012-01-24 CacheIQ, Inc. Method and apparatus for matching trigger pattern
US20110010522A1 (en) * 2009-06-12 2011-01-13 Cray Inc. Multiprocessor communication protocol bridge between scalar and vector compute nodes
US8601242B2 (en) * 2009-12-18 2013-12-03 Intel Corporation Adaptive optimized compare-exchange operation
US8645404B2 (en) * 2011-10-21 2014-02-04 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
US9304940B2 (en) * 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
US9524242B2 (en) * 2014-01-28 2016-12-20 Stmicroelectronics International N.V. Cache memory system with simultaneous read-write in single cycle
US9749266B2 (en) * 2015-08-28 2017-08-29 International Business Machines Corporation Coalescing messages using a network interface controller

Patent Citations (5)

* 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 マルチプロセツサシステムにおけるコンペアアンドスワツプ方式
US20080184019A1 (en) * 2007-01-30 2008-07-31 International Business Machines Corporation Method for embedding short rare code sequences in hot code without branch-arounds
JP2010517153A (ja) * 2007-01-30 2010-05-20 インターナショナル・ビジネス・マシーンズ・コーポレーション 回避分岐を使わずに、短いレア・コード・シーケンスをホット・コードの中に埋め込む方法、システム、コンピュータ・プログラム
US20160253275A1 (en) * 2015-02-26 2016-09-01 Fujitsu Limited Information processing device, information processing system, and exclusive control program
JP2016157399A (ja) * 2015-02-26 2016-09-01 富士通株式会社 情報処理装置、情報処理システム及び排他制御プログラム

Also Published As

Publication number Publication date
JP7158390B2 (ja) 2022-10-21
WO2018146439A1 (en) 2018-08-16
TW201830248A (zh) 2018-08-16
WO2018146439A9 (en) 2019-08-01
CN110235107B (zh) 2023-12-26
KR20190112019A (ko) 2019-10-02
EP3580657B1 (en) 2021-02-24
EP3580657A1 (en) 2019-12-18
IL268320A (en) 2019-09-26
US10223002B2 (en) 2019-03-05
US20180225047A1 (en) 2018-08-09
IL268320B (en) 2021-09-30
KR102558103B1 (ko) 2023-07-21
CN110235107A (zh) 2019-09-13
TWI759397B (zh) 2022-04-01

Similar Documents

Publication Publication Date Title
US7228389B2 (en) System and method for maintaining cache coherency in a shared memory system
JP5787629B2 (ja) マシンビジョン用マルチプロセッサシステムオンチップ
JP2004348734A (ja) 非対称型異種マルチプロセッサ環境でアトミック更新プリミティブを提供するための方法
US10079916B2 (en) Register files for I/O packet compression
US9595075B2 (en) Load/store operations in texture hardware
TW201107974A (en) Cache coherent support for flash in a memory hierarchy
US6260117B1 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
JP2012038293A5 (ja)
JP2000122916A (ja) 原子的更新処理を実行する方法
US20140025891A1 (en) Relaxed coherency between different caches
JP7158390B2 (ja) コンペアアンドスワップトランザクション
US20040073754A1 (en) Computer system supporting read-to-write-back transactions for I/O devices
US10121220B2 (en) System and method for creating aliased mappings to minimize impact of cache invalidation
US5748938A (en) System and method for maintaining coherency of information transferred between multiple devices
US11275589B2 (en) Method for managing the supply of information, such as instructions, to a microprocessor, and a corresponding system
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法
JP2007241601A (ja) マルチプロセッサシステム
JP2008123333A (ja) 半導体集積回路装置
CN109791521B (zh) 提供数据访问的原子集的装置及方法
JP2008204488A (ja) マルチプロセッサ装置
JPH04296950A (ja) キャッシュメモリ装置
JP2008112324A (ja) データ転送方法およびデータ転送装置
JPH06324942A (ja) 並列計算機システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201211

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220830

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221011

R150 Certificate of patent or registration of utility model

Ref document number: 7158390

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150