JP2006107494A - 仮想メモリを利用したトランザクショナルメモリ実行 - Google Patents

仮想メモリを利用したトランザクショナルメモリ実行 Download PDF

Info

Publication number
JP2006107494A
JP2006107494A JP2005282568A JP2005282568A JP2006107494A JP 2006107494 A JP2006107494 A JP 2006107494A JP 2005282568 A JP2005282568 A JP 2005282568A JP 2005282568 A JP2005282568 A JP 2005282568A JP 2006107494 A JP2006107494 A JP 2006107494A
Authority
JP
Japan
Prior art keywords
transaction
xatt
transactional
overflowed
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005282568A
Other languages
English (en)
Other versions
JP2006107494A5 (ja
Inventor
Ravi Rajwar
ラジワール ラヴィ
Maurice Herlihy
ハーリー モーリス
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2006107494A publication Critical patent/JP2006107494A/ja
Publication of JP2006107494A5 publication Critical patent/JP2006107494A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/466Transaction processing
    • G06F9/467Transactional memory

Abstract

【課題】ハードウェアサポートなしにトランザクショナルメモリ実行が仮想メモリを利用することを可能にする。
【解決手段】ローカルトランザクショナルキャッシュを有するプロセッサと、要求元スレッドからのトランザクショナルメモリトランザクション要求に応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャとから構成される装置であって、前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされる。
【選択図】 図1

Description

本発明は、トランザクショナルメモリ(transactional memory)及びトランザクショナル実行(transactional execution)の技術分野に関する。より詳細には、本発明は、ハードウェアサポートを有する、または有しない仮想メモリを用いたトランザクショナルメモリ実行を可能にすることに関する。
トランザクショナルメモリ実行は、アプリケーション、プログラム、モジュールなど、特にアプリケーションプログラムインタフェース(API)がアトミック(atomic)にデータベースファイルや他のタイプのメモリファイルにアクセスすることを可能にする。例えば、トランザクショナルメモリは、データベースやディレクトリサービスなどのパーシスタントポインタリッチデータ構造(persistent pointer−rich data structure)を管理するランタイムエンジンの一部として利用される。
APIは、オペレーティングシステムやデータベースマネージメントシステム(DBMS)などのシステムプログラムと通信するため、アプリケーション、プログラム、モジュールなどにより利用される言語またはメッセージフォーマットとしてみなすことができる。APIは、ファンクションコールをプログラムに書き込むことにより実現可能であり、実行のための具体的なサブルーチンへのリンクを提供する。
トランザクショナルメモリは、パラレルなプログラムの書き込みを容易にし、トランザクショナルメモリの使用は、各スレッドを同時処理することを可能にし、これにより、極めて高い処理効率を達成することを可能にする。
トランザクショナルメモリは、典型的には、データベーストランザクションから導出されるものとみなされる。一般に、トランザクションとは、ACID(Atomicity Consistency Isolation and Durability)プロパティと呼ばれる4つのプロパティを満たすことを必要とする処理群である。第1のACIDプロパティはアトミシティ(atomicity)である。アトミシティは、トランザクションがオール・オア・ナッシング的に実行されることを求める。トランザクションは、プログラムが終了(abort)したり、あるいはエラーにより終了するかもしれない。アトミシティは、トランザクションのすべての処理が実行されるか、あるいはトランザクションの何れの処理も実行されないかの何れか一方を要求する。第2のACIDプロパティは、コンシスタンシ(consistency)である。コンシスタンシは、トランザクションの実行前に、データベースがコンシスタントな状態にある場合、データベースがコンシスタントな状態に留められることを要求する。第3のACIDプロパティは、アイソレーション(isolation)である。アイソレーションプロパティは、実行されるすべてのトランザクションが逐次的順序により実行されるようにする必要があることを示している(すなわち、これらのトランザクションが逐次化可能となるべきである)。ACIDの下で必要とされる第4のプロパティは、デュラビリティ(durability)である。デュラビリティは、トランザクションがマシーンクラッシュを切り抜けることを要求する。すなわち、トランザクションは、それがコミット可能とされる前に、ステーブルな記憶装置(ディスクなど)への書き込みを必要とする。
トランザクショナルメモリ及びトランザクショナル実行は、マルチスレッドアプリケーションがロウバストでハイパフォーマンスな方法により書き込まれることを可能にする。このことは、デスクトップやサーバなどのコンピュータシステムがヘビーなスレッド環境において動作することを要求されることが増大するに従いより重要となる。特に、現在のプロセッサの投機的な実行サポートは、マルチスレッドアプリケーションを効率的に実現するため、コードブロックを投機的に実行するのに利用可能である。しかしながら、トランザクショナルメモリやトランザクショナル実行を実現する現在の技術は、任意のサイズまたは長さのトランザクションを処理することができないという点でリソース制約を被り、これにより、プログラミングとトランザクショナル実行の双方に対する大きな制約が課される。
本発明の課題は、上記問題点に鑑み、ハードウェアサポートなしにトランザクショナルメモリ実行が仮想メモリを利用することを可能にする技術を提供することである。
上記課題を解決するため、本発明は、ローカルトランザクショナルキャッシュを有するプロセッサと、要求元スレッドからのトランザクショナルメモリトランザクション要求に応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャとから構成される装置であって、前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされることを特徴とする装置を提供する。
また、本発明は、ローカルトランザクショナルキャッシュが要求元スレッドからトランザクショナルメモリトランザクション要求を収容可能であるか判断するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクションを収容可能である場合、前記ローカルトランザクショナルキャッシュとの前記トランザクショナルメモリトランザクションを実行するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能でない場合、前記要求元スレッドに係るアプリケーション仮想アドレス空間に前記トランザクショナルメモリトランザクション要求のデータをオーバフローするステップとから構成される方法を提供する。
さらに、本発明は、マシーンによる実行時、ローカルトランザクショナルキャッシュが要求元スレッドからのトランザクショナルメモリトランザクション要求を収容可能であるか判断するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクションを収容可能である場合、前記ローカルトランザクショナルキャッシュとの前記トランザクショナルメモリトランザクションを実行するステップと、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能でない場合、前記要求元スレッドに係るアプリケーション仮想アドレス空間に前記トランザクショナルメモリトランザクション要求のデータをオーバフローするステップとから構成される処理を前記マシーンに実行させる命令を格納することを特徴とするマシーン可読媒体を提供する。
さらに、本発明は、ローカルトランザクショナルキャッシュを有するプロセッサと、データベースと、アプリケーションプログラムインタフェース(API)からの要求元スレッドからのトランザクショナルメモリトランザクション要求がデータベースのメモリにアクセスするよう要求することに応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャとから構成されるコンピュータシステムであって、前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされることを特徴とするコンピュータシステムを提供する。
本発明によると、ハードウェアサポートなしにトランザクショナルメモリ実行が仮想メモリを利用することを可能にする技術を提供することができる。
以下において、本発明の様々な実施例が詳細に説明される。しかしながら、そのような詳細は、本発明の理解を容易にし、本発明を利用するための実施例を説明するために含まれる。本発明の範囲内に属しながら、他の変形及び実施例が可能であるため、このような詳細は本発明を説明された特定の実施例に限定するのに利用されるべきではない。さらに、本発明の実施例の完全なる理解を提供するため、多数の詳細が提供されるが、これらの具体的詳細が本発明の実施例を実現するのに要求されるものではないということが、当業者には明らかであろう。他の具体例では、本発明を不明瞭にすることを避けるため、周知の方法、データタイプ、プロトコル、手順、コンポーネント、電気構造及び回路などの詳細は説明されないか、あるいはブロック図により示される。さらに、本発明の実施例は、特定の実施例により説明されるが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェアまたはこれらの組み合わせにより実現されるようにしてもよい。
図1は、本発明の実施例が実現されるコンピュータシステム構成の一例の部分的なブロック図を示す。システム構成100は、CPU(Central Processing Unit)などの少なくとも1つのプロセッサ101、チップセット103、システムメモリ装置105、1以上の入出力(I/O)装置113とのインタフェースのための1以上のインタフェース111、及びネットワークインタフェース107から構成される。
チップセット103は、MCH(Memory Control Hub)及び/またはI/Oコントロールハブを有するようにしてもよい。チップセット103は、プロセッサ101とコンピュータシステム100の他のコンポーネントとの間のデータ転送のためのハブまたはコアとして機能する1以上の集積回路チップであってもよい。さらに、コンピュータシステム100は、他のプロセッサ(例えば、マルチプロセッサシステムにおける)、コプロセッサや他のコンポーネントなどの追加的なコンポーネント(図示せず)を有するようにしてもよく、以上はコンピュータシステムの基本例である。
ここでの説明のため、「プロセッサ」または「CPU」という用語は、命令シーケンスを実行可能な任意のマシーンを表すものであり、以下に限定されるものではないが、汎用マイクロプロセッサ、特定用途マイクロプロセッサ、特定用途向け集積回路(ASIC)、マルチメディアコントローラ、信号プロセッサ、マイクロコントローラなどを含むものとされる。一実施例では、CPU101は、インテルアーキテクチャ命令セットの実行が可能な汎用的な高速マイクロプロセッサである。例えば、CPU101は、INTEL(登録商標)Architecture 32−bit(IA−32)プロセッサ(PENTIUM(登録商標)4Mなど)などのINTEL(登録商標)PENTIUM(登録商標)プロセッサ群の1つとすることが可能である。
CPU101、チップセット103及び他のコンポーネントは、チップセット103を介しシステムメモリ装置105にアクセスする。例えば、メモリコントロールハブを用いたチップセット103は、システムメモリ装置105を対象とするメモリトランザクションに供する。
システムメモリ装置105は、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)、及び/またはDDR(Double Data Rate)SDRAMまたはDRAMなど、デジタル情報を格納するよう構成される任意の記憶装置を有するものであってもよい。従って一実施例では、システムメモリ装置105は、揮発性メモリを含む。さらに、システムメモリ装置はまた、ROM(Read−Only Memory)などの不揮発性メモリを有することが可能である。
さらに、システムメモリ装置105はさらに、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、光ディスクドライブなどの他の記憶装置、及び適切なインタフェースを有するようにしてもよい。
本発明の実施例は、仮想メモリを用いてデータフットプリントサイズ、実行される命令、プロセスマイグレーション(process migration)などのリソースに関する任意のサイズのトランザクションを可能にすることにより、プロセッサにおけるエンハンストトランザクショナルメモリ実行サポートを提供する。さらに、これは、プログラマーがリソース問題を解決するため、何れか特別な方法によりソフトウェアを書き込むことを必要としないように、透過的に実行される。以降において、「トランザクション」という用語は、アトミック的に実行される命令シーケンスを表す。さらに、トランザクションはまた、上述されたACIDプロパティに従うものであってもよい。
説明されるように、本発明の実施例は、プロセッサのトランザクショナルキャッシュ構造にバッファリングできないデータをオーバフローするため、アプリケーションの仮想アドレス空間を利用することによって、トランザクショナルメモリ実行におけるリソース問題を効果的に解決するため、仮想メモリを用いたトランザクショナルメモリ実行サポートに関する。これは、トランザクションのリソース要求がローカルトランザクションキャッシュにより解決可能な通常のケースの大部分に対して、また、データフットプリントサイズがローカルトランザクションキャッシュより大きく、データが処理のため、アプリケーション自体の仮想アドレス空間にオーバフローするあまり通常ではないが、重要なケースに対して、ハードウェアまたはプロセッサのトランザクショナル実行サポートを可能にする。プロセッサの既存のローカルキャッシュはまたトランザクショナルキャッシュとして利用されてもよく、あるいはトランザクショナルキャッシュは独立したハードウェア構成とすることも可能である。
さらに、システムメモリ装置105は、本発明の実施例に従う技術を実現するためプロセッサ101により実現されるように、仮想メモリを用いるトランザクショナルメモリ(TM)実行に役立つプログラムを不揮発性メモリに格納する。特に一実施例では、そのようなプログラムは、コンピュータシステム100の内部において、特に後述されるように、プロセッサのトランザクショナルキャッシュ124、物理的メモリ140またはページメモリ141、仮想メモリ170とデータベース108との間のトランザクショナルメモリアクセスを可能にすることに用いられる。
物理的メモリ140、ページメモリ141、仮想メモリ170などと共にシステムメモリ装置105は、データベース108とのメモリトランザクションを実現するのに利用可能である。例えば、データベース108は、企業データベース、金融データベース、プロジェクト管理データベース、ディレクトリサービスなどのデータベースや、典型的にはトランザクショナルメモリタイプトランザクションにより利用される他のポインタリッチデータ構造を有するものであってもよい。
さらに、コンピュータシステム100は、ディスクドライブ、モニタ、キーパッド、モデム、プリンタ、あるいは他の適切なI/O装置などのI/O装置113とのインタフェースのための適切なインタフェース11を有するようにしてもよい。
コンピュータシステム100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)やインターネットなどのネットワーク109とコンピュータシステム100とのインタフェースのためのネットワークインタフェース107を有するようにしてもよい。
図1の基本的なコンピュータシステム構成100は、後述されるように、仮想メモリw用いてトランザクショナルメモリ実行を実現するのに利用可能な1つのタイプのコンピュータシステムの一例である。図1の一例となるコンピュータシステム構成100は、基本的なコンピュータシステムの単なる一例であり、他の多くのタイプ及び変形が可能であることが、当業者に理解されるべきである。さらに、当業者は図1に示された一例となる環境が本発明の実施例を限定するものではないということを認識するであろう。さらに、単一のコンピュータシステム構成100に加えて、あるいはその代わりに、コンピュータクラスタまたは他のグループ(コンピュータシステム構成100と類似、または異なる)が、本発明の実施例を実現するのに利用されてもよい。
図1に示されるように、より詳細には、プロセッサ101は、仮想メモリ170と共に物理メモリ140とページメモリ141に格納されているトランザクションアドレステーブル145(以降では、XATTと呼ばれる)、ローカルトランザクショナルキャッシュ124及び標準的なトランザクション実行機能120と共に、トランザクションアドレス変換テーブルウォーカー132(以降では、XATTウォーカーと呼ばれる)を用いることによって、仮想メモリ機能130を利用したトランザクショナルメモリ(TM)実行を実現する。さらに、より詳細に後述されるように、仮想メモリ130を用いたTM実行はまた、トランザクションアドレス変換キャッシュ134(以降では、XATCと呼ばれる)と、コンフリクト検出フィルタ136(以降では、CDFと呼ばれる)を実現してもよい。
プロセッサ101は、リソース要求がリクエストされたトランザクションに対してローカルトランザクショナルキャッシュ124により満たされることが可能であるとき、ローカルトランザクショナルキャッシュ124により動作する標準的なトランザクション実行機能120を利用して、標準的なトランザクショナル実行機能120を実現するようにしてもよい。しかしながら他のケースでは、トランザクションがローカルトランザクショナルキャッシュより大きなデータリソースを要求するとき、あるいはローカルトランザクショナルキャッシュを超えるパーシスタンスを要求するコンテキストスイッチ(context switch)などのイベントに直面するとき、データは仮想メモリ170を用いたトランザクショナルメモリ実行をシームレスに行うため、対応するアプリケーション172の仮想アドレス空間にオーバフローされる。後述されるようにこれは、トランザクションアドレス変換テーブル(XATT)ウォーカー132と、トランザクションアドレス変換テーブル(XATT)145と、仮想メモリ170及び物理メモリ140の利用の一意的かつ非自明な組み合わせとの組み合わせにより実現される。
一実施例では、プロセッサ101は、ローカルトランザクショナルキャッシュ124とリソースマネージャ131を含む。リソースマネージャ131は、要求元のスレッドからのトランザクショナルメモリトランザクション要求116に応答して、ローカルトランザクショナルキャッシュがトランザクショナルメモリトランザクション要求を収容可能であるか判断し、収容可能である場合には、ローカルトランザクショナルキャッシュはトランザクショナルメモリトランザクションを実行する。しかしながら、ローカルトランザクショナルキャッシュ124がトランザクショナルメモリトランザクション要求を収容できない場合、トランザクショナルメモリトランザクション要求のデータは、要求元スレッドに関するアプリケーションの仮想アドレス空間170にオーバフローされる。
図1に示されるように、コンピュータシステム構成100は、XATT145、新しい物理アドレス(PAnew)150及びもとの物理アドレス(PAorig)152を有する物理メモリ140を有する。ページメモリの実施例141では、XATT145がまた利用されてもよい。コンピュータシステム構成100はまた、アプリケーションのための仮想アドレス空間172を実現するための仮想メモリ170を有し、仮想アドレス空間170は、後述されるように、新しい仮想アドレス(VAnew)174と、もとの仮想アドレス(VAorig)176を有する。
特にAPI要求、あるいは他のタイプのプログラムまたはモジュール要求116(すなわち、トランザクショナルメモリトランザクションを要求するスレッド)に基づき、プロセッサ101は、後述されるトランザクショナルメモリトランザクションを実現するため、仮想メモリを潜在的に利用するトランザクショナルメモリ実行を実行する。例えばこれは、プログラムの現在アクティブなスレッドに対してトランザクショナルにメモリを単に更新するため実行されてもよいし、あるいはデータベース108をトランザクショナルに最終的に更新するようにしてもよい。
図2を参照するに、図2は、仮想メモリを用いたトランザクショナルメモリ実行に関する本発明の実施例を実現するためのプロセス200を示すフロー図である。ブロック202において、要求元スレッドからのトランザクショナルメモリトランザクション要求に基づき、プロセス200は、要求されたトランザクションのリソース要求が、プロセッサのローカルトランザクショナルキャッシュ124により収容可能であるか判断する。例えば、リソースマネージャ131によりこの判定が実行されてもよい。リソース要求が収容可能である場合、トランザクション実行機能120とローカルトランザクショナルキャッシュ124を利用するプロセッサ101は、要求元スレッドに対してローカルトランザクショナルキャッシュ124を用いたトランザクショナルメモリトランザクションを実行する(ブロック204)。そうでない場合には、要求元スレッドに対する要求されたトランザクショナルメモリトランザクションのデータは、要求元アプリケーションの仮想アドレス空間172にオーバフローされる(ブロック206)。このデータオーバフローは、XATTウォーか0132を用いて管理される(ブロック208)。より詳細に後述されるように、アプリケーション172の仮想アドレス空間を利用することにより、トランザクショナルメモリトランザクションがさらに処理可能である。
従って、標準的なトランザクション実行機能は、アプリケーションのスレッドからの要求されたトランザクションのリソース要求がローカルトランザクショナルキャッシュ124により収容可能である通常のケースをサポートするのに利用される。
しかしながら、要求されるデータリソースがローカルトランザクショナルキャッシュ124のものより大きいとき、データはコピー・オン・ライト(copy−on−write)技術を用いて、仮想メモリ170のアプリケーション自体の仮想アドレス空間172にオーバフローされる。アプリケーションと同じ仮想アドレス空間においてオーバフロー情報を保持することにより、コンテクストスイッチ、プロセスマイグレーションなどの重要な状況が自動的に処理される。効果的には、ユーザはこのプロセスに関与しない。後述されるように、ページウォーカーと同様に、XATTウォーカー132は、ローカルトランザクショナルキャッシュの代わりに、仮想メモリを用いてトランザクショナルメモリトランザクションが実現可能な機構を提供する。
これらのオーバフローを処理するため、2つのコンポーネントが利用される。すなわち、物理メモリ140またはページメモリ141に格納されるXATT145と、プロセッサにより実現されるXATTウォーカー132である。XATT145は、この機能を実現するようXATTウォーカー132により処理される。後述されるように、XATTは、ページテーブルが管理されるのと同様に管理され、XATTウォーカー132は、ページウォーカーと同様に実現される。XATTウォーカー132がプロセッサ101により実現されるように示されているが、それはまたソフトウェアサポートによるハイブリッドな方法により実現されてもよい。
図3を参照するに、図3は、本発明の一実施例によるXATT300の構成図である。上述のように、XATTは物理メモリまたはページメモリに格納されてもよい。さらに、XATT300は、対象とされるアプリケーションのアドレスベース内で実行されるすべてのトランザクションに共通なものであってもよいし、あるいはトランザクション単位のものであってもよい。
特に、XATTは、もとの仮想アドレス(VAorig)302、新しい仮想アドレス(VAnew)306、もとの物理アドレス(PAorig)310、新しい物理アドレス(PAnew)316及びトランザクションポインタ(XPTR)320の5つのフィールドを有する。XATT300は、1)オーバフローされたリードセット(例えば、トランザクションで読み出されたブロックなど)の追跡と、2)オーバフローされたライトセット(たとえば、トランザクションで書き込まれたブロックなど)とそれらの変換されたアドレスの追跡との2つの主要な機能を実行する。ここで、XATT300は、単一構造であってもよいし、あるいはいくつかの個別の構成に分割されていてもよい。XATT自体は、変換されたアドレスに対応するデータを格納するのに利用されてもよい。
図4を参照するに、図4は、本発明の一実施例による新しい仮想アドレスと物理アドレスを取得するためのプロセス400を示す。もとの仮想アドレス(VAorig)は、典型的には、オーバフローされるデータブロックのキャッシュブロック整列されたアドレスである。オーバフローがトリガーされると、新しい仮想アドレス(VAnew)がこの新しい仮想アドレスに対応するよう(それ自体の新しい物理アドレス(PAnew)に)割当てられる。
特に図4に示されるように、ブロック402において、プロセス400は、オーバフローが検出されたか判断する。検出されない場合、標準的な処理が実行される(ブロック404)。しかしながら、オーバフローが検出される場合、新しい仮想アドレス(VAnew)がもとの仮想アドレス(VAorig)に対応して割当てられる。さらにブロック408において、新しい物理アドレス(PAnew)が、もとの物理的アドレス(PAorig)に対応して割当てられる。
VAnewは、プロセッサやランタイムライブラリにより動的割当てがされてもよいし、あるいは、コンピュータシステム設定によってアドレス空間実現が処理される方法に依存して、コンパイラによってコンパイル時に静的割当てがなされてもよい。もとの仮想アドレス(VAorig)は、既存の仮想メモリ管理機構を用いて取得される。新しい仮想アドレス(VAnew)は、アプリケーション自体のアドレス空間に属する。新しい仮想アドレスは、XATT自体の一部であってもよい。
もとの仮想アドレス(VAorig)302、新しい仮想アドレス(VAnew)306、もとの物理アドレス(PAorig)310、新しい物理アドレス(PAnew)316の値と共に、トランザクションアクションポインタ320の値もまた(より詳細に後述される)、XATT300に入れられ、物理メモリ140及び/またはページメモリ141に格納される。
XATT300は、2つの方法により実現可能である。一実施例では、XATTは、アプリケーション内のトランザクション単位により実現される。このように実現されると、各トランザクションは、それ自体の一意的な新しい物理アドレスの値(PAnew)を有する。これにより、トランザクションは他の何れのトランザクションと干渉することなく、オーバフローされたブロックに対する変更を一時的に更新することが可能となる。PAnewは、処理中のトランザクションに対してのみ参照可能である。このアプローチは複数のコピー更新を可能にするが、もとの物理アドレス(PAorig)は、トランザクションがコミットする場合、新しい物理アドレスの値(PAnew)により更新される必要がある。これは、XATTウォーカー132がコミットトランザクションをトリガーすることにより発生する。
他の実施例では、XATT300は、アプリケーション内のすべてのトランザクションに共通に実現されてもよい。この手法では、新しい物理アドレス(PAnew)は、すべてのトランザクションに共通している。従って、1つの物理的位置のみが任意の時点で与えられたオーバフローブロックに対して書き込む可能であるため、正確な値が参照可能となることを保証するのにコピー更新は必要でない。さらに、すべてのトランザクションは、直近に更新されたデータを取得した物理アドレスを自動的に認識する。
トランザクションポインタ(XPTR)320は、あるオーバフローされたブロックを現在所有しているトランザクションのヘッダデータ構造をポインタ指定する。特に、より詳細に説明されるように、XPTR320は、実行中(running)、終了(aborted)またはコミット済(comitted)のモードの1つに設定される。ブロックを所持するトランザクションの状態は、XPTRをクエリすることにより取得される。トランザクションヘッダの「状態」がそれを終了するよう設定されている場合、バルクスカッシュ(bulk−squash)が実行されてもよい。その後、終了したものはXPTRをそれ自体にポインタ指定することが可能である。
オーバフロートランザクションがコミットする前、XPTR320が依然として当該トランザクションを所有していることを確認するため、XPTR320をチェックすることが要求される。それのポインタがそれを終了するよう設定されている場合、当該トランザクションは再試行される必要がある。終了されていない場合、それの状態はコミット済に自動的に設定される。このことは、以前のトランザクションがコミットされているという点で、他のスレッドが入力されていることを示している。テーブルは、定期的にクリーンアップされてもよい。XPTR320は、オーバフローされたブロックによりトランザクションをアトミック的にコミットまたは終了させる機能を提供する。
グローバルまたはプライベートXATTが使用されるとき、XPTR320は常にトランザクションヘッダをポインタ指定する。各トランザクションのヘッダは、トランザクショナルメモリ装置によりアクセス可能である。これにより、トランザクションヘッダ状態を終了に設定することにより、アクティブなトランザクションがスワップされたトランザクションでさえ終了することを可能にする。
図5を参照するに、図5は、本発明の一実施例による仮想トランザクションメモリ(VTM)トランザクションなどの仮想メモリを利用したトランザクショナルメモリトランザクションを実行しながら、トランザクションのスレッドに可能な各種状態の一例を示す図である。さらに前述のように、VTM状態がトランザクションためXATTのXPTRに格納されてもよい。
例えば、XPTR320のVTM状態は、実行中に設定されてもよい(502)。「実行中」との状態は、実行中の終了状態がわかっていないトランザクションを表す。他方、VTM状態は、終了に設定されてもよい(504)。状態が終了に設定される場合、それはトランザクションが強制的に終了されたという事実を表す。この終了状態は、オーバフローのケースでは、「即座の」破棄が可能ではないため、トランザクションが最終的に終了されるまで時間があることから必要とされる。
あるいは、XPTR320のVTM状態がコミット済に設定されるかもしれない(506)。コミット済の状態はトランザクションの実行が成功したことを意味する。コミット済の状態は、「即座の」更新が可能ではないため、トランザクション状態が最終的にコミットされるまでには時間がある。さらに、VTM状態は、トランザクションがアクティブであるか(508)、あるいはスワップされたか(510)否かを記述する。アクティブ状態508は、トランザクションがプロセッサ上で現在実行されていることを示す。他方、スワップ状態510は、トランザクションがコンテキスト・スイッチアウトされたことを示す。
他のVTM状態は、ローカル状態512またはオーバフロー状態514を含む。ローカル状態512は、ローカルハードウェアバッファリングが、トランザクションを完了させるのに十分であることを示す。他方、オーバフロー状態514は、トランザクションがローカルハードウェアバッファリングスペース(例えば、ローカルトランザクションキャッシュ124など)を使い果たし、仮想メモリ(仮想メモリ170など)がトランザクショナルメモリトランザクションを完了させるのに利用される。
図6を参照するに、図6は、本発明の一実施例によるトランザクションメモリトランザクションがオーバフロー要求を生成する方法に関するプロセス600を示すフロー図である。ここで、スレッドに関するトランザクションは要求自体を生成するか、あるいは、スレッドに関する他のトランザクションから要求を受信するようにしてもよいということが理解される。
まずブロック602において、XATTウォーカーは、トランザクションがXATTをウォークすることによりオーバフローしたか判断する。上述のように、XPTRはローカルまたはオーバフロー状態を含む。オーバフローしていない場合、ブロック604において、当該プロセスは終了される。しかしながら、トランザクションがオーバフローした場合、プロセス600はブロック606において、もとの仮想アドレス(VAorig)がオーバフローし、マッピングされたか判断する。オーバフローされていない場合、新しい仮想アドレスと物理アドレス(VAnew及びPAnew)が割当てられる(ブロック608)。XATTウォーカーは、XATTテーブルをウォークしてそれを適切に更新する。何れの場合でも、ブロック610において、VAnewとPAnewの値が取得される。PAorigを用いて、コヒーレンシが維持される。しかしながら、トランザクションは、ライトを実行するとPAnewを更新する。それは他のすべてのトランザクションが知っているアドレスであるため、コンフリクト検出がPAorigを用いて実行される(一意的なXATTが利用されると仮定すると)。
XATTウォーカーはまた、VAorigにマッピングされた他のトランザクションがないことを保証する。VAorigエントリがない場合、新しいエントリがブロック620においてインストールされる。特に、VAnewとPAnewがXATTに入れられる。しかしながら、もとの仮想アドレスエントリが存在する場合、ブロック618において、プロセス600は、現在のトランザクションが待機すべきか、あるいは前のトランザクションがXATTのXPTRの状態に基づき終了されるべきか判断する。何れの場合でも、XATTにVAnewとPAnewが入れられる。XATTウォーカーがこれらのアクションを行い、XPTRを直接実行することにより、これを行うことができる。
図7を参照するに、図7は、本発明の一実施例によるトランザクションをコミットするためのプロセス700を示すフロー図である。特に、オーバフロートランザクションのコミット前、XPTRをチェックしてそれが現在のトランザクションにより依然として所有されているか確認すべきである(例えば、それが依然としてアクティブであり、スワップされていないか確かめるためチェックすることにより)(ブロック702)。次にブロック704において、プロセス700は、XPTRが「終了」に設定されているか確認するためチェックすべきである。終了に設定されている場合、ブロック710においてトランザクションは終了される。他方、ポインタが終了に設定されていない場合、トランザクションはアトミック的にコミット済に設定されるべきである。従って、XPTRは、オーバフローしたブロックに対するトランザクションをアトミック的にコミットまたは終了する機能を提供する。トランザクショナルメモリトランザクションがコミットされる場合、トランザクショナルメモリトランザクションは、ローカルトランザクショナルキャッシュに加えて、またはそれに代わってアプリケーション仮想アドレス空間を利用して実行される。
図8を参照するに、図8は、本発明の一実施例による入力要求にオーバフローしたトランザクションがどのように応答するかに関するプロセス800を示すフロー図である。ブロック802において、オーバフロートランザクションに対する入力された要求が受信される。この入力された要求は、通常実行中は他のトランザクションにより、またコンフリクトが検出され、オーバフロートランザクションが実際にコミットされたときにはXATTウォーカーにより生成されてもよい。これらのケースは共に同様のアクションを要する。従って、入力した要求の処理が通常実行中に他のトランザクションスレッドにより生成される場合、入力要求がオーバフロートランザクションにより受信されると、ブロック804において、オーバフロートランザクションは当該入力要求がローカルアドレスまたはオーバフローされたアドレスに一致するか判断する。それがローカルアドレスである場合には、ブロック810において、トランザクションはローカルトランザクションキャッシュを利用するプロセッサによりローカルに処理される。
しかしながら、それがオーバフローされたアドレスであると判定されると、ブロック812において、XATTはそれがオーバフローされたトランザクションであることを保証するため、XATTウォーカーによりウォークされる。その後ブロック814において、XATTウォーカーは、一致を判断するためXATTをウォークする。一致が検出されない場合、ブロック816においてコンフリクトが存在しないということが宣言され、ブロック818において要求されたトランザクションが実行される。しかしながら、一致がある場合、XATTウォーカーはそれのトランザクションを終了するか、あるいは優先度に応じてコンフリクトするトランザクションに終了を通知する(ブロック820)。
上述のように、オーバフローしたトランザクションのコミットに関して、XATTウォーカーはまず、XPTRのXATTエントリが更新されていることを確実にする。トランザクションヘッダのデータ構造を更新することにより、すべての適切なオーバフローされたブロックに対するXATTにおける対応するすべてのエントリが、アトミック的にコミットされる。これが成功するときのみ、バッファリングされているローカルハードウェアブロック(オーバフローされていない)がコミットされる。この2つの処理のコミットは、ローカルハードウェアコミットとオーバフローされたソフトウェアコミットが同期されていることを確実にする。
オーバーフローは比較的通常のものではないため、XATTウォーカーによるXATTのウォークのパフォーマンスのペナルティは、ごくわずかなものである。また、プロセスマイグレーション、タイマ中断及びコンテクストスイッチは、ローカルにバッファリングされた非オーバフローブロックのすべてを強制的にXATTにオーバフローすることにより処理可能である。
図1を参照するに、XATC(Transaction Address Translation Cache)134とCDF(Conflict Detection Filter)136は効率性を向上させるのに利用され、上述されたように、本発明の実施例による仮想メモリを用いるトランザクショナルメモリ実行と共に利用されるとき、迅速なトランザクション変換とトランザクション間のコンフリクト管理を提供する。
一実施例では、XATC134は、変換の決定をスピードアップするため、オーバフローされたアドレス変換をキャッシュ処理するのに利用可能である。特に、XATC134は、アドレスやXPTRなどのXATT(Translation Address Translation Table)の一部をキャッシュ処理する。これは、ページテーブルに対してTLB(Translation Lookaside Buffer)が果たす役割と同様である。
より詳細には、プロセッサトランザクションがオーバフローしたとき、アドレス実行中にプロセッサはXATC134を検索し、1)アドレスが以前にリマップされているか、2)新しい変換が必要であるか、判断する。もとの物理アドレスと新しいアドレスの両方に対して、コヒーレンス動作が呼び出される。XATC134は、XATTへのウォークの必要性を最小化する。しかしながら、コンテキストスイッチでは、XATC134は無効とされる。
さらに、CDF(Conflict Detection Filter)136はまた、入力された要求がアドレスとコンフリクトするか、あるいは要求元が他のトランザクションとコンフリクトするかの判断をスピードアップするのに利用されてもよい。CDF136は、オーバフローしたアドレスを粗く追跡する。CDF136はまた、スワップアウトされたトランザクションに属するアドレスを追跡する。従って、CDF136はスワップされたトランザクションを含むすべてのトランザクションに共通なものである。これは、スワップされたトランザクションがアクティブに実行されているトランザクションではなく、コンフリクト発生しているか自ら判断することができないために必要とされる。当該要求を生成するトランザクションは、CDF136に対するチェックを行い、スワップされたトランザクションがXATTにおいてリマップされたアドレスを有しているか判断する。そうすることにより、要求が生成されるたびにXATTをウォークする必要がなくなるかもしれない。
CDF136を実現する1つの方法は、Bloomフィルタの概念を拡張することによるものである。CDF136は、最大となるカウンタ値がオーバフロー可能なトランザクションまたはロケーションの最大数となるカウンタアレイとして実現されてもよい。アドレスがオーバフローされることを示すために、PAorigがハッシュ関数h,...,hによりハッシュ処理され、CDF136のこれらのカウンタがインクリメントされる。当該アドレスを削除するため、同一のカウンタがデクリメントされる。アドレスが存在するかテストするため、これらのカウンタがテストされ、そのすべてが非零であるか判断される。その場合、潜在的なコンフリクトが検出されたこととなる。
CDF136とXATC134の双方がパフォーマンスのためリソースをトレードする。すなわち、大きなキャッシュはリソースを占有するが、変換をスピードアップする一方、大きなフィルタハ小さいフィルタより偽陽性を生じさせない。このフレキシビリティは、同一の構造がリソースリッチ及びリソースプアなプラットフォームの両方で利用可能であることを意味する。
本発明の実施例とその各種機能コンポーネントが特定の実施例において説明されたが、本発明の実施例が、ハードウェア、ソフトウェア、ファームウェア、ミドルウェアまたはそれらの組み合わせにより実現され、システム、サブシステム、コンポーネントまたはサブコンポーネントにおいて利用可能であるということは理解されるであろう。ソフトウェアまたはファームウェアで実現されるとき、本発明の要素は、必要なタスクを実行するための命令/コードセグメントである。プログラムまたはコードセグメントは、マシーン可読媒体(例えば、プロセッサ可読媒体やコンピュータプログラムプロダクツなど)に格納可能であるか、あるいは搬送波において実現されるコンピュータデータ信号、キャリアにより変調される信号によって送信媒体や通信リンクを介し送信することが可能である。マシーン可読媒体は、マシーン(プロセッサ、コンピュータなど)により可読で実行可能な形式により情報を格納または転送することができる任意の媒体を含むものであってもよい。マシーン可読媒体の例には、電子回路、半導体記憶装置、ROM、フラッシュメモリ、EPROM(Erasable Programmable ROM)、フロッピー(登録商標)ディスケット、コンパクトディスクCD−ROM、光ディスク、ハードディスク、光ファイバ媒体、無線周波数(RF)リンクなどが含まれる。コンピュータデータ信号には、電子ネットワークチャネル、光ファイバ、空気、電磁気、RFリンク、バーコードなどの送信媒体を介し伝搬可能な任意の信号が含まれてもよい。コードセグメントは、インターネット、イントラネットなどのネットワークを介しダウンロード可能である。
さらに、本発明の実施例が例示された実施例を参照することにより説明されたが、これらの説明は限定的なものと解釈されるべきではない。本発明が属する技術分野の当業者には明らかな例示された実施例の様々な変更や本発明の他の実施例は、本発明の趣旨及び範囲内に属するものとみなされる。
図1は、本発明の実施例が実現されるコンピュータシステム構成の一例に関する部分的なブロック図を示す。 図2は、仮想メモリを用いたトランザクショナルメモリ実行に関する本発明の実施例を実現するためのプロセスを示すフロー図である。 図3は、本発明の一実施例によるXATT(Transaction Address Translation Table)の構成図である。 図4は、本発明の一実施例による新しい仮想アドレス及び物理アドレスを取得するためのプロセスを示すフロー図である。 図5は、本発明の一実施例によるVTM(Virtual Transaction Memory)トランザクションなどの仮想メモリを利用したトランザクショナルメモリトランザクションの実行中に、トランザクションのスレッドがとりうる各種状態の一例を示す図である。 図6は、本発明の一実施例によるトランザクショナルメモリトランザクションがオーバフロー要求を生成する方法に関するプロセスを示すフロー図である。 図7は、本発明の一実施例によるトランザクションをコミットするプロセスを示すフロー図である。 図8は、本発明の一実施例による入力された要求にオーバフローされたトランザクションが応答する方法に関するプロセスを示すフロー図である。
符号の説明
100 コンピュータシステム構成
101 プロセッサ(CPU)
103 チップセット
105 システムメモリ装置
107 ネットワークインタフェース
108 データベース
109 ネットワーク
111 インタフェース
113 入出力装置
120 標準トランザクション実行機能
124 トランザクショナルキャッシュ
130 仮想メモリ機能
132 XATTウォーカー
134 XATC
136 CDF
140 物理メモリ
141 ページメモリ
170 仮想メモリ

