JP6470300B2 - データ処理のための方法及びプロセッサ - Google Patents

データ処理のための方法及びプロセッサ Download PDF

Info

Publication number
JP6470300B2
JP6470300B2 JP2016553649A JP2016553649A JP6470300B2 JP 6470300 B2 JP6470300 B2 JP 6470300B2 JP 2016553649 A JP2016553649 A JP 2016553649A JP 2016553649 A JP2016553649 A JP 2016553649A JP 6470300 B2 JP6470300 B2 JP 6470300B2
Authority
JP
Japan
Prior art keywords
data
processor
llc
state
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016553649A
Other languages
English (en)
Other versions
JP2017509985A (ja
Inventor
マー リン
マー リン
ヤオ スーハイ
ヤオ スーハイ
チャン レイ
チャン レイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2017509985A publication Critical patent/JP2017509985A/ja
Application granted granted Critical
Publication of JP6470300B2 publication Critical patent/JP6470300B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

関連特許出願
本願は、2014年3月26日に出願された中国特許出願第201410117556.9号名称「データ処理のための方法及びプロセッサ」に対する優先権を主張し、これにより、この中国特許出願の内容全体を参照によってその全体が本明細書に組み込まれる。
本願は、コンピュータ技術に関し、特にデータ処理のための方法及びプロセッサに関する。
コンピュータ技術は、マルチコアコンピューティングの方向に開発され続けており、消費電力と熱性能への懸念のため、この高性能コンピューティングの傾向は続く必要性がある。マルチコアアーキテクチャの使用を最適化するために、アプリケーションプログラムは多くの場合、シングルコア(プロセッサ)上でそれぞれ別個に動作するマルチスレッドに分けられ、より高い計算効率を有する並列コンピューティングを実現する。
図1A及び図1Bは、従来のマルチコアアーキテクチャの概略図を示す。図1Aは、コア間を相互にコアを訪れることを可能にするために、(太線にて表示された)ルーティングシステムを使用して相互接続された16のCPUコアP1、P2、・・・P16を有する。図1Bは、キャッシュ*Ln及びLLCを備えたそれぞれのCPUコアの概略構造を示し、*Lnは、第1レベルのキャッシュ(L1)及び/または第2レベルのキャッシュ(L2)を表し、一方、LLCはラストレベルキャッシュを意味する。*Ln及びLLCはルーティングシステムを通じて接続され、LLCはルーティングシステムも通じて接続されたディレクトリを有する。プロセッサはメモリ(図示せず)からデータを読み取り、このデータはマルチコア(プロセッサ)のキャッシュ間に分配され得る。
データの同期を維持するため、異なるスレッドは同期機構により管理され、共有領域にアクセスする必要があり得、これは従来、マルチスレッドによるシリアルアクセスを必要とした。トランザクショナルメモリの設計は、並列処理のレベルを上げるために導入されてきた。トランザクショナルメモリは、プログラムを多くのトランザクションに分け、それぞれのトランザクションを別々に処理することにより、コンピューティングに対処する。それぞれのトランザクションの処理の間、トランザクションの状態は、隠され、その他のプロセッサによる影響を受けない。トランザクションの処理後、結果が次にグローバルシステムにコミットされる。異なるスレッドが衝突し、そのためロックが必要であると「悲観的に」仮定する代わりに、トランザクショナルメモリは、衝突が検出されない限り、異なるスレッドが略衝突しないと仮定して、より「楽観的」手法を取る。衝突が検出された場合、プログラムの状態は衝突前の状態にロールバックされ、データの整合性を維持する。トランザクショナルメモリは現在、IBM社のBlue Gen及びIntel社のHaswellを含む、CPUのアーキテクチャにおいて使用されている。
トランザクショナルメモリは、ソフトウェアまたはハードウェアの何れかを使用する、2つの異なる方法で実現され得る。ソフトウェアトランザクショナルメモリは、低効率で低速度であり、一方ハードウェアトランザクショナルメモリは、技術の有用性を著しく上げた。本開示は、ハードウェアトランザクショナルメモリに関する。
トランザクショナルメモリは、マルチコアスレッドのうち、共有データの訪問は、書き込み−読み取り、読み取り−書き込み、及び書き込み−書き込みの衝突の発生がめったになく、したがってマルチスレッドは並行して操作可能であると仮定する。トランザクション中のデータの修正済の状態を隠し、衝突でロールバックすることによって、本システムの性能及びスケーラビリティはデータの整合性を損なうことなく上昇される。
トランザクショナルメモリはマルチコアシステムの並行性を上昇させるが、衝突率は、プログラムの性能に悪影響を大きく与え得るロールバックの量が過剰になるために並行性のレベルが上昇するにつれ上がる。
理論上は、事前無効化の技術は、共有データの修正時に衝突を著しく減少することにより、クリティカル領域の実行を改善し得る。しかしながら、事前無効化の技術は、グローバルデータの状態を変化させる必要がある。事前無効化が直接従来のトランザクショナルメモリの設計に適用される場合には、直接トランザクショナルメモリの設計と矛盾し、修正の間、隠された状態であることを必要とする。したがって、事前有効化及びトランザクショナルメモリは、単純に組み合わされることはできない。
本概要は、発明を実施するための形態において以下にさらに記載された、簡略化した形態における概念の選択を導入するために提供される。本概要は、請求する主題のすべての鍵となる特徴または本質的な特徴を同定することを意図するものではなく、請求する主題の範囲を決定する上での手助けとして、単独で使用されることを目的としていない。
本開示の一態様は、マルチプロセッサシステムにおけるトランザクショナルメモリを提供する方法である。本方法は、トランザクションを開始するための第1のプロセッサを使用し、第1のデータを第1のプロセッサのプライベートキャッシュに読み込むことと、第1のプロセッサのプライベートキャッシュ中の第1のデータに書き込み操作を実行することを含み得る。書き込み操作前に、第1のデータの最近の修正から予め設定された条件の検出に反応して、第1のプロセッサは修正済の第1のデータを、多数のプロセッサによってアクセス可能な、ラストレベルキャッシュ(LLC)に書き込む。本システムはキャッシュラインの状態インデックスストリングを設定し、LLCに書き込まれた第1のデータは第1のプロセッサによって最後に修正されたことを示す。本システムはさらに、第1のプロセッサのプライベートキャッシュ中の第1のデータを無効化し、トランザクションをトランザクショナルメモリシステムにコミットする。
最近の修正の予め設定された条件は、書き込み操作前に、第1のデータは第1のプロセッサと異なる第2のプロセッサによって最後に修正された可能性がある。
本方法はさらに、キャッシュラインの状態インデックスストリングを設定し、LLCに書き込まれた第1のデータは第1のプロセッサによって最後に修正されたことを示し得る。本方法はまた、キャッシュラインの状態インデックスストリングを設定し、LLCに書き込まれた第1のデータの特別な状態を示し、特別な状態はLLCに書き込まれた第1のデータが修正され(したがって、アップデートされ)、第1のプロセッサのプライベートキャッシュ中の第1のデータは無効化されたことを通知し得る。
本開示の別の態様は、トランザクショナルメモリを提供するための計算システムである。計算システムは、少なくとも第1のプロセッサと第2のプロセッサを含む複数のプロセッサと、複数のプロセッサのうちそれぞれ1つによって各々アクセス可能な複数のプライベートキャッシュと、複数のプロセス間で共有されるラストレベルキャッシュ(LLC)とを含む。計算システムは開示された方法の機能を実行するようプログラムされている。
本開示による改善されたトランザクショナルメモリの設計は、予測機構を使用してトランザクショナルメモリ中のデータをプライベートキャッシュラインの代わりにLLC内に条件付きで配置し、また、対応するプライベートキャッシュラインを事前に無効化するのを可能にする。これは多数のプロセッサによってこのようなデータにより効率的にアクセスする結果となる。開示された設計は、従来のトランザクショナルメモリシステムに適用してそれらを改善することができる。単純な予測機構は、事前に無効化及びハードウェアのトランザクショナルメモリのシームレスな組み合わせを可能にし、結果的に、より精度の高い予測及びトランザクショナルメモリによってクリティカル領域の実行を効率化する。トランザクショナルメモリの実行中にデータの衝突によって生じたロールバックは減少され、マルチコアシステムの性能及びスケーラビリティが上昇される。
本開示のその他の特徴及び利点は、以下の説明に記載され、この記載からある程度明らかになり、または本願の実施によって理解されるであろう。本願の目的及びその他の利点は、具体的に実現、達成を言及された、記載された説明、特許請求の範囲及び構造の図面によって得ることが出来る。
マルチコア並列計算システムの多数のプロセッサの概略図である。 それぞれのコア(プロセッサ)の構造の概略図である。 ラストレベルキャッシュ(LLC)のディレクトリ中のデータ状態インデックスストリングの概略図である。 データ処理のための開示された方法における例示的実施形態のブロックフロー図である。 例示的実施形態の第1のプロセスの始めの、LLCのディレクトリ中のキャッシュラインのデータ状態インデックスストリングの概略図である。 例示的実施形態の第1のプロセスを示すブロックフロー図である。 例示的実施形態の第1のプロセスにおけるブロック104でのLLCのディレクトリ中のキャッシュラインのデータ状態インデックスストリングのブロックフロー図である。 例示的実施形態の第1のプロセスにおけるブロック110でのLLCのディレクトリ中のキャッシュラインのデータ状態インデックスストリングのブロックフロー図である。 例示的実施形態の第2のプロセスを示すブロックフロー図である。 例示的実施形態の第2のプロセスにおけるブロック210でのLLCのディレクトリ中のキャッシュラインのデータ状態インデックスストリングのブロックフロー図である。 例示的実施形態の第3のプロセスを示すブロックフロー図である。 例示的実施形態の第3のプロセスにおけるブロック304でのLLCのディレクトリ中のキャッシュラインのデータ状態インデックスストリングのブロックフロー図である。 例示的実施形態の第3のプロセスにおけるブロック310でのLLCのディレクトリ中のキャッシュラインのデータ状態インデックスストリングのブロックフロー図である。 トランザクショナルメモリを提供する計算システムの構造図である。
本開示は、添付の図及び例示的実施形態とともにさらに詳細に記載されている。記載においては、例えば、「技術(単数または複数)」という用語は、上述の文脈及び本開示を通して許可された、方法、機器装置、システム及び/またはコンピュータ可読命令を意味し得る。
この記載においては、プロセスが記載されている順序は、限定するものと解釈されることを意図せず、任意の数の記載されたプロセスのブロックは、本方法または代替的な方法を実行するために任意の順序で組み合わされ得る。実施形態は説明の利便性のためのみに、連続した工程で記載されている。矛盾が生じない限り、本開示に記載された実施例及び実施形態並びにその特徴及び特色は自由に組み合わせられ得る。さらに、本開示の技術を実行するために、実施形態に記載されているすべての工程が必要とされるわけではない。
典型的な構成においては、マルチコアシステムは、多数のプロセッサ(CPU)、1つ以上のI/Oインタフェース、ネットワークインタフェース及びメモリを含む。メモリは、揮発性メモリ、ランダムアクセスメモリ(RAM)、及び/または読み出し専用メモリ(ROM)若しくはフラッシュメモリ(フラッシュRAM)のような他の形態の不揮発性メモリのような、コンピュータ可読媒体を含み得る。計算装置の内部メモリは、コンピュータ可読メモリ媒体の一種である。プロセッサは内蔵のキャッシュメモリを有する。
コンピュータ可読媒体は、永続的及び非永続的、取り外し可能及び取り外し不可能な媒体を含み、情報の記憶のために任意の方法や技術で形成され得る。記憶された情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータのセットであり得る。コンピュータ記憶媒体の実施例は、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、その他の種類のランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、フラッシュメモリ若しくはその他のメモリ技術、CD−ROM読み取り専用メモリ(CD−ROM)、デジタルヴァーサタイルディスク(DVD)若しくはその他の光記憶装置、磁気カセット、磁気テープディスクストレージ若しくはその他の磁気記憶装置または計算装置によってアクセス可能な情報を記憶するために使用され得る任意のその他の非伝達媒体を含むが、これらに限定されない。本開示の定義によると、コンピュータ可読媒体は、変調されたデータ信号及び搬送波のような、一時的なコンピュータ可読媒体(一過性の媒体)を含まない。
以下、従来のハードウェアのトランザクショナルメモリの動作原理が始めに記載されている。
従来のハードウェアのトランザクショナルメモリにおいては、プログラムコードはCPUに、Transaction_start及びTransaction_endのような命令を使用して、トランザクション領域のスタートとエンドがどこであるかを知らせる。スタートとエンドとの間は、実行するためのトランザクション領域である。トランザクション領域の実行が一旦行われると、Transaction_endの命令がCPUに修正済のデータを最小単位でコミットするよう依頼し、これはコミットのプロセスが割り込まれたり訪れられたりしないことを意味する。トランザクションの実行中、読み込み操作または書き込み操作を行ったすべてのメモリ領域は、書き込み−読み取り、読み取り−書き込み及び書き込み−書き込み衝突を避けるために監視され、トランザクショナルメモリのプロセスを実行中、すべての書き込み操作前の元データのコピーが保持されることを確保する。例えば、キャッシュラインは、対応する不可視のプライベートキャッシュ(例えば、第1レベルキャッシュL1)にコピーされ、キャッシュラインの任意の次に書き込まれたデータは不可視のプライベートキャッシュ中に保持され得る。衝突の場合においては、不可視のプライベートキャッシュ(例えば、L1)中の修正済のデータは破棄される。トランザクションが成功すると、不可視のプライベートキャッシュ(例えば、L1)中の修正済のデータは、元のデータを置き換える。
通常、キャッシュデータの整合性と一貫性を維持する2つの方法、つまり、ブロードキャスト及びディレクトリがある。ブロードキャストの方法は、比較的少数のコアのアーキテクチャには、より好適である。一方、ディレクトリの方法は強力なスケーラビリティを有し、より大きなマルチコアシステムにより好適である。本開示は、開示された技術もまた原理においてはブロードキャストの方法に好適であるが、説明のための基礎として、主としてディレクトリの方法を使用する。
図2にて示されているように、すべてのキャッシュラインはLLCディレクトリにおける多数のビット位置のデータ状態インデックスストリングを有する。図2においては、ビット位置である「タグ」は、ディレクトリ中のキャッシュラインのインデックスマーカであり、通常、キャッシュラインデータの上位ビットに配置されている。「状態」とは、データ状態のインジケータであり、排他的、修正済、共有、及び無効の状態の任意のうちの一つであり得る。共有された状態では、データは1つ以上のプロセッサのプライベートキャッシュに分配される。データインジケータのビットP0、P1、…Pn−1のそれぞれは、nプロセッサCPU1、CPU2、…CPUn−1に対応する。CPUがキャッシュラインの分配されたデータを有する場合、それぞれのデータインジケータのビットは値「1」を有し、CPUがキャッシュラインの分配されたデータを有しない場合、それぞれのデータインジケータのビットは値「0」を有する。キャッシュラインが「修正済」の状態にあるとき、1つのCPU(プロセッサ)のみが最新のデータを有するであろう。すなわち、データ状態インデックスストリングのうち、1つのデータインジケータのビットのみが値「1」を有し、すべてのその他のデータインジケータのビットは値「0」を有するだろう。
それぞれの書き込み操作は、キャッシュラインの状態(上に列挙した4つの状態のいずれかであり得る)は、「修正済」の状態に変更されることを要するであろう。「修正済」状態への変化においては、本システムは、データを無効化するために、元のデータのコピーを有するすべてのCPUに要求を送信する。すなわち、それぞれの対応するCPUのプライベートキャッシュのデータは無効化するよう命令され、CPUに対応するキャッシュライン中のデータインジケータのビットは「0」に設定され、CPUのプライベートキャッシュ中の新しく修正されたものを唯一の有効なデータにする。本プロセス後、その他のCPUはみな、修正済のデータを読み込む必要がある場合には、新しい修正済のデータを有するCPUのみからデータを読み込む必要があるだろう。CPUの数が増えるにしたがい、修正済のデータを読み込む時間も迅速に上昇する。トランザクショナルメモリのクリティカル領域中の修正済のデータのすべての読み込み、及び修正済のデータのすべての送信は、この速度を落とすプロセスを含む。本明細書にて開示されている本方法の目的は、このプロセスをより速く、かつ並列計算の時間を増加し、衝突率を下げることである。
図3は、データ処理のための開示された方法における例示的実施形態のブロックフロー図である。
S1ブロックでは、第1のプロセッサ(例えば、P1)はトランザクションの処理を開始する。トランザクションはプログラム中のマークされた領域によって定義され、通常、少なくとも第1のデータをシステムのメモリからプロセッサのプライベートキャッシュへと読み込むことを含む。トランザクションは多くの場合、データへの書き込み操作も含み得る。簡潔にするために、書き込み操作を行うのは、プロセッサのプライベートキャッシュにたった今読み込まれた第1のデータに対して行われる。
ブロックS2では、トランザクションの処理の一部として、第1のプロセッサはプライベートキャッシュ中の第1のデータの書き込み操作を行う。書き込み操作が行われた後、第1のプロセッサは、次で説明されている通り、トランザクショナルメモリシステムにトランザクションの結果をコミットし始め得る。
ブロックS3では、システムはトランザクションをコミットし始める。書き込み操作の前に、第1のデータが、第1のプロセッサとは異なる第2のプロセッサによって最後に修正されたという検出に対応して、本システムは第1のプロセッサのプライベートキャッシュ中の第1のデータを、多数のプロセッサによりアクセス可能なラストレベルキャッシュ(LLC)へと書き込む。本システムはさらに、キャッシュラインの状態インデックスストリングを設定し、LLCに書き込まれた第1のデータは第1のプロセッサによって最後に修正されたことを示し、第1のプロセッサのプライベートキャッシュ中の第1のデータを無効化する。
本開示の一つの重要な態様は、第1のデータに書き込み操作を行う前に、第1のデータに行われた最近の修正の状態に応じて、システムはプロセッサのキャッシュメモリ中の修正済のデータを別々に処理する。システムが、データへの最後の修正に基いて、修正済のデータがその他のプロセッサによって読み込まれる可能性が高くなったと予測した場合には、データにたった今修正が行われた現在のプロセッサのプライベートキャッシュの代わりに、システムは修正済のデータをプロセッサのLLCにコミットする。上述のブロックS3で説明された実施例においては、予測は単に、書き込み操作の前に、第1のデータが、第1のプロセッサとは異なる第2のプロセッサによって最後に修正されたという検出に基づく。しかしながら、修正済のデータをLLCに移動することは、トランザクショナルメモリの効率化には全面的に有益である結果となり得るという、有意性のある予測に基づいた任意の条件は、使用され得ると理解されている。
各データはトランザクショナルメモリ中のキャッシュラインに対応している。LLCディレクトリ中の対応するキャッシュラインのデータ状態インデックスストリングは、どのプロセッサがデータに最後に修正を行ったかを見分ける。それが現在のプロセッサ(本実施例の第1のプロセッサ)である場合には、従来のトランザクショナルメモリスキームが使用され得る。具体的には、修正済のデータは、現在のプロセッサのプライベートキャッシュ中に保持され得る。しかし、図3に図示したように、現在のデータ(本実施例の第1のデータ)に修正を行ったのが別のプロセッサである場合には、現在のプロセッサによる書き込み操作の後、修正済のデータはLLCへと書き込まれる。その間、現在のプロセッサのプライベートキャッシュ中のデータが無効化され、より高い効率をもたらす事前無効化の影響を有するが、同時に、やみくもに使用されて事前無効化がトランザクショナルメモリの利点が失われないように、予測条件に基づいて選択的に行われる。
換言すれば、予測条件に合致するキャッシュラインの場合、対応する修正済のデータは、現在のプロセッサの代わりにLLCに保存されるため、及び、さらに修正済のデータがコミットされると現在のプロセッサ中のデータは無効化されるため、この特定のデータへの任意のその後の修正は、LLCに保持されるコピーに対して行われ、これにより、プロセッサ間のデータトラフィックを避け、トランザクショナルメモリシステムの性能を上げる。さらに、開示された方法を使用すると、LLCに保存された修正済のデータの読み取り時間がプロセッサの数とともに迅速に増加しないため、本システムのスケーラビリティが改善される。
本明細書において記載されている方法は、プロセッサの操作において自動的に実行されるようにプロセッサのロジックに直接事前に実装されるか、プロセッサによって実行されるべきアプリケーションソフトウェアの追加のコーディングを使用して実装されるかの何れかであり得る。後者の場合には、本明細書において記載されている方法は、プロセッサに追加のコーディングを使用して必要な機能を実行するよう命令することにより行われる。
いくつかの実施形態では、第1のデータに書き込み操作を行うとき、本方法は、異なるプロセッサが書き込み操作の前に第1のデータに最後の修正を行ったという検出に対応して、キャッシュラインの状態インデックスストリングを設定し、第1のプロセッサのプライベートキャッシュに書き込まれた第1のデータの特別な状態を示す。特別な状態になると、第1のデータが修正され、トランザクションがコミットされるときにLLCに排他的に書き込まれるべきであると信号を送る。特別な状態の指定は、トランザクショナルメモリを調節するための効率的な信号として機能する。特別な状態は、修正済、排他的、共有または無効のような任意の一般に使用される状態とは異なるべきである。特別な状態の一例は、「修正済及び排他的」であり、これはデータが修正され、その他の修正されたものと比較して排他的または独特な特徴も有することを表している。同一のプロセッサ(本実施例の第1のプロセッサ)が書き込み操作の前に第1のデータに最後の修正を行ったということが検出された場合には、本方法は、キャッシュラインの状態インデックスストリングを設定し、第1のプロセッサのプライベートキャッシュに書き込まれた第1のデータの「修正済」の状態であることを示す。これは一般的なトランザクショナルメモリの設計と一致している。
したがって、トランザクションの修正済のデータをコミットするときには、本方法はまた、第1のプロセッサのプライベートキャッシュ中の第1のデータが特別な状態であるとの認識に対応して、LLCディレクトリ中の修正済の第1のデータの状態も特別な状態に設定する。例えば、LLCディレクトリ中の修正済の第1のデータの状態は、LLC中の第1のデータが修正済の状態にあり、また、その他の修正済のデータと比較して排他的または独特な特徴を有することを示すために、「修正済及び排他的」と設定され得る。
ブロックS4では、トランザクションの送信は完了する。
要約すれば、システムが、第1のデータは現在書き込み操作を行っている同一のプロセスによって最後に修正されたと認識した場合には、共有のトランザクショナルメモリの方法を使用して修正済の第1のデータを扱う。しかし、システムが予測した条件に合致した(例えば、第1のデータが異なるプロセッサによって最後に修正された)と認識した場合には、本システムは、修正済のデータの状態を特別な状態(例えば、「修正済及び排他的」)に設定し、修正済のデータをLLCに移動することによって特別な処理を示す。この設計により、任意の次のトランザクションは、データがLLCに書き込まれたことを明瞭に通知され、(第1のデータに最後に書き込み操作が行われた)第1のプロセッサ中の対応するデータはすでに無効化されている。
上記のようなトランザクション処理(ブロックS1を含む)は、2つの異なる場合で下記に記載されたサブブロックをさらに含み得る。
第1の場合は、現在の第1のデータが通常の「修正された」状態、つまり特別な処理を必要としない場合である。
サブブロックS11(図示せず)では、第1のプロセッサはトランザクションの処理を開始する。第1のデータがプライベートキャッシュに見られない場合には、システムはLLCディレクトリを訪れ、アドレスマッピングにより必要な第1のデータを見つける。
サブブロックS12(図示せず)では、システムは、第1のデータのキャッシュラインに対応するLLCディレクトリ中の第1の状態インデックスストリングによる第1のデータの状態を得る。「修正済」の状態であれば、プロセスはサブブロックS13に進む。
サブブロックS13(図示せず)では、第1のデータのインジケータストリングのデータインジケータビットに基づいて、システムは第1のデータを最後に修正したプロセッサの識別子を特定する。第2のプロセッサである場合には、システムは第2のプロセッサのプライベートキャッシュからLLCへ第1のデータを読み込み、LLC中の第1のデータの状態を「共有」に変更する。第1のプロセッサの場合には、プロセスは図3のブロックS2に直接進み、以下のサブブロックS14を省き、第1のプロセッサのプライベートキャッシュ中の第1のデータに書き込み操作を行う。この場合、第1のデータの状態が特別な「修正済及び排他的」な状態ではなく、通常の「修正済」の状態のため、修正された第1のデータは第1のプロセッサのプライベートキャッシュ中に保持される。
第2のプロセッサのプライベートキャッシュ中の修正された第1のデータがLLCに読み込まれたサブブロックS13から続くサブブロックS14(図示せず)では、システムは、次に、LLCからの第1のデータを第1のプロセッサのプライベートキャッシュへと読み込み、第1のプロセッサに対応する、第1の状態インデックスストリング中のデータインジケータのビットの値を「1」に設定する。
上記のサブブロックS13は、第1のデータの状態が「修正済及び排他的」のような特別な状態ではなく、通常の「修正済」であるトランザクショナルメモリプロセスを表す。第1のデータが以前に、本明細書で開示された、特別に改善されたトランザクショナルメモリの方法を使用して処理されていないときに、この場合が起こる。サブブロックS13が行われる前では、最新の第1のデータが第2のプロセッサに保持される場合には、次に第1のプロセッサが第1のデータを読み込むために、システムは、はじめに第2のプロセッサから第1のデータをLLCに読み込む必要がある。この場合には、第1のプロセッサが第1のデータに書き込み操作を行った後、第2のプロセッサ中の第1のデータは無効化されるべきである。
本明細書で記載された多くのその他の工程またはブロックのように、サブブロックS14及び第1のデータの状態を「共有」に変更する工程は、実行されるときに任意の特定の順序を必要とせず、同時に実施してよいということに注意する。
第2の場合は、異なる処理を受ける、現在の第1のデータが「修正済及び排他的」な特別の状態にある場合である。
サブブロックS11’(図示せず)では、第1のプロセッサはトランザクションを処理し始める。第1のデータがプライベートキャッシュ中に見つからない場合には、システムはアドレスマッピングにしたがいLLCディレクトリを訪れ、必要な第1のデータを見つける。
サブブロックS12’(図示せず)では、システムは、第1のデータのキャッシュラインに対応するLLCディレクトリ中の第1の状態インデックスストリングによる第1のデータの状態を得る。状態が「修正済及び排他的」であれば、プロセスはサブブロックS13’に進む。
サブブロックS13’(図示せず)では、システムはLLCディレクトリ中の第1のデータの状態を「修正済及び排他的」な状態に変更し、「修正済及び排他的」という特別な状態にあった第1のデータがここで第1のプロセッサで共有されることを示す。
サブブロックS14’(図示せず)では、第1のデータの「修正済及び排他的」な特別な状態に基づくため、システムは修正された第1のデータがすでにLLCにあることを認識する。よって、システムは、LLCからの第1のデータを第1のプロセッサのプライベートキャッシュへと読み込み、第1のプロセッサに対応する、第1の状態インデックスストリング中のデータインジケータのビットの値を「1」に設定する。
本明細書で記載された多くのその他の工程またはブロックのように、サブブロックS13’及びサブブロックS14’は、実行されるときに任意の特定の順序を必要とせず、同時に実行してよいということに注意する。
上記のサブブロック13’は、第1のデータの状態が「修正済及び排他的」という特別な状態である、トランザクショナルメモリプロセスを表す。第1のデータが以前に、本明細書で開示された、特別に改善されたトランザクショナルメモリの方法を使用して既に処理されたときに、この場合が起こる。サブブロック13’が行われる前の時点で、最新の第1のデータはLLCに保持される。第1のプロセッサが第1のデータを読み込むためには、システムはLLCから第1のデータを第1のプロセッサに読み込まねばならない。この場合、第1のプロセッサがLLCから第1のデータを読み込んだ後、第1のデータが多数のプロセッサ間で共有され得る通常の「共有された」状態と区別するため、第1のデータの状態を「修正済及び共有された」状態に変更するべきである。「修正済及び共有された」特別な状態においては、その他のプロセッサは、第1のデータの有効なコピーを有さなくて良い。第1のデータは、現在の状態でLLCと第1のプロセッサの両方にあるという意味において「共有され」ており、第1のデータは依然として最新であるという意味において「修正され」ている。この区別が、その他のプロセッサ中に保持された第1のデータを無効化する必要があるか否かを決定する、次のプロセスに役立つ。
前述したようにトランザクションをコミットするプロセス(ブロックS3を含む)は、さらに以下に記載するプロセスを含み得る。
トランザクションをコミットするプロセスの間、トランザクションの間、第1のプロセッサが第1のデータへの書き込み操作を実行したと仮定すると、システムはLLCディレクトリ中の第1のデータのデータインジケータのビットのそれぞれを調べ、第1のプロセッサのデータインジケータのビット(P1)に加えて、対応するデータインジケータのビットが値「1」を有する任意のその他のプロセッサがあるかどうかを判定し得る。ある場合には、システムは、(現在の第1のプロセッサ以外の)これらのプロセッサ中の第1のデータの無効化へ進み、対応するデータインジケータのビットを再設定する(すなわち、値を「0」の設定に戻す)。
このようにして、開示されて改善された方法が第1のデータにはじめて適用されるか否かにかかわらず、トランザクションをコミットした後、(第1のデータに対応する)第1の状態インデックスストリング中の状態インジケータは、常に「修正済及び排他的」であると言われる。さらに、すべてのデータインジケータのビットのうち、第1のプロセッサに対応するビットのみが、第1のプロセッサが第1のデータを最後に修正したことを示す値「1」を有する。
以下に、従来の方法と比較して、開示されたデータ処理方法を示す3つの具体例が記載されている。
第1の実施例では、データ処理は後述のように従来の方法に見られるような通常の手段で行われる。
データが修正済であるとみなし、かつすべてのその他のCPU中のデータを無効化した後、CPU1のプライベートキャッシュのみが最新のデータを有する。LLCディレクトリは、CPU1が最新のデータを有し、データの現在の状態が「修正済」であるというステータスを反映する。図4は、状態インジケータが「修正済」である、LLCディレクトリ中の状態インデックスストリングの初期ステータスを示し、CPU1に対応するデータインジケータのビットP1のみが値「1」を有し、すべてのその他のデータインジケータのビットは値「0」を有する。
図5は、ブロック101〜ブロック111を含む、トランザクション中の読み取り−書き込み操作を実行するCPU0を示す。
ブロック101では、CPU0はトランザクションを処理し始める。
ブロック102では、CPU0は、最初に自身のプライベートキャッシュ中のデータを読み取ろうとする。
ブロック103では、CPU0のプライベートキャッシュがデータを有しないと検出すると、CPU0は、データのアドレスマッピングにしたがいLLCディレクトリを訪問する。
ブロック104では、LLCディレクトリにより、システムはCPU1が最新のデータを有すると判断し、CPU1にデータを主メモリに書き込むよう命令する。同時に、システムはまた、CPU1のプライベートキャッシュからデータをLLCに読み込み、データに対応するキャッシュラインのLLCディレクトリの状態インジケータを「共有」に設定し、データインジケータのビットP0を、(すでに「1」であるべきデータインジケータのビットP1とともに)「1」に設定し、データをLLCからCPU0へと送信する。図6はLLCディレクトリ中の状態インデックスストリングの現在のステータスを示す。
ブロック105では、CPU0はデータを自身のプライベートキャッシュに保存する。対応するキャッシュラインはここで、「共有された」状態を有する。データの読み取りが終了する。
ブロック106では、CPU0は自身のプライベートキャッシュ中のデータを操作する。トランザクションがコミットされる前に、任意の書き込み操作の結果はグローバルな状態に影響を与えるためにLLCに返信されない。
ブロック107では、CPU0はトランザクションの結果をトランザクションメモリシステムにコミットし始める。
ブロック108では、この時点でキャッシュラインの状態が「共有」であるため、任意の書き込み操作は、その他のCPUのプライベートキャッシュ中の同一のデータが無効化されていることを要するであろう。これをするためには、CPU0はLLCディレクトリをデータのアドレスマッピングにしたがい点検する。
ブロック109では、LLCディレクトリに基づき、CPU1がデータのコピーを有すると判定される。よって、CPU1のプライベートキャッシュ中のデータは、無効化されており、対応するデータインジケータのビットP1は値「0」に再設定される。
ブロック110では、システムはLLCディレクトリの対応するキャッシュラインの状態インデックスストリングを設定する。図7に示すように、状態インジケータが「修正済」に設定され、データインジケータのビットP0は「1」である。一方、すべてのその他のデータインジケータのビットは「0」であり。データはCPU0のみで見られることを示している。
ブロック111では、トランザクションをトランザクショナルメモリに送信することが完了する。
衝突を避けるために、ブロック107〜ブロック110はコミットするときにアトミック処理に組み合わされる。
CPU0のプライベートキャッシュ中のキャッシュラインの状態は、本トランザクションの最後で「修正済」であることが理解できる。次にCPU1が同一のデータを操作する場合、CPU0とCPU1の置き換えのみを行い、上述のプロセスを繰り返す必要があろう。このプロセスが別のCPUのプライベートキャッシュを訪問する1つのCPUを含むため(例えば、他方のCPUからデータを読み取り、次にその他方のCPUのデータを無効化することを含む)、CPUコアの数の増加にしたがって遅延が増加するであろう。この上述した第1の実施例は、従来のトランザクショナルメモリの方法による例示的なプロセスを示す。
第2の実施例では、データ処理は、本開示による異なる方法にて行われる。本方法は、事前無効化の技術にトランザクショナルメモリをシームレスに組み合わせ、トランザクションメモリの処理を加速する。
最初にデータは、「修正済」の状態でCPU1のプライベートキャッシュ内にあることを依然として仮定する。LLCディレクトリ中のデータの初期の状態インデックスストリングは、図4に示されたものと同一である。
図8は、ブロック201〜ブロック211を含む、第2の実施例のデータ処理のブロックフロー図を示す。
ブロック201〜ブロック205は、ブロック101〜ブロック105と同一である。例えば、ブロック204では、LLCディレクトリ中のキャッシュラインの状態インデックスストリングは図6に示されている。すなわち、データインジケータのビットP0及びP1は両方共「1」であるが、状態インジケータは「共有」に設定される。
ブロック206では、CPU0は自身のプライベートキャッシュ中のデータを操作する。トランザクションがコミットされる前に、任意の書き込み操作の結果はグローバルな状態に影響を与えるためにLLCに返信されない。CPU0が読み取り操作のみ行う場合には、CPU0のプライベートキャッシュ中のデータは、「共有」の状態に設定される。CPU0が書き込み操作を行う場合には、CPU0は、データが別のCPU(本実施例ではCPU1)によって最後に修正されたと認識するため、CPU0のプライベートキャッシュ中のデータは、ここで特別な状態、例えば「修正済及び排他的」に設定される。
しかしながら、データが同一のCPUにより最後に修正された場合には(本実施例ではCPU0、図示されていない)、CPU0のプライベートキャッシュ中のデータは、通常の状態の「修正済」に設定されるであろう。
ブロック207では、CPU0はトランザクションの結果をトランザクションメモリシステムにコミットし始める。
ブロック208では、システムはデータのアドレスマッピングにしたがいLLCディレクトリを点検し、無効化を行う。この時点でのキャッシュラインの状態は、修正履歴及びトランザクションにおける操作により、いくつかの可能性を有する。トランザクションが読み取り操作のみ行った場合には、キャッシュラインの状態は「共有」になるであろう。最後の修正を行った前のプロセッサ(本実施例ではCPU1)に保持されたデータは最新のままであるため、システムは、CPU0のプライベートキャッシュ中のデータを無効化し得る。トランザクションが書き込み操作をした場合には、この時点でのキャッシュラインの状態は、書き込み操作の前の修正履歴に応じて、「修正済及び排他的」または「修正済」の何れかであろう。いずれの場合においても、その他のプロセッサのプライベートキャッシュにおけるデータは、無効化される必要があり得る。
ブロック209では、LLCディレクトリに基づき、CPU1がデータのコピーを有すると決定する。よって、CPU1のプライベートキャッシュ中のデータは、無効化され、対応するデータインジケータのビットP1は値「0」に再設定される。
この時点でのキャッシュラインの状態が「修正済及び排他的」である場合には、修正履歴の予測条件が合致することを示し、システムは(「修正済及び排他的」な状態を有する)CPU0のプライベートキャッシュ中のデータをLLCに書き込み、CPU0のプライベートキャッシュ中のデータを無効化する。この時点でのキャッシュラインの状態が「修正済」である場合には、データはCPU0のプライベートキャッシュ中に保持される。
ブロック210では、システムは、LLCディレクトリにおいて、CPU0が書き込み操作を実行したデータの状態インデックスストリングを設定する。図9に示すように、CPU0のプライベートキャッシュ中におけるデータの状態が「修正済及び排他的」である場合には、LLCディレクトリ中の状態インデックスストリングの状態インジケータも「修正済及び排他的」に設定され、CPU0のプライベートキャッシュにおけるデータの状態が「修正済」である場合には、LLCディレクトリにおける状態インデックスストリングの状態インジケータもまた「修正済」に設定される。いずれの場合においても、データインジケータのビットP0は「1」であり、データが最後にCPU0によって修正されたことを示す。
ブロック211では、トランザクションをトランザクショナルメモリにコミットするプロセスが完成される。
衝突を避けるために、ブロック207〜ブロック211はコミットされるときにアトミック処理に組み合わされる。
書き込み操作が行われたばかりのデータがLLCにあり、その状態は本トランザクションの最後で「修正済及び排他的」であることが理解できる。データインジケータのビット値によると、データを最後に修正したプロセッサはCPU0である。しかしながら、CPU0はデータを有しないため、次のCPUの操作において、システムはデータCPU0を無効化する必要はない。その上、別のCPUがデータを読み取る必要がある場合には、最初にCPU0にデータをLLCに最初に書き込むよう要求してから次にその他のCPUによって読み取られるのではなく、LLCディレクトリから直接読み取ることができる。
3番目の実施例においては、本開示によると、追加のデータ処理は、上述した第2の実施例におけるプロセスにしたがって行われる。
図10は、ブロック301〜ブロック308を含む、第3の実施例のデータ処理のブロックフロー図を示す。
ブロック301では、CPU1はトランザクションの処理を開始する。
ブロック302では、CPU1は、最初に自身のプライベートキャッシュ中のデータを読み取ろうとする。
ブロック303では、CPU1のプライベートキャッシュがデータを有しないと検出すると、CPU1は、データのアドレスマッピングにしたがいLLCディレクトリを訪問する。読み取られる必要があるデータに対応するキャッシュラインの状態インジケータによると、データの状態は、CPU0によって最後に修正された「修正済及び排他的」である。図11にて示すように、CPU1はデータを読み取る必要が有るため、システムは、データのキャッシュラインの状態インジケータを「修正済及び共有」に変更し、P1を「1」に設定し、P0を「0」に再設定する。
ブロック304では、データはCPU1のプライベートキャッシュ中に記憶される。データの読み取りが終了する。
ブロック305では、CPU1はプライベートキャッシュ中のデータを操作する。トランザクションがコミットされる前に、データへのすべての操作はCPU1のプライベートキャッシュ中に起こり、任意の書き込み操作の結果はグローバルな状態に影響を与えるためLLCに送信されない。CPU1が読み取り操作のみ行う場合には、CPU1のプライベートキャッシュ中のデータは、「共有」の状態に設定される。CPU1が書き込み操作を行う場合には、CPU1は、データが別のCPU(本実施例のCPU0)によって最後に修正されたと認識するため、CPU1のプライベートキャッシュ中のデータは、ここで特別な状態、例えば「修正済及び排他的」に設定される。
しかしながら、データが同一のCPUにより最後に修正された場合には(本実施例ではCPU1、図示されていない)、CPU1のプライベートキャッシュ中のデータは、通常の状態の「修正済」に設定されるであろう。
ブロック306では、CPU1はトランザクションメモリシステムにトランザクションの結果をコミットし始める。
ブロック307では、システムはLLCにCPU1中のデータを書き込み、CPU1中のデータを無効化し、それに応じてデータの状態インデックスストリングを設定する。
この段階では、システムはデータのアドレスマッピングにしたがいLLCディレクトリを点検し、無効化を行ってよい。この時点でのキャッシュラインの状態は、修正履歴及びトランザクションにおける操作に応じて、いくつかの可能性を有する。トランザクションが読み取り操作のみをした場合には、システムは、最後に修正した前のプロセッサ(本実施例ではCPU0)に保持されたデータは、最新のままであるため、CPU1のプライベートキャッシュ中のデータを無効化し得る。トランザクションが書き込み操作をした場合には、この時点でのキャッシュラインの状態は、書き込み操作の前の修正履歴に応じて、「修正済及び排他的」または「修正済」の何れかであろう。いずれの場合においても、その他のプロセッサのプライベートキャッシュにおけるデータは、無効化される必要があり得る。LLC中のデータの状態インデックスストリングが、P1以外、すべてのその他のデータインジケータのビットは値「0」であることを示す場合には、他のCPUはデータを有さず、そのためその他のCPU中のデータを無効化する必要が無いことを意味する。
CPU1のプライベートキャッシュ中のデータの状態が「修正済及び排他的」である場合には、システムはCPU1のプライベートキャッシュ中のデータをLLCに書き込むように決定し、CPU1中のデータを無効化する。CPU1のプライベートキャッシュ中のデータの状態が「修正済」である場合には、データは、CPU1のプライベートキャッシュに保持される。何れの場合においても、システムはLLC中のキャッシュラインの状態インデックスストリングの状態インジケータをそれに応じて設定する。第1の場合においては、状態インジケータは、(図12に示されているように)「修正済及び排他的」に設定され、第2の場合においては、状態インジケータは「修正済」に設定されている。両方の場合において、P1は「1」であり、CPU1は最後にこのデータを修正したプロセッサであることを示す。
ブロック308では、トランザクションをトランザクショナルメモリにコミットするプロセスが完了する。
衝突を避けるために、ブロック306〜ブロック308はコミットされるときにアトミック処理を組み合わされる。
データに書き込み操作が行われた場合には、修正されたデータはLLCにここで保持され、その状態は本トランザクションの最後で「修正済及び排他的」であることが理解できる。データインジケータのビット値によると、データを最後に修正したプロセッサはCPU1である。しかしながら、CPU1はデータを有しないため、次のCPUの操作で、システムはデータCPU1を無効化する必要はない。その上、別のCPUがデータを読み取る必要がある場合には、最初にCPU1にデータをLLCに最初に書き込むよう要求してから次にその他のCPUによって読み取られるのではなく、LLCディレクトリから直接読み取ることができる。
本明細書にて開示された方法に関連し、本開示はまた、本明細書において記載されている方法を実行するための計算システムを提供する。
図13に示されているように、本開示の一態様は、トランザクショナルメモリを提供するための計算システム1300である。計算システム1300は、少なくとも第1のプロセッサと第2のプロセッサを含む複数のプロセッサ1302と、複数のプロセッサ1302のうちそれぞれ1つによって各々アクセス可能な複数のプライベートキャッシュ1304と、複数のプロセッサ1302間で共有されるラストレベルキャッシュ(LLC)1306とを有する。計算システム1300は、トランザクショナルメモリのための方法の文脈中に本明細書で記載された機能を実行するようプログラムされている。
例えば、計算システム1300は以下の機能を実行するようプログラムされている。
第1のプロセッサを使用してトランザクションを処理すること、このときトランザクションは、第1のデータを第1のプロセッサのプライベートキャッシュに読み込むことと、第1のプロセッサのプライベートキャッシュ中の第1のデータに書き込み操作を実行することを含む、および
トランザクショナルメモリへのトランザクションをコミットすること、このときコミットすることは、書き込み操作前に、第1のデータの最近の修正から予め設定された条件の検出に反応して、第1のプロセッサのプライベートキャッシュ中の第1のデータをLLCに書き込むことと、第1のプロセッサのプライベートキャッシュ中の第1のデータを無効化することを含む。
最近の修正の予め設定された条件の実施例は、書き込み操作前に、第1のデータは第1のプロセッサと異なる第2のプロセッサによって最後に修正された。
さらにトランザクションをコミットする機能は、キャッシュラインの状態インデックスストリングを設定し、LLCに書き込まれた第1のデータは第1のプロセッサによって最後に修正されたことを示すことをさらに含み得る。
別の実施形態では、トランザクションをコミットする機能は、キャッシュラインの状態インデックスストリングを設定し、LLCに書き込まれた第1のデータの特別な状態を示すことをさらに含み得る。特別な状態は、LLCに書き込まれた第1のデータは修正済であり排他的であり、第1のプロセッサのプライベートキャッシュ中の第1のデータは無効化されたことを通知する。
機能の詳細はトランザクショナルメモリを使用してデータを処理する方法に関連して本明細書で記載されてきたため、再度説明しない。
機能はプログラムモジュールまたは装置を使用して実現されてよく、機械で実行可能な命令及び符号に基づいてコンピュータプログラムを使用して実行され得る。一般には、コンピュータプログラムは特定のタスクを実行してよく、または、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等の特定の抽象データの種類を実行してよい。本開示に記載されている技術もまた、分散コンピューティング環境のような、分散されたコンピューティング環境にて実行され、通信網を通して接続された遠隔処理装置によってタスクを実行することができる。分散コンピューティング環境において、プログラムされたモジュールまたは装置は、メモリ装置を含むローカルまたは遠隔コンピュータ保存媒体の何れにおいても配置され得る。
本明細書の様々な実施形態が、実施例及び環境とともに漸進的により詳細を記載している。各実施形態は、本開示のある態様に焦点をあわせており、そのため異なる実施形態は互いに異なるが、類似の部分も共有し得る。
例示的な実施形態が、本開示における本発明の概念及び実施を説明するために採用されている。例示的な実施形態は、本開示の方法及び中心となる概念をよりよく理解するためのみに使用されている。本開示の概念に基づき、当業者は例示的な実施形態及び適用となる分野を修正し得る。

Claims (20)

  1. トランザクショナルメモリを備える多数のプロセッサを使用してデータを処理する方法であって、
    第1のプロセッサを使用してトランザクションを処理し、前記トランザクションは、第1のデータを前記第1のプロセッサのプライベートキャッシュに読み込むことと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータに書き込み操作を実行することを含み、
    前記トランザクショナルメモリシステムへの前記トランザクションをコミットし、前記コミットすることは、前記書き込み操作前に、前記第1のデータに対する最近の修正予め設定された条件が満たされるかどうかを検出して、前記予め設定された条件が満たされたことを検出すると、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータを、前記多数のプロセッサによりアクセス可能なラストレベルキャッシュ(LLC)へと書き込むことと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータを無効化することを含む、前記方法。
  2. 最近の修正の前記予め設定された条件は、前記書き込み操作前に、前記第1のデータは前記第1のプロセッサと異なる第2のプロセッサによって最後に修正されたことを含む、請求項1に記載の方法。
  3. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定し、前記LLCに書き込まれた前記第1のデータは前記第1のプロセッサによって最後に修正されたことを示すことをさらに含む、請求項1に記載の方法。
  4. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定し、前記LLCに書き込まれた前記第1のデータの特別な状態を示し、前記特別な状態は、前記LLCに書き込まれた前記第1のデータは修正済及び排他的であり、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータは無効化されたことを通知することをさらに含む、請求項1に記載の方法。
  5. 前記トランザクションを前記処理することは、
    前記第1のデータに前記書き込み操作を行うとき、前記書き込み操作前に、前記第1のデータに対する最近の修正の前記予め設定された条件が満たされるかどうかを検出して、前記予め設定された条件が満たされたことを検出すると、キャッシュラインの状態インデックスストリングを設定して前記第1のプロセッサの前記プライベートキャッシュに書き込まれた前記第1のデータの特別な状態を示し、前記特別な状態は、前記第1のデータが修正され、前記トランザクションがコミットされるときに前記LLCに排他的に書き込まれるべきであると通知することをさらに含む、請求項1に記載の方法。
  6. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定して前記LLCに書き込まれた前記第1のデータの状態を示し、前記状態は前記第1のプロセッサの前記プライベートキャッシュ内の前記第1のデータの状態と適合させることをさらに含む、請求項1に記載の方法。
  7. 前記第1のプロセッサの前記プライベートキャッシュに前記第1のデータを読み込むことは、
    前記LLCのディレクトリから前記第1のデータの状態を取得し、
    前記状態が「修正済」である場合には、前記第1のデータの最新のコピーを有するプロセッサを識別し、
    前記識別されたプロセッサが、前記第1のプロセッサとは異なる第2のプロセッサである場合には、
    前記第2のプロセッサのプライベートキャッシュから前記LLCに前記第1のデータを読み込み、前記第1のデータの状態を「共有」に設定し、前記第1のデータを前記LLCから前記第1のプロセッサの前記プライベートキャッシュに読み込み、キャッシュラインの状態インデックスストリングを前記第1のプロセッサが前記第1のデータの最新のコピーを有すると示すように設定することを含む、請求項1に記載の方法。
  8. 前記第1のプロセッサの前記プライベートキャッシュに前記第1のデータを読み込むことは、
    前記LLCのディレクトリから前記第1のデータの状態を判定し、特別な状態である前記状態は、前記第1のデータが前記LLCで排他的な第2のプロセッサにより最後に修正されたことと、前記第2のプロセッサの前記プライベートキャッシュ中の前記第1のデータが無効化されたことを通知し、
    前記第1のデータを前記LLCから前記第1のプロセッサの前記プライベートキャッシュに読み込み、キャッシュラインの状態インデックスストリングを前記第1のプロセッサが前記第1のデータの最新のコピーを有すると示すように設定することを含む、請求項1に記載の方法。
  9. 前記第1のプロセッサの前記プライベートキャッシュに前記第1のデータを読み込むことは、
    前記第1のデータを前記LLCから前記第1のプロセッサの前記プライベートキャッシュへ読み込んだ後、キャッシュラインの状態インデックスストリングを、前記第1のデータがここで「共有及び修正済」の状態にあることを示すよう設定することをさらに含む、請求項8に記載の方法。
  10. トランザクショナルメモリを備える多数のプロセッサを使用してデータを処理する方法であって、
    第1のプロセッサを使用してトランザクションを処理し、前記トランザクションは、第1のデータを前記第1のプロセッサのプライベートキャッシュに読み込むことと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータに書き込み操作を実行することを含み、
    前記トランザクショナルメモリシステムへ前記トランザクションをコミットし、前記コミットすることは、前記書き込み操作の前に、前記第1のデータが、前記第1のプロセッサとは異なる第2のプロセッサによって最後に修正されたという検出に対応して、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータを、前記多数のプロセッサによりアクセス可能なラストレベルキャッシュ(LLC)へと書き込み、キャッシュラインの状態インデックスストリングを設定し、前記LLCに書き込まれた前記第1のデータは前記第1のプロセッサによって最後に修正されたことを示し、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータを無効化することを含む、前記方法。
  11. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定し、前記LLCに書き込まれた前記第1のデータの特別な状態を示し、前記特別な状態は、前記LLCに書き込まれた前記第1のデータは修正済及び排他的であることと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータは無効化されたことを通知することをさらに含む、請求項10に記載の方法。
  12. 前記トランザクションを前記処理することは、
    前記第1のデータに前記書き込み操作を行うとき、前記書き込み操作の前に、前記第1のデータが、前記第1のプロセッサとは異なる第2のプロセッサによって最後に修正されたという検出に対応して、キャッシュラインの状態インデックスストリングを設定し、前記第1のプロセッサの前記プライベートキャッシュに書き込まれた前記第1のデータの特別な状態を示し、前記特別な状態は、前記第1のデータが修正され、前記トランザクションがコミットされるときに前記LLCに排他的に書き込まれると通知することをさらに含む、請求項10に記載の方法。
  13. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定し、前記LLCに書き込まれた前記第1のデータの状態を示し、前記状態は前記第1のプロセッサの前記プライベートキャッシュ内の前記第1のデータの状態と適合することをさらに含む、請求項10に記載の方法。
  14. 前記第1のプロセッサの前記プライベートキャッシュに前記第1のデータを読み込むことは、
    前記LLCのディレクトリから前記第1のデータの状態を取得し、前記状態は、前記第1のデータが前記LLCで排他的な第2のプロセッサにより最後に修正されていることを通知し、前記第2のプロセッサの前記プライベートキャッシュ中の前記第1のデータが無効化され、
    前記第1のデータを前記LLCから前記第1のプロセッサの前記プライベートキャッシュへと読み込み、キャッシュラインの状態インデックスストリングを前記第1のプロセッサが前記第1のデータの最新のコピーを有すると示すように設定することを含む、請求項10に記載の方法。
  15. 前記第1のプロセッサの前記プライベートキャッシュへの前記第1のデータを読み込むことは、
    前記第1のデータを前記LLCから前記第1のプロセッサの前記プライベートキャッシュへ読み込んだ後、キャッシュラインの状態インデックスストリングを、前記第1のデータがここで「共有及び修正済」の状態にあることを示すよう設定することをさらに含む、請求項14に記載の方法。
  16. トランザクショナルメモリを提供するための計算システムであって、
    少なくとも第1のプロセッサと第2のプロセッサを含む複数のプロセッサと、
    前記複数のプロセッサのうちそれぞれ1つによって各々アクセス可能な複数のプライベートキャッシュと、
    前記複数のプロセスの間で共有されるラストレベルキャッシュ(LLC)と、を備え、
    前記複数のプロセスと、前記複数のプライベートキャッシュと、前記ラストレベルキャッシュは、
    前記第1のプロセッサを使用してトランザクションを処理し、前記トランザクションは、第1のデータを前記第1のプロセッサのプライベートキャッシュに読み込むことと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータに書き込み操作を実行することを含み、
    前記トランザクショナルメモリシステムへの前記トランザクションをコミットし、前記コミットすることは、前記書き込み操作前に、前記第1のデータに対する最近の修正予め設定された条件が満たされるかどうかを検出して、前記予め設定された条件が満たされたことを検出すると、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータを前記LLCに書き込むことと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータを無効化すること、を含む機能を実行するようプログラムされている、前記計算システム。
  17. 最近の修正の前記予め設定された条件は、前記書き込み操作前に、前記第1のデータは前記第1のプロセッサと異なる第2のプロセッサによって最後に修正されたことを含む、請求項16に記載の計算システム。
  18. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定し、前記LLCに書き込まれた前記第1のデータは前記第1のプロセッサによって最後に修正されたことを示すことをさらに含む、請求項16に記載の計算システム。
  19. 前記トランザクションを前記コミットすることは、
    キャッシュラインの状態インデックスストリングを設定して前記LLCに書き込まれた前記第1のデータの特別な状態を示し、前記特別な状態は、前記LLCに書き込まれた前記第1のデータは修正済及び排他的であることと、前記第1のプロセッサの前記プライベートキャッシュ中の前記第1のデータは無効化されたことを通知すること、とをさらに含む、請求項16に記載の計算システム。
  20. 前記第1のプロセッサの前記プライベートキャッシュに前記第1のデータを読み込むことは、
    前記LLCのディレクトリから前記第1のデータの状態が、前記第1のデータは前記LLCで排他的な第2のプロセッサにより最後に修正され、前記第2のプロセッサの前記プライベートキャッシュ中の前記第1のデータが無効化されることを通知する特別な状態であることを判定し、
    前記第1のデータを前記LLCから前記第1のプロセッサの前記プライベートキャッシュへと読み込み、キャッシュラインの状態インデックスストリングを前記第1のプロセッサが前記第1のデータの最新のコピーを有すると示すように設定する、請求項16に記載の計算システム。
JP2016553649A 2014-03-26 2015-03-25 データ処理のための方法及びプロセッサ Active JP6470300B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201410117556.9 2014-03-26
CN201410117556.9A CN104951240B (zh) 2014-03-26 2014-03-26 一种数据处理方法及处理器
PCT/US2015/022507 WO2015148679A1 (en) 2014-03-26 2015-03-25 Method and processor for processing data

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019005950A Division JP6685437B2 (ja) 2014-03-26 2019-01-17 データ処理のための方法及びプロセッサ

Publications (2)

Publication Number Publication Date
JP2017509985A JP2017509985A (ja) 2017-04-06
JP6470300B2 true JP6470300B2 (ja) 2019-02-13

Family

ID=54165922

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016553649A Active JP6470300B2 (ja) 2014-03-26 2015-03-25 データ処理のための方法及びプロセッサ
JP2019005950A Active JP6685437B2 (ja) 2014-03-26 2019-01-17 データ処理のための方法及びプロセッサ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2019005950A Active JP6685437B2 (ja) 2014-03-26 2019-01-17 データ処理のための方法及びプロセッサ

Country Status (8)

Country Link
US (2) US9715450B2 (ja)
EP (2) EP3441886B1 (ja)
JP (2) JP6470300B2 (ja)
KR (1) KR102398912B1 (ja)
CN (2) CN109240945B (ja)
HK (1) HK1211102A1 (ja)
TW (1) TWI638311B (ja)
WO (1) WO2015148679A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150205721A1 (en) * 2014-01-22 2015-07-23 Advanced Micro Devices, Inc. Handling Reads Following Transactional Writes during Transactions in a Computing Device
CN109240945B (zh) 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器
US10318295B2 (en) * 2015-12-22 2019-06-11 Intel Corporation Transaction end plus commit to persistence instructions, processors, methods, and systems
KR102593362B1 (ko) * 2016-04-27 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
GB2551529B (en) 2016-06-21 2018-09-12 Advanced Risc Mach Ltd Switching between private cache and shared memory to handle atomic operations
US10268580B2 (en) * 2016-09-30 2019-04-23 Intel Corporation Processors and methods for managing cache tiering with gather-scatter vector semantics
US10528471B2 (en) 2016-12-27 2020-01-07 Eta Scale Ab System and method for self-invalidation, self-downgrade cachecoherence protocols
US11119923B2 (en) * 2017-02-23 2021-09-14 Advanced Micro Devices, Inc. Locality-aware and sharing-aware cache coherence for collections of processors
US11727997B2 (en) 2017-07-07 2023-08-15 Micron Technology, Inc. RPMB improvements to managed NAND
CN109614220B (zh) * 2018-10-26 2020-06-30 阿里巴巴集团控股有限公司 一种多核系统处理器和数据更新方法
CN109684237B (zh) * 2018-11-20 2021-06-01 华为技术有限公司 基于多核处理器的数据访问方法和装置
CN109784930B (zh) * 2019-02-18 2023-07-18 深圳市迅雷网络技术有限公司 一种区块链交易数据的处理方法、装置、电子设备及介质
CN110265029A (zh) * 2019-06-21 2019-09-20 百度在线网络技术(北京)有限公司 语音芯片和电子设备
CN112307067B (zh) * 2020-11-06 2024-04-19 支付宝(杭州)信息技术有限公司 一种数据处理方法及装置
US11429910B1 (en) 2021-08-05 2022-08-30 Transit Labs Inc. Dynamic scheduling of driver breaks in a ride-sharing service

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH061463B2 (ja) 1990-01-16 1994-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
DE4331178A1 (de) * 1993-09-14 1995-03-16 Hoechst Schering Agrevo Gmbh Substituierte Pyridine und Pyrimidine, Verfahren zu ihrer Herstellung und ihre Verwendung als Schädlingsbekämpfungsmittel und Fungizide
US6192451B1 (en) * 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy
US6434672B1 (en) * 2000-02-29 2002-08-13 Hewlett-Packard Company Methods and apparatus for improving system performance with a shared cache memory
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7237070B2 (en) * 2005-04-19 2007-06-26 International Business Machines Corporation Cache memory, processing unit, data processing system and method for assuming a selected invalid coherency state based upon a request source
US10031848B2 (en) * 2005-06-14 2018-07-24 Intel Corporation Method and apparatus for improving snooping performance in a multi-core multi-processor
US8407432B2 (en) * 2005-06-30 2013-03-26 Intel Corporation Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
US20070143550A1 (en) * 2005-12-19 2007-06-21 Intel Corporation Per-set relaxation of cache inclusion
US7590805B2 (en) * 2005-12-29 2009-09-15 Intel Corporation Monitor implementation in a multicore processor with inclusive LLC
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8924653B2 (en) 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US8051248B2 (en) 2008-05-05 2011-11-01 Globalfoundries Inc. Transient transactional cache
US8799582B2 (en) * 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US8627017B2 (en) 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8782347B2 (en) * 2009-06-26 2014-07-15 Intel Corporation Controllably exiting an unknown state of a cache coherency directory
US8229907B2 (en) 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US9274962B2 (en) * 2010-12-07 2016-03-01 Intel Corporation Apparatus, method, and system for instantaneous cache state recovery from speculative abort/commit
US9477600B2 (en) * 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
US8984228B2 (en) * 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
US20140075124A1 (en) 2012-09-07 2014-03-13 International Business Machines Corporation Selective Delaying of Write Requests in Hardware Transactional Memory Systems
CN109240945B (zh) 2014-03-26 2023-06-06 阿里巴巴集团控股有限公司 一种数据处理方法及处理器

Also Published As

Publication number Publication date
KR102398912B1 (ko) 2022-05-17
CN109240945A (zh) 2019-01-18
EP3441886A1 (en) 2019-02-13
CN104951240B (zh) 2018-08-24
CN109240945B (zh) 2023-06-06
US20170277635A1 (en) 2017-09-28
TWI638311B (zh) 2018-10-11
US20150278094A1 (en) 2015-10-01
EP3441886B1 (en) 2020-11-18
US9858186B2 (en) 2018-01-02
WO2015148679A1 (en) 2015-10-01
JP2017509985A (ja) 2017-04-06
EP3123351A4 (en) 2017-10-25
JP6685437B2 (ja) 2020-04-22
EP3123351B1 (en) 2018-12-12
CN104951240A (zh) 2015-09-30
US9715450B2 (en) 2017-07-25
EP3123351A1 (en) 2017-02-01
HK1211102A1 (en) 2016-05-13
JP2019083045A (ja) 2019-05-30
KR20160138025A (ko) 2016-12-02
TW201537454A (zh) 2015-10-01

Similar Documents

Publication Publication Date Title
JP6685437B2 (ja) データ処理のための方法及びプロセッサ
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
US8881153B2 (en) Speculative thread execution with hardware transactional memory
US8706973B2 (en) Unbounded transactional memory system and method
US11586542B2 (en) Reducing cache transfer overhead in a system
EP3701377B1 (en) Method and apparatus for updating shared data in a multi-core processor environment
US9798577B2 (en) Transactional storage accesses supporting differing priority levels
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US10169103B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
EP4026005B1 (en) Producer-to-consumer active direct cache transfers
KR20160086820A (ko) 메모리에 동시에 액세스하는 기법
US20140281268A1 (en) Enabling Hardware Transactional Memory To Work More Efficiently With Readers That Can Tolerate Stale Data
US11899589B2 (en) Systems, methods, and devices for bias mode management in memory systems
US20220050779A1 (en) Memory disposition device, memory disposition method, and recording medium storing memory disposition program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190117

R150 Certificate of patent or registration of utility model

Ref document number: 6470300

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250