JP5811194B2 - 制御装置、解析装置、解析方法、および解析プログラム - Google Patents

制御装置、解析装置、解析方法、および解析プログラム Download PDF

Info

Publication number
JP5811194B2
JP5811194B2 JP2013556102A JP2013556102A JP5811194B2 JP 5811194 B2 JP5811194 B2 JP 5811194B2 JP 2013556102 A JP2013556102 A JP 2013556102A JP 2013556102 A JP2013556102 A JP 2013556102A JP 5811194 B2 JP5811194 B2 JP 5811194B2
Authority
JP
Japan
Prior art keywords
memory
request
area
update request
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.)
Expired - Fee Related
Application number
JP2013556102A
Other languages
English (en)
Other versions
JPWO2013114540A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2013114540A1 publication Critical patent/JPWO2013114540A1/ja
Application granted granted Critical
Publication of JP5811194B2 publication Critical patent/JP5811194B2/ja
Expired - Fee Related 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
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、制御装置に関する。また、本発明は、解析装置、解析方法、および解析プログラムに関する。
近年、処理性能を向上させるために、複数のコアを1チップに搭載したマルチコアプロセッサシステムが知られている。さらに、処理性能を向上させるために、複数のコアの各々はキャッシュメモリを有している。各キャッシュメモリは1つのジョブを複数のコアで同時に実行できるようにするため、ジョブに関する記憶内容を一致させなければならない。記憶内容を一致させることをキャッシュコヒーレンスと称する。キャッシュコヒーレンスを行うために、キャッシュメモリを制御するキャッシュコントローラは、スヌープ処理を行う。
関連する技術としては、たとえば、異なる変数が同一キャッシュラインにアサインされないようにプログラムコードにダミーの変数を挿入する技術が知られている(たとえば、下記特許文献1を参照。)。
また、たとえば、キャッシュメモリを制御するキャッシュコントローラはキャッシュラインごとにコヒーレンスの制御を無効化方式にするか、更新方式にするかを切り替える(たとえば、下記特許文献2を参照。)。
また、たとえば、キャッシュメモリを制御するキャッシュコントローラは無効化要求をバッファしておき、ある一定回数以上の要求が来たら無効化する技術が知られている(たとえば、下記特許文献3を参照。)。
また、たとえば、キャッシュラインが細分化され、キャッシュコントローラは、他のコアが更新を行った場合、更新が行われたブロックのみを無効とし、他のブロックは有効としてキャッシュメモリに保存する技術が知られている(たとえば、下記特許文献4,5を参照。)。
また、たとえば、キャッシュラインが細分化され、キャッシュコントローラは、細分化されたキャッシュライン内のブロックごとに排他アクセス権ビットを付与する技術が知られている(たとえば、下記特許文献6を参照。)。
また、たとえば、CPUが2つのキャッシュを有し、CPUが同時に参照する2つのデータが異なるキャッシュに格納されるようにコードが生成されることにより、2つのデータの参照を競合させない技術が知られている(たとえば、下記特許文献7を参照。)。
また、たとえば、アクセス要求で指定されたアドレスが第1のアドレスの場合、キャッシュメモリがアクセスされず、アクセス要求で指定されたアドレスが第2のアドレスの場合、キャッシュメモリがアクセスされる技術が知られている(たとえば、下記特許文献8を参照。)。
また、1命令に含まれる複数の変数に関するデータが同一のキャッシュラインに格納されるようにコードが生成される技術が知られている(たとえば、下記特許文献9を参照。)。
特開2001−160035号公報 特開2001−34597号公報 特開2002−7371号公報 特開2000−267935号公報 特開2009−151457号公報 国際公開第2008/155844号 特開2002−7213号公報 特開2009−271606号公報 特許第3758984号公報
しかしながら、各コアがキャッシュメモリを有しているため、コアの数が増加すると、1回のスヌープ処理にかかる時間が増加してしまい、処理性能が低下する問題点がある。
1つの側面では、本発明は、処理性能の向上を図ることができる制御装置を提供することを目的とする。
本発明の一の側面によれば、複数のCPUによって共有される共有メモリに記憶された情報または前記共有メモリに格納される情報を一時的に記憶するメモリを前記複数のCPUの各々が有する場合に、前記メモリごとに前記複数のCPUの各々から前記メモリへのアクセスを制御する制御装置であって、更新要求がない前記共有メモリの領域を指定する参照要求を示す情報と、前記更新要求がある前記共有メモリの領域を指定する参照要求を示す情報と、が区別されたプログラムを実行中のCPUから参照要求を受け付ける受付部と、前記受付部により前記更新要求がない前記共有メモリの領域を指定する参照要求が受け付けられた場合、前記参照要求により指定された前記共有メモリの指定領域に記憶された情報または格納される情報についての前記実行中のCPUが有するメモリの記憶状態に応じたスヌープ処理を行わずに、前記共有メモリから前記指定領域に記憶された情報を取得する取得部と、前記取得部によって得られた情報を前記実行中のCPUが有するメモリに格納する格納部と、を有する制御装置が提案される。
本発明の他の側面によれば、複数のCPUによって共有される共有メモリに記憶された情報または前記共有メモリに格納される情報を一時的に記憶するメモリを前記複数のCPUの各々が有する場合に、前記メモリごとに前記複数のCPUの各々から前記メモリへのアクセスを制御する制御装置であって、参照要求がない前記共有メモリの領域を指定する更新要求を示す情報と、前記参照要求がある前記共有メモリの領域を指定する更新要求を示す情報と、が区別されたプログラムを実行中のCPUから更新要求を受け付ける受付部と、前記受付部により前記参照要求がない前記共有メモリの領域を指定する更新要求が受け付けられた場合、前記更新要求により指定された前記共有メモリの指定領域に記憶された情報または格納される情報についての前記実行中のCPUが有するメモリの記憶状態に応じたスヌープ処理を行わずに、前記共有メモリから前記指定領域に記憶された情報を取得する取得部と、前記取得部によって得られた情報を前記実行中のCPUが有するメモリに格納する格納部と、を有する制御装置が提案される。
本発明の一態様によれば、処理性能の向上を図ることができる。
図1は、キャッシュコントローラの動作例1を示す説明図である。 図2は、キャッシュコントローラ121の動作例2を示す説明図である。 図3は、キャッシュコントローラ121の動作例3を示す説明図である。 図4は、キャッシュコントローラ121の動作例4を示す説明図である。 図5は、マルチコアプロセッサシステム100のハードウェア構成例を示す説明図である。 図6は、キャッシュコントローラ121の機能例を示すブロック図である。 図7は、スヌープ参照要求またはスヌープ更新要求における状態遷移の一例を示す説明図である。 図8は、ノンスヌープ参照要求またはノンスヌープ更新要求における状態遷移の一例を示す説明図である。 図9は、解析装置による動作例を示す説明図である。 図10は、解析装置900の機能例を示すブロック図である。 図11は、解析装置900が行う解析処理手順例を示すフローチャートである。 図12は、図11で示した解析処理(ステップS1102)例の詳細な説明を示すフローチャートである。 図13は、図11で示した再ビルド処理(ステップS1103)の第1の例の詳細な説明を示すフローチャートである。 図14は、図11で示した再ビルド処理(ステップS1103)の第2の例の詳細な説明を示すフローチャートである。
以下に添付図面を参照して、本発明にかかる制御装置の実施の形態を詳細に説明する。ここでは、制御装置は、マルチコアプロセッサシステムの各CPUが有するキャッシュメモリを制御するメモリコントローラである。実施の形態1では、マルチコアプロセッサシステムにおいて、CPUから参照要求と更新要求とを受け付けた制御装置の動作について説明する。実施の形態2では、解析装置は、プログラムをシミュレータによって実行中に、参照要求または更新要求によって指定された共有メモリ内の領域ごとに参照要求と更新要求の有無を解析する。
(実施の形態1)
プログラムを実行中に、「if(i_packet[32]==1)」のような条件判断が発生し、かつキャッシュミスヒットが発生した場合、i_packet[32]のデータが最新かどうか、いずれかのCPUがデータの書き換えを行っていないかどうかのスヌープ処理が発生する。i_packet[32]の値はプログラムにおいて固定値であり、参照しかされない場合、スヌープ処理は不要である。そこで、実施の形態1では、制御装置は、更新要求による指定の無い共有メモリ内の領域への参照要求の場合、スヌープ処理により該領域のデータは変化しないため、スヌープ処理を行わずに共有メモリから該領域のデータを取得する。これにより制御装置は、不要なスヌープ処理の回数を減少させることができ、処理性能の向上を図ることができる。
また、プログラムを実行中に、「packet=4」のような代入処理が発生した場合、いずれかのCPUが同じキャッシュラインを保持していないかのスヌープ処理が発生する。packetの値は、いずれのCPUからも参照されない場合、スヌープ処理は不要である。そこで、実施の形態1では、制御装置は、参照要求による指定の無い共有メモリ内の領域への更新要求の場合、スヌープ処理を行わずに共有メモリから該領域のデータを取得し、取得したデータに更新要求に含まれる更新データを上書きする。これにより、不要なスヌープ処理の回数を減少させることができ、処理性能の向上を図ることができる。
図1は、キャッシュコントローラの動作例1を示す説明図である。図1の上側では、更新要求がある共有メモリ103の領域を指定する参照要求をキャッシュコントローラ121が受け付けた場合の動作例を示す。図1の下側では、更新要求がある共有メモリ103の領域を指定する参照要求をキャッシュコントローラ121が受け付けた場合の動作例を示す。更新要求がない共有メモリ103の領域を指定する参照要求は以下「ノンスヌープ参照要求」と称する。更新要求がある共有メモリ103の領域を指定する参照要求は、以下「スヌープ参照要求」と称する。
たとえば、実行コード内では、ノンスヌープ参照要求を示す情報が「Load_nc」と記述されていることとする。たとえば、実行コード内では、スヌープ参照要求を示す情報が「Load」と記述されていることとする。実行コードとは、アセンブリ言語などのCPU101が識別可能な情報であり、実行コード内には、複数の命令情報が含まれている。命令情報とは、更新要求を示す情報、参照要求を示す情報、演算命令を示す情報が挙げられる。実行コードは、設計者によってC言語などのコンピュータ処理言語によって記述されたソースコードがビルドされることにより得られる情報である。ビルドとは、ソースコードのコンパイルとライブラリリンクが行われることにより、実行コードを生成する作業である。
マルチコアプロセッサシステム100では、複数のCPU101と、共有メモリ103と、CPU101ごとにキャッシュ102と、を有している。キャッシュ102は、キャッシュメモリ122と、キャッシュメモリ122へのアクセスを制御するキャッシュコントローラ121と、を有している。マルチコアプロセッサシステム100の詳細なハードウェア構成は図面を用いて後述する。
キャッシュメモリ122は、共有メモリ103に記憶されたデータまたは共有メモリ103に格納するデータを一時的に記憶する。キャッシュメモリ122は、キャッシュラインclごとに「Tag部」と「Data部」とがあり、「Tag部」は「Status」と、「Address」と、を有している。
具体的には、「Address」には、格納対象となる共有メモリ103内の領域の先頭アドレスが登録される。「Data部」には、「Address」に格納された先頭アドレスが示す共有メモリ103内の領域から1キャッシュラインclのサイズ分の共有メモリ103内の領域のデータが格納される。
「Status」には、キャッシュラインclの状態が登録される。キャッシュラインclの状態としては、「M」「E」「S」「I」の4つの状態がある。ここでは、「Modified」は以降単に「M」と記載し、「Exclusive」は以降単に「E」と記載し、「Shared」は以降単に「S」と記載し、「Invalid」は以降単に「I」と記載する。
キャッシュラインclの「Status」に「M」が記憶されている場合、該キャッシュラインclを有するキャッシュメモリ122だけに存在し、共有メモリ103上の値から変更されていることを示している。キャッシュラインclの「Status」に「」が記憶されている場合、該キャッシュラインclを有するキャッシュメモリ122だけに存在するが、共有メモリ103上の値と一致していることを示している。
キャッシュラインclの「Status」に「S」が記憶されている場合、該キャッシュラインclを有するキャッシュメモリ122以外のキャッシュメモリ122にも存在し、共有メモリ103上の値と一致していることを示している。キャッシュラインclの「Status」に「I」が記憶されている場合、該キャッシュラインclは無効であることを示している。
図1の例では、理解の容易化のために、各キャッシュラインclには、「Status」、「Address」の代わりに「領域情報」、「Data」、の順で記憶されることとする。
まず、図1の上側について、キャッシュコントローラ121−2が、ノンスヌープ参照要求を受け付けた場合の動作例について説明する。キャッシュラインcl1−1とキャッシュラインcl1−2に「I」が登録されているのは、キャッシュメモリ122に定数aの値が登録されていないことを示している。
キャッシュコントローラ121−2は、CPU101−2からの参照要求を受け付ける。たとえば、CPU101−2とキャッシュコントローラ121−2とを接続する信号線は、ノンスヌープ参照要求と、スヌープ参照要求と、に応じてそれぞれ分けられている。たとえば、CPU101−2は、参照要求が「Load_nc」であれば、「Load_nc」に応じた信号線にイネーブル信号を出力し、参照要求が「Load」であれば、「Load」に応じた信号線にイネーブル信号を出力する。したがって、キャッシュコントローラ121−2は、いずれの信号線にイネーブル信号が入力されたかによって、いずれの参照要求を受け付けたかを判別できる。
そして、キャッシュコントローラ121−2は、ノンスヌープ参照要求を受け付けた場合、スヌープ処理を実行せずに、共有メモリ103から参照要求によって指定された指定領域に記憶されたデータを取得する。キャッシュの1キャッシュラインは、CPU101が処理するデータサイズより大きなデータサイズで管理されることがある。ここでは、指定領域を含む1キャッシュラインcl分の共有メモリ103内の領域は、領域A1である。そのため、領域A1に記憶された変数aの値と変数bの値が取得される。領域A1に記憶された変数aと変数bのいずれか一方が参照される参照要求が発生しても、1キャッシュラインcl分のデータとして、変数aと変数bの両方の値が取得される。
そして、キャッシュコントローラ121−2は、キャッシュメモリ122―2に共有メモリ103から取得したデータを格納する。スヌープ処理とは、キャッシュメモリ122内の記憶状態に応じて、他のキャッシュメモリ122との記憶内容を一致させるために行う処理である。
具体的には、たとえば、キャッシュコントローラ121−2は、「Load_nc」を受け付けた場合、共有メモリ103を制御するメモリコントローラに対して、領域A1に記憶されたデータを取得する参照要求を送る。具体的には、該参照要求では、参照対象のデータが記憶された領域の先頭アドレスが指定される。
そして、共有メモリ103を制御するメモリコントローラは、領域A1にアクセスし、記憶されたデータを読み出す。共有メモリ103を制御するメモリコントローラは、要求元のキャッシュコントローラ121−2に読み出したデータを通知する。ここでは、キャッシュコントローラ121−2は、定数aの値と定数bの値を取得する。定数aと定数bのいずれに参照要求が発生しても、1キャッシュラインcl分のデータとして、定数aと定数bの両方の値が取得される。
つぎに、たとえば、キャッシュコントローラ121−2は、取得した定数aの値および定数bの値と、領域A1の先頭アドレスと、を関連付けて、キャッシュメモリ122―2に格納する。図1では、領域A1の先頭アドレスの代わりに、領域情報として「A1」がキャッシュラインcl1−2に登録されている。そして、キャッシュコントローラ121−2は、取得したデータが格納されたキャッシュラインcl1−2の「Status」を「E」に設定する。そして、キャッシュコントローラ121−2は、CPU101−2に応答する。参照要求の場合、キャッシュコントローラ121−2は、参照要求に応じたデータを通知する。
つぎに、図1の下側について、キャッシュコントローラ121−2が、スヌープ参照要求を受け付けた場合の動作例について説明する。キャッシュラインcl2−1とキャッシュラインcl2−2に「I」が登録されているのは、キャッシュメモリ122に変数cの値が登録されていないことを示している。
上述したように、キャッシュコントローラ121−2は、参照要求を受け付ける。キャッシュコントローラ121−2は、スヌープ参照要求を受け付けた場合、キャッシュメモリ122内の記憶内容に応じてスヌープ処理を実行する。
具体的には、キャッシュコントローラ121−2は、キャッシュメモリ122に変数cが記憶されているか否かを判断する。たとえば、キャッシュコントローラ121−2は、キャッシュメモリ122−2に変数cが記憶されていないと判断された場合、他のキャッシュ102−1に変数cについてスヌープ処理を実行する。
たとえば、キャッシュメモリ122−1には、変数cが登録されていない。ここでは、スヌープ処理によって、変数cの値が得られなかったため、キャッシュコントローラ121−2は、共有メモリ103から指定領域に記憶されたデータを取得する。指定領域を含む1キャッシュラインcl分の共有メモリ内の領域は、領域A2である。そのため、領域A2に記憶された変数cの値と変数dの値が取得される。領域A2に記憶された変数cと変数dのいずれか一方が参照される参照要求が発生しても、1キャッシュラインcl分のデータとして、変数cと変数dの両方の値が取得される。
そして、キャッシュコントローラ121−2は、取得したデータと、領域A2の先頭アドレスと、をキャッシュメモリ122に格納する。図1では、領域A2の先頭アドレスの代わりに、領域情報として「A2」がキャッシュラインcl2−2に登録されている。そして、キャッシュコントローラ121−2は、取得したデータが格納されたキャッシュラインcl2−2の「Status」に「E」を設定する。そして、キャッシュコントローラ121−2は、CPU101−2に応答する。参照要求の場合、キャッシュコントローラ121−2は、参照要求に応じた参照データを通知する。
図1の上側と図1の下側との比較によれば、キャッシュコントローラ121は、更新要求がない共有メモリ103内の領域を指定する参照要求の場合に、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができる。したがって、処理能力を向上させることができる。
図2は、キャッシュコントローラ121の動作例2を示す説明図である。図2では、キャッシュコントローラ121−2が、ノンスヌープ参照要求を受け付けた場合において、すでにキャッシュメモリ122に参照要求によって指定された共有メモリ103内の指定領域に記憶されたデータがある場合の動作例である。
キャッシュコントローラ121−2は、ノンスヌープ参照要求を受け付けた場合、キャッシュメモリ122に参照要求によって指定された共有メモリ103内の指定領域に格納されたデータがあるか否かを判断する。上述したように、ノンスヌープ参照要求を受け付けた場合、キャッシュコントローラ121−2は、スヌープ処理を行わない。
具体的には、たとえば、キャッシュコントローラ121−2は、キャッシュメモリ122から「Status」に「M」、「E」、「S」のいずれかが設定されたキャッシュラインclを探索する。たとえば、キャッシュコントローラ121−2は、探索したキャッシュラインclに格納されたアドレスから、該アドレスに1キャッシュラインclのデータサイズを加算したアドレスまでの間に参照要求が指定するアドレスが含まれるか否かを判断する。含まれている場合、キャッシュコントローラ121−2は、参照要求によって指定された共有メモリ103の指定領域に記憶されたデータがキャッシュメモリ122−2に記憶されていると判断する。一方、含まれていない場合、キャッシュコントローラ121−2は、参照要求によって指定された共有メモリ103の指定領域に記憶されたデータがキャッシュメモリ122に記憶されていないと判断する。
つぎに、参照要求によって指定された共有メモリ103の指定領域に記憶されたデータがキャッシュメモリ122−2に記憶されている場合、キャッシュコントローラ121−2は、キャッシュメモリ122−2から該データを読み出す。そして、キャッシュコントローラ121−2は、CPU101−2へ応答する。
また、参照要求によって指定された指定領域に記憶されたデータがキャッシュメモリ122に記憶されていない場合、キャッシュコントローラ121−2は、図1に示したように共有メモリ103から指定領域のデータを読み出す。
これにより、更新要求のない共有メモリ103内の領域への参照要求について、キャッシュメモリ122に参照対象となるデータが記憶されていれば、キャッシュコントローラ121−2は、直ちにCPU101−2へ応答することができる。したがって、キャッシュコントローラ121−2は、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができ、処理能力を向上させることができる。
図3は、キャッシュコントローラ121の動作例3を示す説明図である。図3の上側では、ノンスヌープ更新要求をキャッシュコントローラ121−2が受け付けた場合の動作例を示す。図3の下側では、参照要求がある共有メモリ103の領域を指定する更新要求をキャッシュコントローラ121−2が受け付けた場合の動作例を示す。参照要求がない共有メモリ103の領域を指定する更新要求は以下「ノンスヌープ更新要求」と称する。参照要求がある共有メモリ103の領域を指定する更新要求は、以下「スヌープ更新要求」と称する。
たとえば、プログラム内では、ノンスヌープ更新要求を示すコードが「Store_nc」と記述され、スヌープ更新要求を示すコードが「Store」と記述されていることとする。
まず、図3の上側について、キャッシュコントローラ121−2が、ノンスヌープ更新要求を受け付けた場合の動作例について説明する。キャッシュラインcl3−1とキャッシュラインcl3−2に「I」が登録されているのは、キャッシュメモリ122に変数eの値が登録されていないことを示している。
キャッシュコントローラ121−2は、CPU101−2からの更新要求を受け付ける。たとえば、CPU101−2とキャッシュコントローラ121−2とを接続する信号線は、ノンスヌープ更新要求と、スヌープ更新要求と、に応じてそれぞれ分けられている。たとえば、CPU101−2は、更新要求が「Store_nc」であれば、「Store_nc」に応じた信号線にイネーブル信号を出力し、更新要求が「Store」であれば、「Store」に応じた信号線にイネーブル信号を出力する。したがって、キャッシュコントローラ121−2は、いずれの信号線にイネーブル信号が入力されたかによって、いずれの更新要求を受け付けたかを判別できる。
そして、キャッシュコントローラ121−2は、ノンスヌープ更新要求を受け付けた場合、スヌープ処理を実行せずに、共有メモリ103から更新要求によって指定された指定領域に記憶されたデータを取得する。そして、キャッシュコントローラ121−2は、キャッシュメモリ122−2に共有メモリ103から取得したデータを格納する。
たとえば、キャッシュコントローラ121−2は、受け付けた更新要求が「Store_nc」の場合、共有メモリ103を制御するメモリコントローラに、該更新要求によって指定された共有メモリ103内の指定領域に記憶されたデータを取得する更新要求を送る。たとえば、更新要求では、参照対象のデータが記憶された領域の先頭アドレスが指定されている。
そして、共有メモリ103を制御するメモリコントローラは、共有メモリ103の指定領域にアクセスし、記憶されたデータを読み出す。共有メモリ103を制御するメモリコントローラは、要求元のキャッシュコントローラ121−2に読み出したデータを通知する。ここでは、キャッシュコントローラ121−2は、変数eの値と変数fの値を取得する。変数eと変数fのいずれに更新要求が発生しても、1キャッシュラインcl分のデータとして、変数eと変数fの両方の値が取得される。
つぎに、たとえば、キャッシュコントローラ121−2は、取得した変数eと変数fの値と、受け付けた更新要求に指定された指定領域の先頭アドレスとを関連付けて、キャッシュメモリ122に格納する。そして、たとえば、キャッシュコントローラ121−2は、取得したデータが格納されたキャッシュラインcl3−2に、更新要求に含まれる更新データを上書きする。そして、キャッシュコントローラ121−2は、上書きが行われたキャッシュラインcl3−2の「Status」を「M」に設定する。そして、キャッシュコントローラ121−2は、CPU101−2に応答する。具体的には、たとえば、更新要求の場合、キャッシュコントローラ121−2は、更新要求の終了をCPU101−2に通知する。
つぎに、図3の下側について、キャッシュコントローラ121−2が、スヌープ更新要求を受け付けた場合の動作例について説明する。キャッシュラインcl4−1とキャッシュラインcl4−2に「I」が登録されているのは、キャッシュメモリ122に変数gの値が登録されていないことを示している。
上述したように、キャッシュコントローラ121−2は、CPU101−2から更新要求を受け付ける。キャッシュコントローラ121−2は、スヌープ更新要求を受け付けた場合、キャッシュメモリ122内の記憶内容に応じてスヌープ処理を実行する。
具体的には、キャッシュコントローラ121−2は、キャッシュメモリ122−2に変数gが記憶されているか否かを判断する。たとえば、キャッシュメモリ122−2に変数gが記憶されていないと判断された場合、キャッシュコントローラ121−2は、他のキャッシュ102−1に変数gについてスヌープ処理を実行する。ここでは、スヌープ処理によって、変数gの値が得られなかったため、キャッシュコントローラ121−2は、共有メモリ103から指定領域に記憶されたデータを取得する。ここでは、変数gの値と変数hの値が取得される。変数gと変数hのいずれに更新要求が発生しても、1キャッシュラインcl分のデータとして、変数gと変数hの両方の値が取得される。
そして、キャッシュコントローラ121−2は、取得したデータをキャッシュメモリ122−2に格納する。そして、たとえば、キャッシュコントローラ121−2は、取得したデータが格納されたキャッシュラインcl4−2に、更新要求に含まれる更新データを上書きする。そして、キャッシュコントローラ121−2は、上書きが行われたキャッシュラインcl4−2の「Status」を「M」に設定する。そして、キャッシュコントローラ121−2は、CPU101−2に応答する。具体的には、たとえば、更新要求の場合、キャッシュコントローラ121−2は、更新要求の終了をCPU101−2に通知する。
図3の上側と図3の下側との比較によれば、キャッシュコントローラ121−2は、参照要求がない共有メモリ103内の領域を指定する更新要求の場合に、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができる。したがって、処理能力を向上させることができる。
図4は、キャッシュコントローラ121の動作例4を示す説明図である。図4では、キャッシュコントローラ121が、ノンスヌープ更新要求を受け付けた場合において、すでにキャッシュメモリ122に更新要求によって指定された共有メモリ103内の指定領域に記憶されたデータがある場合の動作例である。
キャッシュコントローラ121−2は、ノンスヌープ更新要求を受け付けた場合、キャッシュメモリ122に更新要求によって指定された共有メモリ103内の指定領域に格納されたデータがあるか否かを判断する。上述したように、ノンスヌープ更新要求を受け付けた場合、キャッシュコントローラ121−2は、スヌープ処理を行わない。
具体的には、たとえば、キャッシュコントローラ121−2は、キャッシュメモリ122から「Status」に「M」、「E」、「S」のいずれかが設定されたキャッシュラインclを探索する。そして、たとえば、キャッシュコントローラ121−2は、探索したキャッシュラインclに格納されたアドレスから、該アドレスに1キャッシュラインclのデータサイズを加算したアドレスまでの間に更新要求が指定するアドレスが含まれているかを判断する。含まれている場合、キャッシュコントローラ121−2は、更新要求によって指定された共有メモリ103の指定領域に記憶されたデータがキャッシュメモリ122−2に記憶されていると判断する。一方、含まれていない場合、キャッシュコントローラ121−2は、更新要求によって指定された共有メモリ103の指定領域に記憶されたデータがキャッシュメモリ122−2に記憶されていると判断する。
つぎに、更新要求が指定する指定領域に記憶されたデータがキャッシュメモリ122に記憶されている場合、キャッシュコントローラ121−2は、該指定領域に記憶されたデータを記憶するキャッシュラインcl3−2に更新要求の更新データを上書きする。図4の例では、変数eの値が4から3に上書きされた。そして、キャッシュコントローラ121−2は、CPU101−2へ応答する。
また、更新要求によって指定された指定領域に記憶されたデータがキャッシュメモリ122に記憶されていない場合、キャッシュコントローラ121−2は、図3に示したような動作を行う。
これにより、参照要求のない共有メモリ103内の領域への更新要求について、キャッシュメモリ122−2に参照対象となるデータが記憶されていれば、キャッシュコントローラ121−2は、直ちにCPU101−2へ応答することができる。したがって、キャッシュコントローラ121−2は、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができ、処理能力を向上させることができる。
これにより、ノンスヌープ更新要求で指定された指定領域のデータがキャッシュメモリ122−2に記憶されていれば、キャッシュコントローラ121−2は、直ちにキャッシュメモリ122−2に更新要求の更新データを上書きする。したがって、キャッシュコントローラ121−2は、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができ、処理能力を向上させることができる。
(マルチコアプロセッサシステム100のハードウェア構成例)
図5は、マルチコアプロセッサシステム100のハードウェア構成例を示す説明図である。本実施の形態のマルチコアプロセッサシステム100において、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
マルチコアプロセッサシステム100は、複数のCPU101と、各々のCPU101に対応したキャッシュ102と、共有メモリ103と、メモリコントローラ104と、ストレージ105と、を有している。さらに、マルチコアプロセッサシステム100は、I/F(InterFace)106と、ディスプレイ107と、マウス108と、キーボード109と、を有している。キャッシュ102と、共有メモリ103と、メモリコントローラ104と、ストレージ105と、I/F106と、ディスプレイ107と、マウス108と、キーボード109とは、バス110を介して接続されている。複数のCPU101は、キャッシュ102を介してバス110と接続されている。
ここで、たとえば、CPU101−1は、マルチコアプロセッサシステム100の全体の制御を司る。たとえば、CPU101−1は、利用者によって起動されたアプリケーションのスレッドをいずれのCPU101に割り当てるかをスケジューリングする。アプリケーションは、ジョブであり、スレッドとは、CPU101の処理単位である。たとえば、CPU101−1〜CPU101−nは、割り当てられたスレッドを実行する。キャッシュ102は、キャッシュコントローラ121と、キャッシュメモリ122と、を有している。
共有メモリ103は、複数のCPU101で共有され、CPU101のワークエリアとして使用される。共有メモリ103としては、たとえば、RAMが挙げられる。メモリコントローラ104は、複数のCPU101から共有メモリ103へのアクセスを制御する。ストレージ105は、ブートプログラムやアプリケーションのプログラムを記憶している。ストレージ105としては、たとえば、磁気ディスクが挙げられる。
I/F106は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNWに接続され、このネットワークNWを介して他の装置に接続される。そして、I/F106は、ネットワークNWと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F106には、たとえばモデムやLANアダプタなどを採用することができる。
ディスプレイ107は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ107は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
キーボード109は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス108は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
(キャッシュコントローラ121の機能例)
図6は、キャッシュコントローラ121の機能例を示すブロック図である。図6では、CPU101とキャッシュ102との接続関係と、キャッシュコントローラ121の具体的な機能例を示す。上述したように、キャッシュメモリ122は、キャッシュラインclの集合である。各キャッシュラインclは、「Tag部」と「Data部」とのフィールドを有している。「Tag部」は、「Status」と「Address」とのフィールドを有している。
CPU101とキャッシュコントローラ121とは、「Address」と各種要求をCPU101からキャッシュコントローラ121へ入力する信号線と、Dataを互いに入出力する信号線と、によって接続されている。ここでは、各種要求には、「Load」と「Load_nc」と、「Store」と「Store_nc」と、がある。キャッシュコントローラ121とキャッシュメモリ122とは、「Status」と、「Address」と、「Data」と、を互いに入出力する信号線によって接続されている。さらに、キャッシュコントローラ121とキャッシュメモリ122とは、書き込みと読み出しのいずれの信号であるかを示す「Read/Write」の信号線によって接続されている。
キャッシュコントローラ121は、受付部601と、取得部602と、格納部603と、応答部604と、を有している。キャッシュコントローラ121の各部は、NAND回路、NOR回路やFF(Flip Flop)などの回路素子によって実現される。または、キャッシュコントローラ121は演算装置を有し、各機能および各動作を実現するプログラムを該演算装置が実行することにより実現されてもよい。つぎに、本実施の形態にかかる各部の詳細な説明をする。
受付部601は、ノンスヌープ参照要求を示す情報と、スヌープ参照要求を示す情報と、が区別されたプログラムを実行中のCPU101から参照要求を受け付ける。ここで、プログラムとは、上述した実行コードである。具体的には、たとえば、受付部601は、CPU101によって「Load」の信号線または「Load_nc」の信号線にイネーブル信号が入力されることにより、参照要求を受け付ける。CPU101は、「Load」の信号線または「Load_nc」の信号線にイネーブル信号を出力すると同時に「Address」の信号線にアドレス情報を出力する。
つぎに、取得部602は、受付部601によりノンスヌープ参照要求が受け付けられた場合、スヌープ処理を行わずに、共有メモリ103から指定領域に記憶された情報を取得する。具体的には、たとえば、取得部602は、受付部601により「Load_nc」を受け付けた場合、「Address」の信号線に入力されたアドレス情報が示す共有メモリ103内の領域に記憶されたデータを、バスとメモリコントローラ104を介して取得する。
そして、格納部603は、取得部602によって得られた情報を実行中のCPU101が有するキャッシュメモリ122に格納する。具体的には、たとえば、格納部603は、「Read/Write」の信号線に「Write」を示す信号、「Status」の信号線に「M」、を出力する。同時に、たとえば、格納部603は、「Address」の信号線に受け付けたアドレス情報を含む共有メモリ103内の領域の先頭アドレス情報、「Data」の信号線に取得部602によって取得されたデータを出力する。これにより、キャッシュメモリ122は、いずれかのキャッシュラインclに取得されたデータを格納する。
また、取得部602は、スヌープ参照要求が受け付けられた場合において、受け付けた参照要求に指定された指定領域に記憶されたデータがキャッシュメモリ122に格納されている場合、共有メモリ103から指定領域に記憶された情報を取得しない。
また、受付部601は、ノンスヌープ更新要求を示す情報と、スヌープ更新要求を示す情報と、が区別されたプログラムを実行中のCPU101から更新要求を受け付ける。具体的には、たとえば、受付部601は、CPU101によって「Store」の信号線または「Stoer_nc」の信号線にイネーブル信号が入力されることにより、更新要求を受け付ける。CPU101は、「Store」の信号線または「Store_nc」の信号線にイネーブル信号を出力すると同時に「Address」の信号線にアドレス情報を出力する。
つぎに、取得部602は、受付部601によりノンスヌープ更新要求が受け付けられた場合、スヌープ処理を行わずに、共有メモリ103から指定領域に記憶された情報を取得する。具体的には、たとえば、取得部602は、受付部601により「Store_nc」を受け付けた場合、「Address」の信号線に入力されたアドレス情報が示す共有メモリ103内の領域に記憶されたデータを、バスとメモリコントローラ104を介して取得する。
そして、格納部603は、取得部602によって得られた情報を実行中のCPU101が有するキャッシュメモリ122に格納する。具体的には、たとえば、格納部603は、「Read/Write」の信号線に「Write」を示す信号と、「Status」の信号線に「M」と、をキャッシュメモリ122に出力する。同時に、たとえば、格納部603は、「Address」の信号線に受け付けたアドレス情報を含む共有メモリ103内の領域の先頭アドレス情報と、「Data」の信号線に取得部602によって取得されたデータと、を出力する。これにより、キャッシュメモリ122は、いずれかのキャッシュラインclに取得されたデータを格納する。
また、取得部602は、スヌープ更新要求が受け付けられた場合において、受け付けた更新要求に指定された指定領域に記憶されたデータがキャッシュメモリ122に格納されている場合、共有メモリ103から指定領域に記憶された情報を取得しない。
(状態遷移例)
つぎに、通常の参照要求または更新要求における「Status」に設定される状態の遷移と、実施の形態1にかかる参照要求または更新要求における「Status」に設定される状態の遷移と、について説明する。
図7は、スヌープ参照要求またはスヌープ更新要求における状態遷移の一例を示す説明図である。図7では、キャッシュコントローラ121がスヌープ参照要求またはスヌープ更新要求を受け付けた場合において、該要求によって更新または参照されるキャッシュラインclに設定される「Status」の状態遷移図を示している。図7において、実線によって示す遷移は、キャッシュラインclを有するキャッシュメモリ122を制御するキャッシュコントローラ121が受け付けた要求に沿った遷移である。破線によって示す遷移は、キャッシュ102からのスヌープ処理による遷移である。遷移に付された情報が遷移条件である。各状態において、遷移条件が満たされると、状態が遷移する。各遷移条件について説明する。
「Read Hit」とは、スヌープ参照要求を受け付けたキャッシュコントローラ121が制御するキャッシュメモリ122に、スヌープ参照要求が示す共有メモリ103内の領域に記憶されたデータが格納されていることを示している。
「Read Miss(Snoop hit)」とは、スヌープ参照要求を受け付けたキャッシュコントローラ121が制御するキャッシュメモリ122に、スヌープ参照要求が示す共有メモリ103内の領域に記憶されたデータが格納されていない。そして、キャッシュコントローラ121がスヌープ処理によって他のキャッシュメモリ122から該データが得られたことを示している。
「Read Miss(Snoop miss)」とは、スヌープ参照要求を受け付けたキャッシュコントローラ121が制御するキャッシュメモリ122に、スヌープ参照要求が示す共有メモリ103内の領域に記憶されたデータが格納されていない。そして、キャッシュコントローラ121が、スヌープ処理によって他のキャッシュメモリ122から該データが得られないために、共有メモリ103から該データを取得することを示している。
「Write Hit」とは、スヌープ更新要求を受け付けたキャッシュコントローラ121が制御するキャッシュメモリ122に、スヌープ更新要求が示す共有メモリ103内の領域に記憶されたデータが含まれている。そして、キャッシュコントローラ121が該データにスヌープ更新要求が含むデータを上書きすることを示している。
「Write Miss」とは、スヌープ更新要求を受け付けたキャッシュコントローラ121が制御するキャッシュメモリ122にスヌープ更新要求が示す共有メモリ103内の領域に記憶されたデータが含まれていない。そして、キャッシュコントローラ121がスヌープ処理によって他のキャッシュメモリ122からデータを取得する。そして、キャッシュコントローラ121が該データにスヌープ更新要求が含むデータを上書きすることを示している。
「Write Back」とは、スヌープ更新要求を受け付けたキャッシュコントローラ121が他のキャッシュコントローラ121からのスヌープ処理によって共有メモリ103内の領域にデータを書き戻すことを示している。
「Invalidate」とは、他のキャッシュコントローラ121からのスヌープ処理によって無効化処理をキャッシュコントローラ121が受け付けると、該当するキャッシュラインclを無効化することを示している。
「Snoop hit」とは、スヌープ更新要求またはスヌープ参照要求を受け付けた他のキャッシュコントローラ121がスヌープ処理によって所望のデータを得られたことを示している。
図8は、ノンスヌープ参照要求またはノンスヌープ更新要求における状態遷移の一例を示す説明図である。図8では、キャッシュコントローラ121が実施の形態1にかかる参照要求または更新要求を受け付けた場合において、該要求によって更新または参照されるキャッシュラインclに設定される「Status」の状態遷移図を示している。
図8において、実線によって示す遷移は、キャッシュラインclを有するキャッシュメモリ122を制御するキャッシュコントローラ121が受け付けた要求に沿った遷移である。遷移に付された情報が遷移条件である。各状態において、遷移条件が満たされると、状態が遷移する。
実行コード内の更新要求および参照要求について、スヌープ更新要求とノンスヌープ更新要求、スヌープ参照要求とノンスヌープ参照要求が正確に区別されている場合、「S」の状態に遷移することはない。つぎに、各遷移条件について説明する。
「Read(nc)hit」とは、ノンスヌープ参照要求を受け付けたキャッシュコントローラ121が有するキャッシュメモリ122に、ノンスヌープ参照要求が示す共有メモリ103内の領域に記憶されたデータが記憶されていることを示している。
「Read(nc)miss」とは、ノンスヌープ参照要求を受け付けたキャッシュコントローラ121が共有メモリ103からノンスヌープ参照要求が示す共有メモリ103内の領域に記憶されたデータを取得する。そして、該キャッシュコントローラ121が取得したデータをキャッシュメモリ122に格納することを示している。
「Write(nc)hit」とは、ノンスヌープ更新要求を受け付けたキャッシュコントローラ121が有するキャッシュメモリ122に、ノンスヌープ更新要求が示す共有メモリ103内の領域に記憶されたデータが記憶されている。そして、キャッシュコントローラ121が該データにノンスヌープ更新要求に含まれるデータを上書きする。
「Write(nc)miss」とは、ノンスヌープ更新要求を受け付けたキャッシュコントローラ121が有するキャッシュメモリ122に、ノンスヌープ更新要求が示す共有メモリ103内の領域に記憶されたデータが記憶されていない。そのため、キャッシュコントローラ121が共有メモリ103からノンスヌープ更新要求が示す共有メモリ103内の領域に記憶されたデータを取得する。そして、キャッシュコントローラ121が該データにノンスヌープ更新要求に含まれるデータを上書きする。
実施の形態1で説明したように、制御装置は、共有メモリ内の参照だけの領域への参照要求であると、他のCPUにより該領域は更新されないため、スヌープ処理を行わずに共有メモリから該領域に記憶されたデータを取得する。これにより、処理時間の短縮化を図ることができ、処理性能の向上を図ることができる。
また、実施の形態1で説明したように、制御装置は、共有メモリ内の更新だけの領域への更新要求であると、他のCPUにより該領域は参照されないため、スヌープ処理を行わずに共有メモリから該領域に記憶されたデータを取得する。そして、制御装置は取得したデータをキャッシュに格納後、格納した該データに参照要求が示すデータを上書きする。これにより、処理時間の短縮化を図ることができ、処理性能の向上を図ることができる。
(実施の形態2)
実施の形態2では、解析装置は、プログラムをシミュレータによって実行中に、参照要求または更新要求によって指定された共有メモリ内の領域ごとに参照要求と更新要求の有無を解析する。そして、実施の形態2では、解析装置は、プログラム内の参照要求を示す情報について参照要求が示すメモリ内の領域に更新が行われるか否かを判断する。これにより、プログラムの設計者が、判断結果を参照することにより、プログラムに含まれるいずれの参照要求についてノンスヌープ参照要求を示す情報に変換を行うかを判別することができる。したがって、解析装置はプログラムの設計者の手間を省くことができる。
また、実施の形態2では、解析装置は、プログラム内の更新要求を示す情報について更新要求が示すメモリ内の領域に参照が行われるか否かを判断する。これにより、プログラムの設計者が、判断結果を参照することにより、プログラムに含まれるいずれの更新要求についてノンスヌープ更新要求を示す情報に変換を行うかを判別することができる。したがって、解析装置はプログラムの設計者の手間を省くことができる。
解析装置のハードウェア構成については、図5のマルチコアプロセッサシステムのハードウェア構成と同一であってもよいし、マルチコアプロセッサでなくてもよい。
図9は、解析装置による動作例を示す説明図である。図9に示すメモリアクセス情報910は、メモリモデル内の領域ごとに参照要求によって指定された回数と更新要求によって指定された回数を示している。メモリアクセス情報910は、アドレス、CPUID、参照要求数、更新要求数のフィールドを有する。アドレスのフィールドには、メモリモデルがキャッシュラインのサイズで分けられた複数の領域の各領域の先頭アドレスが登録される。アドレスのフィールドにはメモリモデルのアドレス順に情報が設定されており、たとえば、アドレスaddr0からアドレスaddr1の直前のアドレスまでによって1つの領域が示されている。CPUIDのフィールドには、アドレスのフィールドに登録されたアドレスにアクセスを行ったCPUモデルの識別情報が登録される。参照要求数のフィールドには、アドレスのフィールドに登録されたアドレスに参照要求が行われた回数が登録される。更新要求数のフィールドには、アドレスのフィールドに登録されたアドレスに更新要求が行われた回数が登録される。各フィールドに情報が設定されることにより、解析情報911−1〜911−mがレコードとして記憶される。
まず、解析装置900は、プログラムを実行中に、参照要求または更新要求によって指定されたメモリ内の領域ごとに参照要求と更新要求の有無を解析する。ここで、プログラムとは、実行コード920である。具体的には、たとえば、解析装置900は、マルチコアプロセッサシステムがモデル化されたシステムモデルと、検証パターンと、実行コード920と、をシミュレータに与えることにより、実行コード920のシミュレーションを行う。
ここで、システムモデルとは、たとえば、ESL(Electronic System Level)モデルであってもよい。ここで、ESLモデルとは、ハードウェアデバイスのビヘイビア(ふるまい)をもとに記述される。ESLシミュレータにESLモデルが与えられると、ESLシミュレータには、ESLモデルに記述されたハードウェア環境をシミュレーションする。検証パターンとは、実行コード920に与えるシミュレーションの条件である。たとえば、実行コード920が画像処理に関するプログラムであれば、検証用の画像データであったり、画像処理によって画像データが加工される場合の条件であったりする。
そして、たとえば、解析装置900は、実行コード920をCPUモデル901が実行中に、CPUモデル901からメモリモデル902への参照要求または更新要求を検出する。たとえば、解析装置900は、「Store x=3」を検出すると、「x」が格納される領域を示すアドレスが示す領域を含む領域の先頭アドレスを有する解析情報911をメモリアクセス情報910から特定する。そして、たとえば、解析装置900は、特定された解析情報911のCPUIDのフィールドにCPUモデル901の識別情報を登録する。さらに、たとえば、解析装置900は、特定された解析情報911の更新要求回数のフィールドに設定された値をカウントアップする。このようにして、解析装置900によってメモリアクセス情報910は更新される。
つぎに、解析装置900は、シミュレータによるシミュレーションが終了すると、プログラム内の参照要求を示す情報によって指定されたメモリ内の領域が、更新要求によって指定されない領域であるか否かを解析結果に基づいて判断する。具体的には、たとえば、解析装置900は、実行コード920内の「Load」の記載を検出する。そして、たとえば、解析装置900は、「Load y」の「y」の値が格納された領域を含む領域の先頭アドレスを有する解析情報911をメモリアクセス情報910から特定する。そして、たとえば、解析装置900は、特定された解析情報911が有する更新要求数の値が「0」であるかを判断する。たとえば、特定された解析情報911が有する更新要求数の値が「0」の場合、解析装置900は、「Load y」は更新要求によって指定されない領域を指定する参照要求であると判断する。そして、解析装置900は、判断結果を出力する。たとえば、解析装置900は、判断結果をストレージ105に記憶させてもよいし、ディスプレイ107に表示してもよい。
これにより、プログラムの設計者は、判断結果を参照することにより、実行コード920内にある参照要求を示す情報を、更新要求がないメモリの領域を指定する参照要求を示す情報に変換することができる。したがって、プログラムの設計にかかる手間を省くことができる。
さらに、解析装置900は、更新要求によって指定されない領域であると判断された場合、参照要求を示す情報を、更新要求がないメモリの領域を指定する参照要求を示す情報に変換する。具体的には、たとえば、解析装置900は、「Load y」を「Load_nc y」に変換する。変換結果はストレージなどの記憶装置に記憶される。変換後の実行コードが実行コード930である。
これにより、キャッシュコントローラは、変換後のプログラムを実行中のCPUから参照要求を受け付けると、スヌープ参照要求であるかノンスヌープ参照要求であるかを判別することができる。
また、解析装置900は、シミュレータによるシミュレーションが終了すると、プログラム内の更新要求を示す情報によって指定されたメモリ内の領域が、参照要求によって指定されない領域であるか否かを解析結果に基づいて判断する。具体的には、たとえば、解析装置900は、実行コード920内の「Store」の記述情報を検出する。そして、たとえば、解析装置900は、「Store x」の記述情報のうち「x」の値が格納される領域を含む領域の先頭アドレスを有する解析情報911をメモリアクセス情報910から特定する。そして、たとえば、解析装置900は、特定された解析情報911が有する参照要求数の値が「0」であるかを判断する。たとえば、特定された解析情報911が有する参照要求数の値が「0」の場合、解析装置900は、「Store x」がノンスヌープ更新要求であると判断する。そして、解析装置900は、判断結果を出力する。たとえば、解析装置900は、判断結果をストレージ105に記憶させてもよいし、ディスプレイ107に表示してもよい。
プログラムの設計者は、判断結果を参照することにより、実行コード920内にある更新要求を示す情報を、参照要求がないメモリの領域を指定する更新要求を示す情報に変換することができる。したがって、プログラムの設計にかかる手間を省くことができる。
さらに、解析装置900は、参照要求によって指定されない領域であると判断された場合、更新要求を示す情報を、参照要求がないメモリの領域を指定する更新要求を示す情報に変換する。具体的には、たとえば、解析装置900は、「Store x」を「Store_nc x」に変換する。変換結果はストレージなどの記憶装置に記憶される。変換後の実行コードが実行コード930である。
これにより、キャッシュコントローラは、変換後のプログラムを実行中のCPUから更新要求を受け付けると、スヌープ更新要求であるかノンスヌープ参照要求であるかを判別することができる。解析装置900は、プログラム内のスヌープ更新要求を示す情報とノンスヌープ更新要求を示す情報とを精度よく区別させることができる。
(解析装置900の機能例)
図10は、解析装置900の機能例を示すブロック図である。解析装置900は、解析部1001と、判断部1002と、出力部1003と、変換部1004と、を有している。解析部1001から変換部1004の処理は、たとえば、解析装置900が有するストレージなどの記憶装置に記憶された解析プログラムにコーディングされている。複数のCPUのうちのいずれかのCPUが該検出プログラムを記憶装置からロードし、解析プログラムにコーディングされた処理を実行することにより、部から部の機能が実現される。
また、各機能部の処理結果は、たとえば、解析装置900が有する共有メモリなどの記憶装置に記憶される。
まず、解析部1001は、プログラムを実行中に、メモリ内の領域ごとに参照要求による指定の有無と更新要求による指定の有無を解析する。上述したように、たとえば、解析部1001は、シミュレータによって、システムモデルのCPUモデルに実行コード920を割り当てる。そして、たとえば、解析部1001は、CPUモデルからメモリモデルへの要求を解析し、メモリアクセス情報910を作成する。
つぎに、判断部1002は、プログラム内の参照要求を示す情報によって指定される前記メモリ内の領域が、更新要求による指定の無い領域であるか否かを解析結果に基づいて判断する。出力部1003は、判断結果を出力する。たとえば、出力部1003は、判断結果をストレージ105に記憶させてもよいし、ディスプレイ107に表示してもよい。
さらに、変換部1004は、更新要求によって指定されない領域であると判断された場合、参照要求を示す情報を、更新要求がないメモリの領域を指定する参照要求を示す情報に変換する。具体的には、たとえば、図9で示したように、変換部1004は、「Load y」を「Load_nc y」に変換する。出力部1003は、変換結果を出力する。
また、判断部1002は、プログラム内の更新要求を示す情報によって指定される前記メモリ内の領域が、前記参照要求による指定の無い領域であるか否かを解析結果に基づいて判断する。出力部1003は、判断結果を出力する。たとえば、出力部1003は、判断結果をストレージ105に記憶させてもよいし、ディスプレイ107に表示してもよい。
そして、変換部1004は、参照要求によって指定されない領域であると判断された場合、更新要求を示す情報を、参照要求がないメモリの領域を指定する更新要求を示す情報に変換する。具体的には、たとえば、図9で示したように、変換部1004は、「Store x」を「Store_nc x」に変換する。
(解析装置900が行う解析処理手順)
図11は、解析装置900が行う解析処理手順例を示すフローチャートである。まず、解析装置900は、ソースコード940をビルドすることにより、実行コード920を生成する(ステップS1101)。
たとえば、変数aが更新要求のみの変数の場合、ソースコード940の設計者が、代入式「a=c+20;」を「a:=b+20;」と記述してもよい。そして、たとえば、ソースコード940のビルド時にコンパイラが、実行コード920に「a:=b+20;」を「Load」に代わって「Load_nc」を出力してもよい。
つぎに、解析装置900は、実行コード920と、検証パターン950と、システムモデルをシミュレータに与えることにより、解析処理を実行する(ステップS1102)。ステップS1102により、メモリアクセス情報910が生成される。解析装置900は、再ビルド処理を実行することにより、実行コード930を生成する(ステップS1103)。
図12は、図11で示した解析処理(ステップS1102)例の詳細な説明を示すフローチャートである。解析装置900は、シミュレーションの実行を開始し(ステップS1201)、参照要求または更新要求を検出したか否かを判断する(ステップS1202)。参照要求および更新要求が検出されなかった場合(ステップS1202:No)、ステップS1207へ移行する。更新要求が検出された場合(ステップS1202:更新要求)、解析装置900は、メモリアクセス情報910から、検出された更新要求が指定する領域に対応する解析情報911を特定する(ステップS1203)。解析装置900は、特定された解析情報911の更新要求数をカウントアップし(ステップS1204)、ステップS1207へ移行する。
参照要求が検出された場合(ステップS1202:参照要求)、解析装置900は、メモリアクセス情報910から、検出された参照要求が指定する領域に対応する解析情報911を特定する(ステップS1205)。解析装置900は、特定した解析情報911の参照要求数をカウントアップし(ステップS1206)、ステップS1207へ移行する。
ステップS1202のNoの場合、ステップS1206、またはステップS1204のつぎに、解析装置900は、シミュレーションが終了したか否かを判断する(ステップS1207)。シミュレーションが終了していない場合(ステップS1207:No)、ステップS1202へ戻る。シミュレーションが終了した場合(ステップS1207:Yes)、一連の処理を終了する。
図13は、図11で示した再ビルド処理(ステップS1103)の第1の例の詳細な説明を示すフローチャートである。まず、解析装置900は、実行コード920に含まれる命令情報の中で、未選択な命令情報があるか否かを判断する(ステップS1301)。未選択な命令情報がある場合(ステップS1301:Yes)、解析装置900は、未選択な命令情報から1つの命令情報を選択する(ステップS1302)。
解析装置900は、選択された命令情報が参照要求を示す情報か否かを判断する(ステップS1303)。選択された命令情報が参照要求を示す情報である場合(ステップS1303:Yes)、解析装置900は、メモリアクセス情報910から、選択された参照要求を示す情報が指定する領域に対応する解析情報911を特定する(ステップS1304)。
解析装置900は、選択された参照要求を示す情報が指定する領域に更新要求があるか否かを判断する(ステップS1305)。選択された参照要求を示す情報が指定する領域に更新要求がない場合(ステップS1305:No)、解析装置900は、判断結果を出力する(ステップS1306)。
そして、解析装置900は、選択された参照要求を示す情報を、更新要求がない領域を指定する参照要求を示す情報に変換し(ステップS1307)、ステップS1301へ戻る。たとえば、図9の例では、「Load y」が「Load_nc y」に変換される。選択された命令情報が参照要求を示す情報でない場合(ステップS1303:No)、解析装置900は、選択された命令情報が更新要求を示す情報か否かを判断する(ステップS1308)。
選択された命令情報が更新要求を示す情報である場合(ステップS1308:Yes)、解析装置900は、メモリアクセス情報910から、選択された更新要求を示す情報が指定する領域に対応する解析情報911を特定する(ステップS1309)。解析装置900は、選択された更新要求を示す情報が指定する領域に参照要求があるか否かを判断する(ステップS1310)。選択された更新要求を示す情報が指定する領域に参照要求がある場合(ステップS1310:Yes)、ステップS1301へ戻る。
選択された更新要求を示す情報が指定する領域に参照要求がない場合(ステップS1310:No)、解析装置900は、判断結果を出力する(ステップS1311)。そして、解析装置900は、選択された更新要求を示す情報を、参照要求がない領域を指定する更新要求を示す情報に変換し(ステップS1312)、ステップS1301へ戻る。たとえば、図9の例では、「Store x」が「Store_nc x」に変換される。
ステップS1305において、選択された参照要求を示す情報が指定する領域に更新要求がある場合(ステップS1305:Yes)、ステップS1301へ戻る。
ステップS1308において、選択された命令情報が更新要求を示す情報でない場合(ステップS1308:No)、ステップS1301へ戻る。
一方、ステップS1301において、未選択な命令情報がない場合(ステップS1301:No)、一連の処理を終了する。
図14は、図11で示した再ビルド処理(ステップS1103)の第2の例の詳細な説明を示すフローチャートである。図14では、プログラムの設計者が、ノンスヌープ参照要求であると判断し、「Load_nc」を割りつけても、解析装置900は、解析結果によって該参照要求が指定する領域に更新要求があると判断した場合、エラーを出力する。また、図14では、プログラムの設計者が、ノンスヌープ更新要求であると判断し、「Store_nc」を割りつけても、解析装置900は、解析結果によって該更新要求が指定する領域に参照要求があると判断した場合、エラーを出力する。
具体的には、まず、解析装置900は、実行コード920に含まれる命令情報の中で、未選択な命令情報があるか否かを判断する(ステップS1401)。未選択な命令情報がある場合(ステップS1401:Yes)、解析装置900は、未選択な命令情報から1つの命令情報を選択する(ステップS1402)。
解析装置900は、選択された命令情報が、更新要求がない領域を指定する参照要求を示す情報か否かを判断する(ステップS1403)。具体的には、たとえば、「Load_nc」であるか否かが判断される。選択された命令情報が参照要求を示す情報である場合(ステップS1403:Yes)、解析装置900は、メモリアクセス情報910から、選択された参照要求を示す情報が指定する領域に対応する解析情報911を特定する(ステップS1404)。
解析装置900は、選択された参照要求を示す情報が指定する領域に更新要求があるか否かを判断する(ステップS1405)。選択された参照要求を示す情報が指定する領域に更新要求がある場合(ステップS1405:Yes)、解析装置900は、エラーを出力し(ステップS1406)、ステップS1401へ戻る。一方、選択された参照要求を示す情報が指定する領域に更新要求がない場合(ステップS1405:No)、ステップS1401へ戻る。
ステップS1403において、選択された命令情報が参照要求を示す情報でない場合(ステップS1403:No)、解析装置900は、選択された命令情報が参照要求がない領域を指定する更新要求を示す情報か否かを判断する(ステップS1407)。具体的には、たとえば、「Store_nc」であるか否かが判断される。
選択された命令情報が更新要求を示す情報である場合(ステップS1407:Yes)、解析装置900は、メモリアクセス情報910から、選択された更新要求を示す情報が指定する領域に対応する解析情報911を特定する(ステップS1408)。
つぎに、解析装置900は、選択された更新要求を示す情報が指定する領域に参照要求があるか否かを判断する(ステップS1409)。選択された更新要求を示す情報が指定する領域に参照要求がない場合(ステップS1409:No)、ステップS1401へ戻る。
一方、選択された更新要求を示す情報が指定する領域に参照要求がある場合(ステップS1409:Yes)、解析装置900は、エラーを出力し(ステップS1410)、ステップS1401へ戻る。
また、ステップS1407において、選択された命令情報が更新要求を示す情報でない場合(ステップS1407:No)、ステップS1401へ戻る。
ステップS1401において、未選択な命令情報がない場合(ステップS1401:No)、一連の処理を終了する。
実施の形態1で説明したように、制御装置は、共有メモリ内の参照だけの領域への参照要求であると、他のCPUにより該領域は更新されないため、スヌープ処理を行わずに共有メモリから該領域に記憶されたデータを取得する。これにより、制御装置は、不要なスヌープ処理の回数を減少させることができ、処理性能の向上を図ることができる。
また、更新要求のない共有メモリ内の領域への参照要求について、キャッシュメモリに参照対象となるデータが記憶されていれば、制御装置は、直ちにCPUへ応答することができる。したがって、制御装置は、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができ、処理能力を向上させることができる。
また、実施の形態1で説明したように、制御装置は、共有メモリ内の更新だけの領域への更新要求であると、他のCPUにより該領域は参照されないため、スヌープ処理を行わずに共有メモリから該領域に記憶されたデータを取得する。そして、制御装置は取得したデータをキャッシュに格納後、格納した該データに更新要求に含まれる更新データを上書きする。これにより、制御装置は、不要なスヌープ処理の回数を減少させることができ、処理性能の向上を図ることができる。
また、参照要求のない共有メモリ内の領域への更新要求について、キャッシュメモリに更新対象となるデータが記憶されていれば、制御装置は、直ちにCPUへ応答することができる。したがって、制御装置は、スヌープ処理を実行しないことにより、スヌープ処理にかかる処理時間を短縮化させることができ、処理能力を向上させることができる。
実施の形態2で説明したように、解析装置は、プログラムをシミュレータによって実行中に、参照要求または更新要求によって指定された共有メモリ内の領域ごとに参照要求と更新要求の有無を解析する。そして、解析装置は、プログラム内の参照要求を示す情報について参照要求が示すメモリ内の領域に更新が行われるか否かを判断する。判断結果が出力されるため、解析装置は、プログラムの設計者はプログラムに含まれるいずれの更新要求についてノンスヌープ更新要求を示す情報に変換を行うかを考える手間を省くことができる。
また、解析装置は、判断結果に基づいて、プログラム内の参照要求が、更新要求によって指定されない領域であると判断された場合、該参照要求を示す情報を、ノンスヌープ参照要求を示す情報に変換する。解析装置は、プログラムの設計者は各参照要求がノンスヌープ参照要求であるか否かについて考える手間を省くことができる。さらに、変換後のプログラムを実行中のCPUからキャッシュコントローラが参照要求を受け付けると、スヌープ参照要求であるかノンスヌープ参照要求であるかを判別することができる。
また、実施の形態2で説明したように、解析装置は、プログラムをシミュレータによって実行中に、参照要求または更新要求によって指定された共有メモリ内の領域ごとに参照要求と更新要求の有無を解析する。そして、解析装置は、プログラム内の更新要求を示す情報について更新要求が示すメモリ内の領域に参照が行われるか否かを判断する。判断結果が出力されるため、解析装置は、プログラムの設計者がプログラムに含まれるいずれの更新要求についてノンスヌープ更新要求を示す情報に変換を行うかを考える手間を省くことができる。
また、解析装置は、判断結果に基づいて、プログラム内の更新要求が、参照要求によって指定されない領域であると判断された場合、該更新要求を示す情報、ノンスヌープ更新要求を示す情報に変換する。さらに、変換後のプログラムを実行中のCPUからキャッシュコントローラが更新要求を受け付けると、スヌープ更新要求であるかノンスヌープ更新要求であるかを判別することができる。
なお、本実施の形態2で説明した解析方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本解析プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本解析プログラムは、インターネット等のネットワークを介して配布してもよい。
101―1〜101−n CPU
121−1〜121−n キャッシュコントローラ
122−1〜122−n キャッシュメモリ
103 共有メモリ
601 受付部
602 取得部
603 格納部
910 メモリアクセス情報
1001 解析部
1002 判断部
1003 出力部
1004 変換部

