(57)【要約】  マスタデバイスによって、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択するように処理ユニットに要求するために、コンペアアンドスワップトランザクションを発行することができる。比較データ値およびスワップデータ値は、コンペアアンドスワップトランザクションのデータフィールド内で転送される。比較データ値は、目標アドレスのオフセット部分に応じた、記憶場所内のアドレス目標データ値の位置に対応するデータフィールド内の位置を有するデータフィールドの第１の領域にパックされる。これにより、コンペアアンドスワップトランザクションを処理するために処理ユニットにおいて必要なレイテンシおよび回路が削減される。
2020506483.tif 000002
【特許請求の範囲】
【請求項１】
目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するマスタデバイスであって、前記マスタデバイスは、コンペアアンドスワップトランザクションを発行するように構成されており、前記少なくとも１つのオペランド値が、前記コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、マスタデバイスと、
前記コンペアアンドスワップトランザクションに応答して、前記比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、前記目標アドレスに対応する前記記憶場所に前記スワップデータ値を書き込むか否かを選択する処理ユニットであって、前記目標アドレスのオフセット部分が、前記記憶場所内の前記目標データ値の位置を示す、処理ユニットと
を備え、
前記コンペアアンドスワップトランザクションを発行するとき、前記マスタデバイスは、前記比較データ値を、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第１の領域内にパックするように構成されている、装置。
【請求項２】
前記マスタデバイスは、前記第１の領域に隣接する前記データフィールドの第２の領域に前記スワップデータ値をパックするように構成される、請求項１に記載の装置。
【請求項３】
前記第１の領域および前記第２の領域は、前記データフィールドの結合部分であって、前記結合部分のサイズの倍数に対応する前記データフィールド内のオフセットにおいて始まる、前記データフィールドの結合部分を形成する、請求項２に記載の装置。
【請求項４】
前記比較データ値と前記スワップデータ値との結合サイズの倍数に対して前記目標アドレスが位置整合されるとき、前記マスタデバイスは、前記データフィールド内の前記第１の領域に後続する第２の領域に前記スワップデータ値をパックするように構成され、
前記目標アドレスが前記結合サイズの倍数に対して不整合であるとき、前記マスタデバイスは、前記データフィールド内の前記第１の領域に先行する第２の領域に前記スワップデータ値をパックするように構成されている、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記処理ユニットは、前記データフィールドから抽出された前記比較データ値および前記記憶場所から読み出された前記目標データ値に対して比較演算を実行するための算術論理ユニットを備える、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記比較演算において、前記算術論理ユニットは、該ユニットの入力オペランドの１つとして、前記コンペアアンドスワップトランザクションの前記データフィールドの非シフトバージョンを受信するように構成されている、請求項５に記載の装置。
【請求項７】
前記処理ユニットは、前記スワップデータ値を前記記憶場所内の前記目標データ値の位置と位置整合させるために、前記データフィールドをシフトさせるシフト演算を実行するためのシフタを備える、請求項５または６に記載の装置。
【請求項８】
前記シフタは、前記算術論理ユニットが前記比較演算を実行するのと並行して前記シフト演算を実行するように構成されている、請求項７に記載の装置。
【請求項９】
前記マスタデバイスは、前記データフィールドが単一のオペランドデータ値を含む少なくとも１つの他のタイプのトランザクションを発行するように構成され、前記処理ユニットは、前記少なくとも１つの他のタイプのトランザクションに応答して、少なくとも前記単一のオペランドデータ値に依存する値によって前記目標アドレスに対応する記憶場所を更新し、
前記少なくとも１つの他のタイプのトランザクションについて、前記マスタデバイスは、前記単一のオペランドデータ値を前記データフィールドの前記第１の領域にパックするように構成されている、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記処理ユニットは、所与のトランザクションに応答して前記記憶場所に書き込まれる値を生成する算術論理ユニットを含み、前記所与のトランザクションの前記データフィールドと前記算術論理ユニットに対する前記入力の１つとの間のマッピングは、前記コンペアアンドスワップトランザクションと前記少なくとも１つの他のタイプのトランザクションの両方について同じである、請求項９に記載の装置。
【請求項１１】
前記データフィールドを含む前記トランザクションは、不可分に観察される演算セットを実行するように前記処理ユニットを制御するアトミックトランザクションを含む、請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
各々が前記トランザクションを発行するように構成されている複数のマスタデバイスを備える、請求項１から１１のいずれか一項に記載の装置。
【請求項１３】
前記装置は、前記マスタデバイスと少なくとも１つの他のマスタデバイスまたはキャッシュとの間のコヒーレンシを維持する相互接続を備え、前記相互接続が前記処理ユニットを備える、請求項１から１２のいずれか一項に記載の装置。
【請求項１４】
前記装置は、メモリへのアクセスを制御するメモリコントローラを備え、前記メモリコントローラが前記処理ユニットを備える、請求項１から１３のいずれか一項に記載の装置。
【請求項１５】
目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するトランザクション発行回路を備え、
前記トランザクション発行回路は、コンペアアンドスワップトランザクションを発行するように構成されており、前記少なくとも１つのオペランド値が、前記コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含み、前記コンペアアンドスワップトランザクションは、処理ユニットが、前記比較データ値が前記記憶場所から読み出された目標データ値と一致するか否かに応じて、前記目標アドレスに対応する記憶場所に前記スワップデータ値を書き込むか否かを選択することを制御するためのものであり、前記目標アドレスのオフセット部分が、前記記憶場所内の前記目標データ値の位置を示し、
前記コンペアアンドスワップトランザクションを発行するとき、前記トランザクション発行回路は、前記比較データ値を、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第１の領域内にパックするように構成されている、マスタデバイス。
【請求項１６】
目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含むトランザクションを受信するトランザクション受信回路であって、前記トランザクション受信回路は、コンペアアンドスワップトランザクションを受信するように構成されており、前記少なくとも１つのオペランド値が、前記コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、トランザクション受信回路と、
前記コンペアアンドスワップトランザクションに応答して、前記目標アドレスに対応する記憶場所を読み出すデータアクセス回路であり、前記目標アドレスのオフセット部分が、前記記憶場所内の目標データ値の位置を示す、データアクセス回路と、
前記コンペアアンドスワップトランザクションに応答して、前記比較データ値が前記目標データ値に一致するか否かに応じて前記データアクセス回路が前記スワップデータ値を前記記憶場所に書き込むべきか否かを選択する処理回路と
を備え、
前記処理回路は、前記比較データ値を、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第１の領域内に配置するように構成されている、処理ユニット。
【請求項１７】
目標アドレスを指定し、比較データ値およびスワップデータ値を転送するためのデータフィールドを含むコンペアアンドスワップトランザクションを発行することと、
前記コンペアアンドスワップトランザクションに応答して、前記比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、前記目標アドレスに対応する前記記憶場所に前記スワップデータ値を書き込むか否かを選択することであり、前記目標アドレスのオフセット部分が、前記記憶場所内の前記目標データ値の位置を示す、選択することと
を含み、
前記コンペアアンドスワップトランザクションにおいて、前記比較データ値は、前記記憶場所内の前記目標データ値の位置に対応する前記データフィールド内の位置を有しそして前記目標アドレスの前記オフセット部分に応じて選択される前記データフィールドの第１の領域内にパックされる、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技法は、データ処理の分野に関する。
【背景技術】
【０００２】
データ処理装置は、メモリまたはキャッシュ内の記憶場所からのデータ値の読み出し、読み出されたデータ値と比較データ値との比較、および比較データ値が目標データ値と一致する場合の、スワップデータ値の記憶場所への書き込みをトリガするコンペアアンドスワップトランザクションをサポートし得る。これは、複数の異なるプロセスが共有リソースにアクセスすることができる場合などに有用であり得る。たとえば、コンペアアンドスワップトランザクションの対象となる場所は、プロセスが共有データにアクセスすることができるか否かを制御するロック変数を記憶することができる。コンペアアンドスワップトランザクションは、ロック変数と特定の値との比較を実行して、ロックが現在別のプロセスによって設定されているか否かを確認し、ロックが現在設定されていない場合は、ロックを要求するためにその記憶場所にスワップデータ値を書き込む。このとき、共有リソースを使用する後続の処理は、ロックを要求するためにコンペアアンドスワップトランザクションの正常な実行に依存し得る。
【発明の概要】
【０００３】
少なくともいくつかの例は、装置であって、
目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するマスタデバイスであり、マスタデバイスは、コンペアアンドスワップトランザクションを発行するように構成されており、上記少なくとも１つのオペランド値が、コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、マスタデバイスと、
コンペアアンドスワップトランザクションに応答して、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択する処理ユニットであり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示す、処理ユニットと
を備え、
コンペアアンドスワップトランザクションを発行するとき、マスタデバイスは、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第１の領域に比較データ値をパックするように構成される、装置を提供する。
【０００４】
少なくともいくつかの例は、マスタデバイスであって、
目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含むトランザクションを発行するトランザクション発行回路を備え、
トランザクション発行回路は、コンペアアンドスワップトランザクションを発行するように構成されており、上記少なくとも１つのオペランド値が、コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含み、コンペアアンドスワップトランザクションは、処理ユニットが、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択することを制御するためのものであり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示し、
コンペアアンドスワップトランザクションを発行するとき、トランザクション発行回路は、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第１の領域に比較データ値をパックするように構成される、マスタデバイスを提供する。
【０００５】
少なくともいくつかの例は、処理ユニットであって、
目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含むトランザクションを受信するトランザクション受信回路であり、トランザクション受信回路は、コンペアアンドスワップトランザクションを受信するように構成されており、上記少なくとも１つのオペランド値が、コンペアアンドスワップトランザクションのための比較データ値およびスワップデータ値を含む、トランザクション受信回路と、
コンペアアンドスワップトランザクションに応答して、目標アドレスに対応する記憶場所を読み出すデータアクセス回路であり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示す、データアクセス回路と、
コンペアアンドスワップトランザクションに応答して、比較データ値が目標データ値に一致するか否かに応じてデータアクセス回路がスワップデータ値を上記記憶場所に書き込むべきか否かを選択する処理回路と
を備え、
処理回路は、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第１の領域内に比較データ値を配置するように構成される、処理ユニットを提供する。
【０００６】
少なくともいくつかの例は、データ処理方法であって、
目標アドレスを指定し、比較データ値およびスワップデータ値を転送するためのデータフィールドを含むコンペアアンドスワップトランザクションを発行することと、
コンペアアンドスワップトランザクションに応答して、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択することであり、目標アドレスのオフセット部分が、記憶場所内の目標データ値の位置を示す、選択することと
を含み、
コンペアアンドスワップトランザクションにおいて、比較データ値は、目標アドレスの上記オフセット部分に応じて選択され、記憶場所内の目標データ値の位置に対応する上記データフィールド内の位置を有する上記データフィールドの第１の領域にパックされる、データ処理方法を提供する。
【０００７】
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれるべき以下の実施例の説明から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】コンペアアンドスワップトランザクションをサポートする装置の一例を示す図である。
【図２】アトミックトランザクションの処理の一例を示す概略図である。
【図３】アトミックトランザクションの例示的な符号化を示す図である。
【図４】アトミックトランザクションのデータフィールドをパックする代替的な方法を比較のために示す図である。
【図５】図４に示すように符号化された場合のアトミックトランザクションを処理する処理回路の一例を示す図である。
【図６】比較データ値が、記憶場所の目標データ値の位置に対応するデータフィールドの領域にパックされるようなコンペアアンドスワップトランザクションの符号化の一例を示す図である。
【図７】さまざまなデータサイズのデータフィールドのさらなる例を示す図である。
【図８】図６に示すように符号化された場合のコンペアアンドスワップトランザクションを処理する処理回路の一例を示す図である。
【図９】データフィールドを符号化するためのいくつかの代替的な選択肢を比較のために示す図である。
【図１０】要求元のマスタデバイスにおけるアトミックトランザクションを生成する方法を示す流れ図である。
【図１１】処理ユニットにおけるアトミックトランザクションを処理する方法を示す流れ図である。
【発明を実施するための形態】
【０００９】
マスタデバイスは、目標アドレスを指定し、少なくとも１つのオペランド値を転送するためのデータフィールドを含む１つまたは複数のタイプのトランザクションをサポートする。トランザクションは処理ユニットによって処理される。サポートされているトランザクションの１つのタイプは、データフィールドが、比較データ値およびスワップデータ値を含む少なくとも２つのオペランドを転送するコンペアアンドスワップトランザクションである。コンペアアンドスワップトランザクションに応答して、処理ユニットは、比較データ値が記憶場所から読み出された目標データ値と一致するか否かに応じて、目標アドレスに対応する記憶場所にスワップデータ値を書き込むか否かを選択する。
【００１０】
目標アドレスのオフセット部分は、記憶場所内の目標データ値の位置を識別する。コンペアアンドスワップトランザクションを発行するとき、マスタデバイスは、第１の領域が記憶場所内の目標データ値の位置に対応するデータフィールド内の位置を有するように、比較データ値を、オフセット部分に応じて選択されるデータフィールドの第１の領域にパックする。アクセスされている特定のアドレスに応じてデータフィールド内の比較データ値の位置を変更することにより、比較データ値はすでに記憶場所内の目標データ値の位置に位置整合されており、そのため、比較データ値と目標データ値の比較を実行する前にデータフィールドをさらにシフトする必要はない。これにより、比較動作をより迅速に開始することによって性能が改善し、コンペアアンドスワップトランザクションの実行に関連する全体的なレイテンシが削減され、また、シフタを排除することによって処理回路の回路オーバーヘッドを削減することができる。
【００１１】
スワップデータ値は、第１の領域に隣接するデータフィールドの第２の領域にパックされ得る。単一のオペランドがデータフィールドで転送されることを指定する他のタイプのトランザクションとは異なり、コンペアアンドスワップトランザクションの場合、少なくとも２つのオペランドが転送される。通常、符号化および復号を簡素化するために、オペランドがデータフィールド内で特定の固定順序でパックされるようにトランザクションを定義する必要がある。しかしながら、本発明者らは、各トランザクションについて比較データ値およびスワップデータ値を同じ順序で符号化すると、データサイズ整合を依然として維持しながら、比較データ値を目標データ値と位置整合することが困難になることを認めた（所与のサイズのデータのブロックがそのサイズの倍数であるアドレスに位置整合される場合に、処理システムは多くの場合、データをより効率的に処理することができる）。
【００１２】
代わりに、アドレスのオフセット部分に応じて、比較データ値およびスワップデータ値の相対的な順序を変えることができる。第１の領域および第２の領域は、結合された部分のサイズの倍数に対応するデータフィールド内のオフセットにおいて始まるデータフィールドの結合された部分を形成し得る。目標アドレスが比較データとスワップデータ値との結合サイズの倍数に対して位置整合されると、スワップデータ値はデータフィールド内の第１の領域に後続する第２の領域にパックされ得る。目標アドレスが結合サイズの倍数に対して不整合であるとき、マスタデバイスは、データフィールド内の第１の領域に先行する第２の領域にスワップデータ値をパックし得る。したがって、スワップデータ値および比較データ値の順序付けは、アクセスされる特定のアドレスと、結合サイズの倍数に対するその位置整合に応じて異なり得る。これは避けるべき複雑さのように思われるかもしれないが（たとえば、代わりにスワップデータ値を常に比較データ値の前または後に配置することが考えられる）、この可変順序符号化には、比較データ値とスワップデータ値とを含むデータの全体ブロックが、依然としてデータサイズ境界に位置整合されながら、比較データ値が、記憶場所内の目標データ値の位置と位置整合された位置にあるという利点がある。たとえば、バッファ、マルチプレクサ、処理論理などは、特定のサイズのチャンクにおいてデータを処理し得、そのため、比較／スワップデータ値を含むブロックが位置整合されたチャンクに対応する場合により効率的に機能することができるため、オペランドブロックをデータサイズ境界に位置整合させることによって、トランザクションを処理する効率が向上する助けとなり得る。
【００１３】
処理ユニットは、データフィールドから抽出された比較データ値および記憶場所から読み出された目標データ値に対して比較演算を実行するための算術論理ユニット（ＡＬＵ）を有することができる。比較演算において、ＡＬＵはその入力の１つとして、コンペアアンドスワップトランザクションのデータフィールドのシフトされていないバージョンを受信することができる。比較値を記憶場所の目標データ値の位置に位置整合させる上述した符号化は、ＡＬＵの前のシフトが不要であり、時間を節約して回路オーバーヘッドを減らすために省略することができることを意味する。
【００１４】
スワップデータ値を記憶場所内の目標データ値の位置と位置整合させるようにデータフィールドをシフトするためのシフト演算を実行するために、シフタが依然として処理ユニットに設けられてもよい。スワップ値のシフト演算は、ＡＬＵが比較演算を実行するのと並行して実行され、結果、スワップデータ値のシフトに関連するレイテンシは隠される。処理ユニットがシフトスワップデータ値を記憶場所に書き込むか否かを判断し得る前に比較演算の結果が必要になるため、比較演算は処理レイテンシに対してシフト演算よりも大きい全体的な影響を与え、そのため、比較演算に関連するレイテンシの短縮に有利になるようにトランザクションのデータフィールドを符号化することによって、コンペアアンドスワップ演算の全体的なレイテンシを短縮することができる。
【００１５】
マスタデバイスは、単一のオペランド値を搬送するためにデータフィールドが使用される、少なくとも１つの他のタイプのトランザクションをサポートすることもできる。他のタイプのトランザクションは、少なくとも単一のオペランドデータ値に依存する値によって記憶場所を更新するように、処理ユニットをトリガし得る。トランザクションの形式によっては、記憶場所に書き込まれる値は、記憶場所から読み出される値にも依存する場合がある。たとえば、処理ユニットは、転送されているオペランドと記憶場所の以前の値に対して算術／論理演算を実行することによって、新しい値を生成することができる（たとえば、値の加算または減算、またはそれらとＡＮＤ、ＯＲなどの論理演算との組み合わせなど）。
【００１６】
少なくとも１つの他のタイプのトランザクションでは、単一オペランドデータ値は、コンペアアンドスワップ演算の比較データ値の転送に使用されるアドレスのオフセット部分に基づいて選択されるデータフィールドの同じ第１の領域にパックされ得る。したがって、この第１の領域を使用して単一のオペランドを転送することにより、オペランドは記憶場所内の目標値の位置に位置整合され、これにより以降の処理が簡素化される。したがって、単一オペランドトランザクションおよびコンペアアンドスワップトランザクションの符号化は、受信トランザクションが単一オペランドトランザクションまたはコンペアアンドスワップトランザクションのうちの一方であるか否かに関係なく、ＡＬＵが受信トランザクションのデータフィールドとＡＬＵの入力のうちの１つとの間で同じマッピングを使用することができるようなものである。トランザクションタイプに関係なく、ＡＬＵに同じ入力オペランドマッピングを使用することにより、ＡＬＵへの入力のさまざまな選択肢を選択するための追加の多重化論理が不要になり、処理ユニットにおける回路量が削減され、レイテンシが削減される。
【００１７】
上述のデータフィールドを有するトランザクションは、記憶場所内のデータにする、不可分に観察される演算セットを実行するように処理ユニットを制御するためのアトミックトランザクションを含むことができる。アトミックトランザクションは、複数のプロセスが共有データへのアクセスを共有する場合に特に役立ち得る。たとえば、キャッシュ／メモリに関連付けられる論理は、アトミックトランザクションに関連付けられたすべての演算が完了するまで、同じアドレスへの他のアクセスが処理されるのを防止することによってアトミック性を強化することができる。トランザクションをアトミックにすることは、複数のプロセスからの不適切なタイミングのアクセスによって引き起こされるエラーを防ぐ助けとなる。たとえば、ロック変数の設定に関連付けられるコンペアアンドスワップ演算によって、これが別個の非アトミックな読み出し、比較、および書き込み演算として実施された場合、第１のプロセスがロック変数を読み出した後で、ただし、第１のプロセスがロックを要求するためにロック変数の書き込みを完了する前に第２のプロセスがロックを要求しようと試みる可能性があり、そのため、第２のプロセスによってトリガされる読み出しは、ロックがまだ要求されていないことを検出する可能性があり、結果、第２のプロセスがロック自体を要求するためにロックを書き込むことになる。したがって、これにより、第１のプロセスと第２のプロセスの両方がロックを保持していると考えるようになり得、ロックによって制御される関連する共有リソースへの同時アクセスによるエラーが発生する可能性がある。トランザクションをアトミックにすることによって、第１のプロセスが最初にそのトランザクションを開始した場合、第２のプロセスのトランザクションは成功し得ないため、このようなエラーを回避することができる。共有データへのアクセスを共有するプロセスは、システムの異なるマスタデバイス上で実行されるプロセス、または同じデバイス（たとえば、同じハードウェアデバイスで作動する異なる仮想機械、またはマルチスレッド環境内の異なるスレッド）上で実行されるプロセスであり得る。
【００１８】
トランザクションを処理するための処理ユニットは、マスタデバイス自体内の処理回路であり得る。ただし、性能は、目標データが記憶されているメモリまたはキャッシュに近い処理ユニットを使用することによって改善することができる。たとえば、処理ユニットは、マスタデバイスと少なくとも１つの他のマスタデバイスもしくはキャッシュとの間の一貫性を維持するために相互接続内に、またはメモリへのアクセスを制御するためのメモリコントローラ内に設けられ得る。キャッシュまたはメモリのより近くでアトミックトランザクションを実行することにより、マスタデバイスからデータ値を読み出し、マスタデバイス内でＡＬＵ演算を実行し、その後、結果をメモリ書き戻すことによって生じる遅延を回避することにより、トランザクションに関連するレイテンシが短縮されるだけでなく、アトミックトランザクションにとっても、トランザクションのアトミック性を強制することがより単純になる。
【００１９】
図１は、メモリシステムへのアクセスを共有する複数のマスタデバイス４、６を含むデータ処理装置２の例を概略的に示している。この例では、マスタデバイスは中央処理ユニット（ＣＰＵ）４とグラフィックス処理ユニット（ＧＰＵ）６とを含むが、たとえば、例としてネットワークインターフェースコントローラまたはディスプレイコントローラなど、他のタイプのマスタデバイスも提供されてもよいことが理解されよう。ＣＰＵ４およびＧＰＵ６は各々、メモリシステムからのデータをキャッシュするための少なくとも１つのキャッシュ８を有する。メモリシステムは、マスタデバイス４、６内のそれぞれのキャッシュ８とシステム内の任意の他のキャッシュ（たとえば、任意の特定のマスタに割り当てられていない相互接続に結合されたシステムレベルキャッシュ１２）との間の一貫性を管理するコヒーレンシ相互接続１０を介してアクセスされる。そのローカルキャッシュ８内のデータにアクセスするとき、マスタデバイス４、６は、コヒーレンシトランザクションをコヒーレンシ相互接続１０に送信することができる。トランザクションに応答して、相互接続１０は、必要なデータの最新のコピーを位置特定し、採用されているコヒーレンシプロトコルの要件に応じて、期限切れの無効化をトリガし、または、必要に応じて修正されたデータをメモリに書き戻すために、それらのキャッシュが対応するアドレスからのデータを保持していると判定される場合、他のキャッシュにスヌープ要求を送信する。データをメインメモリ１４からフェッチする必要がある場合、コヒーレンシ相互接続１０は、１つまたは複数のメモリコントローラ１６を介してメモリ１４への読み出し要求をトリガし、同様に、メインメモリへの書き込みはコヒーレンシ相互接続１０によってトリガされ得る。マスタデバイスは各々、相互接続１０に送信されるトランザクションを生成し、相互接続から応答を受信するとともに、他のマスタによって発行されるトランザクションに応答して相互接続によってトリガされるスヌープ要求を処理する役割を担うトランザクションインターフェース１８を有する。インターフェース１８は、トランザクションを生成するためのトランザクション発行回路として見ることができる。
【００２０】
データがキャッシュ８へと読み込まれ、メモリに書き込まれるようにすることができるコヒーレンシプロトコルの通常の読み出しまたは書き込みトランザクションに加えて、システムはまた、記憶されているデータの位置により近い処理ユニット２０によって処理されるアトミックトランザクションもサポートすることができる。図２に示すように、一般に、アトミックトランザクションには、目標アドレスによって識別されるキャッシュ１２またはメモリ１４内の記憶場所から値を読み出すデータアクセス回路３２、読み出されたデータ値および要求元のマスタデバイスによって提供されるオペランドに対する算術または論理演算を実施する算術／論理ユニット（ＡＬＵ）３４（ただし、以下で説明するアトミックスワップ演算ではＡＬＵをバイパスすることができる）、および、結果値をアドレス指定された記憶場所に書き戻すデータアクセス回路３２が関与する。アトミックトランザクションを実行する前に記憶場所に記憶されている古い値、またはアトミックトランザクションに応答してＡＬＵ  ３４によって生成される新しい値も、要求元のマスタデバイスに返される。読み出し、ＡＬＵ演算、および書き込みはアトミックに行われ、結果、それらは、部分的に完了することができない、または、メモリもしくはキャッシュ上で実行される他の演算とインターリーブすることができない不可分な一連の演算として処理される。
【００２１】
たとえば、次のタイプのアトミックトランザクションを処理ユニット２０によってサポートすることができる。
【表１】
2020506483.tif 000003
【００２２】
アトミックトランザクションの目標データがシステムキャッシュ１２に記憶されるとき、相互接続内の処理ユニット２０を使用してトランザクションを処理することができる。目標データがメインメモリ１４に記憶されるとき、アトミックトランザクションは、対応するメモリコントローラ１６内の処理ユニット２０によって処理することができる。アトミックトランザクションを処理するための処理ユニット２０は、システム２内の他の場所に配置することもできることが理解されよう。
【００２３】
したがって、各アトミックトランザクションでは、相互接続１０を介してマスタデバイスから処理ユニット２０に１つまたは２つのオペランドが転送される必要があり得る。アトミックロード、ストア、およびスワップ演算の場合、転送されるオペランドは１つであるが、アトミック比較演算の場合、比較データ値およびスワップデータ値の２つのオペランドが転送される。図３に示すように、トランザクションは、１つまたは２つのオペランドを転送するためのデータフィールド２２と、アクセスする記憶場所の目標アドレス、および、実施されるアトミック演算のタイプを指定し、または、またはアトミックロード／ストアトランザクションのためのＡＬＵ演算のタイプを指定する（たとえば、ＡＬＵ演算は、たとえば、加算、減算、乗算、ＡＮＤ、ＯＲ、ＮＡＮＤ、ＮＯＲ、ＸＯＲなどのさまざまな応用形態から選択することができる）情報などの任意の他の制御情報を提供する制御フィールド２４とを含むことができる。
【００２４】
オペランド値がデータフィールドへとパックすることによって、処理ユニット２０においてアトミック演算を実行するための論理の複雑さが影響を受ける。図４は、データフィールドをパックする代替的な方法を示す比較例を示す。システムは、さまざまなサイズの値を処理するアトミック演算をサポートすることができ、たとえば、オペランド値は、例として１バイト、２バイト、または４バイト値であり得る。一方、キャッシュまたはメモリへの読み出しは、より大きいサイズ（たとえば、８バイトまたは１６バイト）を有し得るデータのキャッシュライン全体を返し得る。したがって、目標データ値は、読み出しキャッシュラインの一部内にのみ配置することができる。アトミックロード、アトミックストアおよびアトミックスワップなどの非比較アトミック演算の場合、データフィールドを、アドレス記憶場所から読み出されるデータ値と結合する前にシフトする必要性を回避するために、単一のオペランド（Ｄ）を、アドレス記憶場所内の目標データ値の位置に位置整合されたデータフィールドの領域へとパックすることが有用であり得る。たとえば、図４では、アドレスが、目標データがアドレス指定された位置の最下位バイトから始まることを示すオフセット部分０ｘ０を有するとき、データ値Ｄはデータフィールド内のオフセット０において始まる領域内に配置され得る。図４の右側に示されている例では、アドレスオフセットが０ｘ２であるとき、データ値Ｄはデータフィールド内の２のオフセットに位置整合され、結果、データフィールドを目標値と結合する前にさらにシフトする必要はない。使用されるオペランドのサイズに応じて、目標データ値を含まない記憶場所の他の部分がアトミック演算の結果によって上書きされないことを保証するために、ＡＬＵの適切なマスキングを実行することができる。
【００２５】
ただし、アトミックコンペアアンドスワップ演算の場合、２つのデータ値、比較値（Ｃ）およびスワップ値（Ｓ）が転送される。この場合、比較データ値およびスワップデータ値の少なくとも１つは、アドレス記憶場所内の目標データ値の位置に位置整合されたデータフィールドの領域に配置することができない。トランザクションの処理の効率を改善するには、一般に、コンペアアンドスワップデータ値の結合サイズの倍数に対応するデータサイズ境界に、転送するデータブロックを位置整合させることが望ましい。たとえば、図４では、結合データサイズは４バイトであり、そのため、４バイトのデータサイズに対してブロックを不整合にするのではなく、オフセット０またはオフセット４において開始するオペランドデータの結合ブロックを配置することが好ましい。図４は、アクセスされる特定のアドレスに関係なく、比較データがオペランドブロックの下部に配置され、スワップデータが上部に配置される例を示す。
【００２６】
ただし、図５に示すように、データフィールドが図４に示すようにパックされるとき、シフトされた値をＡＬＵ  ３４に入力する前に、比較値Ｃをシフトして、アドレス指定されている記憶場所内の目標データ値の位置と位置整合させるシフタ５０が、処理ユニット２０内で必要とされる。また、データ値Ｄがすでに目標データＡに位置整合されているため、非コンペアアンドスワップトランザクションはシフトを必要としないため、ＡＬＵ  ３４に第２のオペランドを供給するときに、データフィールドのシフトバージョンと非シフトバージョンとの間で選択するために、マルチプレクサ５２が提供される。シフタ５０およびマルチプレクサ５２は、追加の回路を必要とし、シフトの結果が利用可能になるまで比較動作を開始することができないため、演算に関連するレイテンシも増加させる。
【００２７】
図６は、コンペアアンドスワップデータ値の順序が目標アドレスのオフセット部分に依存データフィールドの符号化を示す。この例では、比較データ値Ｃは、目標アドレスのオフセット部分に基づいて選択され、記憶場所内のアドレス目標データＡの位置に対応するデータフィールドの第１の領域にパックされる。スワップデータは、スワップおよび比較値の結合サイズに対応するデータサイズ境界に位置整合された、オペランドデータの位置整合されたブロックの残りの半分に配置される。
【００２８】
したがって、目標アドレスがその結合サイズに対応するデータサイズ境界に位置整合されている場合、比較データ値はデータフィールド内でスワップデータ値に先行することになり、比較データ値は、スワップデータ値を含む第２の領域よりも低いオフセットに対応する第１の領域内にある。たとえば、図６の左側は、２つのオペランドの結合サイズが２バイトである例を示し、この場合のアドレスオフセットは０ｘ２であり、これは結合サイズの正確な倍数である。したがって、比較データＣは、目標アドレスのオフセット部分に位置整合する２バイトの位置整合されたブロックのより下位の位置（オフセット２）にあり、スワップデータＳはオフセット３のより上位の位置にある。
【００２９】
一方、図６の右側に示すように、アドレスオフセットが結合データサイズの正確な倍数ではない場合、スワップデータＳを含む第２領域は、比較データＣを含む第１の領域に先行する。たとえば、２バイトの倍数ではないアドレスオフセット０ｘ５の場合、比較データＣはオフセット５において２バイトの位置整合ブロックの上部にパックされ、スワップデータはオフセット４において位置整合ブロックの残りの半分に配置される。したがって、比較データＣは、依然としてアドレス記憶場所内の目標データの位置に位置整合することができ、オペランドデータの結合ブロックは、依然として結合データサイズ境界に位置整合される。
【００３０】
図７は、さまざまなデータサイズのデータフィールドのパックのさらなる例を示す。図７の例Ａ）およびＢ）は、オペランドサイズが２バイトであり、そのため、オペランドデータの４バイトの結合ブロックが４バイト境界に位置整合している、すなわちオフセット０または４に配置される場合を示している。例Ａ）のようにアドレスオフセット０ｘ０が４バイト境界に位置整合されるとき、比較データＣはブロックの下半分のオフセット０にあり、スワップデータＳは上半分のオフセット２にある。アドレスオフセット０ｘ２が４バイトのデータ構造境界に対して不整合である例Ｂ）では、比較データは４バイトブロックの上半分の第１の領域（オフセット２）にあり、スワップデータは下半分の第２の領域（オフセット０）にある。例Ｃ）およびＤ）は、４バイトのオペランドの同様の例を示している。図６および図７のすべての例は、データを構成するための８バイトフィールドの例を示しているが、これは必須ではなく、他のサイズのデータフィールドが提供されてもよいことが理解されよう。また、データフィールドをトランザクション内の単一のフリット内で送信する必要はなく、一部の例では、データフィールドを、結合してトランザクションを表すパケット全体を形成する、２つ以上のフリット（より狭いバスを介した別個のデータ転送）に分割することができる。
【００３１】
図８に示すように、コンペアアンドスワップ演算のスワップおよび比較データが図６および図７で説明した方法でパックされるとき、図５に示すようなシフタ５０およびマルチプレクサ５２の必要性がなくなることによって処理ユニット２０が簡素化する。比較データＣは、アドレス記憶場所内の目標データＡの位置にすでに位置整合しているため、ＡＬＵ演算を開始し得る前にシフトする必要はありません。また、演算がコンペアアンドスワップ演算または別のタイプのアトミック演算であるかに関係なく、ＡＬＵ  ３４への第２のオペランドはデータフィールドの同じ領域にあるため、マルチプレクサ５２は必要ない。これは、データフィールドとＡＬＵの第２オペランドとの間のデータマッピングが、前述のすべてのタイプのアトミックトランザクションについて同じであるためである。すなわち、コンペアアンドスワップ演算と非コンペアアンドスワップアトミック演算の両方でＡＬＵに供給されるオペランドは、データパケットの同じバイトから得られる。スワップデータ値Ｓは目標データ値Ａに位置整合しておらず、そのため、処理ユニット２０内のシフタ５４によって実行されるシフト演算の対象となるが、シフト演算５４に関連するレイテンシはクリティカルパスから外れる可能性がある。これは、コンペアアンドスワップ演算を処理するときに、ＡＬＵ  ３４によって実行される比較と並行してシフトが実行され得るためである。したがって、この手法により、論理サイズの削減に加えて、アトミック演算の処理におけるレイテンシがなくなる。レイテンシは、コンペアアンドスワップ演算についてだけでなく、マルチプレクサ５２をトラバースする必要がないため、他のタイプのアトミック演算についても削減されることに留意されたい。
【００３２】
比較のために、図９は、サイズ境界に対するデータ位置整合を考慮しながら、アトミックコンペアアンドスワップ演算をデータフィールド内で符号化することができる他のいくつかの方法を示す。オプション２は、スワップデータがアドレス指定された目標データに位置整合され、比較データがサイズ整合されたブロックの残りの半分にパックされる例を示す。オプション３は、目標アドレスとサイズ整合された結合アドレス境界の位置整合に関係なく、サイズ整合されたブロックの下位アドレス位置に比較データが配置される例を示す。オプション４は、目標アドレスに関係なく、スワップデータが下位アドレス位置に配置される例を示す。オプション５は、比較データ値およびスワップデータ値を別個のデータフリットで送信することにより、比較データとスワップデータの両方が、記憶場所内の目標データ値Ａの位置に合わせて送信されることを可能にする例を示す。
【００３３】
次の表は、図９に示すオプションに必要なさまざまなシフトを示す。
【表２】
2020506483.tif 000004
【００３４】
事例Ａ）は、目標アドレスが、スワップ値と比較値との結合サイズに対応するサイズ境界に位置整合されている事例を指し、事例Ｂ）は、結合データサイズ境界に対して目標アドレスが不整合である場合を指す。選択されるオプションに関係なく、同等の量のシフトが必要である（比較値およびスワップ値のいずれかをシフトする必要がある）と考えられ得るが、図６に示す、提案されている手法の利点は、比較演算にシフトが必要なく、これによって、比較を実行するＡＬＵに関連するレイテンシの下でシフトレイテンシを隠すことが可能になることである。対照的に、比較値へのシフトは、ＡＬＵ演算によって連続して実行する必要がある。提案されているオプションにより、シフタ５０を完全に排除することが可能である。また、データフィールド２２とＡＬＵへの入力との間のマッピングは、比較演算およびスワップ演算の両方、ならびに他のタイプのアトミックトランザクションの両方で同じであり、マルチプレクサ５２が排除される。オプション５は、比較データ値およびスワップデータ値に対する追加の論理を一切必要としないが、アトミック比較トランザクションに２倍のアウトバウンドデータ帯域幅を使用するというデメリットがあり、また、アトミックコンペアアンドスワップ演算のフォーマットは他のアトミックトランザクションとは異なるため、相互接続１０による特別な処理も必要になり得る。
【００３５】
図１０は、要求元のマスタデバイス４、６におけるアトミックトランザクションを生成する方法を示す。ステップ１００において、生成されるアトミックトランザクションのタイプが決定される。トランザクションが非コンペアアンドスワップトランザクションである場合、ステップ１０２において、トランザクションのオペランドが、目標アドレスのオフセット部分に基づいて選択されるデータフィールドの第１の領域にパックされ、結果、第１の領域がアドレス記憶場所内の目標値の位置と位置整合する。次にステップ１０４において、トランザクションが発行される。
【００３６】
一方、アトミックトランザクションがコンペアアンドスワップトランザクションである場合、ステップ１０６において、ステップ１０２と同じ方法で選択されたデータフィールドの第１の領域に比較値がパックされる。ステップ１０８において、目標アドレスが比較データ値およびスワップデータ値の結合サイズの倍数に位置整合されているか否かが判定される。アドレスが位置整合されている場合、ステップ１１０において、スワップデータ値は、比較値に使用される第１の領域に後続するデータフィールドの第２の領域にパックされ、一方、アドレスが結合データサイズの倍数に位置整合されていない場合、ステップ１１２において、スワップデータ値は、比較データ値を含む第１の領域に先行する第２の領域にパックされる。ステップ１０８、１１０、および１１２の効果は、オペランドデータのブロック全体が、結合データサイズの適切な倍数に位置整合されたデータサイズであるが、比較データ値の位置が、それをアドレス記憶場所内の目標値の位置と位置整合するために変化し、その後、スワップ値が結合データブロックの残りを充填することである。再び、ステップ１０４において、その後、マスタ内のトランザクション発行インターフェース１８により、トランザクションが相互接続１０に発行される。
【００３７】
図１１は、処理ユニット２０におけるアトミックトランザクションを処理する方法を示す。ステップ１２０において、トランザクション受信回路（図２のインターフェース３６）によりアトミックトランザクションが受信される。ステップ１２２において、目標アドレスにより識別される記憶場所がデータアクセス回路３２により読み出される。ステップ１２４において、トランザクションからのデータフィールドのシフトされていないバージョンと、メモリ１４またはキャッシュ１２から読み出されたキャッシュラインが、入力オペランドとしてＡＬＵ３４に供給される。ステップ１２６において、制御回路３６は、実行されるトランザクションのタイプを決定する。トランザクションが非コンペアアンドスワップトランザクションである場合、ステップ１２８において、ＡＬＵ  ３４はデータフィールドおよび読み出し値に対して算術演算を実行し、必要なデータを含む部分の外側にあるオペランドまたは結果の部分がマスクされ、その後、ステップ１３０において、結果はアドレス記憶場所に書き込まれる。アトミックスワップ演算の場合、ＡＬＵ演算の結果はデータフィールド内で転送されたオペランドに等しく、そのため、記憶場所から読み出される値とは無関係である（代替的に、ＡＬＵ  ３４はバイパスされてもよい）。ステップ１３２において、トランザクションのタイプに応じて、読み出されている記憶場所内の古い値またはＡＬＵ３４によって生成される新しい値のいずれかが要求元に返される。
【００３８】
コンペアアンドスワップトランザクションの場合、ステップ１２６に続いて、ステップ１３４において、ＡＬＵは比較演算を実行して、データフィールドとキャッシュまたはメモリから読み出された値とを比較する。比較値は、記憶場所内の目標データ値の位置に位置整合するように、目標アドレスのオフセット部分に基づいて選択されるデータフィールドの第１の領域内に配置される。したがって、目標値を含まないデータフィールドおよび読み出しキャッシュラインの部分は、比較中に、たとえばビットマスキングに基づいて無視することができる。一方、比較と並行して、ステップ１３６において、シフタ５４はデータフィールドをシフトして、スワップ値を目標データ値に位置整合させる。ステップ１３８において、ＡＬＵ３４の結果に基づいて、比較データ値と目標データ値との間に一致があったか否かが判定され、一致がある場合、ステップ１４０において、シフトされたスワップ値がアドレス記憶場所に書き込まれる。ＡＬＵが比較値と目標データ値との間の不一致を検出する場合、ステップ１４０は省略される。ステップ１３２において、コンペアアンドスワップトランザクションについて、ステップ１２２において記憶場所から読み出された古い値が要求元に返される。
【００３９】
本出願において、「〜ように構成されている」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または方法を意味する。たとえば、装置は、規定の動作を提供する専用のハードウェアを有することができ、またはプロセッサもしくは他の処理デバイスが機能を実行するようにプログラムされてもよい。「〜ように構成されている」は、規定の動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
【００４０】
添付図面を参照して本発明の例示的な実施形態を詳細に説明したが、本発明はこれらの厳密な実施形態に限定されず、添付の特許請求の範囲によって規定される本発明の範囲および精神から逸脱することなく、さまざまな変更および修正が当業者によって実施され得ることが理解されるべきである。
【図１】
2020506483.tif 000005
【図２】
2020506483.tif 000006
【図３】
2020506483.tif 000007
【図４】
2020506483.tif 000008
【図５】
2020506483.tif 000009
【図６】
2020506483.tif 000010
【図７】
2020506483.tif 000011
【図８】
2020506483.tif 000012
【図９】
2020506483.tif 000013
【図１０】
2020506483.tif 000014
【図１１】
2020506483.tif 000015
【国際調査報告】
2020506483.tif 000016
2020506483.tif 000017