Claims (40)

  1. ローカルトランザクショナルキャッシュを有するプロセッサと、
    要求元スレッドからのトランザクショナルメモリトランザクション要求に応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャと、
    から構成される装置であって、
    前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされることを特徴とする装置。
  2. 請求項1記載の装置であって、さらに、
    トランザクションアドレス変換テーブル(XATT)ウォーカーを有し、
    前記アプリケーション仮想アドレス空間へのデータのオーバフローは、前記XATTウォーカーにより管理される、
    ことを特徴とする装置。
  3. 請求項2記載の装置であって、さらに、
    トランザクションアドレス変換テーブル(XATT)を有し、
    前記XATTウォーカーは、物理メモリに格納されているXATTに対し処理することにより前記データのオーバフローを管理する、
    ことを特徴とする装置。
  4. 請求項3記載の装置であって、
    オーバフローが検出されると、前記XATTウォーカーは前記XATTのオーバフローされたトランザクションに対応する新しい物理アドレスと新しい仮想アドレスとを割当てることを特徴とする装置。
  5. 請求項3記載の装置であって、
    前記XATTテーブルは、現在トランザクションの状態を有するトランザクションアクションポインタ(XPTR)を有することを特徴とする装置。
  6. 請求項5記載の装置であって、
    前記現在トランザクションの状態は、ローカルまたはオーバフローの1つであることを特徴とする装置。
  7. 請求項5記載の装置であって、
    前記現在トランザクションの状態は、アクティブまたはスワップ済の1つであることを特徴とする装置。
  8. 請求項5記載の装置であって、
    前記現在トランザクションの状態は、実行中、終了またはコミット済の1つであることを特徴とする装置。
  9. 請求項5記載の装置であって、
    前記XATTウォーカーは、前記XATTのXPTRをチェックし、オーバフローされたトランザクションがアクティブ状態に設定されていることを確認し、前記オーバフローされたトランザクションが終了状態に設定されているか判断し、終了状態に設定されている場合、前記オーバフローされたトランザクションは終了されることを特徴とする装置。
  10. 請求項9記載の装置であって、
    前記オーバフローされたトランザクションが終了状態に設定されていない場合、前記オーバフローされたトランザクションはコミットされ、前記アプリケーション仮想アドレス空間を用いて前記トランザクショナルメモリトランザクションが実行されることを特徴とする装置。
  11. ローカルトランザクショナルキャッシュが要求元スレッドからトランザクショナルメモリトランザクション要求を収容可能であるか判断するステップと、
    前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクションを収容可能である場合、前記ローカルトランザクショナルキャッシュとの前記トランザクショナルメモリトランザクションを実行するステップと、
    前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能でない場合、前記要求元スレッドに係るアプリケーション仮想アドレス空間に前記トランザクショナルメモリトランザクション要求のデータをオーバフローするステップと、
    から構成される方法。
  12. 請求項11記載の方法であって、さらに、
    トランザクションアドレス変換テーブル(XATT)ウォーカーを用いて、前記アプリケーション仮想アドレス空間へのデータのオーバフローを管理するステップを有することを特徴とする方法。
  13. 請求項12記載の方法であって、
    前記XATTウォーカーは、物理メモリに格納されているトランザクションアドレス変換テーブル(XATT)に対し処理することにより、前記データのオーバフローを管理することを特徴とする方法。
  14. 請求項13記載の方法であって、
    オーバフローが検出されると、さらに、前記XATTのオーバフローされたトランザクションに対応する新しい物理アドレスと新しい仮想アドレスとを割当てるステップを有することを特徴とする方法。
  15. 請求項13記載の方法であって、さらに、
    現在トランザクションの状態を前記XATTに割当てるステップを有することを特徴とする方法。
  16. 請求項15記載の方法であって、
    前記現在トランザクションの状態は、ローカルまたはオーバフローの1つであることを特徴とする方法。
  17. 請求項15記載の方法であって、
    前記現在トランザクションの状態は、アクティブまたはスワップ済の1つであることを特徴とする方法。
  18. 請求項15記載の方法であって、
    前記現在トランザクションの状態は、実行中、終了またはコミット済の1つであることを特徴とする方法。
  19. 請求項15記載の方法であって、さらに、
    前記XATTをチェックし、オーバフローされたトランザクションがアクティブ状態に設定されていることを確認するステップと、
    前記オーバフローされたトランザクションが終了状態に設定されているか判断し、終了状態に設定されている場合、前記オーバフローされたトランザクションを終了するステップを
    有することを特徴とする方法。
  20. 請求項19記載の方法であって、前記オーバフローされたトランザクションが終了状態に設定されていない場合、さらに、
    前記オーバフローされたトランザクションをコミットするステップと、
    前記アプリケーション仮想アドレス空間を用いて、前記トランザクショナルメモリトランザクションを実行するステップと、
    を有することを特徴とする方法。
  21. マシーンによる実行時、
    ローカルトランザクショナルキャッシュが要求元スレッドからのトランザクショナルメモリトランザクション要求を収容可能であるか判断するステップと、
    前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクションを収容可能である場合、前記ローカルトランザクショナルキャッシュとの前記トランザクショナルメモリトランザクションを実行するステップと、
    前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能でない場合、前記要求元スレッドに係るアプリケーション仮想アドレス空間に前記トランザクショナルメモリトランザクション要求のデータをオーバフローするステップと、
    から構成される処理を前記マシーンに実行させる命令を格納することを特徴とするマシーン可読媒体。
  22. 請求項21記載のマシーン可読媒体であって、さらに、
    トランザクションアドレス変換テーブル(XATT)ウォーカーを用いて、前記アプリケーション仮想アドレス空間へのデータのオーバフローを管理するステップを前記マシーンに実行させる命令を有することを特徴とする媒体。
  23. 請求項22記載のマシーン可読媒体であって、
    前記XATTウォーカーは、物理メモリに格納されているトランザクションアドレス変換テーブル(XATT)に対し処理することにより、前記データのオーバフローを管理することを特徴とする媒体。
  24. 請求項23記載のマシーン可読媒体であって、
    オーバフローが検出されると、さらに、前記XATTのオーバフローされたトランザクションに対応する新しい物理アドレスと新しい仮想アドレスとを割当てるステップを前記マシーンに実行させる命令を有することを特徴とする媒体。
  25. 請求項23記載のマシーン可読媒体であって、さらに、
    現在トランザクションの状態を前記XATTに割当てるステップを前記マシーンに実行させる命令を有することを特徴とする媒体。
  26. 請求項25記載のマシーン可読媒体であって、
    前記現在トランザクションの状態は、ローカルまたはオーバフローの1つであることを特徴とする媒体。
  27. 請求項25記載のマシーン可読媒体であって、
    前記現在トランザクションの状態は、アクティブまたはスワップ済の1つであることを特徴とする媒体。
  28. 請求項25記載のマシーン可読媒体であって、
    前記現在トランザクションの状態は、実行中、終了またはコミット済の1つであることを特徴とする媒体。
  29. 請求項25記載のマシーン可読媒体であって、さらに、
    前記XATTをチェックし、オーバフローされたトランザクションがアクティブ状態に設定されていることを確認するステップと、
    前記オーバフローされたトランザクションが終了状態に設定されているか判断し、終了状態に設定されている場合、前記オーバフローされたトランザクションを終了するステップと、
    を前記マシーンに実行させる命令を有することを特徴とする媒体。
  30. 請求項25記載のマシーン可読媒体であって、前記オーバフローされたトランザクションが終了状態に設定されていない場合、さらに、
    前記オーバフローされたトランザクションをコミットするステップと、
    前記アプリケーション仮想アドレス空間を用いて、前記トランザクショナルメモリトランザクションを実行するステップと、
    を前記マシーンに実行させる命令を有することを特徴とする媒体。
  31. ローカルトランザクショナルキャッシュを有するプロセッサと、
    データベースと、
    アプリケーションプログラムインタフェース(API)からの要求元スレッドからのトランザクショナルメモリトランザクション要求がデータベースのメモリにアクセスするよう要求することに応答して、前記ローカルトランザクショナルキャッシュが前記トランザクショナルメモリトランザクション要求を収容可能であるか判断するリソースマネージャと、
    から構成されるコンピュータシステムであって、
    前記トランザクショナルメモリトランザクション要求が収容可能である場合には、前記ローカルトランザクショナルキャッシュは前記トランザクショナルメモリトランザクションを実行し、前記トランザクショナルメモリトランザクション要求が収容可能でない場合には、前記トランザクショナルメモリトランザクション要求が、前記要求元スレッドに係るアプリケーション仮想アドレス空間にオーバフローされることを特徴とするコンピュータシステム。
  32. 請求項31記載のコンピュータシステムであって、さらに、
    トランザクションアドレス変換テーブル(XATT)ウォーカーを有し、
    前記アプリケーション仮想アドレス空間へのデータのオーバフローは、前記XATTウォーカーにより管理される、
    ことを特徴とするコンピュータシステム。
  33. 請求項32記載のコンピュータシステムであって、さらに、
    トランザクションアドレス変換テーブル(XATT)を有し、
    前記XATTウォーカーは、物理メモリに格納されているXATTに対し処理することにより前記データのオーバフローを管理する、
    ことを特徴とするコンピュータシステム。
  34. 請求項33記載のコンピュータシステムであって、
    オーバフローが検出されると、前記XATTウォーカーは前記XATTのオーバフローされたトランザクションに対応する新しい物理アドレスと新しい仮想アドレスとを割当てることを特徴とするコンピュータシステム。
  35. 請求項33記載のコンピュータシステムであって、
    前記XATTテーブルは、現在トランザクションの状態を有するトランザクションアクションポインタ(XPTR)を有することを特徴とするコンピュータシステム。
  36. 請求項35記載のコンピュータシステムであって、
    前記現在トランザクションの状態は、ローカルまたはオーバフローの1つであることを特徴とするコンピュータシステム。
  37. 請求項35記載のコンピュータシステムであって、
    前記現在トランザクションの状態は、アクティブまたはスワップ済の1つであることを特徴とするコンピュータシステム。
  38. 請求項35記載のコンピュータシステムであって、
    前記現在トランザクションの状態は、実行中、終了またはコミット済の1つであることを特徴とするコンピュータシステム。
  39. 請求項35記載のコンピュータシステムであって、
    前記XATTウォーカーは、前記XATTのXPTRをチェックし、オーバフローされたトランザクションがアクティブ状態に設定されていることを確認し、前記オーバフローされたトランザクションが終了状態に設定されているか判断し、終了状態に設定されている場合、前記オーバフローされたトランザクションは終了されることを特徴とするコンピュータシステム。
  40. 請求項39記載のコンピュータシステムであって、
    前記オーバフローされたトランザクションが終了状態に設定されていない場合、前記オーバフローされたトランザクションはコミットされ、前記アプリケーション仮想アドレス空間を用いて前記トランザクショナルメモリトランザクションが実行されることを特徴とするコンピュータシステム。
JP2005282568A 2004-09-30 2005-09-28 仮想メモリを利用したトランザクショナルメモリ実行 Pending JP2006107494A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/956,178 US7685365B2 (en) 2004-09-30 2004-09-30 Transactional memory execution utilizing virtual memory

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009170142A Division JP5425551B2 (ja) 2004-09-30 2009-07-21 仮想メモリを利用したトランザクショナルメモリ実行

Publications (2)

Publication Number Publication Date
JP2006107494A true JP2006107494A (ja) 2006-04-20
JP2006107494A5 JP2006107494A5 (ja) 2008-08-14

Family

ID=35502717

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005282568A Pending JP2006107494A (ja) 2004-09-30 2005-09-28 仮想メモリを利用したトランザクショナルメモリ実行
JP2009170142A Expired - Fee Related JP5425551B2 (ja) 2004-09-30 2009-07-21 仮想メモリを利用したトランザクショナルメモリ実行

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009170142A Expired - Fee Related JP5425551B2 (ja) 2004-09-30 2009-07-21 仮想メモリを利用したトランザクショナルメモリ実行

Country Status (5)

Country Link
US (1) US7685365B2 (ja)
EP (1) EP1643371B1 (ja)
JP (2) JP2006107494A (ja)
CN (2) CN100514299C (ja)
TW (1) TWI276958B (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537053A (ja) * 2006-06-30 2009-10-22 インテル・コーポレーション 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法
JP2010532053A (ja) * 2007-06-27 2010-09-30 マイクロソフト コーポレーション 仮想化とエミュレーションを促すトランザクションメモリーハードウェアの活用
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US8566524B2 (en) 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
JP2017016639A (ja) * 2015-06-27 2017-01-19 インテル・コーポレーション トランザクショナル電力管理を実行するためのハードウェア装置及び方法

Families Citing this family (183)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US7716249B2 (en) * 2005-09-16 2010-05-11 Microsoft Corporation Transaction and task scheduler
US7730286B2 (en) * 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) * 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US8316352B2 (en) * 2006-06-09 2012-11-20 Oracle America, Inc. Watchpoints on transactional variables
US8035650B2 (en) * 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US20080040524A1 (en) * 2006-08-14 2008-02-14 Zimmer Vincent J System management mode using transactional memory
US9798590B2 (en) * 2006-09-07 2017-10-24 Intel Corporation Post-retire scheme for tracking tentative accesses during transactional execution
US8924653B2 (en) * 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US8806495B2 (en) * 2006-11-20 2014-08-12 Microsoft Corp. Lightweight transactional memory for data parallel programming
US7802136B2 (en) 2006-12-28 2010-09-21 Intel Corporation Compiler technique for efficient register checkpointing to support transaction roll-back
US8719807B2 (en) 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8060482B2 (en) * 2006-12-28 2011-11-15 Intel Corporation Efficient and consistent software transactional memory
US8132158B2 (en) * 2006-12-28 2012-03-06 Cheng Wang Mechanism for software transactional memory commit/abort in unmanaged runtime environment
US8185698B2 (en) * 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US8099719B2 (en) * 2007-06-19 2012-01-17 Microsoft Corporation Transactional debugger for a transactional memory system and detecting conflicts
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US9280397B2 (en) * 2007-06-27 2016-03-08 Intel Corporation Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
US8239633B2 (en) * 2007-07-11 2012-08-07 Wisconsin Alumni Research Foundation Non-broadcast signature-based transactional memory
US20090064141A1 (en) * 2007-08-29 2009-03-05 Microsoft Corporation Efficient utilization of transactions in computing tasks
US7890472B2 (en) * 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
CN101430650B (zh) * 2007-11-07 2013-02-06 国际商业机器公司 用于事务内存的方法和设备
US9027030B2 (en) 2007-11-29 2015-05-05 Red Hat, Inc. Commit-one-phase distributed transactions with multiple starting participants
CN101452400B (zh) * 2007-11-29 2011-12-28 国际商业机器公司 处理多处理器系统中事务缓冲器溢出的方法和系统
US8352421B2 (en) * 2008-05-28 2013-01-08 Red Hat, Inc. Recording distributed transactions using probabalistic data structures
US9239799B2 (en) * 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
US8341133B2 (en) 2008-06-27 2012-12-25 Microsoft Corporation Compressed transactional locks in object headers
US8180986B2 (en) * 2008-09-17 2012-05-15 Microsoft Corporation Memory conflict detection via mapping of the physical heap to control access permissions to the memory
CN101739298B (zh) * 2008-11-27 2013-07-31 国际商业机器公司 共享缓存管理方法和系统
US8127057B2 (en) * 2009-08-13 2012-02-28 Advanced Micro Devices, Inc. Multi-level buffering of transactional data
US8397052B2 (en) * 2009-08-19 2013-03-12 International Business Machines Corporation Version pressure feedback mechanisms for speculative versioning caches
US8521961B2 (en) * 2009-08-20 2013-08-27 International Business Machines Corporation Checkpointing in speculative versioning caches
US8255626B2 (en) * 2009-12-09 2012-08-28 International Business Machines Corporation Atomic commit predicated on consistency of watches
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
CN102713850B (zh) * 2010-01-11 2015-11-25 国际商业机器公司 工作负载管理器及其使用的方法
US8352688B2 (en) * 2010-11-15 2013-01-08 Advanced Micro Devices, Inc. Preventing unintended loss of transactional data in hardware transactional memory systems
US8732496B2 (en) * 2011-03-24 2014-05-20 Nvidia Corporation Method and apparatus to support a self-refreshing display device coupled to a graphics controller
CN102346460B (zh) * 2011-05-27 2013-11-13 运软网络科技(上海)有限公司 一种基于事务的服务控制系统及其控制方法
US10387324B2 (en) 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US10108424B2 (en) * 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9032152B2 (en) 2013-03-22 2015-05-12 Applied Micro Circuits Corporation Cache miss detection filter
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9971627B2 (en) 2014-03-26 2018-05-15 Intel Corporation Enabling maximum concurrency in a hybrid transactional memory system
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
WO2016126474A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for parallel writing to multiple memory device locations
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
EP3254287A4 (en) 2015-02-06 2018-08-08 Micron Technology, INC. Apparatuses and methods for memory device as a store for program instructions
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US10365851B2 (en) 2015-03-12 2019-07-30 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US11086660B2 (en) * 2016-03-09 2021-08-10 Hewlett Packard Enterprise Development Lp Server virtual address space
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
CN207637499U (zh) 2016-11-08 2018-07-20 美光科技公司 用于形成在存储器单元阵列上方的计算组件的设备
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819154A (en) * 1982-12-09 1989-04-04 Sequoia Systems, Inc. Memory back up system with one cache memory and two physically separated main memories
US4926317A (en) * 1987-07-24 1990-05-15 Convex Computer Corporation Hierarchical memory system with logical cache, physical cache, and address translation unit for generating a sequence of physical addresses
US5107457A (en) * 1989-04-03 1992-04-21 The Johns Hopkins University Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack
US5133058A (en) * 1989-09-18 1992-07-21 Sun Microsystems, Inc. Page-tagging translation look-aside buffer for a computer memory system
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5566324A (en) * 1992-12-24 1996-10-15 Ncr Corporation Computer apparatus including a main memory prefetch cache and method of operation thereof
JPH06348597A (ja) * 1993-06-08 1994-12-22 Hitachi Ltd キャッシュ制御方法および回転形記憶装置
US5619673A (en) * 1994-06-29 1997-04-08 Intel Corporation Virtual access cache protection bits handling method and apparatus
JPH0816470A (ja) * 1994-07-04 1996-01-19 Hitachi Ltd 並列計算機
US6453339B1 (en) * 1999-01-20 2002-09-17 Computer Associates Think, Inc. System and method of presenting channelized data
US6799253B1 (en) * 2002-05-30 2004-09-28 Oracle Corporation Stochastic scratchpad storage management technique
US7856537B2 (en) * 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009537053A (ja) * 2006-06-30 2009-10-22 インテル・コーポレーション 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法
US9009452B2 (en) 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US9104427B2 (en) 2007-05-14 2015-08-11 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US8117403B2 (en) 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US9043553B2 (en) 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
JP2010532053A (ja) * 2007-06-27 2010-09-30 マイクロソフト コーポレーション 仮想化とエミュレーションを促すトランザクションメモリーハードウェアの活用
US8738862B2 (en) 2009-08-31 2014-05-27 International Business Machines Corporation Transactional memory system with efficient cache support
US8667231B2 (en) 2009-08-31 2014-03-04 International Business Machines Corporation Transactional memory system with efficient cache support
US8566524B2 (en) 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
JP2017016639A (ja) * 2015-06-27 2017-01-19 インテル・コーポレーション トランザクショナル電力管理を実行するためのハードウェア装置及び方法
US10768680B2 (en) 2015-06-27 2020-09-08 Intel Corporation Hardware apparatuses and methods to perform transactional power management