Claims (2)

  1. 複数のCPUによって共有される共有メモリに記憶された情報または前記共有メモリに格納される情報を一時的に記憶するメモリを前記複数のCPUの各々が有する場合に、前記メモリごとに対応するCPUから前記メモリへのアクセスを制御する制御装置であって、
    参照要求がない前記共有メモリの領域を指定する更新要求を示す情報と、前記参照要求がある前記共有メモリの領域を指定する更新要求を示す情報と、が区別されたプログラムを実行中のCPUから更新要求を受け付ける受付部と、
    前記受付部により前記参照要求がない前記共有メモリの領域を指定する更新要求が受け付けられた場合には、前記参照要求がない前記更新要求により指定された前記共有メモリの指定領域に記憶された情報または格納される情報についての前記実行中のCPUが有するメモリの記憶状態を、前記複数のCPUのうちの前記実行中のCPU以外のCPUが有するメモリの記憶状態と一致させるスヌープ処理を行わず、さらに、前記参照要求がない前記更新要求により指定された前記共有メモリの指定領域に記憶された情報が、前記実行中のCPUが有するメモリに格納されていないと、前記共有メモリから前記指定領域に記憶された情報を取得し、前記参照要求がない前記更新要求により指定された前記共有メモリの指定領域に記憶された情報が、前記実行中のCPUが有するメモリに格納されていると、前記共有メモリから前記指定領域に記憶された情報を取得しない取得部と、
    前記参照要求がない前記更新要求により指定された前記共有メモリの指定領域に記憶された情報が、前記実行中のCPUが有するメモリに格納されていない場合、前記取得部によって取得された前記情報を前記実行中のCPUが有するメモリに格納した後に、前記参照要求がない前記更新要求に指定された情報を前記実行中のCPUが有するメモリに格納し、前記参照要求がない前記更新要求により指定された前記共有メモリの指定領域に記憶された情報が、前記実行中のCPUが有するメモリに格納されている場合、前記参照要求がない前記更新要求に指定された情報を前記実行中のCPUが有するメモリに格納する格納部と、
    を有することを特徴とする制御装置。
  2. 前記取得部は、
    前記参照要求がある前記共有メモリの領域を指定する更新要求が受け付けられた場合において、前記指定領域に記憶されたデータが前記実行中のCPUが有するメモリに格納されていると、前記共有メモリから前記指定領域に記憶された情報を取得しないことを特徴とする請求項1に記載の制御装置。
