JP6519228B2 - データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法 - Google Patents

データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法 Download PDF

Info

Publication number
JP6519228B2
JP6519228B2 JP2015037533A JP2015037533A JP6519228B2 JP 6519228 B2 JP6519228 B2 JP 6519228B2 JP 2015037533 A JP2015037533 A JP 2015037533A JP 2015037533 A JP2015037533 A JP 2015037533A JP 6519228 B2 JP6519228 B2 JP 6519228B2
Authority
JP
Japan
Prior art keywords
memory
data
information
memory access
stored
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
JP2015037533A
Other languages
English (en)
Other versions
JP2016162008A (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 JP2015037533A priority Critical patent/JP6519228B2/ja
Priority to US15/002,447 priority patent/US9842049B2/en
Publication of JP2016162008A publication Critical patent/JP2016162008A/ja
Application granted granted Critical
Publication of JP6519228B2 publication Critical patent/JP6519228B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Human Computer Interaction (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System (AREA)

Description

本発明は、データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法に関する。
物理マシンが採用するアーキテクチャとして、プロセッサがアクセス速度の異なる複数のメモリに対してメモリアクセスを行うNUMA(Non Uniform Memory Access)アーキテクチャが採用される場合がある。
このNUMAアーキテクチャを採用した物理マシンでは、一般的に、プロセッサによるアクセス頻度が高いデータを、メモリアクセスの要求に対する応答時間が短いメモリに配置する。これにより、NUMAアーキテクチャを採用した物理マシンは、物理マシン全体としてのメモリアクセスの効率化(メモリアクセスの要求に対する応答時間の短縮化)を図ることが可能になる(例えば、特許文献1及び2参照)。
特開2012−247827号公報 特開平7−191882号公報
上記のような応答時間は、例えば、メモリアクセス対象のデータのサイズをメモリのバンド幅(データ転送速度または単位時間あたりのデータ転送量)で除算した値に、プロセッサからメモリまでの物理的な距離等に基づくレイテンシの値を加算することにより算出される。そして、上記の応答時間は、メモリアクセス対象のデータのサイズが小さい程、メモリアクセス対象のデータのサイズをメモリのバンド幅で除算した値が小さくなるため、レイテンシに依存する。したがって、物理マシンは、この場合、レイテンシが低いメモリにアクセス頻度の高いデータを記憶することにより、メモリアクセスの効率化を図ることが可能になる。
一方、上記の応答時間は、メモリアクセス対象のデータのサイズが大きい程、メモリアクセス対象のデータのサイズをメモリのバンド幅で除算した値が大きくなるため、レイテンシよりもバンド幅に依存する。したがって、メモリアクセス対象のデータのサイズによっては、レイテンシのみに基づいて決定したデータ配置と、データのサイズをバンド幅で除算した値も考慮して決定したデータ配置とで内容が異なる場合がある。すなわち、物理マシンは、各メモリが実際にメモリアクセスを行うデータのサイズに基づいて、応答時間の算出を行う必要がある場合がある。
ここで、例えば、複数のメモリアクセスの要求を纏めてメモリアクセスを行う場合、プログラムの実行に伴ってプロセッサが出力するトレースは、複数のメモリアクセスの要求を纏めることなく行ったものとして出力される場合がある。そのため、トレースの情報に基づいて複数のメモリ間におけるデータ配置が決定される場合、複数のメモリアクセスの要求を纏めて行ったメモリアクセスの情報は、データ配置の決定に反映されない場合がある。したがって、この場合、物理マシンは、実際にメモリアクセスが行われるデータのサイズに基づいてデータ配置の決定を行うことができず、メモリアクセスの効率化を図ることができない。
そこで、一つの実施の形態の目的は、よりメモリアクセスの効率を高めることができるデータ配置決定装置、データ配置決定プログラム及びデータ配置決定方法を提供することにある。
実施の形態の一つの側面によれば、プログラムを実行した第1メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成する対応情報作成部と、
前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出する削減時間算出部と、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定するデータ配置決定部と、を有する。
一つの側面によれば、よりメモリアクセスの効率を高めることができる。
情報処理装置10の全体構成を示す図である。 情報処理装置10の全体構成を示す図である。 トレース情報の具体例を説明する図である。 対応情報の具体例を説明する図である。 情報処理装置10のハードウエア構成を示す図である。 図5の情報処理装置10の機能ブロック図である。 第1の実施の形態におけるデータ配置決定処理の概略を説明するフローチャート図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。 第2の実施の形態におけるRowbuffer領域を説明する図である。 第2の実施の形態におけるメモリアドレスの具体例を説明する図である。 第2の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。 第2の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。 第2の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。 第2の実施の形態におけるデータ配置決定処理を説明するフローチャート図である。 第2の実施の形態におけるデータ配置決定処理を説明する図である。 第2の実施の形態におけるデータ配置決定処理を説明する図である。 第2の実施の形態におけるデータ配置決定処理を説明する図である。 第2の実施の形態におけるデータ配置決定処理を説明する図である。 第2の実施の形態におけるデータ配置決定処理を説明する図である。 第2の実施の形態におけるデータ配置決定処理を説明する図である。
[情報処理システムの構成]
図1は、情報処理装置10の全体構成を示す図である。図1に示す情報処理装置10(以下、データ配置決定装置10とも呼ぶ)は、例えば、利用者にサービスを提供するための業務システムを構築する物理マシンである。そして、情報処理装置10は、プロセッサであるCPU(Central Processing Unit)3と、CPU3がアクセス可能な第1メモリ1及び第2メモリ2とを有する。
図1に示す例において、第2メモリ2は、例えば、第1メモリ1よりもバンド幅の大きいメモリである。具体的に、第1メモリ1は、例えば、DDRSDRAM(Double−Data−Rate Synchronous Dynamic Random Access Memory)であり、第2メモリ2は、例えば、3次元積層メモリである。
図1に示す情報処理装置10は、例えば、上記のNUMAアーキテクチャを採用する。この場合、図示しない情報処理装置10のOS(Operating System)は、例えば、図2に示すように、各データのアクセス頻度が高いデータから優先して、メモリアクセスの応答時間が短いメモリ(第2メモリ2)に記憶する。
このメモリアクセスの応答時間は、例えば、以下の式(1)によって算出される
T=x/B+L ・・・ 式(1)
式(1)において、「x」は、メモリアクセス対象のデータのサイズである。また、「B」は、メモリ(第1メモリ1または第2メモリ2)のバンド幅であり、「L」は、CPU3とメモリとの間で通信を行う場合におけるレイテンシの値である。また、「T」は、CPU3がメモリに対してメモリアクセスを行った場合に要する応答時間である。
上記の式(1)において、「x」の値が小さい場合、「x」の値を「B」の値で除算した値が小さくなり、「T」は、「L」の値に大きく依存する。そのため、この場合、情報処理装置10は、レイテンシが低いメモリにアクセス頻度の高いデータを記憶することにより、メモリアクセスの効率化を図ることが可能になる。
一方、上記の式(1)において、「x」の値が大きい場合、「x」の値を「B」の値で除算した値が大きくなり、例えば「T」は、「L」の値よりも「x」の値を「B」の値で除算した値に依存する。そのため、この場合、情報処理装置10は、レイテンシのみではなく、メモリのバンド幅をも考慮した形で各データを記憶するメモリを決定する必要がある。すなわち、情報処理装置10は、各データを記憶するメモリを決定する場合、メモリが実際に行ったメモリアクセス対象のデータのサイズに基づく必要がある。
[トレース情報の具体例]
次に、情報処理装置10がアクセス頻度を算出する際に参照するトレース情報について説明する。
情報処理装置10は、例えば、情報処理装置10の本番稼働(利用者に対してサービスを提供するための稼働)を開始する前に試験データによる試験稼働を行い、この試験稼働に伴って発生したメモリアクセスに関する情報をトレース情報として出力する。そして、情報処理装置10は、出力されたトレース情報に基づいて、アクセス頻度を算出する。
図3は、トレース情報の具体例を説明する図である。図3に示すトレース情報は、トレース情報に含まれる各情報を識別する「番号」と、メモリアクセスがあった時刻を示す「時刻」と、メモリアクセスがあったデータが格納されたアドレスを示す「アドレス」とを項目として有する。また、図3に示すトレース情報は、メモリアクセスがあったデータのサイズを示す「サイズ」を項目として有する。なお、「アドレス」に設定される情報は、16進数の表記である。また、以下、「時刻」に設定される情報の単位は、msec(ミリセック)であり、「サイズ」に設定される情報の単位は、B(バイト)であるものとして説明を行う。
具体的に、図3に示すトレース情報において、「番号」が「1」である行には、「時刻」として「0001」が設定され、「アドレス」として「0x00001000」が設定され、「サイズ」として「8(バイト)」が設定されている。すなわち、「番号」が「1」である行は、「時刻」が「0001」であるときに、「0x00001000」から「8(バイト)」の領域に記憶されているデータに対して、メモリアクセスがあったことを示している。図3の他の情報については説明を省略する。
次に、図4は、対応情報の具体例を説明する図である。対応情報は、図3に示すトレース情報に基づき、メモリ内の所定範囲毎にメモリアクセスが行われた回数(頻度)を集計した情報である。以下、所定範囲が32(バイト)であるものとして説明を行う。
図4に示す対応情報は、対応情報に含まれる各情報を識別する「番号」と、メモリアクセスがあったデータが格納されたアドレスの範囲を示す「アドレス」と、メモリアクセスが行われた回数を示す「アクセス頻度」とを項目として有する。
具体的に、情報処理装置10は、例えば、図3に示すトレース情報に含まれる情報のうち、「アドレス」が「0x00000000」から32(バイト)の領域に格納されているデータに対するメモリアクセスに関する情報を特定する。すなわち、情報処理装置10は、「アドレス」が「0x00000000」から32(バイト)の領域に格納されているデータに対するメモリアクセスに関する情報として、「アドレス」が「0x00000010」及び「0x00000018」である情報を特定する。そして、情報処理装置10は、図4に示すように、例えば、「番号」が「2」である情報の「アドレス」に「0x00000000」を設定し、「番号」が「2」である情報の「アクセス頻度」に「2」を設定する。
その後、情報処理装置10は、図4に示す対応情報を参照し、アクセス頻度が多い領域に格納されたデータから優先して、応答時間が短いメモリ(図2に示す例では第2メモリ2)に配置する。これにより、情報処理装置10は、アクセス効率を高めるためのデータ配置を行うことが可能になる。図4の他の情報については説明を省略する。
ここで、例えば、メモリアクセスを制御するメモリコントローラが複数のメモリアクセスの要求を纏めてメモリアクセスを行う場合であっても、図3に示すようなトレース情報には、メモリアクセスの要求が纏められることなく行われたものとして出力される場合がある。そのため、この場合、実際に行われたメモリアクセスのデータのサイズは、データ配置の決定に反映されない。したがって、この場合、情報処理装置10は、メモリアクセスの効率化を図ることができない場合がある。
そこで、本実施の形態における情報処理装置10は、第1メモリ1に格納されたデータのうち、メモリアクセスされたデータのアドレスとメモリアクセスの頻度に基づき、第1メモリ1に格納された各データを第2メモリ2に格納した場合における削減時間を算出する。そして、情報処理装置10は、削減時間が大きいデータを優先して第2メモリ2に格納する。
これにより、情報処理装置10は、各データに対するメモリアクセスの頻度のみでなく、メモリアクセスされたデータのアドレスを参照して第2メモリ2に格納するデータを決定することができる。そのため、例えば、メモリコントローラが複数のメモリアクセスの要求を纏めてメモリアクセスを行う場合であっても、実際に行われたメモリアクセスの情報を反映させた形で、アクセス効率を高めるためのデータの配置を行うことが可能になる。
なお、以下、情報処理装置10が第1メモリ1及び第2メモリ2を有する場合について説明するが、情報処理装置10は、他の物理マシンが有する複数のメモリに対するデータ配置を決定するものであってもよい。
[情報処理装置のハードウエア構成]
次に、情報処理装置10のハードウエア構成について説明する。図5は、情報処理装置10のハードウエア構成を示す図である。情報処理装置10は、プロセッサであるCPU103と、第1メモリ101(以下、低速メモリ101とも呼ぶ)と、第1メモリ101よりもバンド幅が大きいメモリである第2メモリ102(以下、高速メモリ102とも呼ぶ)とを有する。また、情報処理装置10は、外部の機器とアクセスするための外部インターフェース(I/Oユニット)104を有する。各部は、バス105を介して互いに接続される。CPU103、第1メモリ101及び第2メモリ102は、それぞれ図1で説明したCPU3、第1メモリ1及び第2メモリ2に対応するものであってよい。
図5に示す第2メモリ102は、第2メモリ102内のプログラム格納領域120に、データ配置を決定する処理(以下、データ配置決定処理とも呼ぶ)を実行するためのプログラム110(以下、データ配置決定プログラムとも呼ぶ)を記憶する。CPU103は、図5に示すように、プログラム110の実行時に、プログラム110を第2メモリ102から第1メモリ101にロードし、プログラム110と協働してデータ配置決定処理を行う。また、第2メモリ102は、例えば、データ配置決定処理を行う際に用いられる情報を記憶する情報格納領域130(以下、記憶部130とも呼ぶ)を有する。
なお、プログラム格納領域120及び情報格納領域130は、第2メモリ102以外の記憶領域(第1メモリ101を含む)に記憶されるものであってもよい。
[情報処理装置の機能]
図6は、図5の情報処理装置の機能ブロック図である。情報処理装置10のCPU103は、プログラム110と協働することにより、コンパイル実行部111と、プログラム実行部112と、トレース情報取得部113と、対応情報作成部114として機能する。また、情報処理装置10のCPU103は、プログラム110と協働することにより、削減時間算出部115と、データ配置決定部116と、ソースコード変換部117と、データ配置部118として機能する。また、情報処理装置10の情報格納領域130には、ソースコード131、トレース情報132、環境情報133、対応情報134及び指示情報135が記憶される。
コンパイル実行部111は、情報格納領域130に記憶されたソースコード131のうち、例えば、ソースコードの開発者等(以下、単に開発者とも呼ぶ)によって指定されたソースコードを取得する。ソースコード131は、コンパイル後の実行プログラムが、第1メモリ101に記憶されたデータに対してのみメモリアクセスを行うことを前提としたソースコードである。そして、コンパイル実行部111は、情報格納領域130から取得したソースコードのコンパイルを行い、プログラム実行部112(CPU103)が実行可能な実行プログラムを作成する。
プログラム実行部112は、例えば、開発者から指示があった場合に、コンパイル実行部111が作成した実行プログラムの実行を行う。
トレース情報取得部113は、プログラム実行部112による実行プログラムの実行中に、予め定められた動作が行われたことに応じてトレース情報132の取得を行う。具体的に、トレース情報取得部113は、例えば、第1メモリ101に記憶されたデータに対してメモリアクセスが行われる毎に、トレース情報132の取得を行う。そして、トレース情報取得部113は、取得したトレース情報132を情報格納領域130に記憶する。トレース情報132は、例えば、図3で説明したトレース情報に対応する。
対応情報作成部114は、情報格納領域130に記憶されたトレース情報132から、プログラム実行部112によってメモリアクセスが行われたデータが格納された領域を示すアドレスと、アドレス毎のメモリアクセスの頻度情報とを取得する。そして、対応情報作成部114は、取得したアドレスと頻度情報とを対応付けることにより対応情報134を作成し、情報格納領域130に記憶する。
なお、対応情報作成部114は、アドレス及び頻度情報に加えて、メモリアクセスが行われたデータのサイズを取得し、アドレスと頻度情報とサイズとを対応付けることにより対応情報134を作成するものであってもよい。また、対応情報作成部114は、頻度情報を所定範囲(例えば、32(バイト))のアドレス毎に集計するものであってもよい。本実施の形態における対応情報134の具体例については後述する。
削減時間算出部115は、対応情報作成部114が作成した対応情報134に基づき、第1メモリ101に格納されたデータを、第1メモリ101よりバンド幅の大きいメモリである第2メモリ102に格納した場合におけるメモリアクセスの削減時間をアドレス毎に算出する。具体的に、削減時間算出部115は、予め情報格納領域130に記憶された第1メモリ101及び第2メモリ102に対するメモリアクセスの速度等を算出するための各種情報である環境情報133に基づき、アドレス毎のメモリアクセスの削減時間を算出する。
なお、削減時間算出部115は、メモリアクセスの削減時間を所定範囲(例えば、32(バイト))のアドレス毎に集計するものであってもよい。メモリアクセスの削減時間を算出する際の具体例については後述する。また、環境情報133の具体例については後述する。
データ配置決定部116は、第2メモリ102に記憶すべきデータを決定する。具体的に、データ配置決定部116は、削減時間算出部115が算出したアドレス毎のメモリアクセスの削減時間が大きいデータを、第2メモリ102に記憶すべきデータとして優先的に決定する。そして、データ配置決定部116は、第2メモリ102に記憶することができないデータを第1メモリ101に記憶すべきことを決定する。これにより、データ配置決定部116は、アクセス効率を高めるためのデータ配置を決定することが可能になる。
また、データ配置決定部116は、例えば、決定したデータ配置が行われた場合に対応したソースコードを作成するための情報を、指示情報135として作成する。第2メモリ102に移行すべきデータを決定する際の具体例については後述する。また、指示情報135の具体例については後述する。
ソースコード変換部117は、指示情報135に基づき、データ配置決定部116が決定したデータ配置が行われた場合に対応したソースコードを作成する。具体的に、ソースコード変換部117は、情報格納領域130に記憶されたソースコードを変換することによって、データ配置決定部116が決定したデータ配置が行われた場合に対応したソースコードを作成するものであってよい。
データ配置部118は、データ配置決定部116が決定したデータ配置に基づいて、第1メモリ101及び第2メモリ102に対してデータの記憶を行う。これにより、データ配置部118は、ソースコード変換部117が作成(変換)したソースコードの内容と、各データが実際に記憶されているメモリとの整合性を合わせることが可能になる。
[第1の実施の形態]
次に、第1の実施の形態について説明する。図7は、第1の実施の形態におけるデータ配置決定処理の概略を説明するフローチャート図である。
初めに、情報処理装置10は、データ配置決定タイミングまで待機する(S1のNO)。データ配置決定タイミングは、例えば、開発者から指示があったタイミングであったよい。具体的に、データ配置決定タイミングは、例えば、開発者がソースコードを作成した後であって、そのソースコードをコンパイルしたプログラムを本番稼働させる前である。
次に、データ配置決定タイミングになった場合(S1のYES)、情報処理装置10は、情報格納領域130に記憶されたソースコードのうち、データ配置の決定を行う必要があるソースコードをコンパイルして実行プログラムを作成する(S2)。コンパイルを行うソースコードは、例えば、開発者によって入力された情報に基づいて決定されるものであってよい。
そして、情報処理装置10は、作成した実行プログラムを実行することにより、トレース情報132を取得する(S2)。トレース情報132は、例えば、実行プログラムの実行時において第1メモリ101に記憶されたデータに対するメモリアクセスが発生した場合に、情報処理装置10によって取得されるものであってよい。なお、実行プログラムは、メモリアクセスが行われたことに応じて、トレース情報132を自動的に出力する処理を含んでいるものであってよい。
その後、情報処理装置10は、情報格納領域130に記憶されたトレース情報132から、アドレスとメモリアクセスの頻度情報とを対応付けた対応情報134を作成する(S3)。対応情報134の具体例については後述する。
そして、情報処理装置10は、第1メモリ101に格納されたデータを第2メモリ102に格納した場合におけるアドレス毎のメモリアクセスの削減時間を算出する(S4)。
すなわち、本実施の形態における情報処理装置10は、各データを記憶すべきメモリを決定する際に、各データに対するメモリアクセスの頻度情報だけでなく、メモリアクセスが行われたデータのアドレスを取得する。これにより、情報処理装置10は、メモリアクセスの要求が纏めて行われた場合に、メモリアクセスの頻度情報及びアドレスに基づいて計算を行うことで、実際に行われたメモリアクセスの情報(メモリアクセス対象のデータのサイズ等)を取得することが可能になる。
また、本実施の形態における情報処理装置10は、取得した各情報に基づき、第1メモリ101に格納されたデータを第2メモリ102に格納した場合におけるメモリアクセスの削減時間を算出する。これにより、情報処理装置10は、実際に行われたメモリアクセスの情報を考慮した形で、各データを第2メモリ102に記憶するか否かを決定する場合における優先順位を定めることが可能になる。
そして、情報処理装置10は、S4で算出した削減時間が最も大きいデータを優先して、第2メモリ102に記憶すべきデータとして決定する(S5)。すなわち、情報処理装置10は、第2メモリ102に記憶可能である限り、S4で算出した削減時間が大きいデータから順に、第2メモリ102への記憶を行う。
このように、第1の実施の形態によれば、情報処理装置10は、ソースコードをコンパイルして実行したプログラムから得た第1メモリ101のトレース情報132から、メモリアクセスが行われたデータが格納された領域を示すアドレスを取得する。さらに、情報処理装置10は、アドレス毎の頻度情報を取得する。そして、情報処理装置10は、取得したアドレスと頻度情報とを対応付けた対応情報134を作成する。
次に、情報処理装置10は、作成した対応情報134に基づき、第1メモリ101に格納されたデータを、第1メモリ101より高速なメモリである第2メモリ102に格納した場合におけるメモリアクセスの削減時間をアドレス毎に算出する。そして、情報処理装置10は、削減時間が大きいアドレスに格納されたデータを優先して、第2メモリ102に記憶すべきデータとして決定する。
これにより、情報処理装置10は、実際に行われたメモリアクセスの情報に基づく形で、各データを記憶すべきメモリを決定することが可能になる。
[第1の実施の形態の詳細]
次に、第1の実施の形態の詳細について説明する。図8から図12は、第1の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。また、図13から図20は、第1の実施の形態におけるデータ配置決定処理の詳細を説明する図である。図3、図7及び図13から図20を参照しながら、図8から図12のデータ配置決定処理の詳細を説明する。
第1の実施の形態の詳細における情報処理装置10は、連続するアドレスに格納された複数のデータに対して連続してメモリアクセスが行われた旨(以下、これを連続アクセスとも呼ぶ)を示す情報が、トレース情報132に含まれているか否かを判定する。そして、情報処理装置10は、トレース情報132に連続アクセスが行われた旨を示す情報(以下、連続アクセス情報とも呼ぶ)が含まれている場合、連続するアドレス全体に対するメモリアクセスがまとめて行われたものとして、対応情報134を作成する。さらに、情報処理装置10は、連続アクセスが行われたアドレス毎に、メモリアクセスの削減時間の算出を行う。
[S1及びS2の処理の詳細]
初めに、図7で説明したS1及びS2の処理の詳細について説明する。
情報処理装置10のコンパイル実行部111は、データ配置決定タイミングまで待機する(図7のS1のNO)。そして、データ配置決定タイミングになった場合(図7のS1のYES)、情報処理装置10のコンパイル実行部111は、図8に示すように、情報格納領域130から、データ配置の決定を行うソースコードを取得する(S11)、その後、コンパイル実行部111は、取得したソースコードをコンパイルして実行プログラムを取得する(S11)。
その後、情報処理装置10のプログラム実行部112は、S11で取得された実行プログラムを実行する(S12)。そして、情報処理装置10のトレース情報取得部113は、S12における実行プログラムの実行に伴って、トレース情報132を取得する(S13)。
S12及びS13において、開発者は、例えば、プログラム実行部112が実行プログラムを実行するための試験環境を用意するものであってもよい。これにより、開発者は、実行プログラムを本番環境(利用者にサービスを提供するために実行プログラムを動作させる環境)にリリースする前に、トレース情報132を取得し、データ配置決定処理を実行することが可能になる。すなわち、開発者は、本番環境に影響を与えることなく、データ配置決定処理を実行することが可能になる。
[S3の処理の詳細]
次に、図7で説明したS3の処理の詳細について説明する。
情報処理装置10の対応情報作成部114は、図9に示すように、各変数に初期値を設定する(S21)。具体的に、対応情報作成部114は、トレース情報132の行を示す「i」に「1」を設定する。また、アドレスが増加する方向の連続アクセスが発生していることを示す「flagA」と、アドレスが減少する方向の連続アクセスが発生していることを示す「flagB」とに、連続アクセスが発生していないことを示す「0」を設定する。また、メモリアクセスが行われたデータの合計サイズである「sizeA」に「0」を設定する。また、連続アクセスが発生している間におけるメモリアクセスが行われたデータの合計サイズである「sizeB」に「0」を設定する。さらに、アクセス対象のデータのアドレスを格納する「addrA」に、トレース情報132の「アドレス」に設定される可能性がある値よりも大きい値(以下、単に十分に大きい値とも呼ぶ)を設定する。
(「i」が「1」の場合の処理)
次に、対応情報作成部114は、トレース情報132の「i」行目の「アドレス」に設定された情報(以下、「addr_i」とも呼ぶ)と、トレース情報132の「i」行目の「サイズ」に設定された情報(以下、「size_i」とも呼ぶ)とを取得する(S22)。また、対応情報作成部114は、トレース情報132の「i+1」行目の「アドレス」に設定された情報(以下、「addr_i+1」とも呼ぶ)と、「サイズ」に設定された情報(以下、「size_i+1」とも呼ぶ)とを取得する(S22)。なお、「addr_i」、「size_i」、「addr_i+1」及び「size_i+1」に含まれる「i」は、S21で説明した変数である「i」に対応する。
具体的に、対応情報作成部114は、例えば、図3に示すトレース情報132において、「addr_1」として、「番号」が「1」である行に対応して設定された「アドレス」である「0x00001000(10進数表記で4096)」を取得する。また、対応情報作成部114は、「size_1」として、「番号」が「1」である行に対応して設定された「サイズ」である「8」を取得する。同様に、対応情報作成部114は、「addr_2」として、「番号」が「2」である行に対応して設定された「アドレス」である「0x00000010(10進数表記で16)」を取得する。また、対応情報作成部114は、「size_2」として、「番号」が「2」である行に対応して設定された「サイズ」である「8」を取得する。
そして、対応情報作成部114は、「sizeA」に設定された値及び「sizeB」に設定された値に、それぞれ「size_i」を加算する更新を行う(S23)。
具体的に、対応情報作成部114は、図3に示すトレース情報132の例において、「sizeA」の値である「0」に、「size_1」の値である「8」を加算し、「sizeA」の値として新たに「8」を設定する。同様に、対応情報作成部114は、「sizeB」の値である「0」に、「size_1」の値である「8」を加算し、「sizeB」の値として新たに「8」を設定する。
次に、対応情報作成部114は、トレース情報132から取得した情報に対応するメモリアクセスが、アドレスが増加する方向(昇順になる方向)の連続アクセス(以下、増加方向の連続アクセスとも呼ぶ)に含まれるメモリアクセスであるか否かを判定する(S24)。
具体的に、対応情報作成部114は、例えば、「addr_i」の値に「size_i」の値を加算した値が、「addr_i+1」の値と等しい場合に、増加方向の連続アクセスが発生していると判定するものであってよい。すなわち、この場合、対応情報作成部114は、トレース情報132の「i」行目の情報に対応するデータと「i+1」行目の情報に対応するデータとが、連続した領域に記憶されていると判定することが可能になる。
さらに、対応情報作成部114は、「flagB」が「0」である場合に、増加方向の連続アクセスが発生していると判定するものであってよい。すなわち、この場合、対応情報作成部114は、「i」行目の情報に対応するメモリアクセスが、アドレスが減少する方向(降順になる方向)の連続アクセス(以下、減少方向の連続アクセスとも呼ぶ)に含まれるメモリアクセスではないと判定することが可能になる。
そして、増加方向の連続アクセスが発生していると判定した場合(S24のYES)、対応情報作成部114は、「flagA」に、増加方向の連続アクセスが発生していることを示す「1」を設定する(S25)。
一方、増加方向の連続アクセスが発生していないと判定した場合(S24のNO)、対応情報作成部114は、トレース情報132から取得した情報に対応するメモリアクセスが、減少方向の連続アクセスに含まれるか否かを判定する(S26)。
具体的に、対応情報作成部114は、例えば、「addr_i」の値から「size_i」の値を減算した値が、「addr_i+1」の値と等しい場合に、減少方向の連続アクセスが発生しているものと判定するものであってよい。さらに、対応情報作成部114は、例えば、「flagA」が「0」である場合に、減少方向の連続アクセスが発生しているものと判定するものであってよい。
そして、減少方向の連続アクセスが発生していると判定した場合(S26のYES)、対応情報作成部114は、「flagB」に、減少方向の連続アクセスが発生していることを示す「1」を設定する(S27)。
図3に示すトレース情報の例において、「addr_1」の値の10進数表記である「4096」に、「size_1」の値である「8」を加算した値は「4104」である。また、「addr_1」の値の10進数表記である「4096」から、「size_1」の値である「8」を減算した値は「4088」である。そのため、いずれの値も「addr_2」の値の2進法表記である「16」と一致しない。したがって、対応情報作成部114は、この場合、S22においてトレース情報132から取得した情報に対応するメモリアクセスが、増加方向または減少方向の連続アクセスに含まれるメモリアクセスではないと判定する(S24のNO、S26のNO)。
次に、対応情報作成部114は、図10に示すように、「addrA」に設定された値と、「addr_i」に設定された値とを比較する(S31)。そして、「addrA」に設定された値が「addr_i」に設定された値よりも大きい場合(S31のYES)、対応情報作成部114は、「addrA」に、「addr_i」に設定されている値を設定する(S32)。一方、「addrA」に設定された値が「addr_i」に設定された値よりも小さい場合(S31のNO)、対応情報作成部114は、「addrA」に、新たな値を設定しない。
すなわち、詳細については後述するが、増加方向または減少方向の連続アクセスが発生している場合(S24のYESまたはS26のYES)、S34において「addrA」に設定された値は初期化されない。したがって、対応情報作成部114は、「addrA」に、増加方向または減少方向の連続アクセスにおいてメモリアクセスされるアドレスのうち、先頭のアドレスが設定する。
なお、連続アクセスに含まれないメモリアクセスが発生した場合(S24のNO、S26のNO)、「addrA」には、十分に大きい値が設定されている(S21、S34)。そのため、対応情報作成部114は、この場合、「addr_i」に設定されている値を「addrA」に設定することになる(S31のYES、S32)。
具体的に、図3に示すトレース情報132の例において、「addrA」には、十分に大きい値が設定されている(S31のYES)。そのため、対応情報作成部114は、「addrA」に、「addr_1」に設定されている値である「0x00001000」を設定する(S32)。
次に、対応情報作成部114は、「addrA」に設定された値と、「sizeB」に設定された値とを対応付けて対応情報134として設定する(S33)。
図13は、「i」に設定されている値が「1」である場合において、S33の処理が行われた後の対応情報134の具体例である。図13に示す対応情報134は、図4で説明した対応情報に含まれる項目に加えて、メモリアクセスされたデータのサイズを示す「サイズ」を項目として有する。
具体的に、図3に示すトレース情報132の例において、対応情報作成部114は、図13に示すように、「addr_1」の値である「0x00001000」を「アドレス」に設定する。同様に、対応情報作成部114は、「sizeB」の値である「8」を「サイズ」に設定する。また、対応情報作成部114は、「0x00001000」を含む領域に対するメモリアクセスが1回行われたことを示す「1」を「アクセス頻度」に設定する。
その後、対応情報作成部114は、各変数の値を更新する(S34)。具体的に、対応情報作成部114は、S21の場合と同様に、「flagA」及び「flagB」に「0」を設定する。また、対応情報作成部114は、「sizeB」に「0」を設定する。また、対応情報作成部114は、「addrA」に十分に大きい値を設定する。すなわち、対応情報作成部114は、トレース情報132から取得した情報を対応情報134に反映させた場合、各変数の初期化を行う。
一方、図9のS25またはS27の処理が行われた場合、対応情報作成部114は、S31の場合と同様に、「addrA」に設定された値と、「addr_i」に設定された値とを比較する(S35)。そして、「addrA」に設定された値が「addr_i」に設定された値よりも大きい場合(S35のYES)、対応情報作成部114は、「addr_i」に設定されている値を「addrA」に設定する(S36)。また、「addrA」に設定された値が「addr_i」に設定された値よりも小さい場合(S35のNO)、対応情報作成部114は、「addrA」に新たな値を設定しない。
次に、対応情報作成部114は、トレース情報132の「i」行目が最終行であるか否かを判定する(S37)。そして、「i」行目が最終行でないと判定した場合(S37のNO)、対応情報作成部114は、「i」に設定されている値に「1」を加算する(S38)。一方、「i」行目が最終行であると判定した場合(S37のYES)、対応情報作成部114は、S22以降の処理を再度実行する。
具体的に、上記の図3に示す例において、「i」行目が最終行(11行目)でないため(S37のNO)、対応情報作成部114は、「i」に設定されている値である「1」に「1」を加算した「2」を、新たな「i」として設定する(S38)。
(「i」が「2」の場合の処理)
図9に戻り、対応情報作成部114は、トレース情報132の2行目の「アドレス」に設定された値である「0x00000010」を「addr_2」として取得する(S22)。また、対応情報作成部114は、トレース情報132の2行目の「サイズ」に設定された値である「8」を「size_2」として取得する(S22)。同様に、対応情報作成部114は、トレース情報132の3行目の「アドレス」に設定された値である「0x00000018(10進数表記で24)」を「addr_3」として取得する(S22)。また、対応情報作成部114は、トレース情報132の3行目の「サイズ」に設定された値である「8」を「size_3」として取得する(S22)。
そして、対応情報作成部114は、「sizeA」に設定された値である「8」に、「size_2」の値である「8」を加算した「16」を、新たな「sizeA」の値として設定する(S23)。同様に、対応情報作成部114は、「sizeB」に設定された値である「0」に、「size_2」の値である「8」を加算した「8」を、新たな「sizeB」の値として設定する(S23)。
次に、対応情報作成部114は、トレース情報132から取得した情報に対応するメモリアクセスが、連続アクセスに含まれるか否かの判定を行う(S24、S26)。具体的に、「addr_2」の値の10進数表記である「16」に、「size_2」の値である「8」を加算した値である「24」は、「addr_3」の値の2進法表記である「24」と一致する。したがって、対応情報作成部114は、トレース情報132から取得した情報に対応するメモリアクセスは、増加方向の連続アクセスに含まれるメモリアクセスであると判定する(S24のYES)。そのため、対応情報作成部114は、「flagA」の値を「1」に設定する(S25)。
そして、「addrA」には、十分に大きい値が設定されているため(S35のYES)、対応情報作成部114は、「addr_2」の値である「0x00000010」を「addrA」に設定する(S36)。その後、トレース情報132の2行目が最終行ではないため(S37のNO)、対応情報作成部114は、「i」の値を「3」に更新する(S38)。
すなわち、「i」の値が「2」である場合、対応情報作成部114は、S33の処理を行わない。そのため、対応情報作成部114は、ここでは対応情報134に情報の設定を行わない。
(「i」が「3」の場合の処理)
図9に戻り、対応情報作成部114は、トレース情報132の3行目の「アドレス」に設定された値である「0x00000018」を「addr_3」として取得する(S22)。また、対応情報作成部114は、トレース情報132の3行目の「サイズ」に設定された値である「8」を「size_3」として取得する(S22)。同様に、対応情報作成部114は、トレース情報132の4行目の「アドレス」に設定された値である「0x00000020(10進数表記で32)」を「addr_4」として取得する(S22)。また、対応情報作成部114は、トレース情報132の4行目の「サイズ」に設定された値である「8」を「size_4」として取得する(S22)。
次に、対応情報作成部114は、「sizeA」に設定された値である「8」に「size_3」の値である「8」を加算した「24」を、新たな「sizeA」の値として設定する(S23)。同様に、対応情報作成部114は、「sizeB」に設定された値である「8」に「size_3」の値である「8」を加算した「16」を、新たな「sizeB」の値として設定する(S23)。
すなわち、S24またはS26の処理において、増加方向または減少方向の連続アクセスが発生していると判定された場合、対応情報作成部114は、「sizeB」及び「addrA」等の変数の初期化を行わない(S24のYES、S26のYES、S34)。そのため、「sizeB」には、連続アクセスが発生している間にメモリアクセスが行われたデータの合計サイズが設定される。また、「addrA」には、連続アクセスが発生している間にメモリアクセスが行われたアドレスのうち、先頭のアドレスが設定される。
そして、「addr_3」の値の2進法表記である「24」に、「size_3」の値である「8」を加算した値である「32」は、「addr_4」の値の2進法表記である「32」と一致する。したがって、対応情報作成部114は、トレース情報132から取得した情報に対応するメモリアクセスは、増加方向の連続アクセスに含まれるメモリアクセスであると判定する(S24のYES)。そのため、対応情報作成部114は、「flagA」の値として「1」を維持する(S25)。
次に、「addrA」には、「addr_2」の値である「0x00000010」が設定されている。そのため、「addrA」の値である「0x00000010」は、「addr_3」の値である「0x00000018」よりも小さい(S35のNO)。したがって、対応情報作成部114は、「addrA」の値の設定を行わない。すなわち、この場合、「addrA」は、「addr_2」の情報を維持する。
そして、トレース情報132の3行目が最終行ではないため(S37のNO)、対応情報作成部114は、「i」の値を「4」に更新する(S38)。
なお、「i」の値が「4」の場合における対応情報作成部114の処理は、「i」が「3」の場合における対応情報作成部114の処理と同じ内容であるため、説明を省略する。
(「i」が「5」の場合の処理)
そして、「i」の値が「5」に更新された場合(S38)、対応情報作成部114は、トレース情報132の5行目の「アドレス」に設定された値である「0x00000028(10進数表記で40)」を「addr_5」として取得する(S22)。そして、対応情報作成部114は、トレース情報132の5行目の「サイズ」に設定された値である「8」を「size_5」として取得する(S22)。さらに、対応情報作成部114は、トレース情報132の6行目の「アドレス」に設定された値である「0x00000078(10進数表記で120)」を「addr_6」として取得する(S22)。そして、対応情報作成部114は、トレース情報132の6行目の「サイズ」に設定された値である「8」を「size_6」として取得する(S22)。
そして、対応情報作成部114は、「sizeA」に設定された値である「32」に、「size_5」の値である「8」を加算した「40」を、新たな「sizeA」の値として設定する(S23)。同様に、対応情報作成部114は、「sizeB」に設定された値である「24」に、「size_5」の値である「8」を加算した「32」を、新たな「sizeB」の値として設定する(S23)。
ここで、「addr_5」の値である「40」に、「size_5」の値である「8」を加算した値である「48」は、「addr_5」の値の2進法表記である「120」と一致しない。また、「addr_5」の値である「40」から、「size_5」の値である「8」を減算した値である「32」は、「addr_5」の値の2進法表記である「120」と一致しない。したがって、対応情報作成部114は、トレース情報132から取得した情報に対応するメモリアクセスが、連続アクセスに含まれるメモリアクセスではないと判定する(S24のNO、S26のNO)。
次に、「addrA」には、「addr_2」の値である「0x00000010」が設定されている。そのため、「addrA」の値である「0x00000010」は、「addr_5」の値である「0x00000028」よりも小さい(S35のNO)。したがって、対応情報作成部114は、「addrA」に設定されている値を維持する。
そして、対応情報作成部114は、「addrA」に設定された値と、「sizeB」に設定された値とを対応付けて対応情報134に設定する(S33)。
図14は、「i」に設定されている値が「5」である場合において、S33の処理が行われた後の対応情報134の具体例である。対応情報作成部114は、図14に示すように、「addrA」の値である「0x00000010」を「アドレス」に設定する。同様に、対応情報作成部114は、「sizeB」の値である「32」を「サイズ」に設定する。また、対応情報作成部114は、「0x00000010」を含む領域に対するメモリアクセスが1回行われたことを示す「1」を「アクセス頻度」に設定する。
図10に戻り、対応情報作成部114は、各変数の値を更新する(S34)。具体的に、対応情報作成部114は、「flagA」及び「flagB」に「0」を設定する。また、対応情報作成部114は、「sizeB」に「0」を設定する。さらに、対応情報作成部114は、「addrA」に十分に大きい値を設定する。
そして、トレース情報132の5行目が最終行ではないため(S37のNO)、対応情報作成部114は、「i」の値を「6」に更新する(S38)。以降のS3の処理については、既に説明した場合と同じであるため省略する。
図15は、図3に示すトレース情報132に含まれる全ての情報を反映させた後の対応情報134の具体例である。図3に示すトレース情報132の例において、「番号」が「7」及び「11」である情報の内容は、「番号」が「1」である情報の内容と同じである。すなわち、図3に示すトレース情報132は、「アドレス」が「0x00001000」から「8(バイト)」の領域に対するメモリアクセスが3回発生したことを示している。したがって、対応情報作成部114は、「番号」が「7」及び「11」である情報について新たな行を追加することなく、図15に示すように、「番号」が「1」である行の「アクセス頻度」を「3」に更新するものであってよい。図15の他の情報については説明を省略する。
[S4の処理の詳細]
次に、図7で説明したS4の処理の詳細について説明する。
情報処理装置10の削減時間算出部115は、図11に示すように、各変数に初期値を設定する(S51)。具体的に、削減時間算出部115は、「i」に「1」を設定する。
そして、削減時間算出部115は、対応情報134の「i」行目に対応するデータが、第1メモリ101に格納されている場合におけるメモリアクセスに要する時間を算出する。また、削減時間算出部115は、対応情報134の「i」行目に対応するデータが、第2メモリ102に格納されている場合におけるメモリアクセスに要する時間を算出する。そして、削減時間算出部115は、それぞれ算出したメモリアクセスに要する時間の差を算出する(S52)。
具体的に、削減時間算出部115は、例えば、以下の式(2)及び式(3)を用いることにより、各メモリアクセスに要する時間の算出を行う。
T1=max(0,(x−Linesize)/B1)+L1 ・・・ 式(2)
T2=max(0,(x−Linesize)/B2)+L2 ・・・ 式(3)
式(2)及び式(3)において、「x」は、メモリアクセス対象のデータのサイズである。また、「B1」は、第1メモリ101のバンド幅(メモリが単位時間あたりに転送可能なデータのサイズ)であり、「B2」は、第2メモリ102のバンド幅である。そして、「L1」は、CPU103と第1メモリ101との間で通信を行う場合におけるレイテンシの値であり、「L2」は、CPU103と第2メモリ102との間で通信を行う場合におけるレイテンシの値である。さらに、「Linesize」は、メモリが1回に読み出すデータのサイズである。また、「T1」は、CPU103が第1メモリ101に対してメモリアクセスを行った場合に要する時間であり、「T2」は、CPU103が第2メモリ102に対してメモリアクセスを行った場合に要する時間である。
なお、max(0,(x−Linesize)/B1)は、「0」及び「(x−Linesize)/B1」の値のうち、大きい方の値を示す関数である。また、以下、「B1」が「4」であり、「L1」が「40」であり、「B2」が「16」であり、「L2」が「40」であり、「Linesize」が「8」であるものとして説明を行う。さらに、「Linesize」の単位は、例えば、B(バイト)であり、「T1」、「T2」、「L1」及び「L2」の単位は、例えば、msec(ミリセック)であり、「B1」及び「B2」の単位は、例えば、B(バイト)/msec(ミリセック)である。
以下、図15の対応情報134に含まれる情報に基づいて、メモリアクセスに要する時間を算出する具体例を説明する。
図15の対応情報134において、「番号」が「1」である情報に対応する「サイズ」は「8」である。したがって、削減時間算出部115は、式(2)に基づき、「番号」が「1」である情報に対応する「サイズ」に設定された値である「8」から「Linesize」に設定された値である「8」を減算した値を、「B1」の値である「4」で除算した値である「0」を算出する。そして、「0」と「0」とは等しいため、削減時間算出部115は、max(0,(x−Linesize)/B1)の値として「0」を算出する。さらに、削減時間算出部115は、算出した「0」に、「L1」の値である「40」を加算した「40」を「T1」の値として算出する。
次に、削減時間算出部115は、式(3)に基づき、「番号」が「1」である情報に対応する「サイズ」に設定された値である「8」から「Linesize」に設定された値である「8」を減算した値を、「B2」の値である「16」で除算した値である「0」を算出する。そして、「0」と「0」とは等しいため、削減時間算出部115は、max(0,(x−Linesize)/B2)の値として「0」を算出する。さらに、削減時間算出部115は、算出した「0」に、「L2」の値である「40」を加算した「40」を「T2」の値として算出する。
そして、削除時間算出部115は、「番号」が「1」である情報に対応するデータを第1メモリ101から第2メモリ102に移行した場合におけるメモリアクセスの削減時間として、「T1」の値である「40」から「T2」の値である「40」を減算した「0」を算出する。
さらに、「アクセス頻度」に「3」が設定されているため、削減時間算出部115は、算出した「0」に「3」を乗算した「0」を算出する。これにより、削減時間算出部115は、「番号」が「1」である情報に対応するデータを第1メモリ101から第2メモリ102に移行した場合におけるメモリアクセスの総削減時間として、「0」を算出することが可能になる。
図11に戻り、削減時間算出部115は、S52で算出した総削減時間を対応情報134に設定する(S53)。
図16は、S52で算出した総削減時間を設定した場合における対応情報134の具体例である。図16に示す対応情報134は、図15で説明した対応情報134が有する項目に加え、S52で算出した総削減時間を設定する「削減時間」の項目を有する。具体的に、削減時間算出部115は、図16に示すように、「アドレス」が「0x00001000」に対応する「削減時間」に、S52で算出した総削減時間である「0」を設定する。なお、「削減時間」の単位は、例えば、msecである。
図11に戻り、削減時間算出部115は、「i」行目が最終行であるか否かを判定する(S54)。そして、「i」行目が最終行である場合(S54のYES)、削減時間算出部115は、S4の処理を終了する。一方、「i」行目が最終行でない場合(S54のNO)、削減時間算出部115は、「i」に設定された値に「1」を加算し(S55)、S52以降の処理を再度実行する。
具体的に、「i」に設定された値が「1」である場合、「i」行目は最終行(5行目)でない。そのため、削減時間算出部115は、「i」の値である「1」に「1」を加算した「2」を、新たな「i」の値として設定する。
次に、「i」に設定された値が「2」である場合におけるS52の処理の具体例を説明する。
図15の対応情報134において、「番号」が「2」である情報に対応する「サイズ」は「32」である。したがって、削減時間算出部115は、式(2)に基づき、「番号」が「2」である情報に対応する「サイズ」に設定された値である「32」から「Linesize」に設定された値である「8」を減算した値を、「B1」の値である「4」で除算した値である「6」を算出する。そして、「6」は「0」よりも大きいため、削減時間算出部115は、max(0,(x−Linesize)/B1)の値として「6」を算出する。さらに、削減時間算出部115は、算出した「6」に、「L1」の値である「40」を加算した「46」を「T1」の値として算出する。
次に、削減時間算出部115は、式(3)に基づき、「番号」が「1」である情報に対応する「サイズ」に設定された値である「32」から「Linesize」に設定された値である「8」を減算した値を、「B2」の値である「16」で除算した値である「1.5」を算出する。そして、「1.5」は「0」よりも大きいため、削減時間算出部115は、max(0,(x−Linesize)/B2)の値として「1.5」を算出する。さらに、削減時間算出部115は、算出した「1.5」に、「L2」の値である「40」を加算した「41.5」を「T2」の値として算出する。
そして、削減時間算出部115は、「番号」が「1」である情報に対応するデータを第1メモリ101から第2メモリ102に移行した場合におけるメモリアクセスの削減時間として、「T1」の値である「46」から「T2」の値である「41.5」を減算した「4.5」を算出する。
さらに、「アクセス頻度」に「1」が設定されているため、削減時間算出部115は、算出した「4.5」に「1」を乗算した「4.5」を算出する。これにより、削減時間算出部115は、「番号」が「2」である情報に対応するデータを第1メモリ101から第2メモリ102に移行した場合におけるメモリアクセスの総削減時間として、「4.5」を算出することが可能になる。
図11に戻り、削減時間算出部115は、S52で算出した総削減時間を対応情報134に設定する(S53)。
図17は、S52で算出した総削減時間を設定した場合における対応情報134の具体例である。具体的に、削減時間算出部115は、図17に示すように、「アドレス」が「0x00000010」に対応する「削減時間」に、S52で算出した総削減時間である「4.5」を設定する。
その後、削減時間算出部115は、図18に示すように、対応情報134に含まれる全ての情報に基づいてメモリアクセスの総削減時間を算出し、「削減時間」に設定する。図18の他の情報については説明を省略する。
[S5の処理の詳細]
次に、図7で説明したS5の処理の詳細について説明する。
情報処理装置10のデータ配置決定部116は、図12に示すように、各変数に初期値を設定する(S61)。
具体的に、データ配置決定部116は、「RestMem」に、第2メモリ102のうち、新たなデータの割り当てが可能な領域(以下、割当可能領域)のサイズを設定する。以下、第2メモリ102の割当可能領域が48(バイト)であり、データ配置決定部116は、S61において、「RestMem」に「48」を設定したものとして説明を行う。
続いて、データ配置決定部116は、対応情報134から、1バイトあたりの「削減時間」が最も大きい情報の「サイズ」を抽出し、「DataMem」に設定する(S62)。
具体的に、図18に示す対応情報134の場合においては、「番号」が「2」の情報に対応する「削減時間」が「4.5」であり、「サイズ」が「32」である。そのため、「番号」が「2」の情報に対応する1バイトあたりの「削減時間」は、「削減時間」である「4.5」を「サイズ」である「32」で除算した「0.14(有効数字2桁)」である。
また、図18に示す対応情報134の場合においては、「番号」が「4」の情報に対応する「削減時間」が「1.5」であり、「サイズ」が「16」である。そのため、「番号」が「4」の情報に対応する1バイトあたりの「削減時間」は、「削減時間」である「1.5」を「サイズ」である「16」で除算した「0.093(有効数字2桁)」である。
さらに、図18に示す対応情報134の場合において、「番号」が「1」、「3」及び「5」の情報に対応する「削減時間」は「0」であるため、それぞれの情報に対応する1バイトあたりの「削減時間」は、「0」である。したがって、データ配置決定部116は、「番号」が「2」である情報に対応する「サイズ」である「32」を「DataMem」に設定する。
次に、データ配置決定部116は、「RestMen」に設定された値と「DataMem」に設定された値とを比較する(S63)。そして、「RestMen」に設定された値が「DataMem」に設定された値よりも大きい場合(S63のYES)、データ配置決定部116は、S62で抽出した情報に対応するデータを、指示情報135として情報格納領域130に記憶する(S64)。
図19は、S64の処理を実行した場合における指示情報135の具体例である。図19に示す指示情報135は、対応情報134と同じ項目を有している。具体的に、データ配置決定部116は、図19に示すように、図18に示す対応情報134における「番号」が「2」である情報と同じ情報を、指示情報135として設定する。すなわち、データ配置決定部116は、この場合、図18に示す対応情報134における「番号」が「2」である情報に対応するデータを、第2メモリ102に記憶すべきデータとして決定する。
図12に戻り、データ配置決定部116は、「RestMem」に設定された値から「DataMem」に設定された値を減算して取得した値を、新たな「RestMem」の値として設定する(S65)。
具体的に、図19に示す指示情報135の例においては、「RestMem」に設定された値である「48」から「DataMem」に設定された値である「32」を減算して取得した値である「16」を、新たな「RestMem」として設定する。
一方、「RestMen」に設定された値が「DataMem」に設定された値よりも小さい場合(S63のNO)、データ配置決定部116は、S64及びS65の処理を実行しない。すなわち、データ配置決定部116は、この場合、第2メモリ102における記憶可能領域が不足しているため、第2メモリ2が「RestMem」に設定された情報に対応するデータを記憶することができないと判定する。
続いて、データ配置決定部116は、対応情報134からS52で抽出した情報を削除する(S66)。そして、データ配置決定部116は、S66において情報の削除を行った後、対応情報134に情報が存在しない場合(S67のYES)、S5の処理を終了する。一方、S66において情報の削除を行った後において、対応情報134に情報が存在する場合(S67のNO)、データ配置決定部116は、S62以降の処理を再度実行する。
次に、データ配置決定部116は、S66において情報が削除された対応情報134から、「削減時間」が最も大きい情報を抽出して「DataMem」に設定する(S62)。具体的に、図18に示す対応情報134の場合において、「番号」が「2」である情報は既に削除されている。そのため、データ配置決定部116は、1バイトあたりの「削減時間」が「0.093(有効数字2桁)」である情報(「番号」が「4」である情報)に対応する「サイズ」である「16」を「DataMem」に設定する。
そして、「RestMen」に設定された値である「16」が「DataMem」に設定された値である「16」と等しいため(S63のYES)、データ配置決定部116は、S62で抽出した情報に対応するデータを指示情報135として情報格納領域130に記憶する(S64)。
図20は、図19に示す状態の後、S64の処理が実行された場合における指示情報135の具体例である。図20に示すように、データ配置決定部116は、図18に示す対応情報134における「番号」が「4」である情報を指示情報135として設定する。
図12に戻り、データ配置決定部116は、「RestMem」に設定された値から「DataMem」に設定された値を減算して取得した値を、新たな「RestMem」の値として設定する(S65)。
具体的に、図19に示す指示情報135の例において、データ配置決定部116は、「RestMem」に設定された値である「16」から「DataMem」に設定された値である「16」を減算して取得した値である「0」を、新たな「RestMem」として設定する。
ここで、「RestMem」に「0」が設定されたため、データ配置決定部116は、新たなデータを第2メモリ102に移行すべきデータとして決定することができない(S63のNO)。したがって、データ配置決定部116は、対応情報134から全ての情報が削除した後、S5の処理を終了する(S66、S67)。すなわち、データ配置決定部116は、図18に示す対応情報134のうち、「番号」が「1」、「3」及び「5」の情報に対応するデータを、第1メモリ101に記憶すべきと決定する。
このように、第1の実施の形態において、情報処理装置10は、トレース情報132において連続アクセスが発生した場合、その連続するアドレス全体に対するメモリアクセスが纏めて行われたものとして、トレース情報132から情報を取得する。そして、第1の実施の形態における情報処理装置10は、取得した情報に基づき、第1メモリ101に記憶したデータを第2メモリ102に移行した場合におけるメモリアクセスの削減時間を算出する。その後、第1の実施の形態における情報処理装置10は、メモリアクセスの削減時間(例えば、1バイトあたりの削減時間)が大きいものを優先して、第2メモリ102に記憶すべきデータを決定する。
これにより、情報処理装置10は、連続アクセスが発生した場合においても、メモリアクセスの効率化を図ることができるデータ配置を決定することが可能になる。
[第2の実施の形態]
次に、第2の実施の形態について説明する。図23から図26は、第2の実施の形態におけるデータ配置決定処理の詳細を説明するフローチャート図である。また、図21、図22及び図27から図35は、第2の実施の形態におけるデータ配置決定処理の詳細を説明する図である。図12、図21、図22及び図27から図35を参照しながら、図23から図26のデータ配置決定処理の詳細を説明する。
第2の実施の形態では、第1メモリ101及び第2メモリ102内の各バンクが、Rowbuffer領域(以下、単にバッファ領域とも呼ぶ)を有する場合を想定している。Rowbuffer領域は、前回メモリアクセスされた各バンク内のデータを記憶(保持)する領域である。
図21は、第2の実施の形態における第1メモリ101の具体例を説明する図である。図232における第1メモリ101は、バンク102a、バンク102b、バンク102c及びバンク102dを有する。そして、それぞれのバンクは、上記のRowbuffer領域を有する。
具体的に、図21に示す例において、CPU103からバンク102aに記憶されたデータに対するメモリアクセスの要求があった場合、第1メモリ101は、バンク102a内のRowbuffer領域を参照する。そして、第1メモリ101は、メモリアクセス対象のデータがバンク102a内のRowbuffer領域に記憶されているか否かを判定する。
その結果、メモリアクセス対象のデータがバンク102a内のRowbuffer領域に記憶されている場合、第1メモリ101は、バンク102a内の他の領域(以下、メモリセル領域とも呼ぶ)に記憶されたデータに対してメモリアクセスを行わない。そして、第1メモリ101は、バンク102a内のRowbuffer領域に記憶されているメモリアクセス対象のデータをCPU103に返す。一方、メモリアクセス対象のデータがバンク102a内のRowbuffer領域に記憶されていない場合、第1メモリ101は、バンク102a内の他の領域に記憶されたデータに対してメモリアクセスを行う。そして、第1メモリ101は、この場合、メモリアクセス対象のデータをバンク102a内のRowbuffer領域に書き込んでから、メモリアクセス対象のデータをCPU103に返す。
すなわち、第1メモリ101は、メモリアクセス対象のデータがRowbuffer領域に記憶されている確率が高いほど、効率的なメモリアクセスを行うことが可能になる。そのため、メモリアクセスの要求元(CPU103)は、一般的に、第1メモリ101に対するメモリアクセスの要求が蓄積された場合、Rowbuffer領域に格納されたデータに対するメモリアクセスが増えるように、メモリアクセスの要求順序の並び替えを行う。
そこで、第2の実施の形態における情報処理装置10は、メモリアクセスの要求元において行われるメモリアクセスの要求順序の並び替えを考慮に入れた形で、第2メモリ102に記憶すべきデータを決定する。これにより、情報処理装置10は、実際に行われるメモリアクセスの状態に沿った形で、データの配置を決定することが可能になる。なお、以下、第1メモリ101は、メモリアクセスされたデータをRowbuffer領域に記憶する際に、メモリアクセスされたデータとアドレスの一部分が同じであるデータ全てについて記憶を行うものとして説明を行う。
図22は、CPU103がメモリアクセスを行う際に指定するアドレスの具体例である。図22に示すアドレスは、データが格納されているメモリセルの行を示す「Row number」と、データが格納されているバンクを示す「Bank」とを有する。また、図22に示すアドレスは、データが格納されているバンクにアクセスするための「Channel」と、カラムの指定を行う「Byte in a page」とを有する。なお、図22に示すアドレスにおいて、「Row number」及び「Byte in a page」が12ビットであり、「Bank」及び「Channel」が4ビットである。そして、第1メモリ101は、例えば、メモリアクセスされたデータをRowbuffer領域に記憶する際に、メモリアクセスされたデータと、「Row number」、「Bank」及び「Channel」が同じであるデータ全てについて記憶を行う。
なお、以下、図7におけるS1、S2及びS5の処理については、第1の実施の形態における処理を同じ内容であるため、説明を省略する。また、「Row number」、「Bank」及び「Channel」が同じであるデータに対して複数のメモリアクセスが発生することを、単に複数アクセスとも呼び、トレース情報132における複数アクセスが発生した旨を示す情報を複数アクセス情報とも呼ぶ。
[S3の処理の詳細]
(トレース情報132に含まれる情報の並び替えを行う処理)
初めに、図7で説明したS3の処理の詳細について説明する。
情報処理装置10の対応情報作成部114は、図23に示すように、各変数に初期値を設定する(S71)。具体的に、対応情報作成部114は、トレース情報132の行を示す「i」に「1」を設定する。
次に、対応情報作成部114は、トレース情報132の「i」行目の「時刻」に設定された時刻から、時間Tが経過するまでの「時刻」が格納された情報を取得する(S72)。以下、時間Tは10(msec)であるものとして説明を行う。
図3に示すトレース情報132の例において、1行目の「時刻」に設定された時刻は「0001」である。したがって、対応情報作成部114は、「0001」から「0011」までの「時刻」を有する情報(「番号」が「1」から「7」である情報)を取得する。
そして、対応情報作成部114は、トレース情報132の「アドレス」に設定された情報のうち、所定の情報が一致する情報が連続するように、S72で取得した情報の並べ替えを行う(S73)。所定の情報は、例えば、トレース情報132の「アドレス」のうち、13ビットから32ビット(16進数表記の場合における上5桁)であってよい。以下、所定の情報が13ビットから32ビットであるものとして説明を行う。
図27は、S73の処理を実行した場合のトレース情報132を説明する具体例である。図3に示すトレース情報132の例において、「番号」が「1」から「7」である情報のうち、「番号」が「1」及び「7」である情報の上5桁は「00001」であり、「番号」が「2」から「6」である情報の上5桁は「00000」である。
したがって、対応情報作成部114は、図27に示すように、「番号」が「2」から「6」である情報が連続し、「番号」が「1」及び「7」である情報が連続するように、図3に示すトレース情報132に含まれる情報を並び替える。これにより、対応情報作成部114は、メモリアクセスの要求順序の並び替えを考慮した形で、第2メモリ102に記憶すべきデータを決定することが可能になる。
図23に戻り、対応情報作成部114は、S72においてトレース情報132に含まれる全ての情報について取得を行ったか否かを判定する(S74)。そして、全ての情報について取得を行っていないと判定した場合(S74のNO)、対応情報作成部114は、S72において取得されていない情報の「番号」を「i」に設定する(S75)。その後、対応情報作成部114は、S72以降の処理を再度実行する。
具体的に、図27の例においては、対応情報作成部114は、「番号」が「7」である情報の取得までを行っている。そのため、対応情報作成部114は、S72において、トレース情報132に含まれる全ての情報の取得を行っていない(S74のNO)。したがって、対応情報作成部114は、この場合、「i」に「8」を設定する(S75)。以降の図23の処理については、既に説明した処理と同じ内容であるため説明を省略する。
図28は、S72において全ての情報の取得が完了した場合におけるトレース情報132の具体例である。図28に示すトレース情報132では、図27に示すトレース情報132と比較して、「番号」が「9」、「10」及び「11」である情報が並び替わっている(図28の下線部分)。すなわち、対応情報作成部114は、「アドレス」の上5桁が「00001」である情報が連続し、「アドレス」の上5桁が「20000」である情報が連続するように、図27に示すトレース情報132に含まれる情報をそれぞれ並び替える。
(対応情報134を作成する処理)
一方、トレース情報132に含まれる全ての情報の取得が完了した場合(S74のYES)、対応情報作成部114は、図24に示すように、各変数に初期値を設定する(S81)。
具体的に、対応情報作成部114は、トレース情報132の行を示す「i」に「1」を設定し、メモリアクセスの頻度情報である「k」に「0」を設定する。また、「アドレス」の上5桁が一致する領域内のデータに対する連続アクセスが発生している間に、メモリアクセスが行われたデータの合計サイズである「size」に「0」を設定する。
(「i」が「1」の場合の処理)
次に、対応情報作成部114は、トレース情報132から、「addr_i」と「size_i」とを取得する(S82)。また、対応情報作成部114は、トレース情報132から、「addr_i+1」と「size_i+1」とを取得する(S82)。
具体的に、図28に示すトレース情報132において、対応情報作成部114は、「addr_1」として、「番号」が「2」である行に対応して設定された「アドレス」である「0x00000010」を取得する。また、図28に示すトレース情報132において、対応情報作成部114は、「size_1」として、「番号」が「2」である行に対応して設定された「サイズ」である「8」を取得する。同様に、対応情報作成部114は、「addr_2」として、「番号」が「3」である行に対応して設定された「アドレス」である「0x00000018」を取得する。また、図28に示すトレース情報132において、対応情報作成部114は、「size_2」として、「番号」が「3」である行に対応して設定された「サイズ」である「8」を取得する。
そして、対応情報作成部114は、「size」に設定された値に、「size_i」を加算する更新を行う(S83)。また、対応情報作成部114は、「k」に設定された値に、「1」を加算する更新を行う(S83)。
具体的に、図28に示すトレース情報の1行目の情報を取得した場合、対応情報作成部114は、「size」の値である「0」に、「size_1」の値である「8」を加算し、「size」の値として新たに「8」を設定する。また、図28に示すトレース情報の1行目の情報を取得した場合、対応情報作成部114は、「k」の値である「0」に、「1」を加算し、「k」の値として新たに「1」を設定する。
次に、対応情報作成部114は、S82においてトレース情報132から取得した「addr_i」の上5桁と「addr_i+1」の上5桁とが一致するか否かを判定する(S84)。そして、S82においてトレース情報132から取得した「addr_i」の上5桁と「addr_i+1」の上5桁とが一致していないと判定した場合(S84のNO)、対応情報作成部114は、図25に示すように、対応情報134の設定を行う(S91)。この場合、対応情報作成部114は、「addr_i」に設定されたアドレスの下3桁を「0」にしたアドレスと、「size」に設定された値と、「k」に設定された値とを対応付けて、対応情報134として情報格納領域130に設定する。
その後、対応情報作成部114は、各変数の値を更新する(S92)。具体的に、対応情報作成部114は、「k」に「0」を設定し、「size」に「0」を設定する。すなわち、対応情報作成部114は、トレース情報132から取得した情報を対応情報134に反映させた場合、各変数の初期化を行う。
一方、「addr_i」の上5桁と「addr_i+1」の上5桁とが一致すると判定した場合(S84のYES)、対応情報作成部114は、S91及びS92の処理は実行しない。
具体的に、図28の例において、「addr_1」の値である「0x00000010」と「addr_2」の値である「0x00000018」とは、上5桁が共に「00000」である。したがって、対応情報作成部114は、「addr_i」の上5桁と「addr_i+1」の上5桁とが一致すると判定する(S84のYES)。
次に、対応情報作成部114は、トレース情報132における「i」行目が最終行であるか否かを判定する(S93)。そして、「i」行目が最終行でないと判定した場合(S93のNO)、対応情報作成部114は、「i」に「1」を加算する(S94)。
具体的に、図28に示すトレース情報132は、11行目まで情報が存在する。そのため、対応情報作成部114は、「i」行目が最終行ではないと判定し(S93のNO)、「i」の値を「2」に更新する(S94)。
一方、「i」行目が最終行であると判定した場合(S93のYES)、対応情報作成部114は、S3の処理を終了する。なお、「i」が「2」から「4」までの場合における処理は、「i」が「1」の場合の処理と同じ内容であるため説明を省略する。
(「i」が「5」の場合の処理)
次に、「i」が「5」の場合における処理について説明を行う。
この場合、対応情報作成部114は、「addr_5」として「0x00000078」を取得し、「addr_6」として「0x00001000」を取得する(S82)。ここで、「0x00000078」の上5桁である「00000」と、「0x00001000」の上5桁である「00001」とは一致しない(S84のNO)。
そのため、対応情報作成部114は、「addr_5」の値である「0x00000078」の下3桁が「000」である「0x00000000」と、「size」の値である「40」と、「k」の値である「5」とを対応付けて対応情報132として設定する(S91)。
具体的に、対応情報作成部114は、図29に示すように、「番号」が「1」である情報に対応付けて、「アドレス」として「0x00000000」を設定し、「アクセス頻度」として「k」の値である「5」を設定し、「サイズ」として「size」の値である「40」を設定する。
そして、対応情報作成部114は、「k」に「0」を設定し、「size」に「0」を設定する(S92)。以降のS3の処理については、既に説明した処理と同じ内容であるため説明を省略する。
図30は、図29に示すトレース情報に含まれる全ての情報の基づく対応情報134の具体例である。図28に示すトレース情報132において、「番号」が「1」及び「7」である情報に対応する「アドレス」のうちの上5桁と、「番号」が「8」及び「11」である情報に対応する「アドレス」のうちの上5桁は、共に「00001」である。しかし、「番号」が「8」及び「11」である情報に対応する「時刻」は、「番号」が「1」である「時刻」よりも、時間T(10(ms))以上後の時刻である。そのため、対応情報作成部114は、図30に示す対応情報134において、「番号」が「1」である情報と「番号」が「4」である情報とを別々の情報として集計している。
[S4の処理の詳細]
次に、図7で説明したS4の処理の詳細について説明する。
情報処理装置10の削減時間算出部115は、図26に示すように、各変数に初期値を設定する(S101)。具体的に、削減時間算出部115は、「i」に「1」を設定する。
そして、削減時間算出部115は、対応情報134の「i」行目に対応するデータが第1メモリ101に格納されている場合におけるメモリアクセスに要する時間を算出する。また、削減時間算出部115は、対応情報134の「i」行目に対応するデータが第2メモリ102に格納されている場合におけるメモリアクセスに要する時間を算出する。そして、削減時間算出部115は、それぞれ算出したメモリアクセスに要する時間の差分(削減時間)を算出する(S102)。すなわち、第2の実施の形態におけるS4では、Rowbuffer領域に格納されるデータ毎(「Row number」、「Bank」及び「Channel」が同じであるデータ毎)に、削減時間の算出を行う。
以下、第1メモリ101のRowbuffer領域にメモリアクセス対象のデータが存在した場合のメモリアクセスに要する時間を20(ms)として説明する。また、第1メモリ101のRowbuffer領域にメモリアクセス対象のデータが存在しなかった場合のメモリアクセスに要する時間を40(ms)として説明する。また、第2メモリ102のRowbuffer領域にメモリアクセス対象のデータが存在した場合のメモリアクセスに要する時間を8(ms)として説明する。さらに、第2メモリ102のRowbuffer領域にメモリアクセス対象のデータが存在しなかった場合のメモリアクセスに要する時間を30(ms)として説明する。なお、これらのメモリアクセスに要する時間は、例えば、上記の式(2)及び式(3)に基づいて算出するものであってよい。
具体的に、図30の対応情報134の「番号」が「1」である情報に対応する「アクセス頻度」は「5」である。そのため、削減時間算出部115は、5回のメモリアクセスのうち、最初のメモリアクセスにおけるメモリアクセス対象のデータがRowbuffer領域に存在しないものとして削減時間の算出を行う。一方、削減時間算出部115は、5回のメモリアクセスのうち、最初以外のメモリアクセス(4回)におけるメモリアクセス対象のデータがRowbuffer領域に存在するものとして削減時間の算出を行う。
したがって、削減時間算出部115は、図30の対応情報134の「番号」が「1」である情報に対応するデータへのメモリアクセスに要する合計時間は、このデータが第1メモリ101に格納されている場合、40、20、20、20及び20を加算した値である120であると判定する。また、削減時間算出部115は、このデータが第2メモリ102に格納されている場合、30、8、8、8及び8を加算した値である62であると判定する。さらに、削減時間算出部115は、「番号」が「1」である情報に対応するデータを第1メモリ101から第2メモリ102に移行した場合におけるメモリアクセスの差分を、120から62を減算した58と判定する。
そして、削減時間算出部115は、図31に示すように、「番号」が「1」である情報に対応する「削減時間」に「58」を設定する(S103)。また、削減時間算出部115は、例えば、「削減時間」に設定された値である「58」を、「サイズ」に設定された値である「40」で除算した値である「1.45」を「1バイトあたりの削減時間」として設定するものであってよい。
図26に戻り、削減時間算出部115は、「i」行目が最終行であるか否かを判定する(S104)。そして、「i」行目が最終行である場合(S104のYES)、削減時間算出部115は、S4の処理を終了する。一方、「i」行目が最終行でない場合(S104のNO)、削減時間算出部115は、「i」に設定された値に「1」を加算し(S105)、S102以降の処理を再度実行する。
具体的に、上記のように「i」に設定された値が「1」である場合、「i」行目は最終行でない。そのため、削減時間算出部115は、「i」の値である「1」に「1」を加算した「2」を、新たな「i」の値として設定する。
その後、削減時間算出部115は、図32に示すように、対応情報134に含まれる全ての情報についてメモリアクセスの削減時間を算出し、「削減時間」に設定する。図32の情報についての説明は省略する。
このように、第2の実施の形態において、情報処理装置10は、メモリアクセスの対象のデータがRowbuffer領域に記憶されている確率を高めるために、トレース情報132に含まれる情報の並び替えを行う。これにより、情報処理装置10は、第1メモリ101及び第2メモリ102がRowbuffer領域を有するメモリである場合であっても、メモリアクセスの効率化を図ることが可能なデータ配置を決定することが可能になる。
以上の実施の形態をまとめると、以下の付記のとおりである。
(付記1)
プログラムを実行した第1メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成する対応情報作成部と、
前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出する削減時間算出部と、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定するデータ配置決定部と、を有する、
データ配置決定装置。
(付記2)
付記1において、
前記対応情報作成部は、前記アドレス及び前記頻度情報に、メモリアクセスが行われたデータのサイズを対応付けて前記対応情報を作成する、
データ配置決定装置。
(付記3)
付記1において、
前記対応情報作成部は、前記トレース情報に、連続するアドレスに格納されたデータのそれぞれに対して連続してメモリアクセスが行われた旨を示す連続アクセス情報が含まれている場合、前記連続するアドレスと、前記連続するアドレス毎の前記連続してメモリアクセスが行われた頻度情報とを対応付けて前記対応情報を作成し、
前記削減時間算出部は、前記第1メモリに格納されたデータを、前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記連続するアドレス毎に算出する、
データ配置決定装置。
(付記4)
付記3において、
前記連続アクセス情報は、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われた旨の情報である、
データ配置決定装置。
(付記5)
付記1において、
前記第1及び第2メモリは、メモリアクセスが行われたデータのアドレスを含む所定領域に格納されたデータを保持するバッファ領域を有し、
前記第1及び第2メモリは、メモリアクセスが行われた場合において、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されている場合、前記保持されているデータを返信し、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されていない場合、前記メモリアクセスの対象であるデータのアドレスを含む所定領域に格納されたデータを前記バッファ領域に格納し、前記バッファ領域に格納したデータを返信し、
前記対応情報作成部は、前記トレース情報に、同一の前記所定領域に格納されたデータに対する複数のメモリアクセスがあった旨を示す複数アクセス情報が含まれている場合、前記複数のメモリアクセスが連続して行われたように前記トレース情報に含まれる情報を並び替え、前記並び替えたトレース情報から、前記所定領域に格納されたデータのアドレスと、前記所定領域に格納されたデータのアドレス毎のメモリアクセスの頻度情報とを対応付けて前記対応情報を作成し、
前記削減時間算出部は、前記第1メモリに格納されたデータを、前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記所定領域に格納されたデータのアドレス毎に算出する、
データ配置決定装置。
(付記6)
付記5において、
前記複数アクセス情報は、所定期間内に、同一の前記所定領域に格納されたデータに対する複数のメモリアクセスがあった旨の情報である、
データ配置決定装置。
(付記7)
付記1において、
前記データ配置決定部は、前記削減時間と該削減時間に対応する前記頻度情報とを乗算した値が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定する、
データ配置決定装置。
(付記8)
プログラムを実行した第1メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出し、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定する、
処理をコンピュータに実行させるデータ配置決定プログラム。
(付記9)
プログラムを実行した第1メモリのメモリアクセスに関するトレース情報から、メモリアクセスが行われたデータが格納された領域を示すアドレスと、前記アドレス毎のメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記アドレス毎に算出し、
前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定する、
データ配置決定方法。
1:第1メモリ 2:第2メモリ
3:CPU 10:情報処理装置
101:第1メモリ 102:第2メモリ
103:CPU

Claims (7)

  1. プログラムを実行した第1メモリのメモリアクセスに関するトレース情報に、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われたことを示す連続アクセス情報が含まれている場合、前記トレース情報から、連続してメモリアクセスが行われた連続するアドレスに格納されたデータを含む、メモリアクセスが行われた各データが格納された領域を示すアドレスと、メモリアクセスが行われた各データが格納された領域を示す前記アドレスに対するメモリアクセスの頻度情報とを対応付けた対応情報を作成する対応情報作成部と、
    前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合におけるータのメモリアクセスの削減時間を、前記アドレス毎に算出する削減時間算出部と、
    前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定するデータ配置決定部と、を有する、
    データ配置決定装置。
  2. 請求項1において、
    前記対応情報作成部は、前記アドレス及び前記頻度情報に、メモリアクセスが行われたデータのサイズを対応付けて前記対応情報を作成する、
    データ配置決定装置。
  3. 請求項1において、
    前記対応情報作成部は、前記トレース情報に、連続するアドレスに格納されたデータのそれぞれに対して連続してメモリアクセスが行われた旨を示す連続アクセス情報が含まれている場合、前記連続するアドレスと、前記連続するアドレス毎の前記連続してメモリアクセスが行われた頻度情報とを対応付けて前記対応情報を作成し、
    前記削減時間算出部は、前記第1メモリに格納されたデータを、前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記連続するアドレス毎に算出する、
    データ配置決定装置。
  4. 請求項1において、
    前記第1及び第2メモリは、メモリアクセスが行われたデータのアドレスを含む所定領域に格納されたデータを保持するバッファ領域を有し、
    前記第1及び第2メモリは、メモリアクセスが行われた場合において、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されている場合、前記保持されているデータを返信し、前記メモリアクセスの対象であるデータが前記バッファ領域に保持されていない場合、前記メモリアクセスの対象であるデータのアドレスを含む所定領域に格納されたデータを前記バッファ領域に格納し、前記バッファ領域に格納したデータを返信し、
    前記対応情報作成部は、前記トレース情報に、同一の前記所定領域に格納されたデータに対する複数のメモリアクセスがあった旨を示す複数アクセス情報が含まれている場合、前記複数のメモリアクセスが連続して行われたように前記トレース情報に含まれる情報を並び替え、前記並び替えたトレース情報から、前記所定領域に格納されたデータのアドレスと、前記所定領域に格納されたデータのアドレス毎のメモリアクセスの頻度情報とを対応付けて前記対応情報を作成し、
    前記削減時間算出部は、前記第1メモリに格納されたデータを、前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合における前記データのメモリアクセスの削減時間を、前記所定領域に格納されたデータのアドレス毎に算出する、
    データ配置決定装置。
  5. 請求項1において、
    前記データ配置決定部は、前記削減時間と該削減時間に対応する前記頻度情報とを乗算した値が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定する、
    データ配置決定装置。
  6. プログラムを実行した第1メモリのメモリアクセスに関するトレース情報に、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われたことを示す連続アクセス情報が含まれている場合、前記トレース情報から、連続してメモリアクセスが行われた連続するアドレスに格納されたデータを含む、メモリアクセスが行われた各データが格納された領域を示すアドレスと、メモリアクセスが行われた各データが格納された領域を示す前記アドレスに対するメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
    前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合におけるータのメモリアクセスの削減時間を、前記アドレス毎に算出し、
    前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定する、
    データ配置決定プログラム。
  7. プログラムを実行した第1メモリのメモリアクセスに関するトレース情報に、メモリアクセスが行われたアドレスが昇順または降順になるように連続してメモリアクセスが行われたことを示す連続アクセス情報が含まれている場合、前記トレース情報から、連続してメモリアクセスが行われた連続するアドレスに格納されたデータを含む、メモリアクセスが行われた各データが格納された領域を示すアドレスと、メモリアクセスが行われた各データが格納された領域を示す前記アドレスに対するメモリアクセスの頻度情報とを対応付けた対応情報を作成し、
    前記対応情報に基づき、前記第1メモリに格納されたデータを前記第1メモリよりバンド幅が大きいメモリである第2メモリに格納した場合におけるータのメモリアクセスの削減時間を、前記アドレス毎に算出し、
    前記削減時間が大きい前記アドレスに格納されたデータを優先して、前記第2メモリに格納すべきことを決定する、
    データ配置決定方法。
JP2015037533A 2015-02-27 2015-02-27 データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法 Active JP6519228B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015037533A JP6519228B2 (ja) 2015-02-27 2015-02-27 データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
US15/002,447 US9842049B2 (en) 2015-02-27 2016-01-21 Data deployment determination apparatus, data deployment determination program, and data deployment determination method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015037533A JP6519228B2 (ja) 2015-02-27 2015-02-27 データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法

Publications (2)

Publication Number Publication Date
JP2016162008A JP2016162008A (ja) 2016-09-05
JP6519228B2 true JP6519228B2 (ja) 2019-05-29

Family

ID=56798891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015037533A Active JP6519228B2 (ja) 2015-02-27 2015-02-27 データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法

Country Status (2)

Country Link
US (1) US9842049B2 (ja)
JP (1) JP6519228B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019045974A (ja) * 2017-08-30 2019-03-22 富士通株式会社 情報処理装置、情報処理プログラム及び情報処理方法
JP7059776B2 (ja) * 2018-04-24 2022-04-26 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191882A (ja) * 1993-12-27 1995-07-28 Nec Corp メモリアクセス頻度測定方式
US6324599B1 (en) * 1999-01-11 2001-11-27 Oak Technology Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor
US7529903B2 (en) * 2005-07-05 2009-05-05 International Business Machines Corporation Systems and methods for memory migration
JP4520419B2 (ja) * 2006-02-17 2010-08-04 パナソニック株式会社 ディスクアクセス装置
US8438365B2 (en) * 2006-10-06 2013-05-07 Calos Fund Limited Liability Company Efficient data loading in a data-parallel processor
JP2012247827A (ja) * 2011-05-25 2012-12-13 Ricoh Co Ltd プログラム生成装置、プログラム生成方法及びプログラム
US9110592B2 (en) * 2013-02-04 2015-08-18 Microsoft Technology Licensing, Llc Dynamic allocation of heterogenous memory in a computing system
US9298389B2 (en) * 2013-10-28 2016-03-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Operating a memory management controller

Also Published As

Publication number Publication date
US20160253106A1 (en) 2016-09-01
JP2016162008A (ja) 2016-09-05
US9842049B2 (en) 2017-12-12

Similar Documents

Publication Publication Date Title
US11237728B2 (en) Method for accessing extended memory, device, and system
Landaverde et al. An investigation of unified memory access performance in cuda
JP2018518733A (ja) ファイル操作方法及び装置
JP6432450B2 (ja) 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
JP2020518881A (ja) コンピュータに実装する方法、コンピュータ可読媒体および異種計算システム
WO2021232769A1 (zh) 一种存储数据的方法及数据处理装置
US20160188477A1 (en) Electronic system with data management mechanism and method of operation thereof
JP2019049843A (ja) 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置
JP2014225263A (ja) プロセッシング装置及びプロセッシング方法
US11226798B2 (en) Information processing device and information processing method
JP6519228B2 (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
US9081561B2 (en) Method for improving execution performance of multiply-add instruction during compiling
KR20150117522A (ko) 그래픽스 상태 관리 장치 및 방법
US10402510B2 (en) Calculating device, calculation method, and calculation program
US10275230B2 (en) Cache aware self-referential structure peeling
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
KR101537725B1 (ko) 워크 그룹 크기 결정 방법, 시스템 및 컴퓨터 판독가능 기록매체
US20190095399A1 (en) Assymetric allocation of sram and data layout for efficient matrix multiplication
JP6459784B2 (ja) 並列計算機、マイグレーションプログラム、及び、マイグレーション方法
CN110162483B (zh) 静态内存碎片整理方法、装置、计算机设备及存储介质
WO2019104978A1 (zh) 高速缓存cache地址映射方法以及相关设备
CN106991058B (zh) 预取文件处理方法及装置
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
US20180139306A1 (en) Software optimization for multicore systems
JP2008250838A (ja) ソフトウェア生成装置、方法、およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181017

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190408

R150 Certificate of patent or registration of utility model

Ref document number: 6519228

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150