JP5936152B2 - メモリアクセストレース方法 - Google Patents

メモリアクセストレース方法 Download PDF

Info

Publication number
JP5936152B2
JP5936152B2 JP2014102910A JP2014102910A JP5936152B2 JP 5936152 B2 JP5936152 B2 JP 5936152B2 JP 2014102910 A JP2014102910 A JP 2014102910A JP 2014102910 A JP2014102910 A JP 2014102910A JP 5936152 B2 JP5936152 B2 JP 5936152B2
Authority
JP
Japan
Prior art keywords
memory
command
memory access
cache coherency
information
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
JP2014102910A
Other languages
English (en)
Other versions
JP2015219727A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2014102910A priority Critical patent/JP5936152B2/ja
Priority to US14/700,808 priority patent/US9940237B2/en
Priority to US14/746,886 priority patent/US9928175B2/en
Publication of JP2015219727A publication Critical patent/JP2015219727A/ja
Application granted granted Critical
Publication of JP5936152B2 publication Critical patent/JP5936152B2/ja
Priority to US15/704,498 priority patent/US10169237B2/en
Priority to US15/704,551 priority patent/US10241917B2/en
Priority to US16/246,583 priority patent/US11163681B2/en
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/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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/306In system interconnect, e.g. between two buses
    • 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
    • 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
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、メモリアクセストレース方法に関し、より具体的には、マルチプロセッサシステムにおいて、共有されるメモリへアクセスするプロセッサを特定するための方法に関する。
キャッシュ、メモリコントローラ、CPU間インターコネクトなどのハードウェアのデザイン/チューニング、あるいはVM、OS、アプリケーションなどのソフトウェアのデザイン/チューニングを行うための方法の一つにメモリアクセストレースがある。メモリアクセストレースは、一般にメモリバスの信号をプローブし、そのコマンド、アドレス、及びデータを記録するものである。
NUMA(Non-Uniform Memory Access)に代表されるようなアーキテクチャを採用する共有メモリ型マルチプロセッサシステムでは、メモリアクセストレースとして、例えば、CPUからなるNUMA構成のサーバが、各CPUと対応するローカルメモリ(DIMM)の間のメモリバス(MB)信号をプローブし、その動きを記録することが行われる。
一方で、ハードウェアあるいはソフトウェアのより高度な動作解析やチューニングを行うために、メモリアクセスに注目し、そのメモリアクセスがどのCPUから発行されたものか知りたい場合がある。例えば、NUMA構成のシステムでは、ローカルメモリ及びリモートメモリに対して発生したメモリアクセスが、どのCPUによって行われたかを特定したいという要求がある。
メモリバス上には、アドレスとリード/ライトの情報は流れているが、アクセス要求元のCPUを特定する情報は流れていない。したがって、従来のメモリアクセストレースでは、アクセス要求元のCPUを特定することはできない。そのため、例えば、CPU間のインターコネクト(CI)にプローブを接続して、流れるリード/ライトパケットをモニターする必要がある。しかし、アクセス要求元のCPUを特定するには、全てのCPU間のインターコネクトをモニターしなければならないため電気的、機械的に大きな労力が必要である。また、ローカルメモリへのアクセスは、CPU間のインターコネクトを通らないので、インターコネクトをモニターするだけでは、直接的にアクセス要求元のCPUを特定することはできない。
特開2008−152665 特開2006−318412 特開2009−193604
したがって、本発明の目的は、相互に通信可能な少なくとも2以上の演算装置の各々が、キャッシュを備えると共に対応するメモリに接続するマルチプロセッサシステムにおいて、共有されるメモリのいずれか1つへアクセスする演算装置を特定するための方法を提供することである。
本発明は、相互に通信可能な少なくとも2以上の演算装置を含み、演算装置の各々は、キャッシュを備えると共に対応するメモリに接続するシステムにおいて、メモリのいずれか1つへアクセスする演算装置を特定するための方法を提供する。その方法は、(a)メモリのいずれか1つへのメモリアクセスをモニターするステップと、(b)演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップと、(c)メモリアクセスに関する情報とキャッシュ・コヒーレンシ・コマンドに関する情報とからメモリのいずれか1つへアクセスする演算装置を特定するステップと、を含む。
本発明の一態様では、メモリのいずれか1つへのメモリアクセスをモニターするステップ(a)は、メモリのいずれか1つに接続するメモリバスを介してメモリアクセスに関する情報を取得し、当該情報を保管するステップを含む。
本発明の一態様では、演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップ(b)は、演算装置間のインターコネクトを介してキャッシュ・コヒーレンシ・コマンドをモニターし、キャッシュ・コヒーレンシ・コマンドに関する情報を保管するステップを含む。
本発明の一態様では、メモリのいずれか1つへアクセスする演算装置を特定するステップ(c)は、(c1)キャッシュ・コヒーレンシ・コマンドに関する情報の履歴の中からメモリアクセスに関する情報中のメモリアドレスと同じメモリアドレスを含むキャッシュ・コヒーレンシ・コマンドを特定するステップと、(c2)特定されたキャッシュ・コヒーレンシ・コマンドをメモリアクセスのタイミングに最も近いタイミングで出力した演算装置を前記メモリのいずれか1つへアクセスする演算装置として特定するステップと、を含む。
本発明の一態様では、メモリアクセスに関する情報は、アクセスタイムと、コマンドの種類と、メモリアドレスとを含み、キャッシュ・コヒーレンシ・コマンドに関する情報は、コマンド発生タイムと、コマンドの種類と、メモリアドレスと、コマンドを出力した演算装置のIDとを含む。
本発明の方法を実行するマルチプロセッサシステムの構成例を示すブロック図である。 本発明の方法を実行するマルチプロセッサシステムの構成例を示すブロック図である。 本発明の方法の基本フローを示す図である。 本発明の一実施例の構成及び信号の流れを示す図である。 本発明の一実施例の構成及び信号の流れを示す図である。 本発明の一実施例の構成及び信号の流れを示す図である。 本発明の一実施例の構成及び信号の流れを示す図である。 本発明の一実施例の構成及び信号の流れを示す図である。 本発明の一実施例の構成及び信号の流れを示す図である。
図面を参照しながら本発明の実施の形態を説明する。図1と図2は、本発明の方法を実行する実行するマルチプロセッサシステムの構成例を示すブロック図である。図1と図2は、NUMA(Non-Uniform Memory Access)方式の共有メモリ型マルチプロセッサシステム100の構成例である。なお、図1と図2においては、NUMA方式の4つのプロセッサ(以下、「CPU」と呼ぶ)CPU1−4を含む例を示しているが、本発明を実行する構成はこれに限られず、基本的にメモリを共有する少なくとも2以上のCPUを含むマルチプロセッサシステムにおいて実行可能である
図1において、各ノードを構成するCPU1〜4の各々とメモリM1〜M4の各々が対応するメモリバス10を介して相互に通信可能に接続されている。各CPU1〜4は、キャッシュを備え、さらにインターコネクト20を介して相互に通信可能に接続されている。メモリM1〜M4の各々は、ローカルメモリあるいはリモートメモリとして各CPUに共有される。メモリM1〜M4は、例えば複数のDRAMを含むメモリモジュール(例えば、DIMM)からなる。図1の例では、全CPUから等価にアクセス可能なグローバルなメモリとしてメモリMMも例示されている。
図2は、図1の共有メモリ型マルチプロセッサシステム100構成例を本発明の説明のために構成し直したブロック(イメージ)図である。図2では、図1のインターコネクト20がより明確になるように、符号I1〜I6で指示されるラインによって、各CPU間のインターコネクトを示している。また、各ノードにおけるメモリバスも符号b1〜b4のラインで示している。本発明の方法では、下記に説明するように、符号30でイメージされるプローブを用いて、メモリバスb1〜b4のいずれか1つまたは2以上、及びインターコネクトI1〜I6のいずれか1つまたは2以上をモニターすることにより、より正確にはそのモニター結果(情報)を利用して、共有されるメモリM1〜M4の各々にアクセス(R/W)するCPUを特定する。
図2及び図3を参照しながら本発明の方法のフローについて説明する。図3は、本発明の方法の基本的なフローを示す図である。図3のフローを含む本発明の方法は、例えば、上述した共有メモリ型マルチプロセッサシステム100を備えるコンピュータ(サーバ)が、メモリ(コンピュータがアクセス可能なHDD等)に格納された所定のソフトウェアを呼び出して実行することにより実施される。
図3のステップS11において、メモリM1〜M4のいずれか1つへのメモリアクセスをモニターする。そのモニターは、プローブ30をメモリバスb1〜b4のいずれか1つまたは2以上に接続して、バス上の信号からメモリアクセスに関する情報を取得し、その情報を所定のメモリ(コンピュータがアクセス可能なHDD等)に保管することにより行う。メモリアクセスに関する情報には、例えば、アクセスタイム、コマンドの種類、及びメモリアドレスが含まれる。
ステップS12において、CPU1〜4間のキャッシュ・コヒーレンシ・コマンドをモニターする。そのモニターは、プローブ30をインターコネクトI1〜I6のいずれか1つまたは2以上に接続して、インターコネクト上の信号からそのキャッシュ・コヒーレンシ・コマンドに関する情報(パケット情報、プロトコル)を取得し、その情報を所定のメモリ(コンピュータがアクセス可能なHDD等)に保管することにより行う。そのコマンドに関する情報には、例えば、コマンド発生タイム、コマンドの種類、メモリアドレス、及びコマンドを出力したCPUのIDが含まれる。
ステップS13において、ステップS11で取得したメモリアクセスに関する情報とステップS12で取得したキャッシュ・コヒーレンシ・コマンドに関する情報とから、メモリM1〜M4のいずれか1つへアクセスするCPUを特定する。その特定は、コンピュータによって実行される、メモリに保管された情報の履歴を用いるオフライン解析として、以下の手順でおこなうことができる。
(i)メモリに保管されたキャッシュ・コヒーレンシ・コマンドに関する情報の履歴の中から、メモリに保管された特定のメモリ(M1〜M4のいずれか)に対するメモリアクセスに関する情報中のメモリアドレスと同じメモリアドレスを含むキャッシュ・コヒーレンシ・コマンドを特定する。
(ii)特定されたキャッシュ・コヒーレンシ・コマンドをメモリアクセスのタイミングに最も近い(最新/最後の)タイミングで出力したCPUをそのメモリへアクセスするCPUとして特定する。
上述したステップS13のアクセスするCPUの特定に関して、以下に述べる実施例において、図4〜図9を参照しながら具体的に説明する。なお、以下の実施例においては、図2のシステム100において、MESIプロトコルを用いてキャッシュ・コヒーレンシを確保するためのメモリ制御(キャッシュ・コヒーレンシ制御)を行う場合の例を示しているが、本発明はこのMESIプロトコルに限定されず他のMESIFプロトコル等のブロードキャスト(broadcast)ベースのキャッシュ・コヒーレンシ制御全般に適用可能である。
図4を参照する。CPU1のキャッシュラインがI(Invalid:無効)状態にあるとする。CPU1がローカルメモリM1にメモリアクセス(リード)A1を行い、さらに、他のCPU2〜4に対して、リードするアドレスのデータと同じデータを保有しているか否かを確認するべく、キャッシュ・コヒーレンシ・コマンドC1〜C3を送ったとする。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。メモリアクセスA1の情報には、既に上述した、例えば、アクセスタイム、コマンドの種類、及びメモリアドレスが含まれる。なお、以下の実施例においてもその情報の内容は同様である。プローブ2によりインターコネクトI1上のキャッシュ・コヒーレンシ・コマンドC1の情報が取得されて保管される。そのコマンドC1の情報には、既に上述した、例えば、コマンド発生タイム、コマンドの種類、メモリアドレス、及びコマンドを出力したCPUのIDが含まれる。なお、以下の実施例においてもその情報の内容は同様である。
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC1をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU1がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC1の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU1がメモリM1へアクセス(リード)したCPUとして特定される。
図5を参照する。図4の場合と違って、CPU4のキャッシュラインがI(Invalid:無効)状態にあるとする。CPU4がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(リード)A1を行い、他のCPU2、3に対して、リードするアドレスのデータと同じデータを保有しているか否かを確認すべく、キャッシュ・コヒーレンシ・コマンドC1、C2を送ったとする。この場合、プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。プローブ5によりインターコネクトI6上のキャッシュ・コヒーレンシ・コマンドC2の情報が取得されて保管される。
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC2をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU4がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC2の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU4がメモリM1へアクセス(リード)したCPUとして特定される。
再び図4を参照する。CPU1、3、4の3つのキャッシュラインがS(Shared:共有)状態にあるとする。CPU1がローカルメモリM1にメモリアクセス(ライト)A1を行い、他のCPU2〜4に対して、ライトするアドレスのデータと同じデータの無効を伝えるべく、キャッシュ・コヒーレンシ・コマンドC1〜C3を送ったとする。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。プローブ2によりインターコネクトI1上のキャッシュ・コヒーレンシ・コマンドC1の情報が取得されて保管される。
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC1をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU1がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC1の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU1がメモリM1へアクセス(ライト)したCPUとして特定される。
再び図5を参照する。CPU2、4の2つのキャッシュラインがS(Shared:共有)状態にあるとする。CPU4がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(ライト)A1を行い、他のCPU2、3に対して、ライトするアドレスのデータと同じデータの無効を指示すべく、キャッシュ・コヒーレンシ・コマンドC1、C2を送ったとする。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。プローブ5によりインターコネクトI6上のキャッシュ・コヒーレンシ・コマンドC2の情報が取得されて保管される。
保管された情報の履歴から、キャッシュ・コヒーレンシ・コマンドC2をメモリアクセスA1のタイミングに最も近い(最新/最後の)タイミングで出力したCPU4がメモリM1へアクセスしたCPUとして特定される。言い換えれば、キャッシュ・コヒーレンシ・コマンドC2の発生タイミングに最も近い(最新/最後の)タイミングで発生したメモリアクセスA1を出力したCPU4がメモリM1へアクセス(ライト)したCPUとして特定される。
図6を参照する。CPU2のキャッシュラインがM(Modified:変更)状態にあり、そのキャッシュラインが追い出される(Cast out)ケースである。CPU2がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(ライト)A1を行ったとする。プローブ1、2によりバスb1及びインターコネクトI1上のメモリアクセスA1の情報が取得されて保管される。ここで、M状態のキャッシュラインの追い出し(Cast out)であるから、CPU2はCPU3とCPU4へスヌープ(Snoop)リクエストを出さないことに留意されたい。
保管された情報の履歴から、メモリM1へのメモリアクセスA1の情報中のアドレスと同じアドレスに最後(最新)にアクセス(ライト)したCPU2がメモリM1へアクセス(ライト)したCPUとして特定される。
図7を参照する。上述した実施例2(図5)の経過後において、CPU4のキャッシュラインがM(Modified:変更)状態にあるとする。CPU4がリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(ライト)A1を行ったとする。その際、CPU4は、M状態にあるキャッシュラインの追い出し(Cast out)なので、他のCPUに対して、キャッシュ・コヒーレンシ・コマンドC1、C2は送らない。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。
保管された情報の履歴から、メモリM1へのメモリアクセスA1の情報中のアドレスと同じアドレスに最後(最新)にアクセス(ライト)したCPU4がメモリM1へアクセス(ライト)したCPUとして特定される。
図8を参照する。上述した実施例1(図4)の経過後において、CPU1のキャッシュラインがM(Modified:変更)状態にあるとする。CPU1がローカルメモリM1にM状態のキャッシュラインを追い出す(Cast out)ため、メモリアクセス(ライト)A1を行ったとする。その際、CPU1は、他のCPUに対して、キャッシュ・コヒーレンシ・コマンドC1、C2は送らない。プローブ1によりバスb1上のメモリアクセスA1の情報が取得されて保管される。
保管された情報の履歴から、メモリM1へのメモリアクセスA1の情報中のアドレスと同じアドレスに最後(最新)にアクセス(リードまたはライト)したCPU1がメモリM1へアクセス(リードまたはライト)したCPUとして特定される。
図9を参照する。最後の実施例として、2つのメモリアクセスが競合する場合について説明する。CPU2とCPU3が、同時にリモートメモリに相当するCPU1のローカルメモリM1にメモリアクセス(リード)A1、A2を行ったとする。プローブ1によりバスb1上のメモリアクセスA1、A2の情報が取得されて保管される。
この場合、CPU1の内部キャッシュ/メモリのハードウェア・ロジックがモニターされない限り、保管された情報の履歴からは、そのメモリアクセスA1、A2を行ったCPUがCPU2またはCPU3のいずれかであるかを厳密には決定することはできない。すなわち、そのメモリアクセスA1、A2を行ったCPUがCPU2及びCPU3であることを特定することに留まる。
本発明の実施形態について、図を参照しながら説明をした。しかし、本発明はこれらの実施形態に限られるものではない。本発明はその趣旨を逸脱しない範囲で当業者の知識に基づき種々なる改良、修正、変形を加えた態様で実施できるものである。
10 メモリ
20 インターコネクト
30 プローブ
100 共有メモリ型マルチプロセッサシステム