Also Published As

Publication number Publication date
EP1643371B1 (en) 2013-05-22
US20060085588A1 (en) 2006-04-20
EP1643371A3 (en) 2008-04-02
JP2009245452A (ja) 2009-10-22
JP5425551B2 (ja) 2014-02-26
CN100514299C (zh) 2009-07-15
TWI276958B (en) 2007-03-21
EP1643371A2 (en) 2006-04-05
TW200632652A (en) 2006-09-16
US7685365B2 (en) 2010-03-23
CN1959641A (zh) 2007-05-09
CN101556559B (zh) 2012-09-26
CN101556559A (zh) 2009-10-14

Similar Documents

Publication Publication Date Title
JP5425551B2 (ja) 仮想メモリを利用したトランザクショナルメモリ実行
US7721068B2 (en) Relocation of active DMA pages
EP3433737B1 (en) Memory sharing for working data using rdma
US7490214B2 (en) Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space
US7827374B2 (en) Relocating page tables
US8688920B2 (en) Computing system with guest code support of transactional memory
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US8438568B2 (en) Speculative thread execution with hardware transactional memory
US10387324B2 (en) Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
US8095741B2 (en) Transactional memory computing system with support for chained transactions
Chung et al. Tradeoffs in transactional memory virtualization
RU2501071C2 (ru) Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle)
Litz et al. SI-TM: Reducing transactional memory abort rates through snapshot isolation
US8539281B2 (en) Managing rollback in a transactional memory environment
US20090216995A1 (en) System, method and computer program product for providing quiesce filtering for shared memory
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP2015008008A (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US20060048148A1 (en) Time measurement
Titos-Gil et al. PfTouch: Concurrent page-fault handling for Intel restricted transactional memory
Gamsa et al. Performance issues for multiprocessor operating systems
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
Ichii et al. Hardware Transactional Memory with Delayed-Committing
Ichii et al. A Lazy-Updating Snoop Cache Protocol for Transactional Memory
Tomic et al. Hardware transactional memory with operating system support, HTMOS
Bell et al. Firehose: An Algorithm for Distributed Page Registration on Clusters of SMPs

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080609

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090619