JP6432333B2 - 情報処理装置、データ処理方法、およびデータ処理プログラム - Google Patents

情報処理装置、データ処理方法、およびデータ処理プログラム Download PDF

Info

Publication number
JP6432333B2
JP6432333B2 JP2014254588A JP2014254588A JP6432333B2 JP 6432333 B2 JP6432333 B2 JP 6432333B2 JP 2014254588 A JP2014254588 A JP 2014254588A JP 2014254588 A JP2014254588 A JP 2014254588A JP 6432333 B2 JP6432333 B2 JP 6432333B2
Authority
JP
Japan
Prior art keywords
storage area
cache
size
processing apparatus
information processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014254588A
Other languages
English (en)
Other versions
JP2016115213A (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 JP2014254588A priority Critical patent/JP6432333B2/ja
Priority to US14/922,717 priority patent/US9864693B2/en
Priority to EP15192830.6A priority patent/EP3035196A3/en
Publication of JP2016115213A publication Critical patent/JP2016115213A/ja
Application granted granted Critical
Publication of JP6432333B2 publication Critical patent/JP6432333B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • 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/0673Single storage device
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

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)

Description

本発明は、情報処理装置、データ処理方法、およびデータ処理プログラムに関する。
キャッシュメモリ内のあるキャッシュラインのデータが頻繁に上書きされるというキャッシュスラッシングと呼ばれる現象がある。関連する先行技術として、例えば、パフォーマンスモニタを用いることによりキャッシュミスデータを収集するためにアプリケーションをプロファイルし、長時間キャッシュミスを生ずる問題命令の実効アドレス位置よりも前にプリロード命令を挿入するものがある。また、配列をパディングしてもキャッシュ利用効率の低下に起因する性能の低下が小さいか否かを判定する技術がある。また、プリフェッチの単位であるループを単位として、ループのキャッシュミス率がある閾値以上であるかを、プログラムの実行時に予測するループ内キャッシュミス実行時予測コードを付加する技術がある。また、ループ整合分割を行った後、同一データローカライザブルグループ(Data Localizable Group:DLG)に属する各小ループ同士を可能な限り連続実行するスケジューリングを行うとともに、パディングを用いて各DLGで使用される配列データについてレイアウト変更を行う技術がある。
特開2000−035894号公報 特開2011−128803号公報 特開平10−207772号公報 特開2004−252728号公報
しかしながら、従来技術によれば、プログラム実行中のキャッシュスラッシングの発生を抑制することが困難である。例えば、パフォーマンスモニタを用いて解析した結果キャッシュスラッシングが発生することを検出してパディングを追加したとしても、実際にキャッシュスラッシングの発生が抑制されたかを確認するために解析とプログラム実行とを複数回繰り返すことになる。
1つの側面では、本発明は、プログラム実行中のキャッシュスラッシングの発生を抑制する情報処理装置、データ処理方法、およびデータ処理プログラムを提供することを目的とする。
本発明の一側面によれば、記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を、前記記憶部のいずれかの記憶領域に対応付いたキャッシュラインの数でキャッシュメモリを分割した領域の半分のサイズ分前記確保した記憶領域からずらして設定し、前記確保要求を複数回行った結果、前記分割した領域のサイズと、取得した前記キャッシュミスの数が前記所定数以上となった回数とに基づいて、前記特定のルーチンが新たな記憶領域を確保する際にずらすサイズを算出し、確保した記憶領域から算出した前記サイズ分ずらして新たな記憶領域を設定する情報処置装置、データ処理方法、およびデータ処理プログラムが提案される。
本発明の一態様によれば、プログラム実行中のキャッシュスラッシングの発生の抑制を図ることができるという効果を奏する。
図1は、本実施の形態にかかる情報処理装置100の動作例を示す説明図である。 図2は、情報処理装置100のハードウェア構成例を示す説明図である。 図3は、情報処理装置100の機能構成例を示すブロック図である。 図4は、ビルド時の動作例と実行時の動作例とを示す説明図である。 図5は、キャッシュミス情報採取コードの挿入例を示す説明図である。 図6は、パディング実施の動作例を示す説明図である。 図7は、パディングサイズの算出例を示す説明図である。 図8は、スラッシング情報テーブル310の記憶内容の一例を示す説明図(その1)である。 図9は、スラッシング情報テーブル310の記憶内容の一例を示す説明図(その2)である。 図10は、キャッシュミス情報採取コード挿入処理手順の一例を示すフローチャートである。 図11は、動的領域確保処理手順の一例を示すフローチャートである。 図12は、パディングサイズ算出処理手順の一例を示すフローチャートである。 図13は、キャッシュミス情報採取処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の情報処理装置、データ処理方法、およびデータ処理プログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる情報処理装置100の動作例を示す説明図である。情報処理装置100は、実行コード101を実行するコンピュータである。情報処理装置100は、例えば、サーバでもよいし、携帯電話等の携帯端末であってもよい。より具体的には、情報処理装置100は、記憶部102と、L1キャッシュメモリ103とを有する。L1キャッシュメモリ103は、記憶部102のデータの一部を記憶する。そして、情報処理装置100のCPU(Central Processing Unit)が、L1キャッシュメモリ103や記憶部102にアクセスして、実行コード101を実行する。
L1キャッシュメモリ103は、アクセス要求の前に発生するプリフェッチ時またはアクセス要求時に、アクセス対象となる記憶領域がキャッシュラインに割り付けられているかを検索する。割り付けられていない場合、L1キャッシュメモリ103は、キャッシュミスとして、アクセス対象となる記憶領域をキャッシュラインに割り付ける。以下、単に、キャッシュミスと記載した場合、プリフェッチ時のキャッシュミスと、アクセス要求によるキャッシュミスとを含むものとする。また、アクセス要求によるキャッシュミスを、「デマンドミス」と呼称する。
ここで、キャッシュメモリ内のあるキャッシュラインのデータが頻繁に上書きされるというキャッシュスラッシングと呼ばれる現象が発生することがある。キャッシュスラッシングが発生すると、キャッシュラインの入れ替えが頻繁に発生することになり、キャッシュメモリの性能が低下することになる。また、キャッシュスラッシングは、配列サイズが2のべき乗の場合やループ内の処理に伴って参照定義される一連のデータの数が多い場合に、発生しやすくなることが知られている。
キャッシュスラッシングの発生を抑制する技術としては、ツールを用いて解析することによりキャッシュスラッシングの発生を検出し、キャッシュスラッシングを発生させるデータを特定し、開発者が、データに対して手動でパディングを行うものがある。しかしながら、キャッシュスラッシングを発生させるデータを特定するために解析とプログラム実行を複数回行うことになる。また、パディングサイズについても、キャッシュスラッシングの発生を抑制できる最良の値を求めるためには、ツールによる解析とプログラムの実行とを複数回行うことになる。
そこで、情報処理装置100は、確保した記憶領域のキャッシュミスの数が所定値以上、すなわちキャッシュスラッシングが発生したと判定したのであれば、新たな記憶領域を確保した記憶領域からずらして設定する。これにより、競合するキャッシュラインとは別のキャッシュラインに新たな記憶領域が割り付けられるので、情報処理装置100は、キャッシュスラッシングの抑制を図ることができる。所定値は、開発者が予め決めた値であってもよいし、前回動作した際に得られたロード命令、ストア命令の合計値に対して開発者が予め決めた割合を乗じた値でもよい。
また、情報処理装置100は、確保した記憶領域のキャッシュミス率が所定の割合以上であれば、新たな記憶領域を確保した記憶領域からずらして設定してもよい。ここで、キャッシュミス率は、ロード命令、ストア命令の合計値に対するキャッシュミスの数である。
また、新たな記憶領域をずらして設定する方法としては、例えば、情報処理装置100は、ダミーの記憶領域をパディングとして確保した後に、新たな記憶領域を確保してもよい。または、情報処理装置100は、確保する記憶領域のアドレスを指定することが可能であれば、本来確保する予定である記憶領域の先頭アドレスに、予め決められた値を加えた値を先頭アドレスとして、記憶領域を確保してもよい。または、例えば、本来確保する予定である記憶領域の前の領域が解放されているならば、情報処理装置100は、本来確保する予定である記憶領域の先頭アドレスに、予め決められた値を減じた値を先頭アドレスとして、記憶領域を確保してもよい。以下では、パディングする例を用いて説明する。
また、図1の例では、説明の簡略化のため、L1キャッシュメモリ103に含まれるキャッシュラインは4個であり、それぞれのキャッシュラインを、キャッシュライン104−0〜3とする。また、記憶部102のいずれかの記憶領域に対応付いたキャッシュラインの数を1とする。ここで、以下の説明では、記憶部102のいずれかの記憶領域に対応付いたキャッシュラインの数を、「way数」と呼称し、キャッシュメモリをway数で分割したものを「1way」と呼称する。具体的には、記憶部102のいずれかの記憶領域が、どのキャッシュラインに対応付くのかは、アドレスの下位ビットにより決定される。図1の例では、記憶部102の各記憶領域は、各記憶領域の下位ビットの値の小さい順に、キャッシュライン104−0、1、2、3の順で対応付くものとする。例えば、ある記憶領域の先頭アドレスの下位ビットが0であれば、ある記憶領域は、キャッシュライン104−0に対応付くものとする。
また、実行コード101は、1024個の要素を有する配列a、bの記憶領域を確保要求に従って動的に確保した後、何らかの処理を行い、配列bの各要素の値を配列aの各要素に設定する処理をN回繰り返すものである。また、説明の簡略化のため、配列a、bの各要素のデータサイズが、1つのキャッシュラインのサイズに一致するものとする。また、情報処理装置100は、確保要求を検出すると、確保要求を行う特定のルーチンにより、記憶領域を確保する。
図1の(a)では、配列a、bの記憶領域を動的に1回目に確保した状態を示す。図1の(a)では、パディングを行っていない。従って、a(0)、b(0)のデータを記憶するために確保された記憶領域は、キャッシュライン104−0に対応する。以下、配列(x)のデータを記憶するために確保された記憶領域を、単に、「配列(x)の記憶領域」と称する。以下、同様に、a(1)、b(1)の記憶領域は、キャッシュライン104−1に対応し、a(2)、b(2)の記憶領域は、キャッシュライン104−2に対応する。
従って、図1の(a)では、キャッシュスラッシングが発生することになる。ここでは、j=0となる「a(0)=b(0)」の場合について説明する。b(0)のアクセス要求の前に発生するプリフェッチ時に、情報処理装置100は、b(0)の記憶領域がキャッシュライン104−0に割り付けられていないため、キャッシュミスとなり、b(0)の記憶領域を、キャッシュライン104−0に割り付ける。ここで、b(0)の記憶領域とa(0)の記憶領域とは、同一のキャッシュライン104−0に対応するため、この段階で、a(0)の記憶領域をキャッシュライン104−0に割り付けることはできない。そして、情報処理装置100は、a(0)のアクセス要求時、a(0)のデータがキャッシュライン104−0に割り付けられていないため、デマンドミスとなり、a(0)の記憶領域を、キャッシュライン104−0に割り付ける。このように、図1の(a)の例では、デマンドミスが多く発生することになる。
キャッシュスラッシングが発生しているか否かを判定するため、配列a、bの記憶領域を動的に1回目に確保した際において、情報処理装置100は、キャッシュミスの数を取得する。なお、キャッシュミスの数は、情報処理装置100が有するハードウェアカウンタ情報から取得できるものとする。ここでハードウェアカウンタ情報は、プログラムの実行時に実行される浮動小数点命令情報やL1、L2キャッシュミス数、SIMD(Single Instruction Multiple Data)命令情報等の総称である。
図1の(a)が示す例では、デマンドミスが多く発生した結果、情報処理装置100が、キャッシュスラッシングが発生したものとする。図1の(b)では、パディングを行った例を示す。パディングサイズは、1キャッシュラインサイズの倍数であればどのようなサイズでもよいが、1wayの領域の半分のサイズであることが好ましい。1wayの領域の半分のサイズが、キャッシュスラッシングを抑制することができる可能性が最も高いためである。この理由として、仮に、1wayの領域のサイズ分パディングを行うと、キャッシュスラッシングが発生する可能性は、パディングを行わなかった場合、すなわちサイズ0のパディングを行った場合と同じとなる。
従って、1wayの領域のサイズと、サイズ0とから最も離れた値である、1wayの領域の半分のサイズが、キャッシュスラッシングの有無が変わる可能性が最も高いものとなる。さらに、サイズ0の場合でキャッシュスラッシングが発生するならば、1wayの領域の半分のサイズは、キャッシュスラッシングが発生しない、すなわち、キャッシュスラッシングの発生を抑制することができる可能性が最も高くなる値となる。
図1の(b)では、配列a、bの記憶領域を動的に2回目以降に確保した状態を示す。ここで、図1の(b)では、1wayの領域の半分のサイズ分、すなわち2キャッシュラインのサイズ分パディングした例を示す。従って、a(0)、b(2)の記憶領域は、キャッシュライン104−0に対応する。また、a(1)の記憶領域は、キャッシュライン104−1に対応し、a(2)、b(0)の記憶領域は、キャッシュライン104−2に対応する。また、b(1)の記憶領域は、キャッシュライン104−3に対応する。
従って、図1の(b)では、キャッシュスラッシングが発生しないものになる。ここでは、図1の(a)と同様に、j=0となる「a(0)=b(0)」の場合について説明する。b(0)のアクセス要求の前に発生するプリフェッチ時に、情報処理装置100は、b(0)の記憶領域がキャッシュライン104−0に割り付けられていないため、キャッシュミスとなり、b(0)の記憶領域を、キャッシュライン104−2に割り付ける。ここで、b(0)の記憶領域とa(0)の記憶領域とは、異なるキャッシュラインに対応するため、この段階で、情報処理装置100は、a(0)の記憶領域をキャッシュライン104−0に割り付けることができる。従って、図1の(b)の例では、図1の(a)の例では発生していたデマンドミスが発生しなくなり、情報処理装置100は、キャッシュスラッシングの発生を抑制することができる。次に、情報処理装置100のハードウェア構成について、図2を用いて説明する。
図2は、情報処理装置100のハードウェア構成例を示す説明図である。図2において、情報処理装置100は、CPU201と、ROM202と、RAM203と、を含む。また、情報処理装置100は、ディスクドライブ204およびディスク205と、通信インターフェース206と、を含む。また、CPU201〜ディスクドライブ204、通信インターフェース206はバス207によってそれぞれ接続される。なお、図1に示した記憶部102は、RAM203に相当する。
CPU201は、情報処理装置100の全体の制御を司る演算処理装置である。また、管理ノードは、複数のCPUを有してもよい。ROM202は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。RAM203は、CPU201のワークエリアとして使用される揮発性メモリである。
ディスクドライブ204は、CPU201の制御に従ってディスク205に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ204には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ204が磁気ディスクドライブである場合、ディスク205には、磁気ディスクを採用することができる。また、ディスクドライブ204が光ディスクドライブである場合、ディスク205には、光ディスクを採用することができる。また、ディスクドライブ204がソリッドステートドライブである場合、ディスク205には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
通信インターフェース206は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース206は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース206には、例えば、モデムやLANアダプタなどを採用することができる。
また、情報処理装置100の管理者が、情報処理装置100を直接操作する場合、情報処理装置100は、ディスプレイ、キーボード、マウスといったハードウェアを有してもよい。
(情報処理装置100の機能構成例)
図3は、情報処理装置100の機能構成例を示すブロック図である。情報処理装置100は、制御部300を有する。制御部300は、取得部301と、判定部302と、算出部303と、設定部304とを有する。制御部300は、記憶装置に記憶されたプログラムをCPU201が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図2に示したROM202、RAM203、ディスク205などである。また、各部の処理結果は、CPU201のレジスタや、CPU201のキャッシュメモリ等に格納される。
また、情報処理装置100は、スラッシング情報テーブル310にアクセス可能である。スラッシング情報テーブル310は、キャッシュミスの数を記憶するテーブルである。また、スラッシング情報テーブル310は、ロード命令、ストア命令に対するキャッシュミスの割合であるキャッシュミス率を記憶してもよい。スラッシング情報テーブル310は、RAM203、ディスク205といった記憶装置に格納される。
取得部301は、RAM203の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得する。
判定部302は、取得部301が取得したキャッシュミスの数が所定数以上であるか否かを判定する。また、判定部302は、ロード命令、ストア命令に対して、取得部301が取得したキャッシュミスの数の割合、すなわち、キャッシュミス率が所定の割合以上であるか判定してもよい。以下、所定の割合を、「キャッシュミス率閾値」と呼称する。キャッシュミス率閾値は、開発者によって決められた固定値でもよいし、動的領域確保時にプログラム内に記載された引数に従ってもよい。
算出部303は、確保要求を複数回行った結果、1wayのサイズと、取得部301が取得したキャッシュミス率がキャッシュミス率閾値以上となった回数とに基づいて、新たな記憶領域を確保する際にずらすサイズを算出する。例えば、算出部303は、1wayのサイズから、1wayのサイズを2の回数乗で除した値で減じることを回数分繰り返してもよい。例えば、1wayのサイズが16[KiB]であり、取得部301が取得したキャッシュミス率がキャッシュミス率閾値以上となった回数が3であったとする。この例では、算出部303は、16−(16/2^1)−(16/2^2)−(16/2^3)=16−8−4−2=2[KiB]として算出する。
また、算出部303は、新たな記憶領域を確保する際にずらすサイズを、1回目に確保した際の記憶領域からのものとして算出してもよいし、直前に確保した際の記憶領域からのものとして算出してもよい。
また、算出部303は、確保要求を複数回行った結果、1wayのサイズを、2の回数乗で除することにより、新たな記憶領域を確保する際にずらすサイズを算出してもよい。例えば、1wayのサイズが16[KiB]であり、取得部301が取得したキャッシュミス率がキャッシュミス率閾値以上となった回数が2であったとする。このとき、算出部303は、新たな記憶領域を確保する際にずらすサイズを、16/2^2=4[KiB]として算出する。
設定部304は、確保要求により呼び出される特定のルーチンが確保する新たな記憶領域を確保した記憶領域からずらして設定する。また、設定部304は、新たな記憶領域を、1wayの半分のサイズ分確保した記憶領域からずらして設定してもよい。また、設定部304は、算出部303が算出したサイズ分確保した記憶領域からずらして新たな記憶領域を設定してもよい。ここで、ずらす方向は、1wayの半分のサイズや算出部303が算出したサイズ分値を加える向きでもよいし、減ずる向きでもよい。
図4は、ビルド時の動作例と実行時の動作例とを示す説明図である。図4では、適切なパディングサイズを設定するために行うビルド時の動作と、実行時の動作とについて説明する。ここで、ビルド時の動作の主体は、情報処理装置100でもよいし、他の装置でもよい。図4では、説明の簡略化のため、情報処理装置100がビルドを行うものとする。
ビルド時において、情報処理装置100は、プログラムコードをコンパイルする際に、プログラムコードに、キャッシュミス情報採取コードを挿入する(ステップS401)。キャッシュミス情報採取コードを挿入する具体的な例については、図5で示す。次に、情報処理装置100は、プログラムコードに、キャッシュスラッシング判定コードおよびパディングコードを挿入する(ステップS402)。具体的には、情報処理装置100は、プログラムコードをコンパイルしたオブジェクトと、キャッシュスラッシング判定コードおよびパディングコードを有するロードモジュールとをリンクして、実行コードを得る。また、情報処理装置100は、キャッシュスラッシング判定コードまたはパディングコードが実行される際に、前述のロードモジュールを、プログラムコードをコンパイルしたオブジェクトと動的リンクしてもよい。
次に、実行コードの実行時において、情報処理装置100は、キャッシュミス情報採取コードが実行されることにより、キャッシュミス情報を採取する(ステップS403)。採取したキャッシュミス情報は、スラッシング情報テーブル310に格納される。そして、情報処理装置100は、スラッシング情報テーブル310を参照して、動的領域確保処理の中で、スラッシングの判定およびパディングの実施を行う(ステップS404)。具体的なパディングの実施例を、図6で示す。また、パディングサイズの算出例を図7で示す。
図5は、キャッシュミス情報採取コードの挿入例を示す説明図である。図5では、ビルド時におけるキャッシュミス情報採取コードの挿入例を示す。プログラムコード501は、キャッシュミス情報採取コードの挿入前の状態を示す。プログラムコード502は、キャッシュミス情報採取コードの挿入後の状態を示す。また、図5の例では、プログラムコード501内の配列a、b、cについてのキャッシュミス情報採取コードの例を示す。そして、プログラムコード502では、プログラムコード501に記載された「a(i)=a(i)+b(i)*c(i)」をコンパイルしたアセンブラコードに対して、キャッシュミス情報採取コードを挿入した例を示す。
プログラムコード502内のコード511〜516が、キャッシュ情報採取コードである。具体的には、コード511、512が、配列bに対するキャッシュミス情報採取コードである。同様に、コード513、514が、配列cに対するキャッシュミス情報採取コードである。また、コード515、516が、配列aに対するキャッシュミス情報採取コードである。ここで、コード511〜516が採取する情報は、図8で説明する。また、情報処理装置100は、コード511〜516により採取したキャッシュミス情報を、スラッシング情報テーブル310に格納する。
図6は、パディング実施の動作例を示す説明図である。図6の(a)では、領域確保処理中におけるパディング実施の動作例を示す。実行コード601は、プログラムコードをコンパイルした後の状態を示す。ここで、実行コード601は、配列a、bの領域を確保して、配列a、bに対する処理を行い、配列a、bの領域を解放するという一連の処理をN回繰り返すものとする。
そして、実行コード602は、実行コード601を実行する際のイメージを示す。実行コード602では、配列bに対してパディングを実施するものとする。具体的には、情報処理装置100は、実行コード601の実行中に、動的領域確保処理を呼び出す「allocate」を検出すると、特定のルーチンとして、キャッシュスラッシング判定コードおよびパディングコードを有するロードモジュールを呼び出す。そして、情報処理装置100は、キャッシュスラッシング判定を行う。なお、動的領域確保処理を呼び出す名称としては、他の例では、「malloc」等がある。
図6の(a)の例では、情報処理装置100は、キャッシュスラッシングありと判定し、パディングを実施する。パディングサイズをイメージした変数が、実行コード602内の「real(i),allocatable,dimension(:)::dmy1」である。そして、情報処理装置100は、コード603が示すように、配列bの領域を確保する前に、dmy1の記憶領域を確保することにより、パディングを実施する。図6の(b)では、配列a、b用に確保された記憶領域を模式化したものを示す。符号604は、パディングなしの場合で、配列aの記憶領域と配列bの記憶領域とが連続した様子を示す。また、符号605は、パディングありの場合で、配列aの記憶領域と配列bの記憶領域との間にdmy1の記憶領域が配置された様子を示す。具体的なパディングサイズの算出例については、図7で説明する。
図7は、パディングサイズの算出例を示す説明図である。情報処理装置100は、1回目のパディングサイズを、1wayのデータサイズの半分とし、2回目のパディングサイズを、1wayデータサイズの4分の1とし、以下、1キャッシュラインのサイズとなるまで行う。一般化すると、N回目のパディングサイズは、下記(1)式となる。
パディングサイズ=1wayのデータサイズ/2^N …(1)
また、パディングを繰り返す条件として、N−1回目のパディングを行った結果、キャッシュミス率が一定数以上変化した場合に、N回目のパディングを行うものとする。例えば、L1Dキャッシュのサイズが64[KiB]であり、1キャッシュラインが256[Byte]であり、4wayの場合について説明する。この場合、1wayのデータサイズは、64[KiB]/4=16[KiB]となる。従って、情報処理装置100は、(1)式に従って、1回目のパディングサイズを16/2^1=8[KiB]とする。次に、1回目のパディングによりキャッシュミスの数が一定数以上変化したとして、情報処理装置100は、2回目のパディングサイズを16/2^2=4[KiB]とする。
図7では、パディングを行わずにキャッシュスラッシングが発生する例と、1回パディングを行ってキャッシュスラッシングの発生を回避できた例を示す。より具体的には、図7の(a)では、a、b、c、d、eという、16[KiB]のサイズを有する配列を確保する例について示す。そして、図7の(b)では、配列a、b、c、d、eのいずれにもパディングを行わなかった際に、キャッシュスラッシングが発生する例を示す。具体的には、e(1)は、a(1)〜d(1)のいずれかとキャッシュラインが競合するため、way1〜4のいずれかを上書きすることになり、キャッシュスラッシングが発生することになる。
次に、図7の(c)では、配列eの前に8[KiB]のパディングを行った例を示す。この場合、e(1)は、a(1)〜d(1)のいずれとも、対応するキャッシュラインが異なるため、上書きされず、キャッシュスラッシングの発生を回避することができる。なお、a(1)〜d(1)は、同一のキャッシュラインの割り当てとなるが、L1Dキャッシュが4wayであるため、競合が発生しない。
図8は、スラッシング情報テーブル310の記憶内容の一例を示す説明図(その1)である。スラッシング情報テーブル310は、対象キャッシュと、名前と、宣言サイズと、アドレス情報と、インデックス情報と、パディングおよびキャッシュミス情報というフィールドを含む。
対象キャッシュフィールドには、対象となるキャッシュの名称が格納される。名前フィールドは、配列宣言名フィールドを有する。配列宣言名フィールドは、配列の宣言名が格納される。宣言サイズフィールドは、データサイズと、次元数と、各次元の宣言サイズというフィールドを有する。データサイズフィールドは、配列の1つの要素分のデータサイズが格納される。次元数フィールドは、配列の次元数が格納される。各次元の宣言サイズフィールドには、配列の次元ごとに、宣言サイズが格納される。
アドレス情報フィールドには、配列の先頭アドレスが格納される。インデックス情報フィールドには、各次元のインデックスが格納される。
パディングおよびキャッシュミス情報フィールドには、パディング回数と、発生回数と、各回数におけるパディングサイズとキャッシュミス情報というフィールドを有する。パディング回数フィールドには、動的領域確保時にパディングサイズを変更した回数が格納される。発生回数フィールドには、キャッシュミス率閾値を超えた回数が格納される。各回数におけるパディングサイズフィールドには、該当の回数における配列間のパディングサイズが格納される。各回数におけるキャッシュミス情報は、各回数におけるロードストア命令数と、各回数におけるL1Dミス数と、L1Dデマンドミス数と、L1Dミス率と、L1Dデマンドミス率とを有する。図5に示したコード511〜516は、各回数におけるロードストア命令数〜L1Dデマンドミス数を取得するコードである。
各回数におけるロードストア命令数フィールドには、各回数におけるロード命令と、ストア命令との合計数が格納される。各回数におけるL1Dミス数フィールドには、各回数における、L1キャッシュメモリへのデータのキャッシュミスの回数が格納される。より具体的には、各回数におけるL1Dミス数フィールドには、L1キャッシュメモリへのデータのプリフェッチ時のキャッシュミスの回数と、L1キャッシュメモリに対するデマンドミスの回数との合計数が格納される。各回数におけるL1Dデマンドミス数フィールドには、各回数におけるL1キャッシュメモリに対するデマンドミスの回数が格納される。
各回数におけるL1Dミス率フィールドには、ロードストア命令に対するキャッシュミスの割合が格納される。具体的には、各回数におけるL1Dミス率フィールドには、下記(2)式により算出されたL1Dミス率が格納される。
L1Dミス率=各回数におけるL1Dミス数フィールドの値/各回数におけるロードストア命令数フィールドの値 …(2)
各回数におけるL1Dデマンドミス率フィールドには、キャッシュミスに対するデマンドミスの割合が格納される。具体的には、各回数におけるL1Dデマンドミス率フィールドには、下記(3)式により算出されたL1Dデマンドミス率が格納される。
L1Dデマンドミス率=各回数におけるL1Dデマンドミス数フィールドの値/各回数におけるL1Dミス数フィールドの値 …(3)
また、情報処理装置100は、L1Dミス率と、L1Dデマンドミス率とを用いて、キャッシュスラッシングが発生しているか否かを判定する。具体的には、情報処理装置100は、L1Dミス率とL1Dデマンドミス率とが、それぞれ、キャッシュミス率閾値として、L1Dミス率の閾値と、L1Dデマンドミス率の閾値以上である場合に、キャッシュスラッシングが発生していると判定する。
L1Dミス率の閾値としては、例えば、1つの要素が単精度のデータサイズであれば、1.563[%]であり、倍精度のデータサイズであれば3.125[%]とする。各数値の意味としては、単精度4[Byte]のデータであれば、連続アクセスで256/4=64回に1回キャッシュミスし、倍精度8[Byte]のデータであれば、連続アクセスで256/8=32回に1回キャッシュミスするためである。
また、L1Dデマンドミス率の閾値としては、例えば、20[%]である。20[%]は、キャッシュスラッシングの経験則より得られた数値である。次に、スラッシング情報テーブル310に格納され得る具体的な値について、図9で説明する。
図9は、スラッシング情報テーブル310の記憶内容の一例を示す説明図(その2)である。ここで、図9に示すレコード1A、1B、2A、2Bは、それぞれ、図4で示したステップS404の1回目の処理前、処理後、2回目の処理前、処理後を示す。また、図9で示す左矢印は、図中の表記を理解しやすくしたものであり、左側の項目の値と同一の値を有する。また、図9では、図7で示したL1Dキャッシュのサイズが64[KiB]であり、1キャッシュラインが256[Byte]であり、4wayである例を用いる。
レコード1Aは、配列宣言名が「ABC」であり、1要素が8[Byte]であり、次元数が3であり、各次元の宣言サイズが256,128,64であり、配列の先頭アドレスが、1000000000番地であることを示す。さらに、レコード1Aは、インデックス情報が256,128,64であり、パディング回数が0であり、発生回数が0であり、ロードストア命令数が10000回であり、L1Dミス数が500回であり、L1Dデマンドミス数が200回であることを示す。
次に、レコード1Bが示すように、情報処理装置100は、レコード1Aの内容から、(2)式と(3)式とを用いて、L1Dミス率と、L1Dデマンドミス率とを、それぞれ5.00[%]と40[%]と算出する。L1Dミス率とL1Dデマンドミス率とがキャッシュミス率閾値を超えていることから、情報処理装置100は、キャッシュスラッシングが発生していると判定し、パディングサイズを、8192[Byte](8[KiB])とする。また、レコード1Bが示すように、情報処理装置100は、パディング回数と発生回数とを1に設定し、配列の先頭サイズを、パディングサイズを加えた分、1000008192番地に設定する。
次に、レコード2Aは、2回目の配列ABCについて、ロードストア命令数が10000回であり、L1Dミス数が400回であり、L1Dデマンドミス数が120回であることを示す。
そして、レコード2Bが示すように、情報処理装置100は、レコード2Aの内容から、(2)式と(3)式とを用いて、L1Dミス率と、L1Dデマンドミス率とを、それぞれ4.00[%]と30[%]と算出する。L1Dミス率とL1Dデマンドミス率とがキャッシュミス率閾値を超えていることから、情報処理装置100は、キャッシュスラッシングが発生していると判定し、パディングサイズを、4096[Byte](4[KiB])とする。また、レコード2Bが示すように、情報処理装置100は、パディング回数と発生回数とを2に設定し、配列の先頭サイズを、パディングサイズを加えた分、1000004096番地に設定する。
次に、情報処理装置100が実行する動作を示すフローチャートを、図10〜図13を用いて説明する。
図10は、キャッシュミス情報採取コード挿入処理手順の一例を示すフローチャートである。キャッシュミス情報採取コード挿入処理は、プログラムコードにキャッシュミス情報採取コードを挿入する処理である。また、キャッシュミス情報採取コード挿入処理は、情報処理装置100が実行してもよいし、他の装置が実行してもよい。図10では、情報処理装置100が実行する例を用いて説明する。
情報処理装置100は、プログラムコードの先頭の処理を選択する(ステップS1001)。次に、情報処理装置100は、プログラムコードの終端まで処理したか否かを判断する(ステップS1002)。プログラムコードの終端まで処理した場合とは、具体的には、例えば、ステップS1005の処理において、次の処理がない場合である。
プログラムコードの終端まで処理していない場合(ステップS1002:No)、情報処理装置100は、選択した処理がデータをアクセスする処理か否かを判断する(ステップS1003)。選択した処理がデータをアクセスする処理である場合(ステップS1003:Yes)、情報処理装置100は、アクセス対象の変数に対するアドレス情報およびキャッシュミス情報を採取し、スラッシング情報テーブルに採取した情報を出力するコードを挿入する(ステップS1004)。
ステップS1004の処理終了後、または、選択した処理がデータをアクセスする処理でない場合(ステップS1003:No)、情報処理装置100は、次の処理を選択する(ステップS1005)。そして、情報処理装置100は、ステップS1002の処理に移行する。
また、プログラムコードの終端まで処理した場合(ステップS1002:Yes)、情報処理装置100は、スラッシング情報テーブル310を出力する(ステップS1006)。ステップS1006の処理終了後、情報処理装置100は、キャッシュミス情報採取コード挿入処理を終了する。キャッシュミス情報採取コード挿入処理を実行することにより、情報処理装置100は、実行コードの実行中にキャッシュミス情報を採取するコードを挿入することができる。
図11は、動的領域確保処理手順の一例を示すフローチャートである。動的領域確保処理は、記憶領域を動的に確保する処理である。動的領域確保処理は、実行コード中に、動的領域確保処理の呼び出しを検出した際に実行される処理である。
情報処理装置100は、確保対象となる配列に対する1回目の記憶領域確保か否かを判断する(ステップS1101)。1回目か否かの判断基準は、スラッシング情報テーブル310に、確保対象の配列が登録されているか否かで判断できる。また、情報処理装置100は、再度の動的領域確保処理の呼び出しを検出した際には、2回目以降の記憶領域確保として判定してもよい。再度の動的領域確保処理の呼び出しの名称としては、例えば、「reallocate」、「realloc」等がある。
確保対象となる配列に対する1回目の記憶領域確保である場合(ステップS1101:Yes)、情報処理装置100は、スラッシング情報テーブル310に、配列情報を追加する(ステップS1102)。ここで、配列情報とは、スラッシング情報テーブル310の名前、宣言サイズ、アドレス情報、インデックス情報の各フィールドである。さらに、情報処理装置100は、パディング回数、発生回数フィールドに0を設定する。
一方、確保対象となる配列に対する2回目以降の記憶領域確保である場合(ステップS1101:No)、情報処理装置100は、キャッシュスラッシングが発生しているか否かを判定する(ステップS1103)。キャッシュスラッシングが発生しているか否かの判定方法は、図8に記載したように、L1Dミス率の閾値と、L1Dデマンドミス率の閾値とを用いるものがある。
キャッシュスラッシングが発生している場合(ステップS1103:Yes)、情報処理装置100は、パディングサイズ算出処理を実行する(ステップS1104)。パディングサイズ算出処理の詳細については、図12で説明する。
ステップS1102、ステップS1104の処理終了後、または、キャッシュスラッシングが発生していない場合(ステップS1103:No)、情報処理装置100は、記憶領域を確保する(ステップS1105)。ここで、ステップS1104の処理実行後の場合には、情報処理装置100は、パディングサイズ分の領域を確保した後に、確保対象となる配列の記憶領域を確保する。ステップS1105の処理終了後、情報処理装置100は、動的領域確保処理を終了する。動的領域確保処理を実行することにより、情報処理装置100は、動的領域確保処理を呼び出す呼び出しに対応して記憶領域を確保することができる。
図12は、パディングサイズ算出処理手順の一例を示すフローチャートである。パディングサイズ算出処理は、確保する記憶領域の前に設定するパディングのデータサイズを算出する処理である。なお、図12で示すフローチャートは、L1Dキャッシュのサイズが64[KiB]であり、1キャッシュラインが256[Byte]であり、4wayの場合を例として説明する。
情報処理装置100は、Nをパディング回数に設定する(ステップS1201)。次に、情報処理装置100は、Nが5より大きいか否かを判断する(ステップS1202)。Nが5以下である場合(ステップS1202:No)、情報処理装置100は、パディングサイズを16/(2^N)[KiB]と算出する(ステップS1203)。
一方、Nが5より大きい場合(ステップS1202:Yes)、情報処理装置100は、パディングサイズを1キャッシュラインサイズと算出する(ステップS1204)。次に、情報処理装置100は、前回のキャッシュミス率との変化量が10[%]以下か否かを判断する(ステップS1205)。ステップS1205について、情報処理装置100は、キャッシュミス率の変化量として、L1Dミス率、L1Dデマンドミス率の両方ともに10[%]以下であればYesとしてもよいし、いずれか一方が10[%]以下であればYesとしてもよい。
ステップS1203の処理終了後、または、前回のキャッシュミス率との変化量が10[%]より大きい場合(ステップS1205:No)、情報処理装置100は、スラッシング情報テーブル310の現在のパディング回数に相当する情報域を新たに確保して、算出したパディングサイズを設定する(ステップS1206)。また、情報処理装置100は、スラッシング情報テーブル310の発生回数をインクリメントする。
ステップS1206の処理終了後、または、前回のキャッシュミス率との変化量が10[%]以下である場合(ステップS1205:Yes)、情報処理装置100は、パディングサイズ算出処理を終了する。パディングサイズ算出処理を実行することにより、情報処理装置100は、適切なパディングサイズを算出することができる。
図13は、キャッシュミス情報採取処理手順の一例を示すフローチャートである。キャッシュミス情報採取処理は、キャッシュミス情報を採取する処理である。
情報処理装置100は、L1Dミス数と、L1Dデマンドミス数と、ロードストア命令数とを取得する(ステップS1301)。次に、情報処理装置100は、L1Dミス率をL1Dミス数/ロードストア命令数に設定する(ステップS1302)。また、情報処理装置100は、L1Dデマンドミス率をL1Dデマンドミス数/L1Dミス数に設定する(ステップS1303)。そして、情報処理装置100は、取得または算出した情報を、スラッシング情報テーブル310に格納する(ステップS1304)。ステップS1304の処理終了後、情報処理装置100は、キャッシュミス情報採取処理を終了する。キャッシュミス情報採取処理を実行することにより、情報処理装置100は、キャッシュミス情報を採取することができる。
以上説明したように、情報処理装置100によれば、確保した記憶領域のキャッシュミス率がキャッシュミス率閾値以上、すなわちキャッシュスラッシングが発生したと判定したのであれば、新たな記憶領域を確保した記憶領域からずらして設定する。これにより、競合するキャッシュラインとは別のキャッシュラインに新たな記憶領域が割り付けられるので、情報処理装置100は、キャッシュスラッシングの抑制を図ることができる。
また、情報処理装置100によれば、新たな記憶領域を、1wayの半分のサイズ分確保した記憶領域からずらして設定してもよい。これにより、情報処理装置100は、キャッシュスラッシングの発生を抑制することができる可能性を最も高くすることができる。
また、情報処理装置100によれば、確保要求を複数回行った結果、1wayのサイズと、キャッシュスラッシングが発生した回数とに基づいて、新たな記憶領域を確保する際にずらすサイズを算出してもよい。前述したように、1wayの半分のサイズが、キャッシュスラッシングの発生を抑制することができる可能性が最も高いが、必ずしもキャッシュスラッシングの発生を抑制できるとは限らない。
例えば、図1の例を用いると、実行コード101に、「a(j)=b(j)+b(j+2)」というコードが記載されていた場合である。この場合、パディングを行わないと、図1の(a)で説明したように、j=0について、a(0)、b(0)の記憶領域が、同一のキャッシュラインに対応するためキャッシュスラッシングが発生する。そして、図1の(b)の例に従って、2キャッシュラインのサイズ分パディングすると、今度は、j=0について、a(0)、b(2)の記憶領域が、同一のキャッシュラインに対応するためキャッシュスラッシングが発生することになる。従って、この例では、情報処理装置100は、1キャッシュラインのサイズ分パディングすると、j=0について、a(0)、b(0)、b(2)の記憶領域が、全て異なるキャッシュラインに対応するためキャッシュスラッシングの発生を抑制することができる。このように、情報処理装置100は、パディングサイズを調整して、キャッシュスラッシングの発生を抑制することができる。
また、本実施の形態で説明したデータ処理方法に従う場合、ある配列の前にパディングを行うと、後続の配列に対するキャッシュスラッシングの発生の有無が変わり、今までキャッシュスラッシングが発生していなかった箇所で新たに発生する可能性がある。しかしながら、キャッシュスラッシングが発生した箇所を特定してパディングを行っていくため、情報処理装置100は、最終的には、全ての箇所でキャッシュスラッシングが発生しない状態に近づけることができる。
なお、本実施の形態で説明したデータ処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、
取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を前記確保した記憶領域からずらして設定する、
制御部を有することを特徴とする情報処理装置。
(付記2)前記制御部は、
前記新たな記憶領域を、前記記憶部のいずれかの記憶領域に対応付いたキャッシュラインの数でキャッシュメモリを分割した領域の半分のサイズ分前記確保した記憶領域からずらして設定することを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、
前記確保要求を複数回行った結果、前記分割した領域のサイズと、取得した前記キャッシュミスの数が前記所定数以上となった回数とに基づいて、前記特定のルーチンが新たな記憶領域を確保する際にずらすサイズを算出し、
確保した記憶領域から算出した前記サイズ分ずらして新たな記憶領域を設定することを特徴とする付記2に記載の情報処理装置。
(付記4)前記制御部は、
前記確保要求を複数回行った結果、前記分割した領域のサイズを、2の前記回数乗で除することにより、新たな記憶領域を確保する際にずらすサイズを算出し、
算出した前記サイズ分確保した記憶領域からずらして新たな記憶領域を設定することを特徴とする付記3に記載の情報処理装置。
(付記5)コンピュータが、
記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、
取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を前記確保した記憶領域からずらして設定する、
処理を実行することを特徴とするデータ処理方法。
(付記6)コンピュータに、
記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、
取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を前記確保した記憶領域からずらして設定する、
処理を実行させることを特徴とするデータ処理プログラム。
100 情報処理装置
102 記憶部
103 L1キャッシュメモリ
300 制御部
301 取得部
302 判定部
303 算出部
304 設定部
310 スラッシング情報テーブル

Claims (3)

  1. 記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、
    取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を、前記記憶部のいずれかの記憶領域に対応付いたキャッシュラインの数でキャッシュメモリを分割した領域の半分のサイズ分前記確保した記憶領域からずらして設定し、
    前記確保要求を複数回行った結果、前記分割した領域のサイズと、取得した前記キャッシュミスの数が前記所定数以上となった回数とに基づいて、前記特定のルーチンが新たな記憶領域を確保する際にずらすサイズを算出し、
    確保した記憶領域から算出した前記サイズ分ずらして新たな記憶領域を設定する、
    制御部を有することを特徴とする情報処理装置。
  2. コンピュータが、
    記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、
    取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を、前記記憶部のいずれかの記憶領域に対応付いたキャッシュラインの数でキャッシュメモリを分割した領域の半分のサイズ分前記確保した記憶領域からずらして設定し、
    前記確保要求を複数回行った結果、前記分割した領域のサイズと、取得した前記キャッシュミスの数が前記所定数以上となった回数とに基づいて、前記特定のルーチンが新たな記憶領域を確保する際にずらすサイズを算出し、
    確保した記憶領域から算出した前記サイズ分ずらして新たな記憶領域を設定する、
    処理を実行することを特徴とするデータ処理方法。
  3. コンピュータに、
    記憶部の記憶領域の確保要求により呼び出された特定のルーチンが確保した記憶領域に対するアクセス要求に応じて生じたキャッシュミスの数を取得し、
    取得した前記キャッシュミスの数が所定数以上であれば、前記確保要求により呼び出される前記特定のルーチンが確保する新たな記憶領域を、前記記憶部のいずれかの記憶領域に対応付いたキャッシュラインの数でキャッシュメモリを分割した領域の半分のサイズ分前記確保した記憶領域からずらして設定し、
    前記確保要求を複数回行った結果、前記分割した領域のサイズと、取得した前記キャッシュミスの数が前記所定数以上となった回数とに基づいて、前記特定のルーチンが新たな記憶領域を確保する際にずらすサイズを算出し、
    確保した記憶領域から算出した前記サイズ分ずらして新たな記憶領域を設定する、
    処理を実行させることを特徴とするデータ処理プログラム。
JP2014254588A 2014-12-16 2014-12-16 情報処理装置、データ処理方法、およびデータ処理プログラム Active JP6432333B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014254588A JP6432333B2 (ja) 2014-12-16 2014-12-16 情報処理装置、データ処理方法、およびデータ処理プログラム
US14/922,717 US9864693B2 (en) 2014-12-16 2015-10-26 Data processing method, information processing device, and recording medium
EP15192830.6A EP3035196A3 (en) 2014-12-16 2015-11-03 Data processing method, information processing device, and data processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014254588A JP6432333B2 (ja) 2014-12-16 2014-12-16 情報処理装置、データ処理方法、およびデータ処理プログラム

Publications (2)

Publication Number Publication Date
JP2016115213A JP2016115213A (ja) 2016-06-23
JP6432333B2 true JP6432333B2 (ja) 2018-12-05

Family

ID=54366087

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014254588A Active JP6432333B2 (ja) 2014-12-16 2014-12-16 情報処理装置、データ処理方法、およびデータ処理プログラム

Country Status (3)

Country Link
US (1) US9864693B2 (ja)
EP (1) EP3035196A3 (ja)
JP (1) JP6432333B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7297635B2 (ja) 2019-10-15 2023-06-26 相互印刷株式会社 包装用箱

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437732B2 (en) * 2016-12-14 2019-10-08 Intel Corporation Multi-level cache with associativity collision compensation
JP6981087B2 (ja) * 2017-08-03 2021-12-15 富士通株式会社 情報処理装置、方法、及びプログラム
US11436524B2 (en) * 2018-09-28 2022-09-06 Amazon Technologies, Inc. Hosting machine learning models
US11562288B2 (en) 2018-09-28 2023-01-24 Amazon Technologies, Inc. Pre-warming scheme to load machine learning models

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630097A (en) * 1991-06-17 1997-05-13 Digital Equipment Corporation Enhanced cache operation with remapping of pages for optimizing data relocation from addresses causing cache misses
US5943691A (en) * 1995-12-27 1999-08-24 Sun Microsystems, Inc. Determination of array padding using collision vectors
US6041393A (en) * 1996-08-23 2000-03-21 Hewlett-Packard Co. Array padding for higher memory throughput in the presence of dirty misses
JPH10207772A (ja) 1997-01-23 1998-08-07 Hitachi Ltd キャッシュミス予測方法
US6134710A (en) 1998-06-26 2000-10-17 International Business Machines Corp. Adaptive method and system to minimize the effect of long cache misses
JP2002014868A (ja) * 2000-06-28 2002-01-18 Hitachi Ltd メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
CA2363182C (en) * 2001-11-19 2006-06-06 Ibm Canada Limited-Ibm Canada Limitee Automatic program restructuring to reduce average cache miss penalty
JP2003323341A (ja) * 2002-05-07 2003-11-14 Fujitsu Ltd キャッシュミス回避装置
US6951015B2 (en) * 2002-05-30 2005-09-27 Hewlett-Packard Development Company, L.P. Prefetch insertion by correlation of cache misses and previously executed instructions
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
US7237084B2 (en) * 2003-10-27 2007-06-26 Hewlett-Packard Development Company, L.P. Method and program product for avoiding cache congestion by offsetting addresses while allocating memory
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US8484274B2 (en) * 2009-08-27 2013-07-09 The United States of America represented by the Administrator of the National Aeronautics Space Administration Optimal padding for the two-dimensional fast fourier transform
JP5283128B2 (ja) * 2009-12-16 2013-09-04 学校法人早稲田大学 プロセッサによって実行可能なコードの生成方法、記憶領域の管理方法及びコード生成プログラム
US10241707B2 (en) * 2013-05-23 2019-03-26 Intel Corporation Techniques for organizing three-dimensional array data
US9858196B2 (en) * 2014-08-19 2018-01-02 Qualcomm Incorporated Power aware padding

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7297635B2 (ja) 2019-10-15 2023-06-26 相互印刷株式会社 包装用箱