Claims (7)

  1. 相互に通信可能な少なくとも2以上の演算装置を含み、前記演算装置の各々は、キャッシュを備えると共に対応するメモリに接続するシステムにおいて、前記メモリのいずれか1つへアクセスした演算装置を特定するための方法であって、
    前記メモリのいずれか1つへのメモリアクセスをモニターするステップと、
    前記演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップと、
    前記メモリアクセスに関する情報と前記キャッシュ・コヒーレンシ・コマンドに関する情報とから前記メモリアクセスがモニターされた前記メモリのいずれか1つへアクセスした演算装置を特定するステップと、を含む方法。
  2. 前記メモリのいずれか1つへのメモリアクセスをモニターするステップは、前記メモリのいずれか1つに接続するメモリバスを介して前記メモリアクセスに関する情報を取得し、当該情報を保管するステップを含む、請求項1に記載の方法。
  3. 前記演算装置間のキャッシュ・コヒーレンシ・コマンドをモニターするステップは、
    前記演算装置間のインターコネクトを介して前記キャッシュ・コヒーレンシ・コマンドをモニターし、前記キャッシュ・コヒーレンシ・コマンドに関する情報を保管するステップを含む、請求項1にまたは2に記載の方法。
  4. 前記メモリのいずれか1つへアクセスした演算装置を特定するステップは、
    前記キャッシュ・コヒーレンシ・コマンドに関する情報の履歴の中から前記メモリアクセスに関する情報中のメモリアドレスと同じメモリアドレスを含む前記キャッシュ・コヒーレンシ・コマンドを特定するステップと、
    特定された前記キャッシュ・コヒーレンシ・コマンドを前記メモリアクセスのタイミングに最も近いタイミングで出力した演算装置を前記メモリのいずれか1つへアクセスした演算装置として特定するステップと、を含む請求項3に記載の方法。
  5. 前記メモリアクセスに関する情報は、アクセスタイムと、コマンドの種類と、メモリアドレスとを含み、
    前記キャッシュ・コヒーレンシ・コマンドに関する情報は、コマンド発生タイムと、コマンドの種類と、メモリアドレスと、コマンドを出力した演算装置のIDとを含む、請求項1〜4のいずれか1項に記載の方法。
  6. 相互にインターコネクトを介して通信可能な少なくとも2以上の演算装置を含み、前記演算装置の各々は、キャッシュを備えると共にメモリバスを介して対応するメモリに接続するシステムにおいて、前記メモリのいずれか1つである第1メモリへアクセスした演算装置を特定するための方法であって、
    前記第1メモリに接続する前記メモリバスを介して前記第1メモリへのメモリアクセスをモニターするステップと、
    前記演算装置間の前記インターコネクトを介してキャッシュ・コヒーレンシ・コマンドをモニターし、当該コマンドに関する情報を保管するステップと、
    前記コマンドに関する情報の履歴の中から前記第1メモリへのメモリアクセスのメモリアドレスと同じメモリアドレスを含むコマンドを特定するステップと、
    特定された前記コマンドを前記第1メモリへのメモリアクセスのタイミングに最も近いタイミングで出力した演算装置を前記第1メモリへアクセスした演算装置として特定する
    ステップと、を含む方法。
  7. 請求項1〜6のいずれか1項の方法の各ステップを実行するためのコンピュータ・プログラム。
JP2014102910A 2014-05-17 2014-05-17 メモリアクセストレース方法 Active JP5936152B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2014102910A JP5936152B2 (ja) 2014-05-17 2014-05-17 メモリアクセストレース方法
US14/700,808 US9940237B2 (en) 2014-05-17 2015-04-30 Identification of a computing device accessing a shared memory
US14/746,886 US9928175B2 (en) 2014-05-17 2015-06-23 Identification of a computing device accessing a shared memory
US15/704,498 US10169237B2 (en) 2014-05-17 2017-09-14 Identification of a computing device accessing a shared memory
US15/704,551 US10241917B2 (en) 2014-05-17 2017-09-14 Identification of a computing device accessing a shared memory
US16/246,583 US11163681B2 (en) 2014-05-17 2019-01-14 Identification of a computing device accessing a shared memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014102910A JP5936152B2 (ja) 2014-05-17 2014-05-17 メモリアクセストレース方法

Publications (2)

Publication Number Publication Date
JP2015219727A JP2015219727A (ja) 2015-12-07
JP5936152B2 true JP5936152B2 (ja) 2016-06-15

Family

ID=54538624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014102910A Active JP5936152B2 (ja) 2014-05-17 2014-05-17 メモリアクセストレース方法

Country Status (2)

Country Link
US (5) US9940237B2 (ja)
JP (1) JP5936152B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5936152B2 (ja) * 2014-05-17 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリアクセストレース方法
US11010054B1 (en) 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10713334B1 (en) 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US10515014B1 (en) * 2015-06-10 2019-12-24 EMC IP Holding Company LLC Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0625984B2 (ja) * 1990-02-20 1994-04-06 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン マルチプロセツサ・システム
US5265232A (en) * 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
JP2819982B2 (ja) * 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
JPH09311820A (ja) * 1996-03-19 1997-12-02 Hitachi Ltd マルチプロセッサシステム
US5892970A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient block copy operations
US6073225A (en) * 1997-06-24 2000-06-06 Intel Corporation Method and apparatus for monitoring bus transactions based on cycle type and memory address range
US6065077A (en) 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing system
US6457100B1 (en) * 1999-09-15 2002-09-24 International Business Machines Corporation Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls
US6598128B1 (en) * 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
JP2002032265A (ja) * 2000-07-14 2002-01-31 Hitachi Ltd キャッシュ・アクセス制御方式およびデータ処理システム
US6711651B1 (en) * 2000-09-05 2004-03-23 International Business Machines Corporation Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching
JP3732397B2 (ja) * 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US6631450B1 (en) * 2000-10-26 2003-10-07 International Business Machines Corporation Symmetric multiprocessor address bus protocol with intra-cache line access information
US6799217B2 (en) 2001-06-04 2004-09-28 Fujitsu Limited Shared memory multiprocessor expansion port for multi-node systems
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
KR100441712B1 (ko) 2001-12-29 2004-07-27 엘지전자 주식회사 확장 가능형 다중 처리 시스템 및 그의 메모리 복제 방법
US20040022094A1 (en) * 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
JP3931820B2 (ja) 2003-03-11 2007-06-20 トヨタ自動車株式会社 内燃機関および内燃機関の制御方法
US7529893B2 (en) * 2003-04-11 2009-05-05 Sun Microsystems, Inc. Multi-node system with split ownership and access right coherence mechanism
WO2004107180A1 (ja) * 2003-05-30 2004-12-09 Fujitsu Limited マルチプロセッサシステム
US7434008B2 (en) * 2004-04-23 2008-10-07 Hewlett-Packard Development Company, L.P. System and method for coherency filtering
EP1710703A1 (fr) * 2005-04-04 2006-10-11 Stmicroelectronics Sa Cohérence de cache dans un système multiprocesseurs à mémoire partagée
JP2006318412A (ja) 2005-05-16 2006-11-24 Toshiba Corp 半導体装置
JP4806959B2 (ja) * 2005-05-17 2011-11-02 株式会社日立製作所 主記憶共有型マルチプロセッサシステムの高性能化技術
US20080313364A1 (en) * 2006-12-06 2008-12-18 David Flynn Apparatus, system, and method for remote direct memory access to a solid-state storage device
JP2008152665A (ja) * 2006-12-19 2008-07-03 Toshiba Corp 半導体集積回路の動作解析方法
US7793130B2 (en) 2007-04-24 2010-09-07 Taiwan Semiconductor Manufacturing Company, Ltd. Mother/daughter switch design with self power-up control
US7904676B2 (en) * 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
JP4888272B2 (ja) * 2007-07-30 2012-02-29 富士通セミコンダクター株式会社 ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置
US7895400B2 (en) * 2007-09-28 2011-02-22 Oracle America, Inc. Hybrid cache coherence using fine-grained hardware message passing
US20110004729A1 (en) 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory
US9223677B2 (en) * 2008-06-11 2015-12-29 Arm Limited Generation of trace data in a multi-processor system
US8176262B2 (en) * 2009-01-12 2012-05-08 Arm Limited Handling of memory access requests to shared memory in a data processing apparatus
US8200908B2 (en) 2009-02-06 2012-06-12 Freescale Semiconductor, Inc. Method for debugger initiated coherency transactions using a shared coherency manager
JP2010244327A (ja) * 2009-04-07 2010-10-28 Toshiba Corp キャッシュシステム
JP2009193604A (ja) 2009-06-02 2009-08-27 Renesas Technology Corp 半導体情報処理装置
US8667225B2 (en) * 2009-09-11 2014-03-04 Advanced Micro Devices, Inc. Store aware prefetching for a datastream
US8327077B2 (en) * 2009-11-13 2012-12-04 International Business Machines Corporation Method and apparatus of parallel computing with simultaneously operating stream prefetching and list prefetching engines
US8375184B2 (en) * 2009-11-30 2013-02-12 Intel Corporation Mirroring data between redundant storage controllers of a storage system
US20110153944A1 (en) * 2009-12-22 2011-06-23 Klaus Kursawe Secure Cache Memory Architecture
US9129071B2 (en) * 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US9720847B2 (en) * 2013-07-17 2017-08-01 Nxp Usa, Inc. Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed
US9086974B2 (en) * 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments
US10120781B2 (en) * 2013-12-12 2018-11-06 Intel Corporation Techniques for detecting race conditions
JP5936152B2 (ja) * 2014-05-17 2016-06-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation メモリアクセストレース方法

Also Published As

Publication number Publication date
US20180004666A1 (en) 2018-01-04
US20180004665A1 (en) 2018-01-04
US20150331795A1 (en) 2015-11-19
US10169237B2 (en) 2019-01-01
US20150331797A1 (en) 2015-11-19
US10241917B2 (en) 2019-03-26
JP2015219727A (ja) 2015-12-07
US9928175B2 (en) 2018-03-27
US9940237B2 (en) 2018-04-10
US11163681B2 (en) 2021-11-02
US20190146921A1 (en) 2019-05-16

Similar Documents

Publication Publication Date Title
US7613882B1 (en) Fast invalidation for cache coherency in distributed shared memory system
JP6417344B2 (ja) 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US11163681B2 (en) Identification of a computing device accessing a shared memory
US9501408B2 (en) Efficient validation of coherency between processor cores and accelerators in computer systems
JP4566264B2 (ja) 格納および予約命令を利用して関連アプリケーションと相互参照してキャッシュライン・ポーリングを行う方法、システム、装置、およびプログラム
US20080077743A1 (en) System and method for efficient software cache coherence
US7685373B2 (en) Selective snooping by snoop masters to locate updated data
US10628313B2 (en) Dual clusters of fully connected integrated circuit multiprocessors with shared high-level cache
US9183150B2 (en) Memory sharing by processors
JP5756554B2 (ja) 半導体装置
KR20130095811A (ko) 복합 멀티-코어 및 멀티-소켓 시스템의 디버깅
WO2023121766A1 (en) System, apparatus and methods for direct data reads from memory
US9448937B1 (en) Cache coherency
JP5996828B2 (ja) コヒーレントバスを介したセマフォ管理シーケンスのパフォーマンスを改善するための方法および装置
US8938588B2 (en) Ensuring forward progress of token-required cache operations in a shared cache
JP2024501638A (ja) パケットメタデータを用いたデータ配置
US10489292B2 (en) Ownership tracking updates across multiple simultaneous operations
US20130262782A1 (en) Central processing unit, method for controlling central processing unit, 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: 20160112

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160115

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160304

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20160408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160428

R150 Certificate of patent or registration of utility model

Ref document number: 5936152

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150