JP2013556102A 2012-01-30 2012-01-30 制御装置、解析装置、解析方法、および解析プログラム Expired - Fee Related JP5811194B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/052022 WO2013114540A1 (ja) 2012-01-30 2012-01-30 制御装置、解析装置、解析方法、および解析プログラム

Publications (2)

Publication Number Publication Date
JPWO2013114540A1 JPWO2013114540A1 (ja) 2015-05-11
JP5811194B2 true JP5811194B2 (ja) 2015-11-11

Family

ID=48904623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013556102A Expired - Fee Related JP5811194B2 (ja) 2012-01-30 2012-01-30 制御装置、解析装置、解析方法、および解析プログラム

Country Status (3)

Country Link
US (1) US20140337584A1 (ja)
JP (1) JP5811194B2 (ja)
WO (1) WO2013114540A1 (ja)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07113844B2 (ja) * 1988-03-31 1995-12-06 富士電機株式会社 プログラマブルコントローラのプログラミング装置
JPH06119241A (ja) * 1992-10-01 1994-04-28 Fujitsu Ltd キャッシュメモリ制御方式
US5848283A (en) * 1993-01-29 1998-12-08 International Business Machines Corporation Method and system for efficient maintenance of data coherency in a multiprocessor system utilizing cache synchronization
US5761725A (en) * 1994-01-31 1998-06-02 Dell Usa, L.P. Cache-based computer system employing a peripheral bus interface unit with cache write-back suppression and processor-peripheral communication suppression for data coherency
JPH08137748A (ja) * 1994-11-08 1996-05-31 Toshiba Corp コピーバックキャッシュを有するコンピュータ及びコピーバックキャッシュ制御方法
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
JP3317816B2 (ja) * 1995-05-31 2002-08-26 日本電気株式会社 コンパイラにおけるデータ転送処理割り付け方法
JPH11338707A (ja) * 1998-05-27 1999-12-10 Nec Software Kobe Ltd 実行プログラム最適化装置
JP3757117B2 (ja) * 1998-12-18 2006-03-22 富士通株式会社 キャッシュ装置及び制御方法
JP3959914B2 (ja) * 1999-12-24 2007-08-15 株式会社日立製作所 主記憶共有型並列計算機及びそれに用いるノード制御装置
US7003633B2 (en) * 2002-11-04 2006-02-21 Newisys, Inc. Methods and apparatus for managing probe requests
US20050193177A1 (en) * 2004-03-01 2005-09-01 Moga Adrian C. Selectively transmitting cache misses within coherence protocol

Also Published As

Publication number Publication date
WO2013114540A1 (ja) 2013-08-08
US20140337584A1 (en) 2014-11-13
JPWO2013114540A1 (ja) 2015-05-11

Similar Documents

Publication Publication Date Title
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
JP6218833B2 (ja) 処理リソース割り当て
JP4374221B2 (ja) コンピュータシステムおよび記録媒体
KR20070080589A (ko) 메모리 속성들을 사용하기 위한 기술
US9038080B2 (en) Method and system for heterogeneous filtering framework for shared memory data access hazard reports
EP2804099B1 (en) Apparatus and method managing power based on data
JPWO2012127590A1 (ja) エンディアン変換方法、およびシステム
CN110036375A (zh) 无序高速缓存返回
US20190057485A1 (en) Frame Invalidation Control with Causality Attribution
CN110291507A (zh) 用于提供对存储器系统的加速访问的方法和装置
EP2838024A2 (en) Cache debug system for programmable circuits
CN116245054A (zh) 验证方法、验证装置、电子设备和计算机可读存储介质
JP2012247827A (ja) プログラム生成装置、プログラム生成方法及びプログラム
JP2002032264A (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
JP5811194B2 (ja) 制御装置、解析装置、解析方法、および解析プログラム
JP6740719B2 (ja) 情報処理装置、情報処理方法、およびプログラム
Chupilko et al. Specification-based test program generation for ARM VMSAv8-64 memory management units
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
US20230205700A1 (en) Selective speculative prefetch requests for a last-level cache
GB2466695A (en) Processor and prefetch support program
US7861235B2 (en) Program control device and program control method
US11907724B2 (en) In-memory trace with overlapping processing and logout
JP4974638B2 (ja) シミュレーション装置及びシミュレーション方法
US11604737B1 (en) Dynamic modification of coherent atomic memory operations
JP5614483B2 (ja) マルチコアプロセッサシステム、キャッシュコヒーレンシ制御方法、およびキャッシュコヒーレンシ制御プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150519

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150721

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150831

R150 Certificate of patent or registration of utility model

Ref document number: 5811194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees