JP6570873B2 - マルチプロセッサシステムのメインメモリ対する投機的クエリ - Google Patents

マルチプロセッサシステムのメインメモリ対する投機的クエリ Download PDF

Info

Publication number
JP6570873B2
JP6570873B2 JP2015099798A JP2015099798A JP6570873B2 JP 6570873 B2 JP6570873 B2 JP 6570873B2 JP 2015099798 A JP2015099798 A JP 2015099798A JP 2015099798 A JP2015099798 A JP 2015099798A JP 6570873 B2 JP6570873 B2 JP 6570873B2
Authority
JP
Japan
Prior art keywords
data
module
request
main memory
management module
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.)
Expired - Fee Related
Application number
JP2015099798A
Other languages
English (en)
Other versions
JP2016015121A (ja
Inventor
パルファ−ソリエ,ティボー
シェハイバー,ガッサーン
Original Assignee
ブル・エス・アー・エス
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ブル・エス・アー・エス filed Critical ブル・エス・アー・エス
Publication of JP2016015121A publication Critical patent/JP2016015121A/ja
Application granted granted Critical
Publication of JP6570873B2 publication Critical patent/JP6570873B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • 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
    • 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/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

[関連出願の相互参照]
本出願は、2014年5月27日出願の仏国特許出願第1454792号に基づく優先権を主張するものであり、こその内容は、参照により全体として本明細書に組み込まれる。
本発明は、マルチプロセッサコンピュータシステムのキャッシュメモリの管理に関する。
マルチプロセッサコンピュータシステムでは、各プロセッサは、実行すべき命令を指すメモリアドレスのようなコンピュータデータを格納する自身のメモリキャッシュを有する。並行に動作する複数のプロセッサは、このようなデータの一部を共有する。したがって、複数のプロセッサが、同一の読み出しデータ又は書き込みデータにアクセスしたり、場合によっては、これらデータを修正したり、コンピュータプログラムを実行したりする場合がある。
複数のプロセッサが使用するデータの更新を確実にするべく、「キャッシュコヒーレンス」アルゴリズムが実装されており、2つのプロセッサが同じデータの異なる2つのバージョンを処理することを防いでいる。MESIアルゴリズムは、このようなアルゴリズムの一例である。
キャッシュコヒーレンスアルゴリズムを実装するには、複数のプロセッサが如何なる時点においてもデータのロケーションを知ることを可能にするべく、これら複数のプロセッサ間で多量の通信を行う必要がある。これは、データが位置するキャッシュメモリのIDとデータのステータスを判断することを伴う。
キャッシュメモリ内のデータのステータスは、使用するプロトコルに依存する。上記で挙げたMESIプロトコルの例では、データが一つのキャッシュにのみ存在し、非キャッシュメモリに(当該データの最初の出所)に存在するデータと比較して変更が加えられている場合には、当該データは「変更(modified)」ステータス(「modified」を表すM)を有する。この場合、当該データにアクセスすることを望むプロセッサは、メモリ内のバージョンと一致する状態となるまで待たなければならない。同じ例において、データが1つのキャッシュメモリにのみ存在し、非キャッシュメモリに存在するバージョンと対応している場合には、「排他(exclusive)」(「exclusive」を表すE)ステータスを有する。データが複数のキャッシュメモリに存在する場合には、「共有(shared)」(「shared」を表すE)ステータスを有する。データが古い場合には、当該データは「無効(invalid)」(「invalid」を表すI)ステータスを有する。プロセッサは、無効ステータスのデータを無視し、使用しない。
他のプロトコルは、上記のように規定されたステータス数よりも多い又は少ないステータスを有する。例えば、MSIプロトコルは、上記で規定されたM、S及びIの3つのステータスのみを有し、MOESIプロトコルでは、「所有(owned)」ステータス(「owned」を表すO)が追加され、これは、データは最新のバージョンであるが、当該データの出所の非キャッシュメモリが古いことを意味する。
キャッシュコヒーレンスプロトコルの多くは、各データに対して行われたリクエストの履歴を反映したリスト又はディレクトリを実装する。この種のプロトコルは、「ディレクトリベース」と称される。
各プロセッサは、登録されているデータが格納されているプロセッサ及び当該データのステータスを示すべく、キャッシュメモリの各ラインのリストを保持する。このリストは、当該リストが収容する情報に関しては、おおよそ完全であると考えられる。
このリストを使用することにより、複数のプロセッサ内のデータに関して、複数のプロセッサからのリクエストの履歴を保持することが可能になる。特に、例えば、データを扱っていないプロセッサのキャッシュに対してクエリを行うことを避けるなど、キャッシュのクエリをフィルタすることが可能になる。また、プロセッサのリストに特定のデータが存在しない場合には、当該データがプロセッサによって使用されておらず、メインメモリに格納されていない(キャッシュされていない)ことから、最新のデータであることが推察される。
図1には、マルチプロセッサシステムが概略的に示されている。
システムは、4つのモジュール100、110、120、130を備える。各モジュールは、複数のプロセッサを有する。モジュール100は、2つのプロセッサ101及び102を有する。モジュール110は、2つのプロセッサ111及び112を有する。モジュール120は、2つのプロセッサ121及び122を有する。モジュール130は、2つのプロセッサ131及び132を有する。各プロセッサは、それぞれのキャッシュメモリを有する。これらキャッシュメモリは図示されていない。
図示したシステムにおける複数のモジュール及びモジュール内の複数のプロセッサは、一例に過ぎない。モジュールは、異なる数のプロセッサを有してもよい。
複数のプロセッサ間の通信を管理するため、特に、キャッシュコヒーレンスを管理するために、各モジュール100、110、120、130は、それぞれプロキシモジュール103、113、123、133を有する。図示を簡単にするべく、プロキシモジュール間の接続は省略されている。
図示の例の場合、各プロセッサは、他のプロセッサと通信を行う一つのインターフェースを有する。すなわち、各プロセッサは、一度に、一つの他のプロセッサからのみアドレス指定される。具体的には、プロキシモジュールが、それぞれのプロセッサモジュールに代わって、ディレクトリを保持する。
システム内のプロセッサの数が多い場合には、プロキシモジュールを使用することが望ましい。
更に、システムは、メインメモリモジュール140を備える。メインメモリモジュールモジュールは、持続可能な態様でデータを格納する。プロセッサによって操作されるデータ及びキャッシュメモリに一時的に格納される元のデータが取り出されるのは、このメモリからである。また、メインメモリモジュール140は、データにアクセスをリクエストしたプロセッサ及び当該データの一覧を示すディレクトリを保持する。図示を簡略化するために、モジュール140がモジュール100、110、120及び130とは別個に示されているが、メインメモリモジュール140は、モジュール100、110、120及び130内に分配されてもよい。この場合、これらモジュールはそれぞれ、メインメモリの一部を収容していることになる。メインメモリモジュール140は、システム内に物理的に分配された共有仮想メモリ空間である。
マルチプロセッサシステムの性能は、プロキシモジュールがシステム内のキャッシュメモリ又はメインメモリにデータを素早く見つけることができる能力に一部依存している。
マルチプロセッサシステムにおいて、データ検索にかかる時間を更に短縮したいという要求が存在する。本発明の一側面は、このような課題を解決しようとするものである。
本発明の第1の態様は、マルチプロセッサシステムにおいてデータにアクセスする方法を提供する。前記マルチプロセッサシステムは、複数のプロセッサ、キャッシュメモリ管理モジュール、メインメモリ及びメインメモリ管理モジュールを含み、各プロセッサは対応するキャッシュメモリと関連付けられる。方法は、一のプロセッサがデータにアクセスすることに関する最初のリクエストを、前記キャッシュメモリ管理モジュールによって受信する工程と、前記データに関する少なくとも第1リクエストを、前記キャッシュメモリ管理モジュールにより、少なくとも一つのキャッシュメモリに送信する第1送信工程と、前記データに関する少なくとも第2リクエストを、前記キャッシュメモリ管理モジュールによって、前記メインメモリ管理モジュールへと、前記第1送信工程と並行して送信する第2送信工程と、前記メインメモリ管理モジュールにより、前記メインメモリへの問い合わせを開始するか否かをチェックする工程と、前記チェックする工程に従って、前記メインメモリ管理モジュールにより、前記メインメモリのクエリを行う又は行わない工程とを備える。
上記の第1の態様に係る方法によれば、キャッシュメモリ又はメインメモリの何れかからデータを取得するために、クエリを並行して行うことが可能になる。
この場合、メインメモリにクエリを行う際に、キャッシュメモリにデータが存在しないことを知るのを待たないことから、データの取得をスピードアップすることができる。
加えて、上記の第1の態様に係る方法によれば、メインメモリの投機的読み出しは応答を受信することから、マルチプロセッサシステムにおけるメモリクエリプロトコルを単純化することができる。別のリクエストを使用して、リクエストへの応答がないことを確かめる必要はない。
方法は、また、メインメモリ内のデータが利用不可能である場合には、メインメモリ管理モジュールにより、第2リクエストを却下することを含む。例えば、前記データが、前記システムの少なくとも一つのキャッシュメモリにおいて利用可能であると判断された場合には、前記メインメモリ管理モジュールにより、前記第2リクエストが却下される。
別の例において、キャッシュメモリ管理モジュールは更に、第1リクエストに応じて、前記少なくとも一つのキャッシュメモリから前記データを取得するのを待つモードになる。
一実施形態によれば、複数のプロセッサによる前記データへのアクセスの競合が検出された場合には、前記メインメモリ管理モジュールにより、前記第2リクエストが却下される。
例えば、ディレクトリを使用したキャッシュメモリ管理をシステムに実装して、検証過程は、キャッシュメモリ内のデータのステータスのディレクトリを参照することを含む。
前記方法は、前記キャッシュメモリ管理モジュールから、前記第2リクエストの確認を、前記メインメモリ管理モジュールによって受信する工程を更に備える。
前記方法は、前記確認に応じて、前記メインメモリモジュールへのクエリを開始する工程を更に備える。
前記方法は、前記確認に応じて、前記最初のリクエストを終了させるメッセージを、前記キャッシュメモリ管理モジュールへと送信する工程を更に備える。
本発明の第2の態様は、上記の第1の態様に係る方法を実装するように構成されたマルチプロセッサシステムに関する。
本発明の第2の態様によれば、第1の態様によって提供される利点と同様な利点を少なくとも一部、様々な実施形態において提供する。
本発明のその他の特徴及び利点が、以下の詳細な説明を読むことにより、非制限的な例及び添付の図面から明らかとなるであろう。
マルチプロセッサシステムが概略的に示されている。 一実施形態に係るシステムが示されている。 システムの様々な要素間のインタラクションを例示した図である。
本発明の様々な実施形態について以下に説明する。特に、プロセッサモジュールのキャッシュメモリ管理モジュール(例えば、プロキシモジュール)が、マルチプロセッサシステムのメモリ(キャッシュメモリ又はメインメモリ)内のデータのロケーションを素早く見つけることを可能とするメッセージの交換について説明する。
図2は、マルチプロセッサシステムにおける様々な実施形態の実装の一般的な状態を示している。
プロセッサモジュール200は、複数の物理的なプロセッサ201、202を備える。図示の例では、プロセッサモジュール200は、2つのプロセッサを備えるが、その他の数のプロセッサを備えてもよい。
各プロセッサは、キャッシュメモリ(図示せず)と関連付けられる。メモリは、「機械記憶媒体」と広く称することもできる。プロセッサモジュール200はまた、キャッシュメモリを管理する、特に、キャッシュメモリのコンテンツのコヒーレンスを管理する、キャッシュメモリ管理モジュール203を有する。キャッシュメモリ管理モジュール203は、例えば、キャッシュコヒーレンス管理を実装する。
簡略化のために、図示の例では、マルチプロセッサシステムは、1つのプロセッサモジュールを備えるとしている。しかしながら、マルチプロセッサシステムは、全く異なる数のプロセッサモジュールを備えることができることは明らかである。
マルチプロセッサシステムはまた、メインメモリモジュール204(キャッシュではない)を備える。メインメモリモジュールは、データを格納するメインメモリ205及びメインメモリ管理モジュール206を含む。図示を簡略化するために、メインメモリモジュール204がプロセッサモジュール200とは別個に示されているが、メインメモリモジュールは、プロセッサモジュール内に設けられてもよい。この場合、これらモジュールはそれぞれ、メインメモリの一部を収容していることになる。したがって、メインメモリモジュール204は、システム内に物理的に分配された共有仮想メモリ空間である。
プロセッサ201(又は別のプロセッサモジュール200)の最初のリクエストに続いて、キャッシュメモリ管理モジュール203が特定のデータの取得を望む場合、キャッシュメモリ管理モジュール203は、当該データに関してメインメモリ管理モジュール206に対してリクエストを送信する。最初のリクエストは、例えば、プロセッサによるメモリアドレスの参照をキャッシュメモリに送信した後で行われる。このクエリが満たされない、すなわち、当該メモリアドレスに対応するメモリブロックがキャッシュにない場合(これは、メモリブロックが存在する場合の「ヒット」の反対で「ミス」と称される)、プロセッサは、メインメモリ内の当該メモリブロックを取得する最初のリクエストを送信する。プロセッサのクエリは、データを変更する意図があるかないかに関わらず、データの呼び出しに関するものであってもよい。
キャッシュメモリ管理モジュール203は、モジュールが属するプロセッサモジュール200のキャッシュメモリに対象のデータが存在するか否か、又は、別のプロセッサモジュールのキャッシュメモリに存在するか否か、をまだチェックしていないが、キャッシュメモリ管理モジュール203はこのリクエストを送信する。したがって、モジュール203からのモジュール206に対するリクエストは、「投機的(speculative)」である。このリクエストを、「事前リクエスト」と称することもできる。
モジュール206がリクエストの投機的な性質を特定するために、特別なコードを規定して当該リクエストに関連付けしてもよい。モジュール206は、以下に説明するように、投機的なリクエストに関連する処理を実装してもよい。
例えば、モジュール206は、データのステータスに関する情報(例えば、上記したMESIプロトコルのステータスのような情報)と、プロトコルエージェントのリストに関する情報、特に、それぞれのキャッシュメモリにコピーを所有するプロセッサについての情報を提供するモジュール205に格納されている全てのデータについてのディレクトリを有してもよい。情報は、実装されるメモリ管理プロトコルに応じた詳細度であってもよい。プロトコルエージェントは、複数のプロセッサ及びプロキシ、並びに、メインメモリ内のデータにアクセスするリクエストを送信する立場にあるその他のエンティティを対象の範囲とする。プロトコルエージェントの階層構造において、プロセッサはリクエストの源(すなわち、データを使用する)である末端エージェントであり、プロキシはメインメモリにおいてプロセッサを代理することから中間エージェントである。
モジュール206が投機的リクエストを受信すると、モジュール206は自身のディレクトリを参照して、システム内のキャッシュメモリ内のデータのステータスをチェックする。
このディレクトリ情報により、データがキャッシュメモリに存在しない、又は、データが当該リクエストに適合するステータスを有する(例えば、MESIプロトコルで規定されるようなステータス)と判断できた場合には、モジュール206は、投機的リクエストを通常の態様で処理する、すなわち、投機的リクエストでないかのように処理する。通常のリクエストでは、モジュール203が自身のキャッシュメモリを参照した後にのみリクエストが送信される、すなわち、データがキャッシュメモリに存在しないと分かった後でのみリクエストが送信される。そして、モジュール206が受け付けたリクエストは、キャッシュメモリコヒーレンスプロトコルに規定される通常の処理に従う。
ディレクトリ情報により、データがキャッシュメモリに存在し、リクエストに適合するステータスを有すると判断できた場合には、モジュール206は、投機的リクエストの処理を開始しない。
モジュール206が、投機的リクエストの対象であるデータに対する別の現在のリクエストとの競合(コンフリクト)を検出した場合には、ディレクトリによって提供される情報が如何なるものであろうとも、このリクエストに対して応答を行わなくてもよい。2つのプロトコルエージェント(プロセッサ、プロキシ)がそれぞれ、同じメモリアドレスにリクエストを送信した場合に、競合が発生する。例えば、2つのプロセッサが同じデータに対して変更を加えたいと望む場合、データのコヒーレンスが失われてしまうのを防ぐために、連続して変更を加えるようにすべきである。
全ての場合において、モジュール206は、投機的リクエストが処理されたことをモジュール203に通知するべく、メッセージを送信する。
このメッセージは、モジュール206による、投機的リクエストの結果(通常処理又は処理の終了)を示す情報を含んでもよい。この情報により、モジュール203によって実行される次の処理の条件を決定してもよい。
投機的リクエストの送信と並行して、モジュール203は、システムのキャッシュメモリの参照を通常の態様で開始する。参照が終了すると、モジュール203は、投機的リクエストの処理の終了を示すモジュール206からの応答を待つ。参照は、一般的に、モジュール206に対するクエリよりも短い時間で行われる。しかしながら、参照の方が長く掛かり、モジュール203が参照を終了する前にモジュール206から応答を受信した場合は、参照が終了するまで待つ。この2つの条件(参照の終了と、モジュール206からの応答受信)が満たされない限り、モジュール203が、最初にプロセッサ201から受信したリクエストの処理の続きを行わない。加えて、同じプロセッサ201から又はプロセッサモジュールの別のプロセッサからの、同じデータに対する他のリクエストの処理についても開始しない。
キャッシュメモリの参照の結果により、モジュール206は、次に実行するべき処理を決定することができる。
キャッシュメモリに、最初のリクエストに適合するステータスを有するデータが存在する場合には、モジュール203は、その投機的リクエストに対して応答を行わない。ディレクトリを介してこの情報を有するモジュール206も、当該投機的リクエストに対するアクションを起こさない。このようにシステム全体において、当該投機的リクエストが完全に終了する。
キャッシュメモリにデータが存在しない、又は、データが最初のリクエストに適合するステータスを有さない場合には、モジュール206からの応答は、次の処理を決定するための情報を含んでもよい。
例えば、モジュール206は、自身の応答に、投機的リクエストに関してとったアクションを示す情報を含める。例えば、応答は、データの提供又は不提供、対処すべきコンフリクトの可能性等を示す情報を含む。モジュール206が投機的リクエストの処理を続ける場合には、モジュール203は、データを待たなければならない。モジュール206が投機的リクエストの処理を継続していない場合には、モジュール203は、データを取得するために、処理の確認通知を送信する。この処理の確認通知は、例えば、投機的リクエストに最初に含まれていた情報をモジュール206が保持していない場合に、モジュール206が投機的リクエストを処理するのに必要な情報を含む。したがって、これは、投機的リクエストの繰り返しとなる。処理の確認通知に含まれる情報は、例えば、データをリクエストしているエンティティのID、リクエスト番号、リクエストされたアドレスの番号、又は、その他の情報を含んでもよい。
別の例として、モジュール206は、投機的リクエストに関してどのようなアクションをとったかを示す情報を、自身の応答に含めない。この場合、モジュール203は、投機的リクエストの処理の確認通知をモジュール206に送信する。処理の確認通知は、モジュール206がアクションをとらずに投機的リクエストの処理を終了し、関連する情報を保持していない場合に、モジュール206がリクエストを処理するのに必要となる情報を含んでもよい。モジュール206が投機的リクエストの処理を継続する場合は、いずれにせよ、モジュール206はモジュール203からの確認を待ち、当該確認を受信するまで投機的リクエストの処理を終了させない。
上記した全ての場合において、この時点以降は、投機的リクエストに対して、キャッシュメモリ管理モジュールによって実装されるキャッシュコヒーレンスプロトコルによって提供される通常の処理が行われる。
図3は、システムの様々な要素間のインタラクションを例示している。
図3には、プロセッサ201、202を備えるプロセッサモジュール200、キャッシュメモリ管理モジュール203、並びに、メインメモリ管理モジュール206及びメインメモリ205を備えるメインメモリモジュール204が示されている。図2の場合のように、プロセッサにそれぞれ関連付けられているキャッシュメモリは示されていない。
第1工程300において、モジュール203は、プロセッサ201から、データに関する最初のリクエストを受信する。モジュール203がこのリクエストを受信すると、モジュール203は、モジュール206に対する投機的クエリ301と、プロセッサ202のキャッシュメモリに対する参照302とを並行して開始する。プロセッサ201は、前記最初のリクエストを送信する前にすでにキャッシュメモリの参照を行っていることから、プロセッサ201のキャッシュメモリに対しては参照を行わない。
プロセッサへの参照は、例えば、スヌープ型(snoopy type)のトランザクションで行われてもよい。モジュール203が、ディレクトリによるキャッシュメモリコヒーレンス管理を実装する場合には、ディレクトリにクエリを行うことによって参照が行われてもよい。
投機的リクエスト自体は、例えば、プロセッサ201によって送信された最初のリクエストのコピーであってもよい。工程301で送信されたリクエストの投機的な性質は、メッセージの分類、すなわち、同種の複数のメッセージからなるセットによって特定されてもよく、例えば、そのような種類が、メモリ管理モジュールによって管理されるトランザクションの種類に追加されてもよい。例えば、このメッセージの分類が、固有の番号によって同定され、プロセッサによって使用される「リクエスト」メッセージ分類のリクエストの特性が採用される(例えば、データ読み出しリクエスト)。投機的リクエストに固有のメッセージ分類が、例えば、同じ仮想キュー内に伝達され、通常のリクエスト(すなわち、非投機的なリクエスト)と同じプロトコルルールに従う。リクエスト及び応答は、仮想チャネル上のプロセッサモジュールを介して受け渡される(物理的リンクが、複数の仮想チャネルをサポートしてもよい)。したがって、投機的リクエスト及び通常のリクエストは、同じ仮想チャネルに従う。
モジュール206が投機的リクエストを受信すると、モジュール206は、リクエストを考慮に入れたことを確認させる受領書としてメッセージ303を送信する。
モジュール203が工程301及び工程302においてリクエストを送信した後は、モジュール203は、モジュール206又はプロセッサ202からの応答を待つ。
したがって、モジュール203がプロセッサモジュール200のプロセッサ202のキャッシュメモリにクエリを行う一方、必要なデータのロケーション及び場合によっては当該データのステータスを決定するべく、工程304においてモジュール205が自身のディレクトリを参照する。
投機的なクエリにより、プロセッサからのリクエストを受信するキャッシュメモリ管理モジュールがディレクトリにクエリを行わないようにすることができ、これらモジュールがメインメモリにクエリを行う前に投機的なクエリを行う場合と同等なレベルの性能を維持することができる。
工程301における投機的リクエストの送信と並行して、工程302における送信を行うことにより、時間を節約することができ、システム動作を加速させることができる。
モジュール206が投機的リクエストを受信すると、モジュール206は最初に当該投機的リクエストをサブモジュールに格納し、当該リクエストを処理可能にする。そしてモジュール206は、データのステータス及び当該データが格納されているプロセッサのリストを含むディレクトリを参照する(ここで、対象のデータは異なるキャッシュメモリに存在する可能性もあることに注意されたい)。
工程305において、対象のデータに関して、プロセッサ間でコンフリクトが生じていないかを検出するべくチェックを行う。コンフリクトが検出された場合(OK)、投機的リクエストは工程306において却下される。
競合が検出されなかった場合(NOK)、対象のデータがキャッシュされているかのチェックを行う工程307が実行される。
対象のデータがキャッシュされている(OK)ことをディレクトリが示している場合、投機的リクエストは工程306において却下される。
却下する工程306において、通常のリクエストの場合のように、投機的リクエストが格納されているサブモジュールがゼロにリセットされる。
モジュール206のディレクトリが、キャッシュメモリにおいて対象のデータが利用可能であると示している場合には、モジュール200に内部で当該データを取得させる。そして、モジュール203は、対象のデータを有するプロセッサ(この例では、プロセッサ202)から当該データを送信することを示す応答を受信し、モジュール203は当該データを受信する(この工程は図示されていない)。
競合が検出されず、また、データがモジュール200で発見されなかった場合には、工程309においてプロキシモジュール206は待機することなく即時に対象のデータの読み出しリクエストをメモリ205に送信する。
そして、工程310においてメモリ205はデータを応答して、工程311においてプロキシモジュール206は当該データをプロキシモジュール203へと送信し、工程312においてプロキシモジュール203は当該データをプロセッサ300に送信することができる。
投機的リクエストを考慮するにあたってメッセージ303の受信に続いて並行して、モジュール203は、対象のデータを取得するために投機的リクエストを確認するメッセージ313を送信する。
実際には、これは、通常の読み出しリクエストを伴う。モジュール206によるリクエストの解釈は、投機的リクエストが却下されたか、されていないかに基づく。リクエストが却下されていない場合には、投機的リクエストの確認メッセージがどのタイミングで到達してもよい。例えば、データがメモリから受信される前に、確認メッセージが受信されてもよい。
更に、メモリからモジュール206が受信したデータは、リクエスト確認メッセージを待つことなくモジュール203に送信される。このようにすることにより、最初のリクエストとデータの受信との間のレイテンシを最適化することができる。
モジュール206は、確認メッセージを受信し対象のデータを送信した後で、終了メッセージ314をモジュール203に送信する。
実際のところ、読み出しリクエストは、複数の種類のメッセージ(リクエスト及び応答)をトリガするトランザクションであり、データを伴う応答、データを伴わない応答がある(例えば、キャッシュ参照応答)。複数の応答を一つのメッセージにまとめることができ、その上でこれら複数のメッセージの内容を区別できるようにすることができる。
リクエストされたデータを含む応答によって、当該応答を待っているプロセッサが開放される。
加えて、システムにおいてトランザクションが番号で同定されている場合には、当該番号の再利用のために、このトランザクションに関する全ての処理が完了していることを確かめることが望ましい。したがって、終了メッセージは、番号の開放を可能にする。モジュール206が、トランザクションの全ての内部処理を終了すると(例えば、トランザクションに続いて自身のディレクトリを更新すると)、終了モジュール203に前記メッセージを送信する。
投機リクエストが却下された場合(図示せず)には、モジュール206は、確認リクエストを受信したことを条件として、リクエスト309を送信する。モジュール206は、上記確認リクエストを通常リクエストと解釈して、メモリ205にクエリを行う(投機的リクエストが却下された上記の場合では、確認リクエストはプロセスの終了の確認であると解釈された)。
モジュール206のディレクトリ内の情報は、正確でない場合がある。その場合、工程306において、投機的リクエストが間違って却下される可能性がある。この場合、確認リクエスト313は、リクエスト309の送信もトリガする。
投機的リクエストの後には、常に応答が行われる。したがって、投機的リクエストが処理されたか、されていないかをリクエストの発信者が知ることなく、当該リクエストがシステムに持続するということはない。したがって、システムオペレーションが最適化される。
上記の実施形態に対して、様々な実装形態を考え得る。例えば、ディレクトリに格納されたデータのステータスを使用してもよい。例えば、工程304においてモジュール206が自身のディレクトリを参照する場合、工程300における最初のリクエストにおいて、例えば、プロセッサによって指定された特定のステータスのデータを有するプロセッサのリストのみを参照することが考えられる。この時、データがキャッシュメモリに存在しているが、リクエストされたものと異なるステータスを有する場合は、当該リクエストは処理されない。
例えば、プロセッサがデータを排他的に有することを望む場合、すなわち、当該プロセッサが唯一、当該データを有するという状態を望む場合、当該データがキャッシュ内に共有ステータスで存在する場合には、これらのデータは使用できない。したがって、排他ステータスのデータを取得しなければならない。キャッシュ内のデータのステータスが、リクエストによって要求されているデータと合致していない場合には、モジュール206はリクエストの処理の継続を決定してもよい。
キャッシュメモリ管理モジュールは、ディレクトリを使用してキャッシュメモリコヒーレンス管理を実装してもよいし、その他の種類のコヒーレンス管理を採用してもよい。
システムによっては、複数のマルチプロセッサモジュール(又は「クラスタ」)を備える場合がある。マルチプロセッサモジュールはそれぞれ、複数のプロセッサを含み、各プロセッサはそれぞれ自身のキャッシュメモリと関連付けされて、メインメモリモジュール(メインメモリ及び管理モジュール)の一部をホストする。すなわち、メインメモリモジュールは、複数のマルチプロセッサモジュールに分配される。このようなシステムにおいて、各マルチプロセッサモジュール内において「スヌープ型」のキャッシュコヒーレンス管理であってもよく、複数のマルチプロセッサモジュール間でディレクトリ(「ディレクトリベース」)によって管理される。
上記の実施形態及び変形例によれば、キャッシュコヒーレンスプロトコルに関してマルチプロセッサシステムの性能を向上させる、簡単で強力な且つ一般的な解決策を提供すると同時に、プロキシモジュールの開発及び製造のコストを低減することを可能にする。
特に、キャッシュコヒーレンスが保証される。むしろ、投機的リクエストの処理は、キャッシュコヒーレンシプロトコルを変更していない。リクエストの通常の処理の前に、一段回、追加している。この段階は、関係するデータについてキャッシュのステータスをチェックするだけであるから、キャッシュコヒーレンスを危険に晒すようなアクションを含まない。
更に、複数のシステムプロセッサが同時に同じデータにアクセスする場合のように、データアクセスの競合を管理することが可能である。キャッシュメモリ管理モジュールに関して、投機的リクエストが送信されたモジュールの応答がまだ受信されていない限り、投機的リクエスト及び同じデータに関するその他のリクエストの処理をブロックすることによって競合を管理してもよい。メインメモリ管理モジュールの場合、僅かな競合が検出されただけでも、更なるアクションをとることなく投機的処理が終了される場合がある。
一般的に、データへのアクセスが、より早くプロセッサに付与されてもよい。キャッシュを参照するが、参照結果を知る前に、メインメモリにリクエストを送信するべくメインメモリにクエリを行ってもよい。
実施形態を実装するのに使用するリソースを減らすことができる。各リソースは、半導体の作成でコストが掛かるだけではなく、エネルギー消費、生産収率又はチェックの時間を費やすことになる。したがって、システムを動作させるのに使用するリソースを最低限にすることは非常に実利にかなうことである。
プロキシモジュールにディレクトリ又はキャッシュを実装する必要がないことから、投機的な読み出しによりこの問題を完全に解決することができる。ディレクトリを設けないことは、メインメモリへのアクセス時間を短縮できることで、埋め合わせできる。プロキシモジュールは、メインメモリ管理モジュールのディレクトリに依存する。投機的読み出しは、プロキシモジュールが、ディレクトリ又はキャッシュが存在する場合に提供されるような性能と等価な性能を、これらを実装することなしに提供することを可能にする。
当業者であれば、本明細書の開示の構成及び方法は、技術者が現在直面する技術的な問題として、マルチプロセッサシステムにおけるデータ検索時間を短縮させるべく、解決策を提示していることが理解できる。
様々な実施形態を参照して本発明の原理を説明及び例示したが、本発明の原理から逸脱することなく、当該様々な実施形態を構成及び詳細部分において変更することが可能である。本明細書に記載されたデバイス、モジュール、プロセッサ、処理装置、プログラム、プロセス又は方法は、別途の記載がない限り、コンピュータ環境の特定の種類に関連付けされない又は限定されない。様々な種類の専用コンピュータ環境を使用することができる又は上記の教示に従ってオペレーションを実行することができる。ソフトウェアにおいて示される実施形態の要素を、ハードウェアで実装してもよいし、またその反対も成り立つ。
メモリに収容された機械命令のシーケンスが実行されると、プロセッサ又は処理ユニットに、上記したプロセスの工程又は上記したプロセスの機能の少なくとも一部を実行させる。マルチプロセッサ構成における一の又は複数のプロセッサ又は物理的処理ユニットは、メモリ又は機械/コンピュータ可読媒体に含まれる命令のシーケンスを実行するのに採用されてもよい。別の実施形態では、有線の回路を、ソフトウェア命令に代えて又はソフトウェア命令と組み合わせて使用してもよい。
本明細書で使用される「コンピュータ可読媒体」、「機械可読媒体」又は「機械記憶媒体」という言葉は、プロセッサ又は処理ユニットが実行する命令の提供を行う任意の媒体を指す。このような媒体は、非一時的であって任意の形態をとってもよく、これに限定されないが、不揮発性媒体、揮発性媒体及び伝送媒体が含まれる。不揮発性媒体としては、例えば、光学ディスク又は磁気ディスクを含む。不揮発性媒体としては、ダイナミックメモリを含む。伝送媒体としては、同軸ケーブル、銅線及び光ファイバーを含む。コンピュータ/機械可読媒体の一般的な形態としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、CD−RM、DVD、その他の光学媒体、パンチカード、穿孔テープ、孔の開けられたパターンを有するその他の物理的な媒体、RAM、PROM及びEPROM、フラッシュEPROM、任意のその他のメモリチップ又はカートリッジ、以下に記載された搬送波、又は、コンピュータが読み出すことができる任意のその他の媒体を含む。
様々な形式のコンピュータ/機械可読媒体は、プロセッサが実行する一の又は複数の命令の一の又は複数のシーケンスを搬送することを伴う。
本明細書で記載した方法の工程のうちの少なくとも一つ、又は、構造的な配置の様々な要素の機能を実装するための機械実行可能命令を含むコンピュータプログラムは、少なくともインターフェース、物理的なプロセッサ、非一時的メモリ(非一時的機械可読媒体又は記憶媒体とも称される)を含む一の又は複数のコンピュータによって実装することができる。コンピュータは、上記した方法の特定の工程を実行するようにプログラムされるという観点において、専用コンピュータである。非一時的メモリは、上記した方法及びこれに関連する工程を実行するための特定のコード命令を使用してエンコード又はプログラムされる。非一時的メモリは、物理的なプロセッサと通信を行うように配置され、使用時には当該物理的なプロセッサは、非一時的メモリに埋め込まれた特定のコード命令を読み出す及び実行する。専用コンピュータのインターフェースは、物理的なプロセッサと通信を行うように配置されてもよく、物理的プロセッサによって処理される入力パラメータを受信する。
詳細な説明及び添付の図面を参照して本発明を説明した。しかしながら、本発明は説明した実施形態に限定されない。本発明の説明及び添付の図面を読んだ当業者が、他の変形例及び実施形態を導き出す又は実装することが可能である。
請求項においては、「含む(comprise)」の語は他の構成要素又は他の工程を排除しない。不定冠詞「a」は複数であることを排除しない。一つのプロセッサ又は複数のその他のモジュールを使用して、本発明を実装してもよい。説明された及び/又は特許請求された様々な特徴を有益に組み合わせることができる。これらの構成が説明中又は異なる独立請求項中にあったとしても、組合せの可能性は排除されない。参照符号は発明の範囲を限定するものと解釈すべきではない。

Claims (10)

  1. マルチプロセッサシステムにおいてデータにアクセスする方法であって、
    前記マルチプロセッサシステムは、複数のプロセッサ、キャッシュメモリ管理モジュー
    ル、メインメモリ及びメインメモリ管理モジュールを含み、各プロセッサは対応するキャ
    ッシュメモリと関連付けられ、
    前記方法は、
    一のプロセッサがデータにアクセスするための最初のリクエストを、前記キャッシュメ
    モリ管理モジュールによって受信する工程と、
    前記データに関する少なくとも第1リクエストを、前記キャッシュメモリ管理モジュールによって、前記複数のプロセッサのうち前記一のプロセッサ以外のプロセッサのそれぞれに対応するキャッシュメモリに送信する第1送信工程と、
    前記データに関する少なくとも第2リクエストを、前記キャッシュメモリ管理モジュー
    ルによって、前記メインメモリ管理モジュールへと、前記第1送信工程と並行して送信す
    る第2送信工程と、
    前記メインメモリ管理モジュールによって、前記メインメモリへのクエリを開始するか
    否かをチェックする工程と、
    前記チェックする工程に従って、前記メインメモリ管理モジュールによって、前記メイ
    ンメモリのクエリを行う又は行わない工程と、を備える方法。
  2. 前記データが前記メインメモリにおいて利用不可能である場合には、前記メインメモリ
    管理モジュールによって、前記第2リクエストを却下する工程を更に備える、請求項1に
    記載の方法。
  3. 前記データが、前記マルチプロセッサシステムの少なくとも一つのキャッシュメモリにおいて利用可能であると判断された場合には、前記メインメモリ管理モジュールによって、前記第2リクエ
    ストが却下される、請求項1に記載の方法。
  4. 前記キャッシュメモリ管理モジュールは更に、前記第1リクエストに応じて、前記少な
    くとも一つのキャッシュメモリから前記データを取得するのを待つ、請求項3に記載の方
    法。
  5. 複数のプロセッサによる前記データへのアクセスの競合が検出された場合には、前記メ
    インメモリ管理モジュールによって、前記第2リクエストが却下される、請求項2に記載
    の方法。
  6. ディレクトリを使用したキャッシュメモリ管理が前記マルチプロセッサシステムに実装され、
    前記チェックする工程は、キャッシュメモリ内のデータのステータスのディレクトリを
    参照する工程を有する、請求項1に記載の方法。
  7. 前記キャッシュメモリ管理モジュールからの前記第2リクエストの確認を、前記メイン
    メモリ管理モジュールによって受信する工程を更に備える、請求項1に記載の方法。
  8. 前記確認に応じて、前記メインメモリへのクエリを開始する工程を更に備える、請求項7に記載の方法。
  9. 前記確認に応じて、前記最初のリクエストに対する終了メッセージを、前記キャッシュ
    メモリ管理モジュールへと送信する工程を更に備える、請求項7に記載の方法。
  10. マルチプロセッサシステムであって、
    それぞれがキャッシュメモリと関連付けられた複数のプロセッサと、
    キャッシュメモリ管理モジュールと、
    メインメモリと、
    メインメモリ管理モジュールと、を備え、
    前記マルチプロセッサシステムにおいてデータにアクセスするために、
    前記キャッシュメモリ管理モジュールは、一のプロセッサがデータにアクセスすること
    に関する最初のリクエストを受信し、前記データに関する少なくとも第1リクエストを、
    前記複数のプロセッサのうち前記一のプロセッサ以外のプロセッサのそれぞれに対応するキャッシュメモリに送信する第1送信工程と、前記データに関する少なくとも第2リクエストを、前記メインメモリ管理モジュールへと、前記第1送信工程と並行して送信する第2送信工程とを実行するように構成され、
    前記メインメモリ管理モジュールは、前記メインメモリへのクエリをトリガするか又は
    しないかのチェックを実行し、当該チェックに従って前記メインメモリへのクエリを行う
    又は行わないように構成される、マルチプロセッサシステム。
JP2015099798A 2014-05-27 2015-05-15 マルチプロセッサシステムのメインメモリ対する投機的クエリ Expired - Fee Related JP6570873B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1454792 2014-05-27
FR1454792A FR3021773B1 (fr) 2014-05-27 2014-05-27 Interrogation speculative en memoire centrale d'un systeme multiprocesseur

Publications (2)

Publication Number Publication Date
JP2016015121A JP2016015121A (ja) 2016-01-28
JP6570873B2 true JP6570873B2 (ja) 2019-09-04

Family

ID=51225781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015099798A Expired - Fee Related JP6570873B2 (ja) 2014-05-27 2015-05-15 マルチプロセッサシステムのメインメモリ対する投機的クエリ

Country Status (5)

Country Link
US (1) US9720850B2 (ja)
EP (1) EP2950217B1 (ja)
JP (1) JP6570873B2 (ja)
BR (1) BR102015011684A2 (ja)
FR (1) FR3021773B1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180054486A1 (en) * 2009-10-29 2018-02-22 International Business Machines Corporation Speculative Requests
CN116708571B (zh) * 2023-07-22 2024-05-14 武汉船舶职业技术学院 一种基于5g通信的智能终端服务方法、系统及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02205963A (ja) * 1989-01-27 1990-08-15 Digital Equip Corp <Dec> 読取中断処理
US5813030A (en) * 1991-12-31 1998-09-22 Compaq Computer Corp. Cache memory system with simultaneous access of cache and main memories
JPH06282528A (ja) * 1993-01-29 1994-10-07 Internatl Business Mach Corp <Ibm> データ転送方法及びそのシステム
US6338122B1 (en) * 1998-12-15 2002-01-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
JP3609656B2 (ja) * 1999-07-30 2005-01-12 株式会社日立製作所 コンピュータシステム
JP3764015B2 (ja) * 1999-12-13 2006-04-05 富士通株式会社 メモリアクセス方法及びマルチプロセッサシステム
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6625707B2 (en) * 2001-06-25 2003-09-23 Intel Corporation Speculative memory command preparation for low latency
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
JP4673585B2 (ja) * 2004-08-05 2011-04-20 富士通株式会社 メモリシステム制御装置およびメモリシステム制御方法
JP4504134B2 (ja) * 2004-08-16 2010-07-14 富士通株式会社 システム制御装置、投機フェッチ方法および情報処理装置
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US7949830B2 (en) * 2007-12-10 2011-05-24 International Business Machines Corporation System and method for handling data requests
JP5163220B2 (ja) * 2008-03-26 2013-03-13 富士通株式会社 キャッシュ制御装置、情報処理装置
US8127106B2 (en) * 2008-04-18 2012-02-28 International Business Machines Corporation Access speculation predictor with predictions based on a domain indicator of a cache line
US20130046934A1 (en) * 2011-08-15 2013-02-21 Robert Nychka System caching using heterogenous memories
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine

Also Published As

Publication number Publication date
EP2950217A1 (fr) 2015-12-02
US20150347322A1 (en) 2015-12-03
US9720850B2 (en) 2017-08-01
BR102015011684A2 (pt) 2015-12-29
JP2016015121A (ja) 2016-01-28
FR3021773A1 (fr) 2015-12-04
EP2950217B1 (fr) 2022-05-04
FR3021773B1 (fr) 2017-10-06

Similar Documents

Publication Publication Date Title
US8812794B2 (en) Resolving messaging deadlock in a distributed shared memory
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US7702743B1 (en) Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
TWI274998B (en) Method for memory coherency, systems for supporting distributed cache coherency conflict resolution, method for resolving a writeback race conflict, and for resolving a race conflict for request for ownership of two substantially simultaneous requests
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
CN107257957B (zh) 至次级应用的应用高速缓存复制
EP2676203B1 (en) Broadcast protocol for a network of caches
EP4026005B1 (en) Producer-to-consumer active direct cache transfers
EP2568379B1 (en) Method for preventing node controller deadlock and node controller
KR20050074310A (ko) 캐시 라인 소유권 이전 방법 및 장치
JP6570873B2 (ja) マルチプロセッサシステムのメインメモリ対する投機的クエリ
EP3788492B1 (en) Separating completion and data responses for higher read throughput and lower link utilization in a data processing network
CN110083548B (zh) 数据处理方法及相关网元、设备、系统
US8560776B2 (en) Method for expediting return of line exclusivity to a given processor in a symmetric multiprocessing data processing system
US9645927B2 (en) Reduction of evictions in cache memory management directories
JP4335298B2 (ja) スヌープ制御方法および情報処理装置
JP2018129041A (ja) スヌープリクエストに対する応答の転送
JP5986307B2 (ja) 部分的に順序付けされたネットワーク上におけるブロードキャストキャッシュコヒーレンス
CN112579479B (zh) 在维护缓存一致性时维护事务次序的处理器及其方法
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
US20140068199A1 (en) Processor and information processing apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190807

R150 Certificate of patent or registration of utility model

Ref document number: 6570873

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees