JP6191240B2 - 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム - Google Patents

変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム Download PDF

Info

Publication number
JP6191240B2
JP6191240B2 JP2013112017A JP2013112017A JP6191240B2 JP 6191240 B2 JP6191240 B2 JP 6191240B2 JP 2013112017 A JP2013112017 A JP 2013112017A JP 2013112017 A JP2013112017 A JP 2013112017A JP 6191240 B2 JP6191240 B2 JP 6191240B2
Authority
JP
Japan
Prior art keywords
cache
variable
program
hit
determination
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
JP2013112017A
Other languages
English (en)
Other versions
JP2014232369A (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
Priority to JP2013112017A priority Critical patent/JP6191240B2/ja
Priority to US14/244,927 priority patent/US9280475B2/en
Publication of JP2014232369A publication Critical patent/JP2014232369A/ja
Application granted granted Critical
Publication of JP6191240B2 publication Critical patent/JP6191240B2/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Description

開示の技術は、変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システムに関する。
複数の変数により定まる配列に基づいて主メモリのメモリ領域に記憶されたデータを取得すると共に、取得したデータについて一定の計算をする処理をコンピュータに実行させるプログラムを作成する態様には種々の態様がある。例えば、変化させる変数の順番を変える等である。ある態様で作成されたプログラムを実行する場合、主メモリのメモリ領域へのアクセスが必要となる。主メモリのメモリ領域へのアクセスは、時間がかかるので、プログラム実行完了までの時間も長時間必要となる。
従来、主メモリへのアクセス時間を改善するため、キャッシュメモリが用いられている。キャッシュメモリでは、記憶容量は主メモリの記憶容量より小さいが、アクセス時間は主メモリのアクセス時間より短い。よって、プロセッサは、主メモリにアクセスして得たデータをキャッシュメモリに記憶しておき、次にこのデータにアクセスする必要がある場合には、最初にキャッシュメモリにアクセスして、データを取得する。このように、主メモリにアクセスしないで、キャッシュメモリにアクセスすることにより、アクセス時間が改善される。
このように、キャッシュメモリを活用してプログラム実行完了までの時間を短縮できるが、上記態様で作成されたプログラムの上記態様を別の態様に変えることで、プログラム実行完了までの時間を更に短縮することができる場合がある。
ところで、変数の順番を変えると、主メモリのメモリ領域にアクセスする順番が変わり、よって、キャッシュメモリのキャッシュセットにアクセスする順番も変わる。このように、キャッシュセットにアクセスする順番が変わると、あるキャッシュセットには前の順番であれば、必要なデータが記憶されている(ヒット)が、順番が変わることにより必要なデータが記憶されなくなる(ミス)場合がある。
よって、変数の順番をどのように変えれば、プログラム実行完了までの時間を短縮できるのかを知るためには、キャッシュメモリのキャッシュセット毎のヒット及びミスの情報(プロファイルデータ)を知る必要がある。
従来、キャッシュメモリのキャッシュセット全体のプロファイルデータを取得することは行われていた。
特開2009−20696号公報 特開2005−122481号公報 特開2001−51965号公報
しかしながら、キャッシュメモリのキャッシュセット毎のプロファイルデータを取得することは行われていない。
開示の技術は、1つの側面として、キャッシュセット毎のプロファイルデータを取得することが目的である。
開示の技術において、記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに、主メモリの複数のメモリ領域の各々が対応する。複数のメモリ領域の何れかに、複数のデータの各々が対応付けられている。判定部は、複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定する。記憶部は、予め選択されたキャッシュセットに対応して設けられ、当該選択されたキャッシュセットに対応するメモリ領域のアドレス情報を記憶する。判断部は、判定部により、上記対応するキャッシュセットが上記予め選択されたキャッシュセットであると判定された場合、(1)ヒット、及び、(2)ミスの何れが生じたかを判断する。ヒットは、判定対象データに対応するメモリ領域のアドレス情報が記憶部に記憶されていることを示す。ミスは、判定対象データに対応するメモリ領域のアドレス情報が記憶部に記憶されていないことを示す。処理部は、判断部によりミスが生じたと判断された場合に、第1の処理及び第2の処理の少なくとも一方を行う。第1の処理は、ミスの回数を示すミス変数を更新しかつ記憶部にアドレス情報を記憶させる処理である。第2の処理は、ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する処理である。
開示の技術は、1つの側面として、キャッシュセット毎のプロファイルデータを取得することができる、という効果を有する。
第1の実施の形態における、プロファイルデータ取得システムのブロック図である。 (A)は、第1の実施の形態における、プロファイルデータを取得したい元のプログラム、(B)は、元のプログラムをプロファイルデータ取得プログラムに変換する処理を示す図、(C)は、プロファイルデータ取得プログラムを示す図である。 第1の実施の形態における、元のプログラムによる加算処理の一例を示すフローチャートである。 第1の実施の形態における、元のプログラムをプロファイルデータ取得プログラムに変換する処理の一例を示すフローチャートである。 第1の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。 図5のプロファイルデータ取得処理中のカウント処理の一例を示すフローチャートである。 記録領域のタグ情報の書き換えの様子を示す図であり、(A)は、すべてのブロックでミスが生じた場合の書き換えの様子、(B)は、第1のブロックでヒットが生じた場合の書き換えの様子、(C)は、第2のブロックでヒットが生じた場合の書き換えの様子、(D)は、第3のブロックでヒットが生じた場合の書き換えの様子を示す図である。 (A)は、第2の実施の形態における、プロファイルデータを取得したい元のプログラム、(B)は、元のプログラムをプロファイルデータ取得プログラムに変換する処理、(C)は、プロファイルデータ取得プログラムを示す図である。 第2の実施の形態における、元のプログラムによる加算処理の一例を示すフローチャートである。 第2の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。 2段のキャッシュメモリの一例を示す図である。 第3の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。 図12のプロファイルデータ取得処理における、第2段目のキャッシュメモリのカウント処理の一例を示すフローチャートである。 キャッシュメモリにおけるg=0グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。 キャッシュメモリにおけるg=1グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。 キャッシュメモリにおけるg=2グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。 キャッシュメモリにおけるg=3グループのキャッシュセットでのカウント処理の一例を示すフローチャートである。 第4の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。 図18のプロファイルデータ取得処理中のカウント処理の一例を示すフローチャートである。 (A)は、第5の実施の形態における、プリフェッチ命令が挿入された元のプログラム、(B)は元のプログラムをプロファイルデータ取得プログラムに変換する処理、(C)はプロファイルデータ取得プログラムを示す図である。 第5の実施の形態における、プリフェッチ命令が挿入された元のプログラムによる加算処理の一例を示すフローチャートである。 第5の実施の形態における、プロファイルデータ取得処理の一例を示すフローチャートである。 図22のプロファイルデータ取得処理中のカウント処理の一例を示すフローチャートである。 第6の実施の形態における、元のプログラムにプリフェッチ命令が挿入されることによる実行時間の改善の効果を検証するプリフェッチ検証システムを示すブロック図である。 (A)は、プリフェッチ検証プログラムの一例を示し、(B)は、プリフェッチ検証プロセスの一例を示す図である。 第6の実施の形態における、プリフェッチ検証処理の一例を示すフローチャートである。 (A)は、第1の実施の形態〜第5の実施の形態における、プログラム変換プログラムの一例を示し、(B)は、プログラム変換プロセスの一例を示す図である。 (A)は、第1の実施の形態〜第5の実施の形態における、プロファイルデータ取得プログラムの一例を示し、(B)は、プロファイルデータ取得プロセスの一例を示す図である。 (A)は、主メモリのインデックス及びアドレスとキャッシュメモリのキャッシュセット及びアドレスとの関係を示す図であり、(B)は、主メモリのアドレスとキャッシュメモリのセット番号との関係を示す図であり、(C)は、主メモリのインデックス0、8、16、24のメモリ領域が、キャッシュメモリのセット番号0のセットに対応することを示す図であり、(D)は、タグ情報を示す図である。 連想数が4のキャッシュセットの様子を示す図である。
以下、図面を参照して開示の技術の実施の形態の一例を詳細に説明する。
[第1実施形態]
第1の実施の形態の構成を説明する。
図1に示すように、第1の実施の形態に係るプロファイルデータ取得システムは、複数の計算機10s0、10s1、…10sNを備えている。これらの計算機は互いに独立して稼働する。これらの計算機10s0、10s1、…10sNは、ネットワーク14を介してデータベース12に接続されている。計算機10s0、10s1、…10sNは同一の構成であるので、以下計算機10s0のみを説明する。
プロファイルデータ取得システムは、開示の技術の変数更新システムの一例である。計算機10s0、10s1、…10sNは、開示の技術の変数更新装置の一例である。
計算機10s0は、CPU(中央処理装置:Central Processing Unit)22、ROM(Read Only Memory)24、及びRAM(Random Access Memory)26が、バス20を介して相互に接続されている。バス20には更に、入力部28、表示部30、インターフェイス32、及びメモリ34が接続されている。なお、インターフェイス32には、ネットワーク14を介してデータベース12、及び他の計算機10s1、…10sNが接続されている。
データベース12には、キャッシュメモリのキャッシュセット毎のヒット及びミスの情報であるプロファイルデータを取得したい対象のプログラムである元のプログラムP001が記憶されている。ここで、ヒット及びミスを説明する。前述したように、主メモリへのアクセス時間の改善のためキャッシュメモリが用いられている。即ち、主メモリのメモリ領域に記憶されたデータへのアクセスのためには比較的長い時間が必要となる。一方、キャッシュメモリのキャッシュセットに記憶されたデータへのアクセスのためには比較的短い時間で済む。主メモリのあるメモリ領域のデータを読み出す場合に、主メモリの当該メモリ領域のデータがキャッシュメモリの当該メモリ領域に対応するキャッシュセットに記憶されている場合がある。この場合には、主メモリの当該メモリ領域のデータを読み出す代わりに、キャッシュメモリのキャッシュセットに記憶されたデータを読み出すことができる。これにより、データを読み出す時間を短くすることができる。このように、主メモリのメモリ領域のデータが当メモリ領域に対応するキャッシュメモリのキャッシュセットに記憶されている場合のことを、ヒットという。逆に、主メモリのメモリ領域のデータが当該メモリ領域に対応するキャッシュメモリのキャッシュセットに記憶されていない場合のことをミスという。
例えば、計算機10s0は、元のプログラムP001を、詳細には後述するプログラム変換プログラムPTPに従って、合計キャッシュメモリのキャッシュセット数分のプロファイルデータ取得プログラムP0〜PNに変換する。データベース12には、変換されたプロファイルデータ取得プログラムP0〜PN、及びプログラム変換プログラムPTPが記憶されている。なお、計算機10s0でなく、他の計算機10s1・・・10sNの何れか、更には、図示しない別の計算機がプログラム変換プログラムPTPで元のプログラムP001をプロファイルデータ取得プログラムP0〜PNに変換してもよい。
計算機10s0は、キャッシュメモリのセット番号s=0のキャッシュセットのプロファイルデータを取得するため、s=0のプロファイルデータ取得プログラムP0を、データベース12からRAM26にダウンロードする。そして、計算機10s0は、当該プロファイルデータ取得プログラムP0に従って、セット番号s=0のキャッシュセットのプロファイルデータを取得する。その他の計算機も同様である。
次に、図27(A)を参照して、プログラム変換プログラムPTPを説明する。プログラム変換プログラムPTPは、集合作成部61A、ソースコード分類部62A、及びプログラム文作成部63Aを有する。また、図27(B)に示すように、プログラム変換処理は、集合作成プロセス61B、ソースコード分類プロセス62B、及びプログラム文作成プロセス63Bを有する。なお、CPU22は、上記プロセス61B〜63Bの各々を実行することにより、図27(A)の上記各部61A〜63Aとして動作する。
次に、図28(A)を参照して、プロファイルデータ取得プログラムP0を説明する。プロファイルデータ取得プログラムP0は、アドレス計算部91A、セット番号計算部92A、セット番号判断部93A、及びACCESSプログラム実行部94Aを有する。また、図28(B)に示すように、プロファイルデータ取得処理は、アドレス計算プロセス91B、セット番号計算プロセス92B、セット番号判断プロセス93B、及びACCESSプログラム実行プロセス94Bを有する。なお、CPU22は、上記プロセス91B〜94Bの各々を実行することにより、図28(A)の上記各部91A〜94Aとして動作する。
次に、第1の実施の形態の作用を説明する。
第1の実施の形態の技術では、主メモリ及びキャッシュメモリへのアクセスをシミュレーションする。即ち、第1の実施の形態の技術は、主メモリ及びキャッシュメモリに現実にアクセスすると共にヒット又はミスを計算することにより、プロファイルデータを取得する技術ではない。
図29には、主メモリ400の各記憶領域のインデックス及びアドレスとキャッシュメモリのキャッシュセットのセット番号及びアドレスとの関係が示されている。図29(A)に示す例では、主メモリ400は、32個のメモリ領域を有する。各メモリ領域にはインデックス0〜31が付与されている。メモリ領域のアドレスは、00000〜11111が付与されている。一方、キャッシュメモリは、メモリ領域402としての8個のキャッシュセットを有し、キャッシュセットのセット番号として0〜7が付与されている。8個のキャッシュセットのアドレスは、000〜111が付与されている。また、キャッシュメモリは、タグ情報を記憶するタグ記憶領域404を備えている。
上記のように、主メモリ400は32個のメモリ領域を有する。しかし、キャッシュメモリは、8個のキャッシュセットを有する。よって、主メモリ400の異なる4つのメモリ領域に対応して、キャッシュメモリの1つのセットが対応づけられている。図29(B)には、主メモリのアドレスとキャッシュメモリのセット番号との対応関係が示されている。図29(B)に示すように、主メモリのアドレスをキャッシュメモリのセット数(8)で割った余りがセット番号となっている。例えば、主メモリのインデックス0のアドレスは00000である。00000を8で割った余りは0であるので、セット番号は0であり、そのキャッシュのアドレスは000である。同様に、主メモリのインデックス7に対応するアドレスは00111である。00111を8で割ると余りが7となる。よってセット番号は7であり、そのキャッシュアドレスは111である。そして、主メモリのインデックス8、16、24の各々について同様に余りを求めると0となりキャッシュセット番号は0である。よって、図29(C)に示すように、主メモリのインデックス0、8、16、24のメモリ領域は、キャッシュメモリのセット番号0のキャッシュセットに対応する。プロセッサは、インデックス0のメモリ領域にアクセスした場合や、インデックス8のメモリ領域にアクセスした場合には、各々のデータをキャッシュメモリのセット番号0に対応するキャッシュセットに記憶する。キャッシュメモリの各キャッシュセットのアドレスは、000である。よって、当該領域に記憶されたデータが主メモリのインデックス0、8、16、24の何れのメモリ領域に記憶されたデータなのかは不明である。この点、図29(D)に示すように、インデックス0の主メモリのメモリ領域のアドレスは00000であり、インデックス8のメモリ領域のアドレスは、01000であり、以下同様に、16、24のインデックスのアドレスは、10000、11000である。これらのアドレスの下位の3ビットは、キャッシュセット番号のアドレスの3ビットに対応する。そこで、主メモリのアドレスの上位の上から2つのビットの内容を、タグ情報として当該セットに対応するタグ領域404に記憶する。キャッシュメモリのセットのアドレスとタグ情報とから、主メモリのアドレスが得られる。よって、キャッシュメモリのセットのデータが主メモリのどのアドレスに対応するデータなのかも、キャッシュメモリのセットのアドレスとタグ情報とから得られる。
第1の実施の形態では、図29に示すように、上記シミュレーションにおいて32個のメモリ領域を有する主メモリ400と、8個のキャッシュセットを有するキャッシュメモリとが想定されている。第1の実施の形態では、メモリ34にタグ記憶領域404のキャッシュセットsに対応する1つの記憶領域404sが設けられている。また、図30に示すように、キャッシュセットの連想数Aが4であることが想定されている。よって、タグ記憶領域404の各記憶領域も4つのブロックを有する。よって、1つの記憶領域404sも、4つのブロック170A0〜170A3を有する。
記憶領域404sは、開示の技術の記憶部の一例である。4つのブロック170A0〜170A3は、開示の技術の記憶ブロックの一例である。
主メモリのメモリ領域にアクセスする場合、当該メモリ領域のアドレス情報が、タグ記憶領域404に記憶されたタグ情報と等しい場合に、主メモリに代えてキャッシュメモリがアクセスされる。第1の実施の形態では、プロファイルデータを取得できれば十分である。よって、上記メモリ領域のアドレス情報に基づくタグ情報が、当該メモリ領域に対応するキャッシュセットに対応する記憶領域404sに記憶されたタグ情報と等しいのか否かが分かれば十分である。そこで、メモリ34には、主メモリのメモリ領域のアドレス、及びキャッシュメモリの各キャッシュセットのアドレスが記憶されている。
プロファイルデータを取得したい対象の元のプログラムP001の一例が図2(A)に示されている。元のプログラムP001は、各々変数i、jで識別される配列Xの各値と配列Yの各値とを加算して、変数i、jで識別される配列Zのメモリ領域に書き込む加算処理を実行するためのプログラムである。
ここで、X[i][j]により、X[i][j]の値が記憶されている主メモリのメモリ領域のアドレスが識別され、Y[j][i] により、Y[j][i]の値が記憶されている主メモリのメモリ領域のアドレスが識別される。Z[i][j]により、Z[i][j]の値を記憶する主メモリのメモリ領域のアドレスが識別される。X[i][j]、 Y[j][i] 、Z[i][j]と各メモリ領域のアドレスとの関係がメモリ34に記憶されている。
元のプログラムP001の加算処理の流れの一例が図3に示されている。
図3に示すように、加算処理がスタートすると、ステップ42で、実行部は、変数iを0に初期化し、ステップ44で、実行部は、変数iが、変数iの総数Nより小さいか否かを判断する。変数iがNより小さい場合に、ステップ46で、実行部は、変数jを0に初期化する。ステップ48で、実行部は、変数jがjの総数でもある総数Nより小さいか否かを判断する。変数jが総数Nより小さいと判断された場合には、加算処理はステップ52に移行される。変数jがNより小さくないと判断された場合には、ステップ50に進み、実行部は変数iを1インクリメントして、加算処理はステップ44に進む。
ステップ52で、実行部は、配列X[i][j]の値を主メモリのX[i][j]で定まるメモリ領域から読み出して、t1に代入(ロード)する。ステップ54で、実行部は、配列Y [j] [i]の値を主メモリのY[j][i]で定まるメモリ領域から読み出して、t2に代入(ロード)する。ステップ56で、実行部は、t1+t2を計算して、得られた値をt3に代入(ロード)する。ステップ58で、実行部は、t3の値を、配列Z[i][j]により識別される主メモリのアドレスのメモリ領域に記憶する。ステップ60で、実行部は、変数jを1インクリメントする。ステップ60の後は、加算処理は、ステップ48に移行される。
図4には、元のプログラムをプロファイルデータ取得プログラムに変換するプログラム変換処理の流れの一例が示されている。ステップ61で、集合作成部61Aは、変更対象とする元のプログラムP001(図2(A)参照)のソースコードを取得し、各ソースコードを、例えば、4種類(Y1〜Y4)に分類した集合Zを作成する。
ここで、Y1は、制御フローに関連するコードの分類である。Y2は、計算するコードの分類である。Y3は、条件分岐の判定に関連するコードの分類である。Y4は、プリフェッチ命令のコードの分類である。
ステップ62で、ソースコード分類部62Aは、集合Zから1つのソースコードを元のプログラムのソースコードの配置順に取り出し、集合Zから消去する。ステップ63で、プログラム文作成部63Aは、取り出したソースコードがY1に分類されたか否かを判断する。ステップ63で、取り出したソースコードがY1に分類されたと判断された場合には、ステップ64で、プログラム文作成部63Aは、取り出したソースコードを、プロファイルデータ取得プログラムのソースコードとして使用する。ステップ64の後、プログラム変換処理はステップ78に移行される。
ステップ63の判定結果が否定判定の場合には、ステップ65で、プログラム文作成部63Aは、取り出したソースコードがY2に分類されたか否かを判断する。ステップ65の判定結果が肯定判定である場合には、ステップ66で、プログラム文作成部63Aは、プログラム文を作成する。即ち、「配列参照Rに基づく主メモリのバイトアドレスmを求める」及び「バイトアドレスmに対応するキャッシュメモリのキャッシュセット番号sを求める」という内容のプログラム文が作成される。ステップ67で、プログラム文作成部63Aは、「キャッシュセット番号sがキャッシュセットを表す変数sと等しい場合に、キャッシュアクセス状況を記憶するACCESSプログラムを実行する」という内容のプログラム文を作成する。ステップ68で、プログラム文作成部63Aは、全ての配列について、以上のプログラム文の作成が終了したか否かを判断し、全ての配列について以上の文の作成が終了していない場合には、ステップ66に戻る。これにより、別の配列について、以上の処理(ステップ66及びステップ67)が実行される。全ての配列について、以上の文の作成が終了した場合には、プログラム変換処理はステップ78に移行される。
ステップ65の判定結果が否定判定の場合には、ステップ69で、プログラム文作成部63Aは、取り出したソースコードがY3に分類されたか否かを判断する。ソースコードがY3に分類されたと判断された場合、プログラム文作成部63Aは、ステップ70〜ステップ72でそれぞれ、ステップ66〜ステップ68と同様の処理を実行する。ステップ73で、プログラム文作成部63Aは、「条件判定結果をファイルから読み込む」という内容のプログラム文を作成する。ステップ74で、プログラム文作成部63Aは、「条件を判定する」という内容のプログラム文を作成する。ステップ74の後、プログラム変換処理はステップ78に移行される。
ステップ69の判定結果が否定判定の場合は、取り出したソースコードはY4に分類されている。ステップ75で、プログラム文作成部63Aは、ステップ66と同様の処理を実行する。ステップ76で、プログラム文作成部63Aは、「sがキャッシュセットを表す変数sと等しい場合に、プリフェッチ用のACCESSプログラムを実行する」という内容の文を作成する。
なお、ACCESSプログラムは予め作成されており、ステップ67、ステップ71、及びステップ76では予め作成された同一のACCESSプログラムが用いられるように、プログラム文が作成される。ステップ76の後、プログラム変換処理はステップ78に移行される。
ステップ78で、プログラム文作成部63Aは、集合Zが空になったか否かを判断する。ステップ78の判定結果が否定判定の場合には、プロファイルデータ取得プログラムに変換されていないソースコードがある。そこで、プログラム変換処理はステップ62に戻って、以上の処理(ステップ62〜78)が実行される。ステップ78の判定結果が肯定判定の場合には、全てのソースコードをプロファイルデータ取得プログラムに変換したので、プログラム変換処理は終了する。
図2(A)に示された元プログラムP001は、図4のプログラム変換処理によって、図2(C)に示すプロファイルデータ取得プログラムPi(i=s(0〜N))に変換される。具体的には次の通りである。図2(A)に示す元のプログラムP001のソースコードC1及びC2は、Y1に分類される。よって、ステップ64の処理により、図2(C)に示すように、プロファイルデータ取得プログラムPiにおいて、ソースコードC1及びC2はそのまま使用される。しかし、ソースコードC3は、Y2に分類される。図2(A)におけるソースコードC3は、配列として、配列X、Y、及びZがある。よって、各配列X、Y、及びZについて、ステップ66(図2(B)も参照)の処理により、プロファイルデータ取得プログラムPiにおいて次のプログラム文が作成される。即ち、プログラム文C3−1(X)、C3−2(X)、C3−1(Y)、C3−2(Y)、C3−1(Z)、及びC3−2(Z)が作成される。また、各配列X、Y、及びZについて、ステップ67(図2(B)も参照)の処理により、プロファイルデータ取得プログラムPiにおいて、プログラム文C3−3(X)、C3−3(Y)、及びC3−3(Z)が作成される。なお、元プログラムP001のソースコードC4、C5はY1に分類される。よって、ステップ64の処理により、図2(C)に示すように、プロファイルデータ取得プログラムPiにおいて、ソースコードC4及びC5は、そのまま使用される。
プロファイルデータ取得プログラムPiは、キャッシュメモリのキャッシュセット数分作成される。各プロファイルデータ取得プログラムPiは、ほぼ同じ内容であるが、図2(C)に示すように、キャッシュセットを表す変数sが相違する。例えば、図1に示すようにs=0用のプロファイルデータ取得プログラムP0では、s=0であり、s=1用のプロファイルデータ取得プログラムP1では、s=1であり、s=N用のプロファイルデータ取得プログラムPNでは、s=Nである。
図2(C)に示すプロファイルデータ取得プログラムの処理の一例は、図5及び図6に示されている。なお、以下、当該処理の一例がs=1のプロファイルデータ取得プログラムP1のプロファイルデータ取得処理であるとして、当該処理の一例を説明する。よって、当該処理は計算機10s1によって行われる。図5におけるステップ82〜90、及びステップ110は、図2(C)のコードC1、C2、C4、及びC5に対応すると共に、図3のステップ42〜50、及びステップ60に対応する。なお、図5におけるステップ82〜90は、アドレス計算部91Aによって行われる。
ステップ92〜96は、図2(C)のプログラム文C3−1(X)〜C3−3(X)に対応する。即ち、ステップ92で、アドレス計算部91Aは、変数i及び変数jで識別される配列Xのアドレス(バイトアドレス)を求め、m0に代入する。ここで、配列X[i][j]の先頭X[0][0]により識別される主メモリのアドレスを0x08000、配列Xのデータの1つを8バイト、変数iの総数をD2(=N)とすると、m0に代入されるアドレスは、0x08000+(D2*i+j)*8である。ステップ92では更に、セット番号計算部92Aは、アドレスm0のキャッシュセット番号を求め、e0に代入する。なお、キャッシュセット1つ当たりのバイト数をBとし、キャッシュセットの総数をSとすると、キャッシュセット番号e0は、m0/Bの商をSで割った余りとして得られる。
ステップ94で、セット番号判断部93Aは、キャッシュセット番号e0がプロファイルデータ取得処理が担当するセット番号sであるか否かを判断する。上記のように、例えば、s=1のプロファイルデータ取得プログラムP1のプロファイルデータ取得処理を計算機10s1が実行する。よって、キャッシュセット番号e0が、1の場合には、当該配列Xのプロファイルデータを取得する必要があるので、プロファイルデータ取得処理は、ステップ96に進む。ステップ94の判定結果が否定判定の場合は、別の計算機が当該配列Xのプロファイルデータを取得するので、計算機10s1が実行するプロファイルデータ取得処理ではプロファイルデータが取得されない。よって、ステップ94の判定結果が否定判定の場合には、ステップ96がスキップされて、プロファイルデータ取得処理はステップ98に移行される。
ステップ98〜102は、図2(C)のプログラム文C3−1(Y)〜C3−3(Y)に対応する。ステップ98〜102は、配列Yに基づくアクセスである点で、配列Xに基づくアクセスと異なる以外は、ステップ92〜96と同様であるので、その説明を省略する。なお、プログラム文C3−1(Y)では、変数jの総数をD2(=N)としている。
ステップ104〜108は、図2(C)のプログラム文C3−1(Z)〜C3−3(Z)に対応する。ステップ104〜108は、配列Zに基づくアクセスの点で、配列Xに基づくアクセスと異なる以外は、ステップ92〜96と、同様であるので、その説明を省略する。
ステップ94、100、106の処理は、開示の技術における判定部が実行する判定の内容の一例である。
次に、図6を参照して図5のステップ96、102、108の各々で実行されるヒット又はミスをカウントするカウント処理の一例(ACCESSプログラムの処理の一例)を説明する。ステップ96、102、108では、同じACCESSプログラムが実行される。なお、キャッシュセットが異なると、異なるACCESSプログラムが実行されるが、同じキャッシュセット内であれば、同じACCESSプログラムが実行される。ここで、ステップ96、102、108で同じACCESSプログラムが実行されるのに、ステップ96、102、108ではそれぞれ、ACCESS(m0)、ACCESS(m1)、及びACCESS(m2)と表記している理由は、次の通りである。即ち、ステップ96では、アドレスm0のデータのヒット又はミスを判断し、ステップ102では、アドレスm1のデータのヒット又はミスを判断し、ステップ108では、アドレスm2のデータのヒット又はミスを判断するからである。
図6のステップ112で、ACCESSプログラム実行部94Aは、キャッシュセットsのどのブロックでヒットしているか、及び全てのブロックでミスしているのかを示す変数HIT_Pを−1に初期化する。
ステップ114で、ACCESSプログラム実行部94Aは、変数i、jで識別される配列に基づいて参照する主メモリのメモリ領域のアドレス(address)からキャッシュメモリのタグ記憶領域404sに記憶するタグ情報を求めて、Aに代入する。Aに代入されたタグ情報をタグ情報Aとする。
ステップ116〜124で、ACCESSプログラム実行部94Aは、キャッシュセットsにおける4つのブロック170A0〜170A3の何れかに上記タグ情報Aが記憶されているか否かを判断する。上記のように、第1の実施の形態では、連想数を4としている。なお、連想数は4に限られず、例えば、5、3、6、2の何れかとしてもよい。
ステップ116で、ACCESSプログラム実行部94Aは、タグ情報Aが第1のブロック170A0に記憶されているタグ情報A_0に等しいか否かを判断する。タグ情報Aが第1のブロック170A0に記憶されているタグ情報A_0に等しい場合には、ヒットとなる。そこで、ステップ126で、実行部は、ヒットのカウント数であるHIT_Cを1インクリメントすると共に、変数HIT_Pに0を代入する。0は、第1のブロック170A0でヒットしていることを示す。
ステップ116の判定結果が否定判定の場合には、ステップ118で、ACCESSプログラム実行部94Aは、タグ情報Aが第2のブロック170A1に記憶されているタグ情報A_1に等しいか否かを判断する。タグ情報Aが第2のブロック170A1に記憶されているタグ情報A_1に等しいと判断された場合には、ヒットとなる。そこで、ステップ128で、ACCESSプログラム実行部94Aは、変数HIT_Cを1インクリメントすると共に、変数HIT_Pに、第2のブロック170A1でヒットしたことを示す1を代入する。
ステップ118の判定結果が否定判定の場合には、ステップ120で、ACCESSプログラム実行部94Aは、タグ情報Aが第3のブロック170A2に記憶されているタグ情報A_2に等しいか否かを判断する。タグ情報Aが第3のブロック170A2に記憶されているタグ情報A_2に等しい場合には、ヒットとなる。そこで、ステップ130で、ACCESSプログラム実行部94Aは、変数HIT_Cを1インクリメントすると共に、変数HIT_Pに、第3のブロック170A2でヒットしたことを示す2を代入する。
ステップ120の判定結果が否定判定の場合には、ステップ124で、ACCESSプログラム実行部94Aは、タグ情報Aが、第4のブロック170A3に記憶されているタグ情報A_3に等しいか否かを判断する。タグ情報Aが第4のブロック170A3に記憶されているタグ情報A_3に等しい場合には、ヒットとなる。そこで、ステップ132で、ACCESSプログラム実行部94Aは、変数HIT_Cを、1インクリメントすると共に、変数HIT_Pに、第4のブロック170A3でヒットしたことを示す3を代入する。
ステップ124の判定結果が否定判定の場合は、全てのブロック170A1〜170A3で、ミスしているので、ステップ134で、ACCESSプログラム実行部94Aは、ミスをカウントする変数MISS_Cを1インクリメントする。
ステップ116〜124の処理は、開示の技術の判断部の判断の内容の一例である。ステップ126〜132の処理は、開示の技術の第2の処理の一例である。ステップ134の処理は、開示の技術の第1の処理の一例である。
ステップ126〜134の何れかが実行されると、プロファイルデータ取得処理はステップ136に移行される。ステップ136で、ACCESSプログラム実行部94Aは、変数HIT_Pが−1か否かを判断する。HIT_Pが−1である場合は、変数HIT_Pが初期状態のまま、即ち、全てのブロックでミスが生じている場合である。そこで、ステップ136の判定結果が肯定判定の場合には、プロファイルデータ取得処理は、ステップ144に進む。ステップ136の判定結果が否定判定の場合には、プロファイルデータ取得処理はステップ138に移行される。ステップ138で、ACCESSプログラム実行部94Aは、変数HIT_Pが0か否か、即ち、第1のブロック170A0でヒットが生じているのか否かを判断する。第1のブロック170A0でヒットが生じたと判断された場合には、プロファイルデータ取得処理はステップ146に移行される。
ステップ138の判定結果が否定判定の場合には、ステップ140で、ACCESSプログラム実行部94Aは、変数HIT_Pが1か否か、即ち、第2のブロック170A1でヒットが生じているのか否かを判断する。第2のブロック170A1でヒットが生じたと判断された場合には、プロファイルデータ取得処理はステップ148に移行される。
ステップ140の判定結果が否定判定の場合には、ステップ142で、ACCESSプログラム実行部94Aは、変数HIT_Pが2か否か、即ち、第3のブロック170A2がヒットが生じたか否かを判断する。第3のブロック170A2でヒットが生じた場合には、プロファイルデータ取得処理はステップ150に移行される。
ステップ144〜ステップ150では、ミスした場合又はヒットが生じたブロックの位置に応じて、LRU(Least Recently Used)に従ったブロックのタグ情報の書き換えを行っている。
ここで、LRUに従ったブロックの書き換えを説明する。上記のように記憶領域404sには、4つのブロック170A0〜170A3が設けられている。そして、例えば、図7(A)に示すように第1のブロック170A0、第2のブロック170A1、第3のブロック170A2、第4のブロック170A3の順により古いアドレス情報が記憶されるように定められている。即ち、第4のブロック170A3に最新のアドレス情報が記憶されるように、定められている。
ステップ136の判定結果が肯定判定の場合は、全てのブロックでミスされているので、実行部は、図7(A)に示すように、まず、第2のブロック170A1のタグ情報A_1を第1のブロック170A0に記憶(上書き)する。即ち、第1のブロック170A0に記憶されていた最も古いタグ情報A_0はタグ情報A_1に書き換えられる。次に、ACCESSプログラム実行部94Aは、第3のブロック170A2のタグ情報A_2を第2のブロック170A1に上書きする。実行部は、第4のブロック170A3のタグ情報A_3を第3のブロック170A2に上書きする。そして、ACCESSプログラム実行部94Aは、今回のアクセスにおける主メモリのメモリ領域のタグ情報Aを第4のブロック170A3に上書きする。
ステップ138の判定結果が肯定判定の場合は、第1のブロック170A0でヒットが生じている。即ち、図7(B)に示すように、第1のブロック170A0がヒットしている。そこでACCESSプログラム実行部94Aは、第1のブロック170A0のタグ情報A_0を一次的に保持するためtmpに保持させる。ACCESSプログラム実行部94Aは次のように上書きする。即ち、第2のブロック170A1のタグ情報A_1が第1のブロック170A0に、第3のブロック170A2のタグ情報A_2が第2のブロック170A1に、第4のブロック170A3のタグ情報A_3が第3のブロック170A2に上書される。ところで、タグ情報A_0〜A_3の中で最も古いタグ情報はタグ情報A_0である。しかし、今回、第1のブロック170A0でヒットが生じているので、タグ情報A_0は、最新のタグ情報Aに等しい。そこで、tmpに保持されたタグ情報Aを第4のブロック170A3に上書きする。
ステップ140の判定結果が肯定判定の場合は、第2のブロック170A1でヒットが生じている。即ち、図7(C)に示すように、ACCESSプログラム実行部94Aは、第2のブロック170A1に記録されているタグ情報A_1を、tmpに保持させる。また、ACCESSプログラム実行部94Aは次のように上書きする。即ち、第3のブロック170A2に記録されているタグ情報A_2が第2のブロック170A1に上書きされる。また、第4のブロック170A3に記録されているタグ情報A_3が第3のブロック170A2に上書きされる。tmpに保持された最新のタグ情報Aが第4のブロック170A3に上書きされる。なお、第2のブロック170A1に記憶されたタグ情報A_1は最新のタグ情報である。一方、第1のブロック170A0に記憶されたタグ情報A_0は最も古いタグ情報である。よって、第1のブロック170A0に記憶されたタグ情報A_0は書き換える必要はない。よって、第1のブロック170A0に記憶されたタグ情報A_0は第1のブロック170A0に記憶されたままにされる。
ステップ142の判定結果が肯定判定の場合は、第3のブロック170A2でヒットが生じている。即ち、図7(D)に示すように、ACCESSプログラム実行部94Aは、第3のブロック170A2に記録されたタグ情報A_2をtmpに保持させる。また、ACCESSプログラム実行部94Aは次のように上書きする。即ち、第4のブロック170A3に記録されたタグ情報A_3が第3のブロック170A2に、tmpに保持された最新のデータが、第4のブロック170A3に上書きされる。なお、第3のブロック170A2に記憶されたタグ情報A_2は最新のタグ情報である。一方、第1のブロック170A0及び第2のブロック170A1に記憶されたタグ情報はそれぞれ、最も古いタグ情報、その次に古いタグ情報である。よって、第1のブロック170A0及び第2のブロック170A1に記憶されたタグ情報は書き換える必要はない。よって、第1のブロック170A0及び第2のブロック170A1に記憶されたタグ情報は第1のブロック170A0及び第2のブロック170A1に記憶されたままにされる。
なお、ステップ142の判定結果が否定判定の場合には、第4のブロック170A3でヒットが生じている。第4のブロック170A3と記憶されているタグ情報は、最新のタグ情報である。第1のブロック170A0〜第4のブロック170A3のタグ情報は古い順に並んでいるので、第1のブロック170A0〜第4のブロック170A3のタグ情報の書き換えは必要ない。よって、ステップ142の判定結果が否定判定の場合には、ブロックのタグ情報の書き換えは行われない。
ステップ144〜150の処理は、開示の技術の記憶ブロックを書き換える内容の一例である。
配列X、Y、Zの各値は、変数i、jで識別される。プロファイルデータ取得処理は、変数iが0〜N−1(=D2)、及び変数jが0〜N−1(=D2)についてステップ92〜108の各処理が実行されることにより、終了する。
計算機10s0は、キャッシュセットs=0用に、プロファイルデータ取得処理を実行する。計算機10s1は、キャッシュセットs=1用に、プロファイルデータ取得処理を実行する。計算機10sNは、キャッシュセットs=N用に、プロファイルデータ取得処理を実行する。従って、各計算機10s0〜10sNは、キャッシュセット毎のプロファイルデータを取得する。なお、各計算機10s0〜10sNは、並列して、プロファイルデータ取得処理を実行する。
以上のプロファイルデータ取得処理が終了すると、各計算機は、次の表示処理(DUMP)を実行する。即ち、各計算機は、自機に対応するキャッシュセットのプロファイルデータを取得できるので、ヒットの総数及びミスの総数を表示部30に表示する。そして、例えば、計算機10s0に、その他の計算機10s1〜10sNで識別されたプロファイルデータを送信する。計算機10s0は、キャッシュセット毎にヒットの総数及びミスの総数を表示すると共に、全体のヒットの総数及びミスの総数を表示する。
次に、第1の実施の形態の効果を説明する。
第1に、プログラム変換プログラムが、プロファイルデータを取得したい元のプログラムを、キャッシュメモリのキャッシュセット毎に、プロファイルデータを取得するためのプロファイルデータ取得プログラムに変換する。よって、キャッシュメモリのキャッシュセット毎に、プロファイルデータを取得するためのプロファイルデータ取得プログラムを作成することができる。
第2に、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得プログラムを実行するので、キャッシュメモリのキャッシュセット毎に、プロファイルデータを取得することができる。具体的には、キャッシュセット毎にミスの総数及びヒットの総数を取得することができる。なお、主メモリからデータを読み出す場合(図5のステップ92〜102)ばかりでなく、主メモリにデータを書き込む場合(図5のステップ104〜108)にも、プロファイルデータを取得することができる。
第3に、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得プログラムを各プロファイルデータ取得プログラムに対応する計算機が並列してプロファイルデータ取得処理を実行する。よって、例えば、1つの計算機で、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得プログラムを順に実行する場合と比較すると、短時間にキャッシュセット毎のプロファイルデータを取得することができる。例えば、キャッシュセット数が100個以上〜数千個以上の場合には、100倍〜数千倍以上高速にキャッシュセット毎のプロファイルデータを取得することができる。
第4に、主メモリのメモリ領域のアドレス情報に基づくタグ情報がキャッシュセットの各ブロックのタグ情報と等しいか否かを判断するだけであるので、元のプログラムが計算するプログラムであっても、浮動小数点演算を必要としない。
第5に、プロファイルデータ取得処理は、具体的計算をすることなく単にプロファイルデータを取得するためだけの処理であるので、キャッシュセット毎のプロファイルデータを高速に取得することができる。
第6に、主メモリやキャッシュメモリへのアクセスを現実に行うものではなく、主メモリやキャッシュメモリへのアクセスをシミュレーションする。よって、主メモリやキャッシュメモリを用いる計算システム(実機)を用いずに、キャッシュセット毎のプロファイルデータを取得することができる。これにより、次の効果も得られる。即ち、実機を用いる場合には、当該実機のキャッシュメモリの構成(キャッシュセット数や、ブロック数)に限定されたプロファイルデータしか得られない。しかし、種々のキャッシュメモリの構成に対応して、計算機の数及び計算機のメモリ内のタグ記憶領域のブロックの数を変更すれば、種々のキャッシュメモリの構成のキャッシュセット毎のプロファイルデータを取得することができる。
次に、第1の実施の形態の変形例を説明する。
第1に、キャッシュメモリのキャッシュセット数分の計算機を使用することに限定されずに、例えば、次のようにしてもよい。1つの計算機で、キャッシュメモリのキャッシュセット毎のプロファイルデータ取得処理を実行してもよい。また、例えば、2つの計算機を用いて、一方の計算機で、セット番号が奇数のキャッシュセットのプロファイルデータ取得処理を実行し、他方の計算機で、セット番号が偶数のキャッシュセットのプロファイルデータ取得処理を実行してもよい。このような変形例が可能な理由は次の通りである。即ち、各キャッシュセットに対応する各プロファイルデータ取得プログラムは、キャッシュセット番号sで識別される。よって、あるキャッシュセットのプロファイルデータを取得したい場合には、当該キャッシュセット番号sにより識別されるプロファイルデータ取得プログラムのみが選択されることが可能である。選択されたプロファイルデータ取得プログラムを実行することにより、当該キャッシュセットのプロファイルデータを取得することができる。
第2に、種々の構成のキャッシュメモリのキャッシュセット毎のプロファイルデータを取得するようにしてもよい。即ち、キャッシュセット数を変えたり、各セットのブロック数を変えたり、これに応じて、計算機の数を変えたり、計算機のメモリ内のタグ記憶領域のブロック数を変えたり、してもよい。
第3に、ヒットの総数及びミスの総数の双方をカウントすることに限定されず、例えば、ヒットの総数及びミスの総数の何れか一方をカウントしてもよい。そして、図5のステップ94の判定結果が肯定判定であった肯定判定回数を計数する。更に、例えば、ヒットの総数のみがカウントされた場合には、肯定判定回数からヒットの総数を減算して、ミスの総数を計算する。また、ミスの総数のみがカウントされた場合には、肯定判定回数からミスの総数を減算して、ヒットの総数を計算する。
第4に、タグ情報に代えて、アドレス自体を用いるようにしてもよい。また、主メモリにデータを読み出す場合や書き込む場合の各場合について、各場合に対応するヒット変数及びミス変数を更新してもよい。変数を1インクリメントしているが、予め定めた値からヒット又はミスに応じて1減算してもよい。
以上の変形例はすべて後述する他の全ての実施の形態にも適用される。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態の構成は、第1の実施の形態の構成と同様であるのでその説明を省略する。なお、第2の実施の形態では、データベース12に、後述する条件判定の結果を保存したファイルが記憶されている点で第1の実施の形態の構成と相違する。
次に、第2の実施の形態の作用を説明する。第2の実施の形態の作用は、第1の実施の形態の作用とほぼ同様であるので、異なる部分のみ説明する。
第2の実施の形態では、データの値によって実行する内容が変化するプログラムを、プロファイルデータを取得したい元のプログラムP002(図8(A)参照)としている。この元のプログラムP002による処理の一例は、図9にフローチャートで示されている。図8及び図3を比較して理解されるように、第2の実施の形態の元のプログラムP002の処理の一例は、第1の実施の形態の元のプログラムP001の処理の一例とほぼ同様であるので、異なる部分について説明する。即ち、第2の実施の形態の元のプログラムP002の処理の一例では、実行部がステップ42〜54を実行した後、ステップ152で、実行部は、t1がt2より小さいか否かを判断する。ステップ152の判定結果が肯定判定の場合、ステップ154で、実行部は、条件判定の結果である値0を、変数i及び変数jで識別される配列Zに対応する主メモリのアドレスに記録する。このように、ステップ152の判断結果に応じて、値0を主メモリに記憶するかしないかのように、実行する内容が変化する。
このような元のプログラムP002が第1の実施の形態のプログラム変換プログラム(図4)と同じプログラム変換プログラムによって変換されると、図8(C)に示すプロファイルデータ取得プログラムPiが生成される。以下、プログラム変換処理の一例を説明する。元のプログラムP002(図8(A))のソースコードC1、C2、C4、及びC5はそれぞれ、図2(A)の元のプログラムP001のソースコードC1、C2、C4、及びC5と同様である。よって、元のプログラムP002(図8(A))のソースコードC1、C2、C4、及びC5が変換される処理は、第1の実施の形態と同様であるので、その説明を省略する。なお、元のプログラムP002(図8(A))のソースコードC8はY1に分類されるので、プロファイルデータ取得プログラムPiには、そのコードC8が使用される。
次に、元のプログラムP002(図8(A))のソースコードC6の変換処理を説明する。ソースコードC6はY3に分類される。よって、まず、ステップ70〜71(図8(B)も参照)の処理により、ソースコードC6は次のように変換される。ソースコードC6における配列参照Rは、配列X及び配列Yに基づく。配列Xについて、ステップ70の処理により、図8(C)のプログラム文C6−1(X)及びC6−2(X)が作成され、ステップ71の処理により、プログラム文C6−3(X)が作成される。同様に、配列Yについて、ステップ70の処理によりプログラム文C6−1(Y)及びC6−2(Y)が作成され、ステップ71の処理によりプログラム文C6−3(Y)が作成される。次に、ステップ73(図8(B)も参照)の「条件判定結果をファイルから読み込む」というプログラム文の作成処理が実行されることにより、プログラム文C6−41が作成される。ステップ74の「条件を判定する」というプログラム文の作成処理が実行されることにより、プログラム文C6−42が作成される。
なお、ソースコードC7(図8(A))はY2に分類され、ステップ66〜68の処理により、プログラム文C7−1(Z)〜C7−3(Z)が作成される。
元のプログラムP002(図8(A))が上記のように変換されることにより得られたプロファイルデータ取得プログラムPi(図8(C))のプロファイルデ―タ取得処理の一例は、図10に示されている。当該処理の一例は、図5とほぼ同様であるので、異なる部分のみ説明する。即ち、ACCESSプログラム実行部94Aは、ステップ82〜102を実行した後、ステップ160で、条件分岐の結果をファイルから読み込み、cに代入する。ステップ162で、ACCESSプログラム実行部94Aは、cが0でないか否か、即ち、Xの値(t1)がYの値(t2)よりも小さいか否かを判断する。cが0でない場合、即ち、Xの値(t1)がYの値(t2)よりも小さい場合には、プロファイルデータ取得処理は、ステップ104に進む。一方、cが0である場合、即ち、Xの値(t1)がYの値(t2)よりも小さくない場合には、プロファイルデータ取得処理は、ステップ104〜108をスキップして、ステップ110に進む。
第2の実施の形態の効果として、元のプログラムがデータの値によって実行する内容が変化するプログラムであっても、第1の実施の形態と同様の効果が得られる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。
第3の実施の形態の構成は、第1の実施の形態の構成とほぼ同様であるので、異なる部分のみ説明する。
第3の実施の形態では、複数段、例えば、2段のキャッシュを用いることを想定する点で第1の実施の形態及び第2の実施の形態と異なる。即ち、図11に示すように、第3の実施の形態は、2段のキャッシュメモリ170(L1)、172(L2)を備えることを想定する。第1のキャッシュメモリ170のセットは4個であるのに対し、第2のセットは16個である。従って、第3の実施の形態では、タグ記憶領域も複数段、即ち、2段となっている。よって、あるキャッシュセットに対応する計算機のメモリ34には、1段のキャッシュセットに対応して1個の記憶領域が、2段のキャッシュセットに対応して4つの記憶領域が設けられている。
第1段のキャッシュメモリ170のセット番号と、第2段のキャッシュメモリ172のセット番号とは次の関係を有する。第2段のキャッシュメモリ172の各キャッシュセットには、当該キャッシュセットのセット番号を4(第1段のキャッシュメモリ170のセット数)で割った余りに対応するセット番号の第1段のキャッシュメモリ170のセットが対応する。例えば、第2段のキャッシュメモリ172のセット番号0は、0を4で割った余りは0であるので、第1段のキャッシュメモリ170のセット番号0のキャッシュセットに対応する。以下、同様に、第2段のキャッシュメモリ172のセット番号1、2、3は第1段目のキャッシュメモリ170のセット番号1、2、3に対応する。同様に、第2段のキャッシュメモリ172のセット番号4〜7、8〜11、及び12〜15はそれぞれ、第1段目のキャッシュメモリ170のセット番号0〜3に対応する。よって、第2段のキャッシュメモリ172のキャッシュセットは、第1段のキャッシュメモリ170のキャッシュセットのセット番号0、1、2、3にそれぞれ対する4つのグループ、即ち、g=0グループ〜g=3グループに分けられる。
なお、第1段のキャッシュメモリ170及び第2段のキャッシュメモリ172の各々の連想数は4である。図11に示すように、第1段のキャッシュメモリ170のキャッシュセットに対応するタグ記憶領域は、4つのブロック170A0〜170A3を有する。また、第2段のキャッシュメモリ172のキャッシュセットに対応する4個のタグ記憶領域の各々は、4つのブロック172A00〜172A30を有する。
4つのブロック172A00〜172A30の処理は、開示の技術の対応記憶部の一例である。
次に、第3の実施の形態の作用を説明する。なお、第3の実施の形態の作用は、第1の実施の形態の作用とほぼ同様なので、異なる部分のみ説明する。
第3の実施の形態におけるプロファイルデータを取得したい元のプログラムは、第1の実施の形態の元のプログラム(図2(A)参照)と同じであるので、その説明を省略する。第3の実施の形態のプロファイルデータ取得プログラムも、第1の実施の形態のプログラムプロファイルデータ取得プログラム(図5及び図6参照)とほぼ同様であるので、異なる部分のみを説明する。第3の実施の形態のプロファイルデータ取得処理の一例は、図12に示されているように、プロファイルデータ取得処理(図6)のステップ134の後に次の処理が実行される。即ち、ステップ164で、ACCESSプログラム実行部94Aは、主要メモリのアドレス(address)を用いて、第2段のキャッシュメモリ172(L2)についてヒット又はミスをカウントするカウント処理を実行する。
ステップ164の処理の一例は、具体的には、図13に示されている。図13のステップ180で、ACCESSプログラム実行部94Aは、アドレスから第2段のキャッシュメモリ172のキャッシュセットのグループ番号gを求める。即ち、主メモリのアドレスに対応して、第1段のキャッシュメモリ170のセット番号が求められる。また、前述したように、第1段のキャッシュメモリ170の各セット番号には、第2段のキャッシュメモリ172のセット番号が対応している。そこで、本ステップ180で、ACCESSプログラム実行部94Aは、次のようにして、第2段のキャッシュメモリ172のキャッシュセットのグループ番号gを求める。即ち、主メモリのアドレス、第1段のキャッシュメモリ170のキャッシュセット、及び第2段のキャッシュメモリ172のキャッシュセットの対応関係から当該グループ番号gを求める。
ステップ182で、ACCESSプログラム実行部94Aは、上記グループ番号gが、自装置がヒット又はミスのカウント処理を担当するグループg=0か否かを判断する。ステップ182の判定結果が肯定判定の場合には、ステップ188で、ACCESSプログラム実行部94Aは、主メモリのアドレスでグループg=0のキャッシュセットにおけるヒット又はミスのカウント処理を行う。一方、ステップ182の判定結果が否定判定の場合には、ステップ184で、ACCESSプログラム実行部94Aは、上記グループ番号gが、自装置が、ヒット又はミスのカウント処理を担当するグループg=01か否かを判断する。ステップ184の判定結果が肯定判定の場合には、ステップ190で、上記アドレスで、g=1グループのヒット又はミスのカウント処理を行う。
ステップ184の判定結果が否定判定の場合には、ステップ186で、ACCESSプログラム実行部94Aは、上記グループ番号gが、自装置がヒット又はミスのカウント処理を担当するグループg=2か否かを判断する。ステップ186の判定結果が肯定判定の場合には、ステップ192で、ACCESSプログラム実行部94Aは、上記アドレスでg=2グループのヒット又はミスのカウント処理をする。
ステップ186の判定結果が否定判定の場合には、上記グループ番号gは自装置がヒット又はミスのカウント処理を担当するグループg=3である。よって、この場合には、ステップ194で、ACCESSプログラム実行部94Aは、上記アドレスで、グループg=3のヒット又はミスのカウント処理を行う。
ここで、例えば、計算機10s0は、主メモリのアドレスでグループg=0のキャッシュセットにおけるヒット又はミスのカウント処理を担当する。よって、計算機10s0では、ステップ182の判定結果が肯定判定となって、ステップ188の処理が行われる。
図14(B)に示すように、第1段のキャッシュメモリ170のセット番号が0のキャッシュセットには、第2段のキャッシュメモリ172のg=0グループのキャッシュセット0、4、8、12が対応する。ステップ188の処理として、このキャッシュセット0、4、8、12の各々について、次のカウント処理が実行される。以下では、キャッシュセット0を例にとり、カウント処理を説明する。なお、キャッシュセット0の第1のブロック172A00〜第4のブロック172A30には、タグ情報A_0_L20〜A_3_L20が記憶されている。
ステップ188の処理がスタートすると、図14(A)におけるステップ202g0で、変数HIT_P_L20を−1に初期化する。尚、変数HIT_P_L20は、第2段のキャッシュメモリ172のキャッシュセットsのどのブロックでヒットしているか、及び全てのブロックでミスしているかを示す変数である。
ステップ204g0で、ACCESSプログラム実行部94Aは、上記アドレスからキャッシュメモリ172のタグ記憶領域に記憶するデータ情報(タグ情報)を求めてAに代入する。
ステップ206g0で、ACCESSプログラム実行部94Aは、タグ情報Aが、第2段目のキャッシュメモリ172における第1のブロック172A00に記録されたタグ情報A_0_L20と等しいか否かを判断する。タグ情報Aが当該タグ情報A_0_L20と等しい場合には、第1のブロック172A00でヒットしている。そこで、ステップ214g0で、ACCESSプログラム実行部94Aは、第2段のキャッシュメモリ172においてヒットしている回数を示す変数HIT_C_L20を1インクリメントする。また、ACCESSプログラム実行部94Aは、変数HIT_P_L20に、第1のブロック172A00でヒットしたことを示す「0」を代入する。
ステップ206g0の判定結果が否定判定の場合には、ステップ208g0で、ACCESSプログラム実行部94Aは、タグ情報Aが第2のブロック172A10に記憶されたタグ情報A_1_L20と等しいか否かを判断する。ステップ208g0の判定結果が肯定判定の場合には、第2のブロック172A10でヒットしている。そこで、ステップ216g0で、ACCESSプログラム実行部94Aは、変数HIT_C_L20を1インクリメントし、変数HIT_P_L20に、第2のブロック172A10でヒットしていることを示す「1」を代入する。
ステップ208g0の判定結果が否定判定の場合には、ステップ210g0で、ACCESSプログラム実行部94Aは、タグ情報Aが第3のブロック172A20に記憶されたタグ情報A_2_L20と等しいか否かを判断する。ステップ210g0の判定結果が肯定判定の場合には、第3のブロック172A20でヒットしている。そこで、ステップ218g0で、ACCESSプログラム実行部94Aは、変数HIT_C_L20を1インクリメントし、変数HIT_P_L20に、第3のブロック172A20でヒットしていることを示す「2」を代入する。
ステップ210g0の判定結果が否定判定の場合には、ステップ212g0で、ACCESSプログラム実行部94Aは、タグ情報Aが第4のブロック172A30に記憶されたタグ情報A_3_L20と等しいか否かを判断する。ステップ212g0の判定結果が肯定判定の場合には、第4のブロック172A30でヒットしている。そこで、ステップ220g0で、ACCESSプログラム実行部94Aは、変数HIT_C_L20を1インクリメントし、変数HIT_P_L20に、第4のブロック172A30でヒットしていることを示す「3」を代入する。
ステップ212g0の判定結果が否定判定の場合は、何れのブロック172A00〜172A30においてもヒットしなかった場合である。よって、ステップ222g0で、ACCESSプログラム実行部94Aは、第2段のキャッシュメモリにおけるミスをカウントするための変数MISS_C_L20を1インクリメントする。
ステップ206g0〜212g0の処理は、開示の技術の記憶判断部の判断の一例である。ステップ214g0〜222g0の処理は、開示の技術の第3の処理の一例である。ステップ222g0の処理は、開示の技術の第4の処理の一例である。
なお、ステップ224g0〜238g0の処理は、第2段のキャッシュメモリの第1のブロック〜第4のブロックのタグ情報のLRUに基づくタグ情報の書き換えである。ステップ224g0〜238g0の処理は、第2段のキャッシュメモリを対象にする点で、第1の実施の形態における図6のステップ136〜150と異なるが、その具体的処理は同様であるので、その説明を省略する。
図14(A)に示した処理は、更にg=0グループの他の3つのキャッシュセット4、8、12の各々の各ブロックに対しても行われる。
図14(A)に示すプログラムは、g=0グループに対するものである。本実施の形態では、他のグループとして、グループg=1〜g=3がある。g=1グループに対して、図15に示すカウント処理が別の計算機で実行される。g=2グループに対して図16に示すカウント処理が更に別の計算機で実行される。g=3グループに対して図17に示すカウント処理が更に別の計算機で実行される。
ステップ164の処理、即ち、図13の処理と図14〜図17のグループに応じた何れかの処理とが実行されると、プロファイルデータ取得処理は図12のステップ136に移行される。
第2段のキャッシュメモリの全てのブロックでミスが生じた場合、HIT_Pは−1のままであるので、図12のステップ136が肯定され、ステップ144で、第1段のキャッシュメモリのブロックのタグ情報の書き換えが行われる。
以上のプロファイルデータ取得処理が終了すると、各計算機は、次の表示処理(DUMP)を実行する。即ち、各計算機は、自機に対応する第1段のキャッシュメモリのキャッシュセットにおけるヒットの総数(HIT_Cの最終値)及びミスの総数(MISS_Cの最終値)を表示部30に表示する。また、各計算機は、自機に対応する、第2段のキャッシュメモリの各キャッシュセットにおけるヒットの総数(例えば、HIT_C_L20の最終値)及びミスの総数(例えば、MISS_C_L20の最終値)を表示する。
そして、例えば、計算機10s0に、他の計算機10s1〜10sNのプロファイルデータを送信する。計算機10s0は、受信したプロファイルデータに基づいて、次のようにプロファイルデータを表示する。計算機10s0は、第1段のキャッシュメモリのキャッシュセット毎のヒットの総数及びミスの総数を一覧表示すると共に第2段のキャッシュメモリの各グループのヒットの総数及びミスの総数を一覧表示する。更に、計算機は、第2段のヒットの総数の総数及びミスの総数の総数と、第2段のキャッシュメモリの各グループのヒットの総数の総数及びミスの総数の総数とを表示する。
なお、上記例では、第2段のキャッシュメモリの同じグループに属するキャッシュセット全体におけるヒットの総数及びミスの総数を求めている。しかし、第2段のキャッシュメモリの同じグループに属する各キャッシュセットのヒットの総数及びミスの総数を個別に求めて、表示してもよい。よって、上記一覧表示の際も、第2段のキャッシュメモリの同じグループに属する各キャッシュセットのヒットの総数及びミスの総数を個別に一覧表示してもよい。
次に、第3の実施の形態の効果を説明する。
まず、第3の実施の形態は、第1の実施の形態の効果を有する。
また、第3の実施の形態は、第1段のキャッシュメモリのキャッシュセット毎のプロファイルデータを取得することができる。また、第3の実施の形態は、第2段のキャッシュメモリの、第1段のキャッシュメモリのキャッシュセットに対応するヒット及びミスの回数を計数するので、第2段のキャッシュメモリのヒットの総数及びミスの総数を取得することができる。
次に、第3の実施の形態の変形例を説明する。
変数HIT_C_L20及び変数MISS_C_L20の双方をインクリメントすることに限定されず、例えば、変数HIT_C_L20及び変数MISS_C_L20の何れか一方をカウントしてもよい。そして、例えば、変数HIT_C_L20のみインクリメントされた場合には、図12のステップ134に基づく変数MISS_Cの最終値から、変数HIT_C_L20の最終値を減算して、変数MISS_C_L20の最終値を計算する。また、変数MISS_C_L20のみインクリメントされた場合には、図12のステップ134に基づく変数MISS_Cの最終値から、変数MISS_C_L20の最終値を減算して変数HIT_C_L20の最終値を計算する。
[第4の実施の形態]
次に、第4の実施の形態を説明する。
第4の実施の形態の構成は、第1の実施の形態の構成と同様であるので、その説明を省略する。
次に、第4の実施の形態の作用を説明する。第4の実施の形態は、各配列毎にヒットミスがカウントされて、プロファイルデータが取得される。
第4の実施の形態のプロファイルデータを取得したい元のプログラムは第1の実施の形態(図2(A))と同じである。第4の実施の形態のプロファイルデータ取得プログラムも、第1の実施の形態のプロファイルデータ取得プログラム(図2(C)参照)とほぼ同様である。第4の実施の形態のプロファイルデータ取得処理の一例は、図18及び図19にフローチャートで示されている。図18及び図19に示されている処理は、第1の実施の形態のプロファイルデータ取得処理(図5と図6)とほぼ同様であるので、異なる部分のみを説明する。
図18のステップ94の判定結果が肯定判定の場合には、ステップ240で、ACCESSプログラム実行部94Aは、図19に示すヒット又はミスをカウントするカウント処理を実行する。図19に示すように、カウント処理は、第1の実施の形態のカウント処理(図6)とほぼ同様であるので、異なる部分のみを説明する。図19におけるステップ134で変数MISS_Cが1インクリメントされた後、ステップ252で、ACCESSプログラム実行部94Aは、今回のミスが配列Xで生じたか否かを判断する。配列Xでミスが生じた場合には、ステップ254で、ACCESSプログラム実行部94Aは、配列Xでミスが生じた回数を示す変数X_MISSを1インクリメントする。一方、配列Xでミスしていない場合には、ステップ252の判定結果は否定判定であるのでステップ254の処理がスキップされて、カウント処理はステップ256に進む。
ステップ256で、ACCESSプログラム実行部94Aは、配列Yでミスが生じたか否かを判断する。配列Yでミスが生じたと判断した場合には、ステップ258で、ACCESSプログラム実行部94Aは、配列Yでミスした回数を示す変数Y_MISSを1インクリメントする。一方、配列Yでミスが生じていない場合には、ステップ256の判定結果は否定判定であるので、ステップ258の処理がスキップされて、カウント処理はステップ260に進む。
ステップ260で、ACCESSプログラム実行部94Aは、配列Zでミスが生じたか否かを判断する。配列Zでミスが生じた場合には、ステップ262で、ACCESSプログラム実行部94Aは、配列Zでミスが生じた回数を示す変数Z_MISSを1インクリメントする。配列Zでミスが生じていない場合には、ステップ260の判定結果は否定判定であるので、ステップ262の処理がスキップされ、カウント処理は、ステップ136に進む。
ステップ254、258、262の処理は、開示の技術の配列ミス変数を更新する内容の一例である。
上記のようにステップ240(図18)の処理が実行された後、前述したステップ98及びステップ100の各処理が実行され、カウント処理はステップ242に進む。ステップ242の処理は、ステップ240の処理と同様であるので、その説明を省略する。
上記のようにステップ242の処理が実行された後、前述したステップ104及びステップ106の各処理が実行され、カウント処理はステップ244に進む。ステップ244の処理は、ステップ240の処理と同様であるので、その説明を省略する。
ここで、図18におけるステップ240、ステップ242、及びステップ244の各処理が同じであるのに、図18で、ACCESS(″X″、m0)、ACCESS(″Y″、m1)、及びACCSESS(″Z″、m2)と表記している理由は次の通りである。
ステップ92の処理により、ステップ240では、配列Xについてミスが判定される。また、ステップ98の処理により、ステップ242では、配列Yについてミスが判定される。更に、ステップ104の処理により、ステップ244では配列Zについてミスが判定される。このように、ミスが生じた配列に応じて計数する点で異なるので、上記のように表記している。
以上のようにプロファイルデータ取得処理が終了すると、各計算機は次のように表示処理(DUMP)を実行する。即ち、各計算機は、第1の実施の形態と同様にヒットの総数及びミスの総数を表示する。また、第4の実施の形態では、配列毎にミスの総数を取得するので、各計算機は、自機に対応するキャッシュセットにおける配列毎のミスの総数を表示する。更に、計算機10s0は、他の計算機10s1〜10sNから受信したプロファイルデータに基づいて、キャッシュメモリ全体での配列毎のミスの総数を表示する。
次に第4の実施の形態の効果を説明する。
まず、第4の実施は、第1の実施の形態の効果を有する。
更に、第4の実施の形態は、キャッシュセット毎において更に、配列毎にミスの回数を計数するので、配列毎にミスの総数を取得することができる。
なお、各配列についてヒットの総数をカウントし、ミスの総数の表示と同様に表示してもよい。
[第5の実施の形態]
次に、第5の実施の形態を説明する。
第5の実施の形態の構成は、第1の実施の形態の構成と同様であるので、その説明を省略する。なお、第5の実施の形態のデータベース12には、例えば、配列Xにおいていくつか先のデータを読み出すプリフェッチ(prefetch)命令を配置する位置及びそのパラメータの情報が記憶されている。ここで、プリフェッチ命令を配置する位置としては、図20(A)における元のプログラムP005に示すように、例えば、第3番目のデータソースの位置である。また、パラメータとしては、どの位先のデータを主メモリから読み出すのかを示す。例えば、64個先のメモリ領域のデータである。
第5の実施の形態では、実行部は、プリフェッチ命令をプログラムに挿入した場合のプリフェッチの効果を検証する。即ち、予め64個先の主メモリのメモリ領域のデータを読み出してキャッシュメモリに記憶しておくことにより、プログラムの実行により、当該データを読み出す必要がある場合に、当該データをキャッシュメモリから読み出すことができるのかが検証される。
プロファイルデータを取得したい元のプログラムP005は、図20(A)に示すように、第1の実施の形態の元のプログラムP001(図2(A)参照)とほぼ同様であるので、異なる部分のみを説明する。元のプログラムP005は、ソースコードC2とソースコードC3との間に、配列Xにおいて、変数i及び変数j+64に識別される主メモリのメモリ領域のデータを読み出すことを命令するソースコードC10が配置されている。この点で、元のプログラムP005は、第1の実施の形態の元のプログラムP001と相違する。第5の実施の形態の元のプログラムP005の加算処理の一例が図21に示されている。第5の実施の形態の加算処理(図21)は、第1の実施の形態の加算処理(図3)とは、第1の実施の形態の加算処理のステップ48の判定結果が肯定判定の場合、ステップ52の処理の前に、ステップ270の処理が実行される点で相違する。即ち、ステップ270で、実行部は、変数i及び変数j+64で識別される配列Xのアドレスの値を読み出す。
元のプログラムP005は、第1の実施の形態のプログラム変換プログラムと同じプログラム変換プログラムによって、変換される。元のプログラムP005が変換されることにより得られたプログラムプロファイルデータ取得プログラムが図20(C)に示されている。第5の実施の形態の元のプログラムP005のソースコードC1、C2、C3、C4、及びC5は、第1の実施の形態の元のプログラムP001のソースコードC1、C2、C3、C4、及びC5と同様である。よって、第1の実施の形態と同様に、図20(C)に示すようにプログラム文C1、C2、C3−1(X)〜C3−3(Z)、C4、及びC5が生成される。第5の実施の形態の元のプログラムP005のソースコードC10は、Y4に分類されるので、ステップ75(図20(B)を参照)で、プログラム文C10−1及びC10−2が生成される。そしてステップ76(図20(B)を参照)でプログラム文C10-3が生成される。
第5の実施の形態のプロファイルデータ取得処理の一例が図22及び図23に示されている。図22及び図23に示すプロファイルデータ取得処理は、第1の実施の形態のプロファイルデータ取得処理の一例(図5及び図6)とほぼ同様であるので、異なる部分のみを説明する。ステップ88の判定結果が肯定判定の場合には、ステップ272で、アドレス計算部91Aは、変数i及びj+64で識別される配列Xの主メモリ上のメモリ領域のアドレスを求め、mpに代入する。セット番号計算部92Aは、mpに代入されたアドレスmpに対応するキャッシュメモリのキャッシュセット番号を求め、epに代入する。
ステップ274で、セット番号判断部93Aは、キャッシュセット番号epが、プロファイルデータ取得処理が担当するキャッシュセットのセット番号sか否かを判断する。キャッシュセット番号epがsである場合に、ステップ276で、ACCESSプログラム実行部94Aは、後述するヒット又はミスをカウントするカウント処理を実行する。ステップ276の処理の後、または、ステップ274の判定結果が否定判定の場合、プロファイルデータ取得処理はステップ92に進む。ステップ92の処理が実行され、ステップ94の判定結果が肯定判定の場合には、ステップ278で、ACCESSプログラム実行部94Aは、変数i及び変数jで識別される配列Xのヒット又はミスのカウント処理を実行する。なお、ステップ278の処理は、ステップ276の処理と同様である。
ステップ274の処理は、本開示の技術における非判定データについて予め判定を行うことの一例である。
ステップ278の処理の後、プロファイルデータ取得処理はステップ98に進む。ステップ100の判定結果が肯定判定の場合、ステップ280で、ACCESSプログラム実行部94Aは、変数j及び変数iで識別される配列Yのヒット又はミスをカウントするカウント処理を実行する。ステップ280の処理は、ステップ276の処理と同様である。
ステップ280の処理の後、プロファイルデータ取得処理はステップ104に進み、ステップ106の判定結果が肯定判定の場合、ACCESSプログラム実行部94Aは、ステップ282の処理を実行する。ステップ282の処理は、ステップ276の処理と同様である。
ここで、図22におけるステップ276、278、280、ステップ282の各処理が同じであるのに、図22で、ACCESS(mp、1)、ACCESS(m0、0)、ACCESS(m1、0)、及びACCESS(m2、0)と表記している。これは次の理由からである。
ステップ272の処理により、プリフェッチされた配列Xについてヒット又はミスが判定される。ステップ92の処理により、ステップ278では、配列Xについて、ヒット又はミスが判定される。また、ステップ98の処理により、ステップ280では、配列Yについてヒット又はミスが判定される。更に、ステップ104の処理により、ステップ282では配列Zについてヒット又はミスが判定される。このように、プリフェッチされた配列X、配列X〜Zに応じてカウント処理を行うので、上記のように表示している。
次に、図23を参照して、第5の実施の形態のカウント処理を説明する。ステップ126の処理が実行されると、ACCESSプログラム実行部94Aは、ステップ302で、次の2つの条件が満足されているか否かを判断する。第1の条件は、今回のアクセスはプリフェッチ命令に基づくアクセスでない(p=0)という条件である。第2の条件は、今回ヒットしたタグ情報が、プリフェッチ命令に基づいてアクセスすることにより第1のブロック170A0に記憶されたアドレス情報である(P_0が0でない)という条件である。
第1の条件及び第2の条件の双方が満足されている場合には、以前にプリフェッチすることにより第1のブロック170A0に記録されたタグ情報で今回のアクセスでヒットが生じた場合である。この場合は、ステップ302が肯定され、カウント処理はステップ310に移行される。ステップ310で、ACCESSプログラム実行部94Aは、プリフェッチ命令によって取得したデータでヒットしたことを示す変数P_HIT_Cを1インクリメントする。なお、第1の条件及び第2の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ310の処理をスキップする。ステップ310の処理が実行された後、または、ステップ302が否定判定の場合には、カウント処理はステップ136に移行される。
ステップ128の処理が実行されると、ステップ304で、ACCESSプログラム実行部94Aは、次の2つの条件が満足されているか否かを判断する。第1の条件は、今回のアクセスは、プリフェッチ命令に基づくアクセスでない(p=0)という条件である。第2の条件は、今回ヒットしたタグ情報が、プリフェッチ命令に基づいてアクセスすることにより第2のブロック170A1に記憶されたタグ情報である(P_1が0でない)という条件である。
第1の条件及び第2の条件の双方が満足されている場合には、ステップ304が肯定され、カウント処理はステップ312に移行される。ステップ312で、ACCESSプログラム実行部94Aは、プリフェッチ命令によって取得したデータでヒットしたことを示す変数P_HIT_Cを1インクリメントする処理を実行する。なお、第1の条件及び第2の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ312の処理をスキップする。ステップ312の処理が実行された後、または、ステップ304が否定判定の場合には、カウント処理はステップ136に移行される。
ステップ130の処理が実行されると、ACCESSプログラム実行部94Aは、ステップ306で次の2つの条件が満足されているか否かを判断する。第1の条件は、今回のアクセスは、プリフェッチ命令に基づくアクセスでない(p=0)であるという条件である。第2の条件は、今回ヒットしたタグ情報が、プリフェッチ命令に基づいてアクセスすることにより、第3のブロック170A2に記憶されたタグ情報である(P_2が0でない)という条件である。
第1の条件及び第2の条件の双方が満足されている場合には、ステップ306が肯定され、カウント処理はステップ314に移行される。ステップ314の処理は、ステップ310と同様である。なお、第1の条件及び第2の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ314の処理をスキップする。ステップ314の処理が実行された後、または、ステップ306が否定判定の場合には、カウント処理はステップ136に移行される。
ステップ132の処理が実行されると、ACCESSプログラム実行部94Aは、ステップ308で、次の2つの条件が満足されているか否かを判断する。第1の条件は、今回のアクセスは、プリフェッチ命令に基づくアクセスでない(p=0)であるという条件である。第2の条件は、今回ヒットしたアドレス情報が、プリフェッチ命令に基づいてアクセスすることにより第4のブロック170A3に記憶されたアドレス情報である(P_3が0でない)という条件である。
第1の条件及び第2の条件の双方が満足されている場合には、ステップ308が肯定され、カウント処理はステップ316に移行される。ステップ316の処理は、ステップ310の処理と同様である。なお、第1の条件及び第2の条件の少なくとも一方が満足されていないと判断された場合には、カウント処理はステップ316の処理をスキップする。ステップ316の処理が実行された後、または、ステップ308が否定判定の場合には、カウント処理はステップ136に移行される。
ステップ302〜308の処理は、開示の技術のヒット判断部の判断の内容の一例である。ステップ310〜316の処理は、開示の技術の予め記憶ヒット変数を更新することの一例である。
ステップ136で肯定判定がされると、ACCESSプログラム実行部94Aは、ステップ318で、第1の処理及び第2の処理を実行する。ここで、第1の処理は、ステップ144(図6参照)と同様である。即ち、図7(A)に示すように、第2のブロック170A1〜第4のブロック170A3のタグ情報が第1のブロック170A0〜第3のブロックA2のタグ情報に置き換えられる。また、今回アクセスして得たタグ情報が第4のブロック170A3のタグ情報に置き換えられる。第2の処理は、各ブロックに記憶されたデータの書き換えにともなって、各ブロックに記憶されたタグ情報がプリフェッチ命令に基づいて取得されたのかを示す値pを書き換える処理である。第1のブロック170A0〜第4のブロック170A3には、タグ情報が記憶される。第5の実施の形態では、プリフェッチ命令に基づいて得られたタグ情報もタグ記憶領域に記憶する。そこで、第5の実施の形態では、タグ記憶領域に記憶されたタグ情報がプリフェッチ命令に基づいて得たデータか否かを表す値pが各ブロック170A0〜170A3に記憶されている。例えば、第1のブロック170A0に記憶されたタグ情報がプリフェッチ命令に基づいて取得されたデータである場合には、第1のブロック170A0には、次のデータが記憶されている。即ち、上記タグ情報の他に更にプリフェッチ命令に基づいて取得されたデータであることを示す1が記憶されている。なお、第1のブロック170A0に記憶されたタグ情報がプリフェッチ命令に基づいて取得されたデータでない場合には、第1のブロック170A0には、次のデータが記憶されている。即ち、上記タグ情報の他に更にプリフェッチ命令に基づいて取得されたデータでないことを示す0が記憶されている。第1の処理によって各ブロックのタグ情報の置き換えが行われた場合には、当該置き換え後の第1のブロック170A0〜第4のブロック170A3のタグ情報がプリフェッチ命令に基づいて取得されたものなのかを示す値pも置き換える必要がある。そこで、第2の処理として、ACCESSプログラム実行部94Aは、ブロックのタグ情報の置き換えにともなって、当該タグ情報がプリフェッチ命令に基づいて取得されたものなのかを示す値も置き換えられる。
第1のブロック170A0のタグ情報に置き換えられる第2のブロック170A1のタグ情報がプリフェッチ命令に基づいて取得されたものなのかは、P_1で示される。第2のブロック170A1のタグ情報が第1のブロック170A0のタグ情報に置き換えられる。よって、実行部は、第2の処理として第1のブロック170A0のタグ情報がプリフェッチ命令に基づいて取得されたものなのかを示すP_1の値をP_0の代わりに置き換える。
以下、同様に、P_2及びP_3がP_1及びP_2の代わりに置き換えられ、今回アクセスして得たアドレス情報がプリフェッチ命令に基づくアドレス情報か否かを表す値pが、P_3の代わりに置き換えられる。
ステップ318の処理は、開示の技術の非判定データに対応するアドレス情報を記憶部に予め記憶させる内容の一例である。
ステップ138の判定結果が肯定判定の場合、ステップ320で、ACCESSプログラム実行部94Aは、第3の処理及び第4の処理を実行する。第3の処理として、ステップ146の処理(図6参照)が実行される。第4の処理として、第3の処理による各ブロック170A0〜170A3のタグ情報の書き換えに伴って、ACCESSプログラム実行部94Aは次のように置き換えを行う。即ち、第2のブロック170A1〜第4のブロック170A3における値P_1〜P_3のそれぞれが第1のブロック170A0〜第3ブロック170A2の値P_0〜P_2の代わりに置き換えられる。また、今回取得したデータに対応する値pが第4のブロック170A3の値P_3に置き換えられる。
ステップ140の判定結果が肯定判定の場合、ステップ322で、第5の処理及び第6の処理が実行される。第5の処理として、ステップ148の処理(図6参照)が実行される。第6の処理として、第5の処理による第2のブロック170A1〜第4のブロック170A3のデータの書き換えに伴って、ACCESSプログラム実行部94Aは、次のように置き換えを行う。即ち、第3のブロック170A2及び第4のブロック170A3における値P_2及び値P_3のそれぞれが第2のブロック170A1及び第3のブロック170A2の値P_1及び値P_2の代わりに置き換えられる。また、今回取得したアドレス情報に対応する値pが第4のブロック170A3の値P_3の代わりに置き換えられる。
ステップ142の判定結果が肯定判定の場合、ステップ324で、第7の処理及び第8の処理が実行される。第7の処理として、ステップ150の処理(図6参照)が実行される。第8の処理として、第7の処理による第4ブロック170A3のアドレス情報の書き換えに伴って、ACCESSプログラム実行部94Aは、次のように置き換えを行う。即ち、第4のブロック170A3における値P_3が第3のブロック170A2の値P_2の代わりに置き換えられる。また、今回取得したデータに対応する値pが第4のブロック170A3の値P_3の代わりに置き換えられる。ステップ142の判定結果が否定判定の場合、HIT_P=3である。この場合、ステップ326で、今回取得したデータに対応する値pが第4のブロック170A3の値P_3に置き換えられる。
以上のプロファイルデータ取得処理が終了すると、各計算機は、次の表示処理(DUMP)を実行する。即ち、各計算機は、自機に対応するキャッシュセットのヒットの総数(HIT_Cの最終値)、ミスの総数(MISS_Cの最終値)、及びプリフェッチによってヒットが生じた総数(P_HIT_Cの最終値)を表示する。
また、例えば、計算機10s0に、他の計算機10s1〜10sNのプロファイルデータを送信する。計算機10s0は、受信したプロファイルデータに基づいて、キャッシュセット毎のヒットの総数、ミスの総数、及びプリフェッチによってヒットが生じた総数を一覧表示する。
次に、第5の実施の形態の効果を説明する。
まず、第5の実施の形態は、第1の実施の形態の効果を有する。
また、第5の実施の形態は、プリフェッチによって、ヒットが生じた総数をキャッシュセット毎に取得するので、プリフェッチ命令を配置する位置やパラメータを指定した結果、ヒットの総数が向上したのか等のプリフェッチの検証をすることができる。
なお、上記例では、配列Xについて、64個先のメモリ領域のデータをプリフェッチしているが、他の配列、例えば、配列Yについて、例えば、50個先、100個先のメモリ領域のデータをプリフェッチしてもよい。
[第6の実施の形態]
次に、第6の実施の形態を説明する。
第6の実施の形態は、第1の実施の形態とほぼ同様であるので、図24を参照して、異なる部分のみ説明する。第6の実施の形態では、各計算機10s0〜10sNを管理する管理装置600がネットワーク14を介して各計算機10s0〜10sNに接続されている。管理装置600の構成は各計算機10s0〜10sNと同様である。
なお、第6の実施の形態のシステムは、開示の技術のプログラム変更検証システムの一例である。管理装置600は、開示の技術の管理装置の一例である。
図25(A)に示すように、プリフェッチ検証プログラムは、プロファイルデータ取得部331A、計算部333A、集合生成部335A、プログラム作成部337A、第1の判断部339A、第2の判断部341A、及び候補絞り込み部343Aを有する。また、図25(B)に示すように、プリフェッチ検証処理は、プロファイルデータ取得プロセス331B、計算プロセス333B、集合生成プロセス335Bを有する。また、プリフェッチ検証処理は、プログラム作成プロセス337B、第1の判断プロセス339B、第2の判断プロセス341B、及び候補絞り込みプロセス343Bを有する。なお、CPU22が、上記プロセス331B〜343Bの各々を実行することにより、図25(A)の上記各部331A〜343Aとして動作する。
次に、第6の実施の形態の作用を、プリフェッチ検証処理の一例を示す図26を参照して説明する。
ステップ330で、管理装置は各計算機10s0〜10sNに指示することにより、前述した第1の実施の形態〜第4の実施の形態の何れかにおけるプロファイルデータ取得処理を実行させることにより、プロファイルデータを取得する。ステップ332で、計算部333Aは、取得したプロファイルデータに基づいて、キャッシュメモリのキャッシュセットの全体のキャッシュミスの総数Sの計算をする。ステップ334で、集合生成部335Aは、取得したプロファイルデータに基づいて、キャッシュミスが頻繁に、例えば30パーセント(その他、35パーセント、40パーセントでもよい)以上発生しているキャッシュセットの集合Pを生成する。ステップ336で、計算部333Aは、取得したプロファイルデータに基づいて、集合Pにおけるキャッシュミスの総数Mpを計算する。
ステップ338で、集合生成部335Aは、元のプログラムにプリフェッチ命令を挿入する位置とプリフェッチするアドレスのパラメータの候補の集合Cを生成する。ステップ340で、プログラム作成部337Aは、最良のプリフェッチ命令の使用方法を示す変数Rを0に初期化する。ステップ342で、プログラム作成部337Aは、集合c中の候補を識別する変数cを0に初期化する。ステップ344で、プログラム作成部337Aは、変数cを1インクリメントする。実行部は、ステップ346で、プログラム作成部337Aは、変数cで識別される候補cに従って、プリフェッチ命令を元のプログラムに挿入する。ステップ348で、プログラム作成部337Aは、プリフェッチ命令が挿入されたプログラムを、第1の実施の形態におけるプログラム変換プログラムと同様のプログラムにより、プロファイルデータ取得プログラムに変換する。
ステップ350で、プロファイルデータ取得部331Aは、集合Pに属するキャッシュセットに対応する計算機に対して、当該計算機に対応するプロファイルデータ取得プログラムを実行させる。これにより、集合Pに属するキャッシュセットのプロファイルデータが取得される。ステップ352で、計算部333Aは、集合Pに属するキャッシュセットのキャッシュミスの総数Npを計算する。ステップ354で、第1の判断部339Aは、総数Npが総数Mp以上か否かを判断する。総数Npが総数Mp以上の場合には、候補cではプリフェッチ命令を挿入したことによるキャッシュミスの回数の削減を期待できない。この場合、ステップ354の判定結果は肯定判定であり、次の候補を試すために、改善処理は、ステップ364に進む。一方、総数Npが総数Mpより小さい場合は、プリフェッチ命令を挿入したことによるキャッシュミスの回数の削減を期待できる。この場合は、改善処理は、ステップ356に進む。
ステップ356で、プロファイルデータ取得部331Aは、集合P以外のキャッシュセットに対応する計算機に対して、当該計算機に対応するプロファイルデータ取得プログラムを実行させる。これにより、集合P以外のキャッシュセットのプロファイルデータが取得される。
ステップ358で、計算部333Aは、キャッシュメモリのキャッシュセットの全体のキャッシュミスの総数Scを計算する。
ステップ360で、第2の判断部341Aは、総数Scが総数S以上か否かを判断する。総数Scが総数S以上の場合には、プリフェッチ命令を挿入してもキャッシュミスの回数が減らないことを意味する。この場合は、ステップ360の判定結果が肯定判定であり、次の候補を試すため、改善処理はステップ364に進む。一方、総数Scが総数Sより小さい場合は、キャッシュ操作命令を挿入したことによりキャッシュミスの回数が減ることを意味する。この場合は、ステップ358の判定結果は、否定判定であり、改善処理はステップ362に進む。
ステップ362で、候補絞り込み部343Aは、変数Rに候補cを代入し、総数Mpに総数Npを代入し、総数Sに総数Scを代入する。ステップ364で、候補絞り込み部343Aは、候補の数cが、候補の総数C1と等しいか否かを判断する。候補の数cが候補の総数C1と等しくない場合は、ミスが改善する可能性のある候補が存在するので、改善処理はステップ344に戻り、以上の処理(ステップ344〜364)が実行される。候補の数cが候補の総数C1と等しい場合には、ヒットミスが改善する可能性のある候補が存在しないので、改善処理は終了する。
ステップ334、336、346、348、350、352、354は、開示の技術の管理装置の行う内容の一例である。
次に、第6の実施の形態の効果を説明する。
第6の実施の形態では、プリフェッチ命令の挿入する位置及びパラメータを種々変えて各々の場合のプロファイルデータを、上記第1〜第4の実施の形態の何れかの方法で、取得している。従って、どの位置にどのくらいのパラメータでプリフェッチ命令を挿入するとミスが改善するのかを検証することができる。よって、プリフェッチ命令の挿入する位置及びパラメータの候補が多数存在しても、候補のしぼり込みにかかる時間を大幅に短縮することができる。
上記例では、キャッシュミスが頻繁に発生しているキャッシュセットの場合についてだけプロファイルデータを取得し(ステップ350)、ミスが改善しているのか検証(ステップ354)している。この段階でミスが改善していると検証された場合には、ステップ356〜360をスキップして、改善処理がステップ362に移行するようにしてもよい。このようにステップ356〜360をスキップするので候補のしぼり込みにかかる時間をより短縮することができる。
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定する判定部と、
前記予め選択されたキャッシュセットに対応して設けられ、当該選択されたキャッシュセットに対応するメモリ領域のアドレス情報を記憶する記憶部と、
前記判定部により前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、(1)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていることを示すヒット、及び、(2)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断する判断部と、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第1の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第2の処理の少なくとも一方を行う処理部と、
を備えた変数更新装置。
(付記2)
前記複数のデータは、少なくとも1つの配列のデータである、付記1に記載の変数更新装置。
(付記3)
前記キャッシュセットは複数のブロックを有し、
前記記憶部は、前記複数のブロックに対応する複数の記憶ブロックを有し、
前記処理部は、前記判定対象データに対応する前記メモリ領域のアドレス情報を含めて、前記記憶ブロックの個数分のアドレス情報が古い順に記憶されるように、前記複数の記憶ブロックを書き換える
付記1に記載の変数更新装置。
(付記4)
前記複数のデータは、複数の配列のデータであり、
前記判定部は、前記複数の配列各々の各データを前記判定対象データとして、前記判定を行う付記1〜付記3の何れか1項に記載の変数更新装置。
(付記5)
前記判定部は、前記複数の配列の内の1つの配列の判定対象データの値が他の配列の判定対象データの値より大きい場合に、更に他の配列の前記判定対象データについて前記判定をする付記4に記載の変数更新装置。
(付記6)
各々が前記記憶部に対応して設けられかつ前記アドレス情報を記憶する複数の対応記憶部を更に備え、
前記ミスが生じたと判断された場合に、前記複数の対応記憶部の何れかに、前記アドレス情報が記憶されているか否かを判断する記憶判断部を更に備え、
前記処理部は、前記記憶判断部により、前記複数の対応記憶部の何れかに前記アドレス情報が記憶されていると判断された場合に、当該判断がされた回数を示す対応ヒット変数を更新する第3の処理、及び、前記複数の対応記憶部の全てに前記アドレス情報が記憶されていないと判断された場合に、当該判断がされた回数を示す対応ミス変数を更新する第4の処理の少なくとも一方を行う
付記2〜付記5の何れか1項に記載の変数更新装置。
(付記7)
前記複数の配列の各々に対応して、ヒットの回数を示す配列ヒット変数と、ミスの回数を示す配列ミス変数とが定められ、
前記処理部は、前記複数の配列の何れかでヒットが生じた場合、当該配列に対応する配列ヒット変数を更新し、前記複数の配列の何れかでミスが生じた場合、当該配列に対応する配列ミス変数を更新する
付記4〜付記6の何れか1項に記載の変数更新装置。
(付記8)
前記判定部は、前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
前記処理部は、前記選択された配列について、前記ミスが生じた場合、前記非判定データデータに対応する前記アドレス情報を前記記憶部に予め記憶させる、
付記4〜付記7の何れか1項に記載の変数更新装置。
(付記9)
前記ヒットが生じたと判断された場合、前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたか否かを判断するヒット判断部を更に備え、
前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じた回数を示す予め記憶ヒット変数が定められ、
前記処理部は、前記ヒット判断部により前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたと判断された場合に、前記予め記憶ヒット変数を更新する
付記8に記載の変数更新装置。
(付記10)
前記ミス変数の値を表示する表示部を更に備えた付記1〜付記9に記載の変数更新装置。
(付記11)
前記キャッシュセットの個数分の付記1〜付記10の何れか1項に記載の複数の変数更新装置を備え、
前記複数の変数更新装置の各々は、各キャッシュセットに対応して設けられ、
前記複数の変数更新装置の各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定を行い、
前記複数の変数更新装置の各々の前記判定部が前記判定を行う少なくとも一部の期間が重なる
変数更新システム。
(付記12)
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、(1)前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、(2)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第1の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第2の処理の少なくとも一方を行う
ことを含む変数更新方法。
(付記13)
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、(1)前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、(2)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第1の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第2の処理の少なくとも一方を行う
ことを含む処理を実行させるための変数更新プログラム。
(付記14)
前記複数のデータは、複数の配列のデータであり、
前記コンピュータに、
前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
前記選択された配列について、前記ミスが生じた場合、前記非判定データに対応する前記アドレス情報を前記記憶部に予め記憶させる
ことを含む処理を更に実行させるための付記13に記載の変数更新プログラム。
(付記15)
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、付記13に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
(付記16)
コンピュータに、
記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、付記14に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
(付記17)
キャッシュセットの個数分設けられた付記1〜付記7の何れか1項に記載の複数の変数更新装置であって、前記複数の変数更新装置各々は、各キャッシュセットに対応して設けられ、前記複数の変数更新装置各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定をする、前記複数の変数更新装置と、
前記複数の変数更新装置各々により得られたミス変数又はヒット変数の値に基づいて、前記ミスが所定の割合以上生じているキャッシュセットを検出し、
前記検出された前記キャッシュセットに対応する前記ミス変数の第1の総数を計算し、
どのくらい先のデータを前記記憶部に予め記憶するかを定める各々異なる複数の候補の内の選択された候補について、当該候補に基づく前記先のデータについて予め前記判定がされるように、前記複数のデータに対応する元のプログラムを変更し、
前記変更されたプログラムを、付記16に記載の変換プログラムにより変数更新プログラムに変換し、
前記検出されたキャッシュセットに対応する前記変数更新装置に対し、前記変換により得られた前記変数更新プログラムを実行させて、前記ヒット変数及び前記ミス変数の少なくとも一方の値を取得し、
前記取得された前記値の第2の総数を計算し、
前記計算された前記第2の総数が前記計算された前記第1の総数以上か否かを判断し、
前記第2の総数が前記第1の総数以上かであると判断された場合には、前記複数の候補の内の前記選択された候補とは異なる別の候補について、前記変更を行う管理装置と、
を備えたプログラム変更検証システム。
10s0、10s1・・・10sN 計算機
61A 集合作成部
62A ソースコード分類部
63A プログラム文作成部
91A アドレス計算部
92A セット番号計算部
93A セット番号判断部
94A ACCESSプログラム実行部

Claims (12)

  1. 記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定する判定部と、
    前記予め選択されたキャッシュセットに対応して設けられ、当該選択されたキャッシュセットに対応するメモリ領域のアドレス情報を記憶する記憶部と、
    前記判定部により前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、(1)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていることを示すヒット、及び、(2)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断する判断部と、
    前記判断部によりミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第1の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第2の処理の少なくとも一方を行う処理部と、
    を備えた変数更新装置。
  2. 各々が前記記憶部に対応して設けられかつ前記アドレス情報を記憶する複数の対応記憶部を更に備え、
    前記ミスが生じたと判断された場合に、前記複数の対応記憶部の何れかに、前記アドレス情報が記憶されているか否かを判断する記憶判断部を更に備え、
    前記処理部は、前記記憶判断部により、前記複数の対応記憶部の何れかに前記アドレス情報が記憶されていると判断された場合に、当該判断がされた回数を示す対応ヒット変数を更新する第3の処理、及び、前記複数の対応記憶部の全てに前記アドレス情報が記憶されていないと判断された場合に、当該判断がされた回数を示す対応ミス変数を更新する第4の処理の少なくとも一方を行う
    請求項1に記載の変数更新装置。
  3. 前記複数のデータは、複数の配列のデータを含み、
    前記複数の配列の各々に対応して、ヒットの回数を示す配列ヒット変数と、ミスの回数を示す配列ミス変数とが定められ、
    前記処理部は、前記複数の配列の何れかでヒットが生じた場合、当該配列に対応する配列ヒット変数を更新し、前記複数の配列の何れかでミスが生じた場合、当該配列に対応する配列ミス変数を更新する
    請求項1又は請求項2に記載の変数更新装置。
  4. 前記複数のデータは、複数の配列のデータを含み、
    前記判定部は、前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
    前記処理部は、前記選択された配列について、前記ミスが生じた場合、前記非判定データに対応する前記アドレス情報を前記記憶部に予め記憶させる、
    請求項1又は請求項2に記載の変数更新装置。
  5. 前記ヒットが生じたと判断された場合、前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたか否かを判断するヒット判断部を更に備え、
    前記記憶部に予め記憶されかつ前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じた回数を示す予め記憶ヒット変数が定められ、
    前記処理部は、前記ヒット判断部により前記非判定データに対応する前記アドレス情報に基づいて前記ヒットが生じたと判断された場合に、前記予め記憶ヒット変数を更新する
    請求項4に記載の変数更新装置。
  6. 前記キャッシュセットの個数分の請求項1〜請求項の何れか1項に記載の複数の変数更新装置を備え、
    前記複数の変数更新装置の各々は、各キャッシュセットに対応して設けられ、
    前記複数の変数更新装置の各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定を行い、
    前記複数の変数更新装置の各々の前記判定部が前記判定を行う少なくとも一部の期間が重なる
    変数更新システム。
  7. 記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
    前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、(1)前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、(2)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
    記ミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第1の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第2の処理の少なくとも一方を行う
    ことを含む変数更新方法。
  8. コンピュータに、
    記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータの各データを判定対象データとして、当該判定対象データに対応するキャッシュセットが、予め選択されたキャッシュセットであるか否かを判定し、
    前記対応するキャッシュセットが前記予め選択されたキャッシュセットであると判定された場合、(1)前記判定対象データに対応する前記メモリ領域のアドレス情報が、前記予め選択されたキャッシュセットに対応して設けられた記憶部に記憶されていることを示すヒット、及び、(2)前記判定対象データに対応する前記メモリ領域のアドレス情報が前記記憶部に記憶されていないことを示すミス、の何れが生じたかを判断し、
    記ミスが生じたと判断された場合に、ミスの回数を示すミス変数を更新しかつ前記記憶部に前記アドレス情報を記憶させる第1の処理、及び、前記ヒットが生じたと判断された場合に、ヒットの回数を示すヒット変数を更新する第2の処理の少なくとも一方を行う
    ことを含む処理を実行させるための変数更新プログラム。
  9. 前記複数のデータは、複数の配列のデータであり、
    前記コンピュータに、
    前記複数の配列各々の各データについて所定の順番に前記判定をすると共に、前記複数の配列の内の選択された配列について、前記順番では前記判定されない各非判定データについて予め前記判定を行い、
    前記選択された配列について、前記ミスが生じた場合、前記非判定データに対応する前記アドレス情報を前記記憶部に予め記憶させる
    ことを含む処理を更に実行させるための請求項8に記載の変数更新プログラム。
  10. コンピュータに、
    記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、請求項8に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
  11. コンピュータに、
    記憶領域であるキャッシュセットを複数個備えたキャッシュメモリのキャッシュセットの何れかに各々対応する主メモリの複数のメモリ領域の何れかに各々対応付けられた複数のデータを用いる元のプログラムを、請求項9に記載の変数更新プログラムに変換することを含む処理を実行させるための変換プログラム。
  12. キャッシュセットの個数分設けられた請求項1〜請求項3の何れか1項に記載の複数の変数更新装置であって、前記複数の変数更新装置各々は、各キャッシュセットに対応して設けられ、前記複数の変数更新装置各々の前記判定部は、自装置に対応するキャッシュセットを前記予め選択されたキャッシュセットとして前記判定をする、前記複数の変数更新装置と、
    前記複数の変数更新装置各々により得られたミス変数又はヒット変数の値に基づいて、前記ミスが所定の割合以上生じているキャッシュセットを検出し、
    前記検出された前記キャッシュセットに対応する前記ミス変数の第1の総数を計算し、
    どのくらい先のデータを前記記憶部に予め記憶するかを定める各々異なる複数の候補の内の選択された候補について、当該候補に基づく前記先のデータについて予め前記判定がされるように、前記複数のデータに対応する元のプログラムを変更し、
    前記変更されたプログラムを、請求項11に記載の変換プログラムにより変数更新プログラムに変換し、
    前記検出されたキャッシュセットに対応する前記変数更新装置に対し、前記変換により得られた前記変数更新プログラムを実行させて、前記ヒット変数及び前記ミス変数の少なくとも一方の値を取得し、
    前記取得された前記値の第2の総数を計算し、
    前記計算された前記第2の総数が前記計算された前記第1の総数以上か否かを判断し、
    前記第2の総数が前記第1の総数以上かであると判断された場合には、前記複数の候補の内の前記選択された候補とは異なる別の候補について、前記変更を行う管理装置と、
    を備えたプログラム変更検証システム。
JP2013112017A 2013-05-28 2013-05-28 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム Expired - Fee Related JP6191240B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013112017A JP6191240B2 (ja) 2013-05-28 2013-05-28 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム
US14/244,927 US9280475B2 (en) 2013-05-28 2014-04-04 Variable updating device and variable updating method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013112017A JP6191240B2 (ja) 2013-05-28 2013-05-28 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム

Publications (2)

Publication Number Publication Date
JP2014232369A JP2014232369A (ja) 2014-12-11
JP6191240B2 true JP6191240B2 (ja) 2017-09-06

Family

ID=51986499

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013112017A Expired - Fee Related JP6191240B2 (ja) 2013-05-28 2013-05-28 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム

Country Status (2)

Country Link
US (1) US9280475B2 (ja)
JP (1) JP6191240B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6981087B2 (ja) 2017-08-03 2021-12-15 富士通株式会社 情報処理装置、方法、及びプログラム
CN109491873B (zh) * 2018-11-05 2022-08-02 阿里巴巴(中国)有限公司 缓存监控方法、介质、装置和计算设备
JP7230719B2 (ja) 2019-07-19 2023-03-01 富士通株式会社 情報処理装置及び情報処理方法
JP2024024463A (ja) * 2022-08-09 2024-02-22 富士通株式会社 情報処理プログラム、情報処理方法、および情報処理装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434992A (en) * 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US6138213A (en) * 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6532521B1 (en) * 1999-06-30 2003-03-11 International Business Machines Corporation Mechanism for high performance transfer of speculative request data between levels of cache hierarchy
JP3954248B2 (ja) 1999-08-12 2007-08-08 富士通株式会社 情報処理装置の試験方法
US6820173B1 (en) * 2001-02-23 2004-11-16 Nvidia Corporation Data prefetcher with predictor capabilities
JP4047788B2 (ja) 2003-10-16 2008-02-13 松下電器産業株式会社 コンパイラ装置およびリンカ装置
US8356142B1 (en) * 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US7353339B2 (en) * 2003-12-24 2008-04-01 Intel Corporation Adaptive caching
US7836259B1 (en) * 2004-04-02 2010-11-16 Advanced Micro Devices, Inc. Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy
JP2007206806A (ja) * 2006-01-31 2007-08-16 Matsushita Electric Ind Co Ltd キャッシュ観測装置、プロセッサの解析方法およびキャッシュメモリ
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
US7917702B2 (en) * 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
JP2009020696A (ja) 2007-07-11 2009-01-29 Toshiba Corp 情報処理装置及びシステム
JP4829191B2 (ja) * 2007-08-30 2011-12-07 株式会社東芝 キャッシュシステム
US8146064B2 (en) * 2008-04-04 2012-03-27 International Business Machines Corporation Dynamically controlling a prefetching range of a software controlled cache
JP5298826B2 (ja) * 2008-12-17 2013-09-25 日本電気株式会社 キャッシュメモリ及びプリフェッチ方法
JP5569312B2 (ja) * 2010-10-01 2014-08-13 富士通セミコンダクター株式会社 メモリアクセス判定回路、メモリアクセス判定方法、キャッシュ制御装置および電子機器
JP5609657B2 (ja) * 2011-01-11 2014-10-22 富士通株式会社 半導体集積回路の低電力設計支援装置及びその方法
US9304927B2 (en) * 2012-08-27 2016-04-05 Oracle International Corporation Adaptive stride prefetcher
JP2014115851A (ja) * 2012-12-10 2014-06-26 Canon Inc データ処理装置及びその制御方法
US20140189204A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
JP2014186397A (ja) * 2013-03-21 2014-10-02 Fujitsu Ltd キャッシュメモリ装置、情報処理装置及びキャッシュメモリ制御方法
JP2015118638A (ja) * 2013-12-19 2015-06-25 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US9471510B2 (en) * 2013-12-20 2016-10-18 Netapp, Inc. System and method for cache monitoring in storage systems

Also Published As

Publication number Publication date
US20140359214A1 (en) 2014-12-04
JP2014232369A (ja) 2014-12-11
US9280475B2 (en) 2016-03-08

Similar Documents

Publication Publication Date Title
US10740247B2 (en) Method for accessing entry in translation lookaside buffer TLB and processing chip
JP6191240B2 (ja) 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム
US10740248B2 (en) Methods and systems for predicting virtual address
US8707156B2 (en) Render engine for spreadsheet
US10481914B2 (en) Predicting detected branches as taken when cumulative weight values in a weight table selected by history register bits exceed a threshold value
US20150026414A1 (en) Stride prefetching across memory pages
CN106843842B (zh) 一种应用程序配置文件的更新方法及装置
US20160306632A1 (en) Branch prediction
KR930006381B1 (ko) 미스히트에 대한 갱신과 다음 어드레스의 미스히트의 판정을 동시에 행하는 캐시메모리장치
CN104063254A (zh) 电能表在线升级方法
CN103593406A (zh) 一种静态资源标识处理方法及装置
WO2015033551A1 (ja) ストアマージ処理装置、ストアマージ処理システム、ストアマージ処理方法、及び、記憶媒体
CN106599247A (zh) LSM‑tree结构中数据文件的合并方法及装置
CN105930136A (zh) 处理器和指令码生成设备
JP6234639B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
CN107577775A (zh) 一种读取数据方法、装置、电子设备及可读存储介质
US9489309B2 (en) Method and system for dynamic cache partitioning using address remapping
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
US8589899B2 (en) Optimization system, optimization method, and compiler program
US7966474B2 (en) System, method and computer program product for translating storage elements
CN111324553B (zh) 在嵌入式系统上实现虚拟地址空间的方法
JP2007272681A (ja) キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法
CN104866285A (zh) 可编程序控制器
CN111341374A (zh) 存储器的测试方法、装置及可读存储器
CN108255692B (zh) 信息处理方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170208

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170724

R150 Certificate of patent or registration of utility model

Ref document number: 6191240

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees