(57)【要約】  コンフィギュラブルトランザクションメモリ（１０２）は、クライアント（１０４−１１０）からのトランザクションを同期させる。コンフィギュラブルトランザクションメモリ（１０２）は、メモリバッファ（１２０）と、トランザクションバッファ（１２８）とを含む。メモリバッファ（１２０）は、アロケーションコントロール（１２４）とストレージ（１２６）とを含み、アロケーションコントロール（１２４）は、トランザクションバッファ（１２８）と、データワードのためのデータバッファ（１３０）との間でストレージを選択的に割当てるように構成可能である。トランザクションバッファ（１２８）は、データワードとクライアントとの各組合せを示すステータス（１３２−１３４）を記憶し、そのクライアントは、データワードが当該クライアントからの進行中トランザクションにおけるライトアクセスによって参照されるためのものである。トランザクションアービタ（１２２）は、各クライアントからの進行中トランザクションのための完了ステータスを生成する。完了ステータスは、競合が存在しないためにコミットされるかまたは競合のために中止されるかのいずれかである。競合は、別のクライアントからの別の進行中のトランザクションのデータワードを参照するライトアクセスに続くクライアントからのトランザクションのデータワードを参照するアクセスである。
2011516971.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントからの複数のトランザクションを同期させるためのコンフィギュラブルトランザクションメモリであって、各クライアントは、それぞれの進行中トランザクションを、前記それぞれのトランザクションのための完了ステータスが生成されるまで有し、前記クライアントからの前記それぞれの進行中トランザクションは、少なくとも１つのアクセスを含み、各アクセスは、前記コンフィギュラブルトランザクションメモリ中の複数のデータワードの１つを参照するリードアクセスおよびライトアクセスのうちの１つであり、
アロケーションコントロールおよびストレージを含むメモリバッファを備え、前記アロケーションコントロールは、トランザクションバッファと前記データワードのためのデータバッファとの間で選択的に前記ストレージを割当てるように構成可能であり、前記トランザクションバッファは、データワードとクライアントとの各組合せを示すステートを記憶し、前記クライアントは、前記データワードが前記クライアントからの前記それぞれの進行中トランザクションにおけるライトアクセスによって参照されるためのクライアントであり、
前記ステートに応答して、各クライアントからの前記それぞれの進行中トランザクションの前記完了ステータスを生成するために前記メモリバッファに結合されたトランザクションアービタをさらに備え、前記完了ステータスは、競合の不存在に応答してコミットされるか、競合の存在に応答して中止されるかのいずれかであり、前記競合は、別のクライアントからの別の進行中トランザクションの前記データワードを参照するライトアクセスに続く、前記クライアントからの前記それぞれのトランザクションのデータワードを参照するアクセスの間存在する、コンフィギュラブルトランザクションメモリ。
【請求項２】
前記メモリバッファの前記アロケーションコントロールは、多数の前記クライアントを選択するように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項３】
前記メモリバッファの前記アロケーションコントロールは、前記ストレージの半数より多くを前記データバッファに割当てるように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項４】
前記メモリバッファの前記アロケーションコントロールは、前記クライアントからの前記トランザクションの静的解析に従って前記ストレージの一部を前記トランザクションバッファに割当てるように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項５】
前記メモリバッファの前記アロケーションコントロールは、前記ストレージの第１の部分を前記トランザクションバッファに割当て、前記ストレージの第２の部分を前記データワードのための前記データバッファに割当て、前記ストレージの第３の部分を前記トランザクションには含まれない付加的なアクセスの付加的なデータワードのための前記データバッファに割当てる、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項６】
前記トランザクションアービタは、前記トランザクションバッファ中の前記ステートを、前記データワードとクライアントとの各組合せを示すために更新し、前記クライアントは、前記データワードが、前記クライアントからの前記それぞれの進行中トランザクションにおけるライトアクセスによって参照されるためのクライアントであり、前記トランザクションアービタは、前記トランザクションバッファ中の前記ステートを、データワードとクライアントとの各組合せを示すために更新し、前記クライアントは、前記データワードが前記クライアントからの前記進行中のそれぞれのトランザクションにおけるリードアクセスによって参照されるためのクライアントである、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項７】
各クライアントからの前記それぞれのトランザクションは、前記それぞれのトランザクションの前記完了ステータスを生成する前記トランザクションアービタに続いて、もはや進行中ではなくなる、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項８】
前記トランザクションアービタは、前記クライアントからのコミット要求および前記競合の不存在に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、コミットされたとの前記完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項９】
前記トランザクションアービタは、前記クライアントからのコミット要求および前記競合の存在に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、中止されたとの前記完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１０】
前記トランザクションアービタは、前記競合に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、中止されたとの前記完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１１】
前記トランザクションアービタは、前記クライアントからの中止要求に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、中止されたとの完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１２】
前記トランザクションアービタは、前記クライアントに、前記それぞれのトランザクションの競合の不存在のために前記それぞれのトランザクションをコミットすることが前記クライアントに許可されていることを通知する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１３】
前記トランザクションアービタは、前記それぞれのトランザクションが、前記競合および前記競合の存在にともなう前記クライアントからのコミット要求のうちの選択可能な１つに応答して前記それぞれのトランザクションが中止されたことを、前記クライアントに通知するように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１４】
コミットされたとの前記完了ステータスを有する前記クライアントからの前記それぞれのトランザクションに応答して、前記トランザクションアービタは、前記それぞれのトランザクションの各ライトアクセスのライトデータを、前記トランザクションバッファから前記データバッファへ転送する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１５】
前記メモリバッファは、プログラマブルロジックデバイスの複数のブロックメモリの少なくとも１つである、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１６】
前記トランザクションアービタは、プログラマブルロジックデバイスの専用回路であり、前記プログラマブルロジックデバイスはコンフィギュレーションデータを前記プログラマブルロジックデバイスにロードすることによって構成可能なプログラマブルロジックのアレイとインターコネクトリソースとを有する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１７】
複数のクライアントからの複数のトランザクションを同期させるためのコンフィギュラブルトランザクションメモリを構成するためのシステムであって、各クライアントは少なくとも１つのアクセスを含むそれぞれの進行中トランザクションを有し、各アクセスは前記コンフィギュラブルトランザクションメモリ中の複数のデータワードの１つに対するリードアクセスおよびライトアクセスのうちの１つであり、前記システムは、
多数の前記クライアントを選択するための手段と、
前記コンフィギュラブルトランザクションメモリのデータバッファ中の前記データワードのための第１の量のストレージを割当てるための手段と、
前記コンフィギュラブルトランザクションメモリのトランザクションバッファのための第２の量のストレージを割当てるための手段とを備え、前記トランザクションバッファは前記トランザクションが競合の不存在に応答してコミットされるか競合の存在に応答して中止されるかのいずれかとなるまで前記クライアントからの前記進行中トランザクションの各々を追跡し、前記競合は、前記データワードの１つを参照する別の前記進行中トランザクションのライトアクセスに続く、前記データワードの１つを参照する前記トランザクションのアクセスであり、
前記データバッファおよび前記トランザクションバッファを含むメモリバッファのための多数のブロックＲＡＭを決定するための手段と、
前記メモリバッファのための前記多数のブロックＲＡＭを使用する前記多数のクライアントをサポートするために前記コンフィギュラブルトランザクションメモリを構成するためのコンフィギュレーションデータを、生成するとともに出力するための手段と、
前記コンフィギュレーションデータで前記コンフィギュラブルトランザクションメモリを構成するための手段とをさらに備える、システム。
【請求項１８】
各クライアントに、前記クライアントからのトランザクションが中止されたことを通知するためのそれぞれの条件を選択するための手段をさらに備え、前記クライアントのための前記それぞれの条件は、前記トランザクションのための前記競合、および前記トランザクションのための前記競合の存在にともなう前記クライアントからのコミット要求のうちの選択可能な１つである、請求項１７に記載のシステム。
【請求項１９】
コンフィギュラブルトランザクションアービタと少なくとも前記多数のブロックＲＡＭとを含むプログラマブルロジックデバイスに前記コンフィギュレーションデータをロードするための手段をさらに備え、前記コンフィギュレーションデータは、前記コンフィギュラブルトランザクションメモリを構成するために、前記コンフィギュラブルトランザクションアービタおよび前記多数のブロックＲＡＭを構成する、請求項１７に記載のシステム。
【請求項２０】
プログラム記憶媒体であって、
複数のクライアントからの複数のトランザクションを同期させるためのコンフィギュラブルトランザクションメモリを構成するための命令で構成されたプロセッサ読取可能な装置を備え、各クライアントは、少なくとも１つのアクセスを含むそれぞれの進行中トランザクションを有し、各アクセスは、前記コンフィギュラブルトランザクションメモリ中の複数のデータワードの１つに対するリードアクセスおよびライトアクセスのうちの１つであり、１以上のプロセッサによる命令の実行は、前記１以上のプロセッサに、
多数の前記クライアントを選択することと、
前記コンフィギュラブルトランザクションメモリのデータバッファ中の前記データワードのための第１の量のストレージを割当てることと、
前記クライアントからの前記トランザクションの静的解析に応答して、前記コンフィギュラブルトランザクションメモリのトランザクションバッファのための第２の量のストレージを割当てることであって、前記トランザクションバッファは、前記トランザクションが競合の不存在に応答してコミットされるか競合の存在に応答して中止されるかの１つとなるまで前記クライアントからの前記進行中トランザクションの各々を追跡し、前記競合は、前記データワードの１つを参照する別の前記進行中トランザクションのライトアクセスに続く、前記データワードの１つを参照する前記トランザクションのアクセスである、前記第２の量のストレージを割当てることと、
前記第１および第２の量のストレージに応答して、前記データバッファおよび前記トランザクションバッファを含むメモリバッファのための多数のブロックＲＡＭを決定することと、
前記メモリバッファのための前記多数のブロックＲＡＭを使用する前記多数のクライアントをサポートするために、前記コンフィギュラブルトランザクションメモリを構成するためのコンフィギュレーションデータを、生成するとともに出力することと、
前記コンフィギュレーションデータで前記コンフィギュラブルトランザクションメモリを構成することと、を含む動作を実行させる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、一般的にトランザクションメモリに関し、より特定的には、コンフィギュラブルトランザクションメモリ（configurable transaction memories）に関する。
【背景技術】
【０００２】
発明の背景
プログラマブルロジックデバイス（ＰＬＤ）は、特定のロジック機能を実行するためにプログラムされることができる、よく知られた種類の集積回路である。ＰＬＤの一種であるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、典型的には、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入力／出力ブロック（ＩＯＢ）、コンフィギュラブルロジックブロック（ＣＬＢ）、ブロックＲＡＭ（ＢＲＡＭ）を含む専用ランダムアクセスメモリブロック、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）などを含むことができる。
【０００３】
各プログラマブルタイルは、典型的にはプログラマブルインターコネクトおよびプログラマブルロジックの両方を含む。プログラマブルインターコネクトは、典型的には、プログラマブルインターコネクトポイント（ＰＩＰ）によって相互接続される、長さを変化させる多数のインターコネクトラインを含む。プログラマブルロジックは、プログラマブル要素を用いたユーザ設計のロジックを構成し、当該プログラマブル要素は、たとえばファンクションジェネレータ、レジスタ、数値演算ロジックなどを含み得る。
【０００４】
プログラマブルインターコネクトおよびプログラマブルロジックは、典型的には、コンフィギュレーションデータのストリームを、プログラマブル要素がどのようにして構成されるかを定義するインターナルコンフィギュレーションメモリセルにロードすることによってプログラムされる。コンフィギュレーションデータは、メモリ（たとえば外部のＰＲＯＭ）から読出されることができ、あるいは外部装置によってＦＰＧＡに書込まれることができる。そして個々のメモリセルの集合的なステータスがＦＰＧＡの機能を決定する。
【０００５】
ユーザ設計は、多数の専用プロセッサを含むＰＬＤにおける多重処理システムを構成することができる。ユーザ設計はまた、プログラマブルロジックにおけるソフトプロセッサおよびＰＬＤのインターコネクトリソースを構成することによって、多重処理システムを構成することができる。１つの例のユーザ設計は、専用プロセッサおよびソフトプロセッサを用いるＰＬＤにおける多重処理システムを構成することができ、そのソフトプロセッサは、ユーザ設計の特定の機能を実現するように特に設計されたステートマシンである。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ユーザ設計の機能を実行するために、プロセッサがデータの交換を必要とする可能性がある。多重処理システムのプロセッサの間でデータを交換するためのプロトコルを設計することは、時間を消費するとともに高価となる可能性がある。プロセッサ間のデータの交換は、多重処理システムのパフォーマンスを制限する可能性がある。
【０００７】
本発明は、１以上の上記の問題に対処することができる。
【課題を解決するための手段】
【０００８】
発明の概要
本発明のさまざまな実施の形態が、クライアントからの同期トランザクションのためのコンフィギュラブルトランザクションメモリを提供する。各クライアントは、トランザクションのための完了ステータスが生成されるまで、進行中トランザクションを有する。クライアントからの進行中トランザクションは、１以上のアクセスを含む。各アクセスは、コンフィギュラブルトランザクションメモリ中のデータワードを参照する、リードアクセスまたはライトアクセスのいずれかである。コンフィギュラブルトランザクションメモリは、メモリバッファと、トランザクションバッファとを含む。メモリバッファは、アロケーションコントロールおよびストレージを含む。アロケーションコントロールは、トランザクションバッファとデータワードのためのデータバッファとの間で、ストレージを選択的に割当てる（allocate）ように構成可能である。トランザクションバッファは、データワードとクライアントとの各組合せを示すステートを記憶し、そのクライアントは、データワードが当該クライアントからの進行中トランザクションにおけるライトアクセスによって参照されるためのクライアントである。そのステートに応答して、トランザクションアービタ（transactional arbiter）は、各クライアントからの進行中トランザクションのための完了ステータスを生成する。その完了ステータスは、競合（collision）が存在しないことに応じてコミットされるか、または競合が存在することに応じて中止（abort）されるかのいずれかである。その競合は、クライアントからのトランザクションのデータワードを参照するアクセスの間存在し、当該アクセスは、他のクライアントからの他の進行中トランザクションのデータワードを参照するライトアクセスに続いている。
【０００９】
さまざまな他の実施の形態が、以下に続く詳細な説明およびクレームにおいて説明されることが理解されるであろう。
【００１０】
本発明のさまざまな局面および利点が、以下の詳細な説明の検討および図面の参照によって明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリを示す、システムのブロック図である。
【図２】本発明のさまざまな実施の形態に従う、データワードへのアクセスを追跡するための例示的なエントリのフィールド図である。
【図３】本発明の１以上の実施の形態に従うコンフィギュラブルトランザクションメモリを含み得るプログラマブルロジックデバイスのブロック図である。
【図４】本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリのためのトランザクションのアクセスを追跡するための処理のフロー図である。
【図５】本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリのためのトランザクションを完了するための処理のフロー図である。
【図６】本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリを構成するためのシステムのブロック図である。
【発明を実施するための形態】
【００１２】
詳細な説明
図１は、本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリ１０２を示す、システムのブロック図である。各クライアント１０４〜１１０は、トランザクションを処理するためのプロセッサあるいはステートマシンでもよい。
【００１３】
多重処理システムのクライアント１０４〜１１０は、コンフィギュラブルトランザクションメモリ１０２に対するリードアクセスおよびライトアクセスを用いて、データを効率的に交換することができる。コンフィギュラブルトランザクションメモリ１０２は、ロックまたは相互排他（mutexes）を用いることなくデータの交換を同期させることができる。ロックあるいは相互排他と比較すると、コンフィギュラブルトランザクションメモリ１０２は、データを交換するための、よりよいパフォーマンスおよび、より単純なプロトコルを提供することができる。ロックおよび相互排他のオーバヘッドがなくなるために、パフォーマンスが改善可能である。プロトコルがより単純になることができるが、その理由は、ユーザによって与えられたロックおよび／または相互排他に代わり、コンフィギュラブルトランザクションメモリ１０２によって同期が与えられるためである。コンフィギュラブルトランザクションメモリ１０２を用いた、データ交換の単純化された同期は、複雑でエラーになりがちな、ユーザによって与えられたロックおよび／または相互排他をなくすことによって、ロバスト性を改善することができる。
【００１４】
コンフィギュラブルトランザクションメモリ１０２は、クライアント１０４〜１１０からのトランザクションを同期させることができる。トランザクションは、多重リードアクセスおよび／または多重ライトアクセスを含むことができ、コンフィギュラブルトランザクションメモリ１０２は、これらのアクセスをアトミックオペレーションとして処理するであろう。コンフィギュラブルトランザクションメモリ１０２は、アクセスをアトミックに実行した後に、トランザクションのアクセスをうまく完了させることができる。もし、コンフィギュラブルトランザクションメモリ１０２がアクセスをアトミックに実行することをコンフリクトが防止するならば、コンフィギュラブルトランザクションメモリ１０２は、そのトランザクションを中止することができる。コンフィギュラブルトランザクションメモリ１０２がクライアント１０４からのトランザクションを中止した後、クライアント１０４はそのトランザクションを後にリトライすることができる。コンフィギュラブルトランザクションメモリ１０２は、そのコンフリクトが解消されたときに、そのリトライされたトランザクションをうまく完了させることができるかもしれない。
【００１５】
コンフィギュラブルトランザクションメモリ１０２のための例示的なアプリケーションは、ネットワーク処理およびデータベースのためのクエリ処理を含む。クライアント１０４〜１１０の１つからの各トランザクションは、プロセッサによって実行されるソフトウェアプログラムの制御フローの局所的範囲において、またはステートマシンの状態の局所的なシーケンスにおいて特定される。
【００１６】
例示的なシナリオにおいて、クライアント１０４は、コンフィギュラブルトランザクションメモリ１０２へのライン１１２上にトランザクションを発行することができる。もしコンフィギュラブルトランザクションメモリ１０２が、アトミックオペレーションとしてトランザクションのアクセスをうまく完了させたならば、コンフィギュラブルトランザクションメモリ１０２は、ライン１１４上のコミット信号に応答することができる。もしコンフィギュラブルトランザクションメモリ１０２が、トランザクションのアクセスを、別のクライアント１０６からの別のトランザクションとの競合コンフリクト（collision conflict）のためにアトミックに実行できないならば、コンフィギュラブルトランザクションメモリ１０２は、ライン１１６上の中止信号に応答することができる。
【００１７】
コンフィギュラブルトランザクションメモリ１０２は、メモリバッファ１２０と、トランザクションアービタ１２２とを含むことができる。メモリバッファ１２０は、アロケーションコントロール１２４と、ストレージ１２６とを含むことができる。アロケーションコントロール１２４は、ストレージ１２６を、トランザクションバッファ１２８とデータバッファ１３０とに分割することができる。トランザクションバッファ１２８は、クライアント１０４〜１１０のアクセスをそれぞれ追跡するためのステート１３２〜１３４を含むことができる。トランザクションの各アクセスは、データワード１３６〜１３８の１つまたは、これらデータワードのうちの１つの一部を読出したりあるいは書込んだりすることができる。
【００１８】
１つの実施の形態において、クライアント１０４〜１１０の各々は、１回につき１つのトランザクションを発行することができ、各トランザクションは、各々がデータワード１３６〜１３８の１つに対して読出または書込を行なう多重アクセスを含むことができる。ステート１３２は、クライアント１０４からの現在の進行中トランザクションのアクセスを追跡することができる。ステート１３２は、データワード１３６から１３８の各々に対するリードビットを含むことができ、そのリードビットはクライアント１０４からの現在のトランザクションによって読出されあるいは参照される。そしてステート１３２はデータワード１３６〜１３８の各々に対するライトビットを含むことができ、そのライトビットはクライアント１０４からの現在のトランザクションによって書込まれあるいは参照される。クライアント１０４からの現在のトランザクションの各々のアクセスのために、トランザクションアービタ１２２は、データワードへのアクセスの種類に適したようにリードビットまたはライトビットを設定するためにステート１３２を更新することができる。
【００１９】
例示的なシナリオにおいて、クライアント１０４からの現在のトランザクションの各アクセスに対して、トランザクションアービタ１２２は、他のクライアント、たとえばクライアント１１０からの進行中トランザクションにおけるライトアクセスとの競合のために、他のクライアントのステート、たとえばステート１３４を確認する。もしステート１３４が、クライアント１１０からの現在のトランザクションがデータワードを参照したことを示すならば、トランザクションアービタ１２２は、競合の存在を示すために、クライアント１０４のためのステート１３２を更新する。トランザクションアービタ１２２は、同様に他のクライアント１０６および１０８からのアクセスおよび現在のトランザクションの間の競合を確認する。
【００２０】
クライアント１０４が現在のトランザクションのアクセスを完了させた後に、クライアント１０４はトランザクションの完了を要求することができる。たとえば、クライアント１０４は、トランザクションの完了を要求するために、ライン１１２上にコミット要求を発行することができる。トランザクションアービタ１２２は、競合の存在のためにステート１３２を確認することができる。もし競合が存在するならば、トランザクションアービタ１２２は、ライン１１６上の中止信号をアサートすることによって、中止との完了ステータスを生成することができる。競合が存在しない場合、トランザクションアービタ１２２は、ライン１１４上のコミット信号をアサートすることによってコミットとの完了ステータスを生成することができる。トランザクションアービタ１２２は、また、クライアント１０４からの現在のトランザクションがもはや進行中ではないことを示すためにステート１３２をクリアすることができる。
【００２１】
コンフィギュラブルトランザクションメモリ１０２が各クライアントからの進行中である多重トランザクションをサポートできることが理解されるであろう。たとえば、コンフィギュラブルトランザクションメモリ１０２は、クライアント１０４および１０６の仮想的な組合せであるクライアントからの２つの現在の進行中トランザクションをサポートすることができる。
【００２２】
１つの実施の形態において、コンフィギュラブルトランザクションメモリ１０２は、トランザクションの内部および外部の両方のアクセスをサポートする。たとえば、トランザクションは、データワード１３６のみに対して読出または書込を行なうアクセスを含むことができ、トランザクションの外部の他のアクセスは、データワード１３８のみに対する読出または書込が可能である。すなわち、データバッファ１３０の一部は、アトミックトランザクションのために割当てられることができ、そのデータバッファの別の部分はアトミックではないアクセスのために割当てられることができる。
【００２３】
別の実施の形態において、アロケーションコントロール１２４は、トランザクションアービタ１２２の要素１４０として含まれることができる。たとえば、メモリバッファ１２０は、ＰＬＤの１以上のブロックＲＡＭであるストレージ１２６のみを含むことができる。トランザクションアービタ１２２は、トランザクションバッファ１２８およびデータバッファ１３０のサイズで構成可能なＰＬＤの専用ロジックであってもよい。
【００２４】
１つの実施の形態において、ステート１３２〜１３４は、１以上の現在の進行中トランザクションによってアクセスされるデータワードのために、トランザクションバッファ１２８中のそれぞれのエントリに含まれる。トランザクションアービタ１２２は、既に存在するエントリを有していないデータワードへの各アクセスのために、トランザクションバッファ１２８中にエントリを生成することができる。トランザクションアービタ１２２は、エントリのためのデータワードを参照する進行中トランザクションがないときには、トランザクションバッファからエントリを削除してもよい。
【００２５】
図２は、本発明のさまざまな実施の形態に従う、データワードへのアクセスを追跡するための例示的エントリのフィールド図である。タグフィールド２０４は、アクセスによって参照されるデータワード１３６〜１３８の１つのアドレスタグを含む。データフィールド２０２は、データワードの一時的コピーを含む。リードフィールドすなわちリード１、リード２、…リードＮ（２０６，２０８および２１０）とライトフィールド、すなわちライト１、ライト２、…ライトＮ（２１２，２１４および２１６）とは、アクセスの種類（リードまたはライト）およびそのアクセスのソースであるクライアント１−Ｎの１つを示すために用いられる。既存のエントリを有していないデータワードへの各アクセスのため、トランザクションアービタは、図２に示されたフォーマットを有する、トランザクションバッファ中の新しいエントリを生成する。たとえば、図１のデータワード１３６へのアクセスのための新しいエントリを生成するために、トランザクションアービタ１２２は、データワード１３６の値を、データバッファ１３０からトランザクションバッファ１２８における新しいエントリのデータフィールド２０２へとコピーする。トランザクションアービタ１２２は、ストレージ１２６への新しいエントリのタグフィールド２０４に、データワード１３６のアドレスを設定する。トランザクションアービタ１２２は、その新しいエントリにおけるフィールド２０６〜２１６の追跡状態を、これらのフィールドをクリアすることによって初期化する。
【００２６】
例示的なシナリオにおいて、クライアント１０６からのトランザクションの各リードアクセスのために、トランザクションアービタ１２２は、リードアクセスによって参照されるデータワードのためのエントリの対応するリードビットフィールド２０８を設定する。別の例において、クライアント１０６からのトランザクションの各ライトアクセスのために、ライトフィールド２１４は、ライトアクセスによって参照されるデータワードのためのエントリの中に設定されるが、それは競合がない場合であり、その理由は他のライトフィールド２１２および２１６の１つが既に設定されているためである。多数のリードフィールド２０６〜２１０が設定されているかも知れないが、通常は、ライトフィールド２１２〜２１６のせいぜい１つが設定される。クライアント１０６からのトランザクションの各ライトアクセスのために、トランザクションアービタ１２２は、ライトアクセスのライトデータを、データワードのためのエントリのデータフィールド２０２に書込んでもよい。別のクライアント、たとえばクライアント１０４からの同じデータワードへのトランザクションへのアクセスのために、トランザクションアービタ１２２は、エントリにおいてライトフィールド２１２〜２１６のいずれかが既に設定されているかどうかを確認してもよい。もしライトフィールド２１２〜２１６のいずれかが既に設定されているならば、トランザクションアービタ１２２は、別のクライアントからの進行中のトランザクションとの競合のために、クライアント１０４からのトランザクションを中止してもよい。
【００２７】
クライアント１０４からのトランザクションの、成功または中止という完了において、トランザクションアービタ１２２は、そのトランザクションによってアクセスされるあらゆるデータワードのためのエントリのリードフィールド２０６およびライトフィールド２１２をクリアしてもよい。もしフィールド２０６および２１２をクリアすることがデータワード１３６のためのエントリのフィールド２０６〜２１６のすべてをクリアするならば、どの進行中トランザクションもデータワード１３６を参照しない。トランザクションアービタ１２２は、その結果、エントリをトランザクションバッファ１２８から削除してもよい。中止されたトランザクションのため、トランザクションアービタ１２２は、エントリのデータフィールド２０２を廃棄することを含む、エントリの削除を行なってもよい。データワード１３６のためのエントリ中にライトフィールド２１２を設定したという、うまくコミットされたトランザクションのために、トランザクションアービタ１２２は、まず、エントリのデータフィールド２０２を、トランザクションバッファ１２８から、データバッファ１３０中のデータワード１３６に転送してもよい。
【００２８】
１つの実施の形態において、クライアント１０６からのトランザクションの各リードアクセスのために、トランザクションアービタ１２２は、ライトフィールド２１４が既に設定されていなければ、エントリのリードフィールド２０８を設定してもよい。クライアント１０６からのトランザクションの各ライトアクセスのために、トランザクションアービタ１２２は、エントリのリードフィールド２０８をクリアするとともに、そのエントリのライトフィールド２１４を設定してもよい。ライトフィールド２１２〜２１６のいずれかがエントリにおいて既に設定されているときにおける、同じデータワードへの別のクライアント１０４からのトランザクションのアクセスのために、トランザクションアービタ１２２は、競合の存在を、エントリ中のリードフィールド２０６およびライトフィールド２１２の両方を設定することによって示してもよい。
【００２９】
図３は、本発明の１以上の実施の形態に従うコンフィギュラブルトランザクションメモリを含み得るプログラマブルロジックデバイスのブロック図である。
【００３０】
上記のように、アドバンスドＰＬＤは、複数の異なる種類のプログラマブルロジックブロックをアレイ中に含むことができる。たとえば、図３はＦＰＧＡアーキテクチャ３００を示し、ＦＰＧＡアーキテクチャ３００は、マルチギガビットトランシーバ（ＭＧＴ３０１）と、コンフィギュラブルロジックブロック（ＣＬＢ３０２）と、ランダムアクセスメモリブロック（ＢＲＡＭ３０３）と、入力／出力ブロック（ＩＯＢ３０４）と、コンフィギュレーションおよびクロックロジック(ＣＯＮＦＩＧ／ＣＬＯＣＫＳ３０５）と、デジタル信号処理ブロック（ＤＳＰ３０６）と、特殊入力／出力ブロック（Ｉ／Ｏ３０７）（たとえばコンフィギュレーションポートおよびクロックポート）と、デジタルクロックマネージャ、アナログデジタル変換器、システム監視ロジックなどといった他のプログラマブルロジック３０８を含む、多数の異なるプログラマブルタイルを含む。いくつかのＦＰＧＡはまた、専用のプロセッサブロック（ＰＲＯＣ３１０）を含む。
【００３１】
いくつかのＦＰＧＡにおいて、各プログラマブルタイルは、プログラマブルインターコネクト要素（ＩＮＴ３１１）を含み、そのプログラマブルインターコネクト要素は、各隣り合うタイル中の対応するインターコネクト要素への、およびそのインターコネクト要素からの標準化された接続を有する。したがって、集められたプログラマブルインターコネクト要素は、図示されたＦＰＧＡに対するプログラマブルインターコネクト構造を実現する。プログラマブルインターコネクト要素（ＩＮＴ３１１）はまた、図３の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジック要素へのそのプログラマブルロジック要素からの接続を含む。
【００３２】
たとえば、ＣＬＢ３０２は、単一のプログラマブルインターコネクト要素（ＩＮＴ３１１）を加えたユーザロジックを実現するためにプログラムされることが可能なコンフィギュラブルロジック要素（ＣＬＥ３１２）を含むことができる。ＢＲＡＭ３０３は、１以上のプログラマブルインターコネクト要素に加えてＢＲＡＭロジック要素（ＢＲＬ３１３）およびトランザクションアービタ３１６を含むことができる。典型的には、タイルに含まれるインターコネクト要素の数はタイルの高さに依存する。図示された実施の形態においては、ＢＲＡＭタイルは４つのＣＬＢと同じ高さを有するが、他の数（たとえば５）もまた用いられることができる。同様に、ＤＳＰタイル３０６は適切な数のプログラマブルインターコネクト要素に加えてＤＳＰロジック要素を含むことができる。ＩＯＢ３０４は、プログラマブルインターコネクト要素（ＩＮＴ３１１）の１つのインスタンスに加えて入力／出力ロジック要素（ＩＯＬ３１５）の２つのインスタンスを含むことができる。当業者にとっては明らかであるように、たとえばＩ／Ｏロジック要素３１５に接続される実際のＩ／Ｏパッドは、さまざまな図示されたロジックブロック上に層形成された金属を用いて製造され、典型的には入力／出力ロジック要素３１５の領域に限定されない。
【００３３】
ＢＲＡＭロジック要素３１３は、トランザクションアービタ３１６を無効にするユーザ設計によって、ブロックメモリとして使用されてもよい。合せて、ＢＲＡＭロジック要素３１３およびトランザクションアービタ３１６はコンフィギュラブルトランザクションメモリを構成してもよい。アーキテクチャ３００の、あるＢＲＡＭ３０３が、トランザクションアービタ３１６を省略してもよいことは理解されるであろう。
【００３４】
図示された実施の形態において、ダイの中心近くの縦領域（図３において網かけで示す）は、コンフィギュレーション、クロックおよび他の制御ロジックのために用いられる。この列から延びる水平領域３０９は、ＦＰＧＡの幅を横切るクロックおよびコンフィギュレーション信号を分配するために用いられる。
【００３５】
図３に示されたアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を形成する規則的な列構造を満たす、付加的なロジックブロックを含む。その付加的なロジックブロックは、プログラマブルブロックおよび／または専用ロジックとされることができる。たとえば、図３に示されたプロセッサブロックＰＲＯＣ３１０は、ＣＬＢおよびＢＲＡＭの複数の列に及ぶ。
【００３６】
図３は、単に例示的なＦＰＧＡアーキテクチャを示すことを意図していることに注意すべきである。１列中のロジックブロックの数、列の相対的な幅、列の数および順序、列に含まれるロジックブロックの種類、ロジックブロックの相対的なサイズ、図３の上部に含まれる相互接続／ロジック構成は、純粋に例示的なものである。たとえば、実際のＦＰＧＡにおいては、ユーザロジックの効率的な構成を促進するために、ＣＬＢが現れるところではどこでも、ＣＬＢの１以上の隣り合う列が典型的に含まれる。
【００３７】
図４は、本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリのための、トランザクションのアクセスを追跡するための処理４００のフロー図である。コンフィギュラブルトランザクションメモリは、トランザクションのアクセスを追跡するためのステートを記憶してもよい。
【００３８】
ステップ４０２において、コンフィギュラブルトランザクションメモリのためにコンフィギュレーションデータが生成されるとともに、コンフィギュラブルトランザクションメモリがコンフィギュレーションデータで構成される。コンフィギュラブルトランザクションメモリのさまざまな特徴が構成されてもよい。メモリバッファ中のストレージの全体のサイズを設定するために、多数のブロックＲＡＭが選択されてもよい。メモリバッファ中のストレージは、トランザクションを追跡するためのトランザクションバッファと、トランザクションのアクセスによって読出されるとともに書込まれるデータワードを保存するためのデータバッファとの間で割当てられてもよい。クライアントに対して、当該クライアントからのトランザクションの完了を通知するために、モードが選択されてもよい。２つのクライアントは異なる通知モードを有してもよい。
【００３９】
判断４０４は、クライアントからのアクセスを待つ。そのアクセスは、リード、ライト、または、特定のデータワードもしくは特定のデータワードの一部に対するリード−修正−ライトアクセスでもよい。
【００４０】
判断４０６は、データワードがトランザクションバッファ中に追跡ステートを既に有しているか否かを確認する。もし、データワードが既に進行中トランザクションからの追跡ステートを有しているならば、処理４００は判断４０８に進む。そうでない場合、処理４００はステップ４１０に進む。ステップ４１０において、データワードのためのエントリが、その追跡ステートがクリアされるのに伴って、トランザクションバッファ中に生成される。ステップ４１２において、データワードが、メモリバッファからトランザクションバッファ中のエントリにコピーされる。
【００４１】
判断４０８は、データワードのための既存のステートによって示されるように、異なるクライアントからの進行中トランザクションがデータワードを参照したか否かを確認する。もし既存のステートが、先立つ書込からの競合を示すならば、処理４００はステップ４１４に進む。そうでない場合、処理４００はステップ４１６に進む。
【００４２】
ステップ４１６において、クライアントのためのビットが、データワードのためのトランザクションバッファ中のエントリの追跡ステート中に設定される。もしそのアクセスがリードアクセスならば、クライアントのためのリードビットがデータワードのためのエントリ中に設定されることができ、もしそのアクセスがライトアクセスならば、クライアントのためのライトビットがそのデータワードのためのエントリ中に設定されることができる。
【００４３】
ステップ４１４において、競合ビットが、データワードのためのエントリの追跡ステートにおけるクライアントのために設定されることができる。トランザクションは、もしそのトランザクションのアクセスに対する競合が存在するならば、中止される。しかしながら、そのトランザクションは、直ちに中止されるか、またはそのトランザクションの他のアクセスの処理の後に中止されるかのいずれでもよい。判断４１８は、コンフィギュラブルトランザクションメモリがそのトランザクションを直ちに中止するように、ステップ４０２において構成されたかどうかを確認する。直ちに中止するモードの場合、処理４００はステップ４２０に進む。そうでない場合、処理４００は、クライアントの１つからの次のアクセスを待つために判断４０４に戻る。
【００４４】
トランザクションはまた、トランザクションを発行するクライアントからの要求で中止されてもよい。判断４２２は、トランザクションが中止されることをクライアントが要求したかどうかを確認する。中止する要求の場合、処理４００はステップ４２０に進む。そうでない場合、処理４００は判断４２４に進む。中止要求は非同期的に処理されてもよいことは理解されるであろう。たとえば、別の処理がクライアントからの中止要求を確認してもよい。
【００４５】
ステップ４２０において、現在のアクセスのトランザクションが中止される。クライアントのための追跡ステートのビットが、エントリまたはトランザクションによってアクセスされるあらゆるデータワードのエントリにおいてクリアされる。もし、特定のデータワードが、他のクライアントからの任意の現在の進行中トランザクションによってアクセスされなかったならば、クライアントのためのビットをクリアすることとは、エントリの追跡ステート全体をクリアすることでもよい。エントリ中の任意のライトデータも廃棄されてもよく、エントリはトランザクションバッファから削除されてもよい。
【００４６】
判断４２４は、データワードに対する現在のアクセスのアクセス種類を確認する。もしそのアクセスがライトアクセスならば、処理４００はステップ４２６に進み、もしそのアクセスがリードアクセスならば、処理４００はステップ４２８に進む。ステップ４２６において、そのライトアクセスのライトデータが、データワードのためのトランザクションバッファ中のエントリに書込まれる。データワードの一部を書込むライトアクセスのために、ライトデータは、データワードのためのエントリ中のデータと統合されてもよい。ステップ４２８において、データワードのためのエントリからのリードデータは、クライアントに戻される。
【００４７】
判断４３０は、コンフィギュラブルトランザクションメモリが、投機的にトランザクションをコミットするように、ステップ４０２において構成されたかどうかを確認する。投機的コミットモードの場合、処理４００はステップ４３２に進む。そうでない場合、処理４００は次のアクセスを待つために判断４０４に戻る。ステップ４３２において、そのアクセスを発行するクライアントは、もしトランザクションがそれ以上アクセスを含まないならば、トランザクションをコミットしてもよいという通知を受ける。もし、そのトランザクションが他のアクセスを含むならば、他の投機的コミットが、この付加的なアクセスのために生成されてもよい。クライアントは、コンフィギュラブルトランザクションメモリにトランザクションに対する追跡ステートを消去させるというトランザクションのコミットを要求することを、なおも期待されていてもよい。
【００４８】
図５は、本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリのためのトランザクションを完了させるための処理のフロー図である。コンフィギュラブルトランザクションメモリは、現在のトランザクションを、もしそのトランザクションが競合を有さないならば、うまく完了させることができる。コンフィギュラブルトランザクションメモリは、現在のトランザクションを、もしそのトランザクションがまさに競合を有するならば、中止することができる。
【００４９】
判断５０２は、クライアントからの現在のトランザクションに対するコミット要求を待つ。判断５０４は、クライアントのために競合が存在するかどうかを確認する。追跡ステートは、現在のトランザクションのアクセスのために、競合が以前に検出されたかどうかを示してもよい。もし競合が存在するならば、処理５００は判断５０６に進む。そうでない場合、処理５００は判断５０８に進む。
【００５０】
判断５０８は、現在のトランザクションが、より多くのデータワードをアクセスしたかどうかを確認する。トランザクションアービタは、クライアントのための設定ステートビットを有する次のエントリを見つけるために、トランザクションバッファ中のエントリをスキャンしてもよい。もし現在のトランザクションが別のデータワードをアクセスしたならば、処理５００は判断５１０に進む。そうでない場合、処理５００はステップ５１２に進む。ステップ５１０において、データワードのためのエントリは、クライアントのための設定ライトビットを確認される。もし、そのライトビットが、データワードのためのエントリ中に設定されているならば、処理５００はステップ５１４に進む。そうでない場合、処理５００は判断５０８に戻る。ステップ５１４において、現在のトランザクションのためのライトデータを含むデータが、トランザクションバッファ中のエントリからデータバッファ中のデータワードにコピーされる。
【００５１】
ステップ５１２において、コンフィギュラブルトランザクションメモリは、現在のトランザクションのための、コミットされたという完了ステータスを生成し、現在のトランザクションはもはや進行中ではなくなる。
【００５２】
判断５０６は、中止モードを確認する。直ちに中止されたモードの場合、処理５００は判断５０２に戻るが、それは、トランザクションが既に中止されたためである。そうでない場合、処理５００は、トランザクションを中止するためにステップ５１６に進む。ステップ５１６において、コンフィギュラブルトランザクションメモリは、現在のトランザクションのための、中止されたという完了ステータスを生成し、現在のトランザクションはもはや進行中ではなくなる。
【００５３】
ステップ５１８において、クライアントのためのステート追跡ビットは現在のトランザクションの各アクセスのためのエントリ中においてクリアされる。ステップ５２０において、すべてのステート追跡ビットがクリアされた各エントリは、トランザクションバッファから削除される。
【００５４】
図６は、本発明のさまざまな実施の形態に従うコンフィギュラブルトランザクションメモリを構成するためのシステムのブロック図である。コンフィギュラブルトランザクションメモリの使用における初期のステップは、特定のユーザ設計のためのトランザクションの特定の組の同期のためにコンフィギュラブルトランザクションメモリを構成することを含んでもよい。
【００５５】
プロセッサ読取可能装置６０２は、コンフィギュラブルトランザクションメモリを構成するためのソフトウェアモジュール６０４〜６１４で構成されてもよい。ソフトウェアモジュール６０４中の命令の実行は、コンフィギュラブルトランザクションメモリのための多数のクライアントをプロセッサ６１６に選択させることを可能にする。ソフトウェアモジュール６０６は、コンフィギュラブルトランザクションメモリのデータバッファ中のデータワードのためのストレージを、プロセッサ６１６に割当てさせることを可能にする。ソフトウェアモジュール６０８は、コンフィギュラブルトランザクションメモリのトランザクションバッファのためのストレージをプロセッサ６１６に割当てさせることを可能にする。
【００５６】
クライアントのためのソフトウェアにおいて特定される、トランザクションの静的解析が、トランザクションバッファのサイズを設定してもよい。コンパイラは、ソフトウェアのコンパイルの間にトランザクションを静的に解析してもよい。コンフィギュラブルでないトランザクションメモリが、トランザクションバッファおよびデータバッファのための等しい量のストレージを、任意の可能なトランザクションの組をサポートするために有していてもよいが、トランザクションの実際の組の静的解析は、ストレージの半分以下を、コンフィギュラブルトランザクションメモリのトランザクションバッファに対して割当てることを可能にする。より少ないストレージが必要とされるため、コンフィギュラブルトランザクションメモリは、より効率的に、任意の特定のトランザクションの組のためのトランザクションメモリを実現することができる。ストレージの量が、トランザクションの任意の与えられた組に対して決定されることができるため、コンフィギュラブルトランザクションメモリは、なおも、トランザクションの任意の可能な組をサポートすることができる。
【００５７】
ソフトウェアモジュール６１０は、データバッファおよびトランザクションバッファを含むメモリバッファのための多数のブロックＲＡＭをプロセッサ６１６に決定させることができる。ソフトウェアモジュール６１２は、メモリバッファのための多数のブロックＲＡＭを使用する多数のクライアントをサポートするためにコンフィギュラブルトランザクションメモリを構成するためのコンフィギュレーションデータを、プロセッサ６１６に生成および出力させることができる。ソフトウェアモジュール６１４は、プロセッサ６１６に、コンフィギュラブルトランザクションメモリをコンフィギュレーションデータで構成させることができる。
【００５８】
本発明はトランザクションメモリシステムの多様性に対して適用可能であると考えられる。本発明の他の局面および実施の形態は、ここで開示された明細書および本発明の実施の考慮から当業者にとって明らかであるだろう。明細書および図示された実施の形態は単に例として考慮されることを意図しており、本発明の真の範囲および精神は、以下のクレームによって示される。
【図１】
2011516971.tif 000003
【図２】
2011516971.tif 000004
【図３】
2011516971.tif 000005
【図４】
2011516971.tif 000006
【図５】
2011516971.tif 000007
【図６】
2011516971.tif 000008
【手続補正書】
【提出日】平成22年9月29日(2010.9.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のクライアントからの複数のトランザクションを同期させるためのコンフィギュラブルトランザクションメモリであって、各クライアントは、それぞれの進行中トランザクションを、前記それぞれのトランザクションのための完了ステータスが生成されるまで有し、前記クライアントからの前記それぞれの進行中トランザクションは、少なくとも１つのアクセスを含み、各アクセスは、前記コンフィギュラブルトランザクションメモリ中の複数のデータワードの１つを参照するリードアクセスおよびライトアクセスのうちの１つであり、
アロケーションコントロールおよびストレージを含むメモリバッファを備え、前記アロケーションコントロールは、トランザクションバッファと前記データワードのためのデータバッファとの間で選択的に前記ストレージを割当てるように構成可能であり、前記トランザクションバッファは、データワードとクライアントとの各組合せを示すステートを記憶し、前記クライアントは、前記データワードが前記クライアントからの前記それぞれの進行中トランザクションにおけるライトアクセスによって参照されるためのクライアントであり、
前記ステートに応答して、各クライアントからの前記それぞれの進行中トランザクションの前記完了ステータスを生成するために前記メモリバッファに結合されたトランザクションアービタをさらに備え、前記完了ステータスは、競合の不存在に応答してコミットされるか、競合の存在に応答して中止されるかのいずれかであり、前記競合は、別のクライアントからの別の進行中トランザクションの前記データワードを参照するライトアクセスに続く、前記クライアントからの前記それぞれのトランザクションのデータワードを参照するアクセスの間存在する、コンフィギュラブルトランザクションメモリ。
【請求項２】
前記メモリバッファの前記アロケーションコントロールは、多数の前記クライアントを選択するように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項３】
前記メモリバッファの前記アロケーションコントロールは、前記ストレージの半数より多くを前記データバッファに割当てるように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項４】
前記メモリバッファの前記アロケーションコントロールは、前記クライアントからの前記トランザクションの静的解析に従って前記ストレージの一部を前記トランザクションバッファに割当てるように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項５】
前記メモリバッファの前記アロケーションコントロールは、前記ストレージの第１の部分を前記トランザクションバッファに割当て、前記ストレージの第２の部分を前記データワードのための前記データバッファに割当て、前記ストレージの第３の部分を前記トランザクションには含まれない付加的なアクセスの付加的なデータワードのための前記データバッファに割当てる、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項６】
前記トランザクションアービタは、前記トランザクションバッファ中の前記ステートを、前記データワードとクライアントとの各組合せを示すために更新し、前記クライアントは、前記データワードが、前記クライアントからの前記それぞれの進行中トランザクションにおけるライトアクセスによって参照されるためのクライアントであり、前記トランザクションアービタは、前記トランザクションバッファ中の前記ステートを、データワードとクライアントとの各組合せを示すために更新し、前記クライアントは、前記データワードが前記クライアントからの前記進行中のそれぞれのトランザクションにおけるリードアクセスによって参照されるためのクライアントである、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項７】
各クライアントからの前記それぞれのトランザクションは、前記それぞれのトランザクションの前記完了ステータスを生成する前記トランザクションアービタに続いて、もはや進行中ではなくなる、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項８】
前記トランザクションアービタは、前記クライアントからのコミット要求および前記競合の不存在に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、コミットされたとの前記完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項９】
前記トランザクションアービタは、前記クライアントからのコミット要求および前記競合の存在に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、中止されたとの前記完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１０】
前記トランザクションアービタは、前記競合に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、中止されたとの前記完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１１】
前記トランザクションアービタは、前記クライアントからの中止要求に応答して、前記クライアントからの前記それぞれの進行中トランザクションのための、中止されたとの完了ステータスを生成する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１２】
前記トランザクションアービタは、前記クライアントに、前記それぞれのトランザクションの競合の不存在のために前記それぞれのトランザクションをコミットすることが前記クライアントに許可されていることを通知する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１３】
前記トランザクションアービタは、前記それぞれのトランザクションが、前記競合および前記競合の存在にともなう前記クライアントからのコミット要求のうちの選択可能な１つに応答して前記それぞれのトランザクションが中止されたことを、前記クライアントに通知するように構成可能である、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１４】
コミットされたとの前記完了ステータスを有する前記クライアントからの前記それぞれのトランザクションに応答して、前記トランザクションアービタは、前記それぞれのトランザクションの各ライトアクセスのライトデータを、前記トランザクションバッファから前記データバッファへ転送する、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【請求項１５】
前記メモリバッファは、プログラマブルロジックデバイスの複数のブロックメモリの少なくとも１つである、請求項１に記載のコンフィギュラブルトランザクションメモリ。
【国際調査報告】
2011516971.tif 000009
2011516971.tif 000010
2011516971.tif 000011