Also Published As

Publication number Publication date
EP3035196A2 (en) 2016-06-22
EP3035196A3 (en) 2016-07-06
US20160170894A1 (en) 2016-06-16
US9864693B2 (en) 2018-01-09
JP2016115213A (ja) 2016-06-23

Similar Documents

Publication Publication Date Title
JP6432333B2 (ja) 情報処理装置、データ処理方法、およびデータ処理プログラム
CN101957773B (zh) 用于多轮次动态概要分析的方法及其系统
Nguyen et al. Memory allocation for embedded systems with a compile-time-unknown scratch-pad size
JP2004206644A (ja) ヒープサイズ自動最適化処理方法,ヒープサイズ自動最適化装置,そのプログラムおよびプログラム記録媒体
US6360361B1 (en) Field reordering to optimize cache utilization
US6002875A (en) Method for the reduction of instruction cache miss rate using optimization data from trace data profiles
US8359435B2 (en) Optimization of software instruction cache by line re-ordering
US8510529B2 (en) Method for generating program and method for operating system
JPH0816871B2 (ja) プログラム翻訳装置およびプログラム翻訳方法
WO2021114757A1 (zh) 计算图的优化方法、装置、计算机设备和存储介质
JP5282908B2 (ja) 階層型負荷推定システム、方法およびプログラム
JP6705443B2 (ja) データ配置先決定装置、方法およびプログラム
WO2023221626A1 (zh) 一种内存分配的方法和装置
US8671398B2 (en) Working set profiler
Zhang et al. Optimizing data allocation for loops on embedded systems with scratch-pad memory
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
Chakraborty et al. Integrating software caches with scratch pad memory
JP2006079338A (ja) プログラムセクションレイアウト方法およびレイアウト処理プログラム
JP4600700B2 (ja) プログラムのメモリ空間への配置方法、装置、およびプログラム
JP6519228B2 (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
JP2022140995A (ja) 情報処理装置、コンパイルプログラムおよびコンパイル方法
JP3638171B2 (ja) 資源割付装置
US8341354B2 (en) Cache coloring method and apparatus based on function strength information
KR101109009B1 (ko) 비정규 리덕션의 병렬화 방법
JP6524733B2 (ja) 並列演算装置、並列演算システム、およびジョブ制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180724

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180925

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181022

R150 Certificate of patent or registration of utility model

Ref document number: 6432333

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150