JP6166616B2 - 情報処理方法、情報処理装置及びプログラム - Google Patents

情報処理方法、情報処理装置及びプログラム Download PDF

Info

Publication number
JP6166616B2
JP6166616B2 JP2013164584A JP2013164584A JP6166616B2 JP 6166616 B2 JP6166616 B2 JP 6166616B2 JP 2013164584 A JP2013164584 A JP 2013164584A JP 2013164584 A JP2013164584 A JP 2013164584A JP 6166616 B2 JP6166616 B2 JP 6166616B2
Authority
JP
Japan
Prior art keywords
memory
access
time
unit
memory access
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
JP2013164584A
Other languages
English (en)
Other versions
JP2015035028A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013164584A priority Critical patent/JP6166616B2/ja
Priority to PCT/JP2014/070750 priority patent/WO2015020092A1/ja
Publication of JP2015035028A publication Critical patent/JP2015035028A/ja
Priority to US15/014,673 priority patent/US10025504B2/en
Application granted granted Critical
Publication of JP6166616B2 publication Critical patent/JP6166616B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • 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
    • 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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • 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/1024Latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

本発明の実施形態は、情報処理方法、情報処理装置及びプログラムに関する。
メモリウォール問題と称されるように、メモリアクセスはプロセッサの性能へと大きな影響を与える。また、Out−of−OrderやSMT(Simultaneous Multithreading:同時マルチスレディング)といったメモリアクセスレイテンシ隠蔽技術が一般的となり、メモリアクセスのプロセッサの演算性能への影響は実行中のプログラムの性質やハードウェア資源の大小により動的に変化する。
WO2004/044745号公報
プロセッサの性能解析を行う際に、メモリアクセスのプロセッサの演算性能への影響を特定することは非常に重要である。しかしながら、メモリアクセスがプロセッサの演算性能に与える影響の度合いを評価する際の精度が低いという問題がある。
そこで本発明の一態様は、上記問題に鑑みてなされたものであり、メモリアクセスがプロセッサの演算性能に与える影響の度合いを精度良く評価することを可能とする情報処理方法、情報処理装置及びプログラムを提供することを課題とする。
本発明の実施形態に係るに情報処理方法によれば、時間情報取得ステップにおいて、時間情報取得部が、命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する。演算量取得ステップにおいて、演算量取得部が、上記メモリアクセスユニットが対象メモリへアクセスを開始した時から終了した時までに、上記命令発行器による命令に従って演算部が実行した演算量を算出する。そして、評価ステップにおいて、評価部が、このメモリアクセス時間とこの演算量とに基づいて、このアクセス開始から終了までの間における上記演算部による演算性能を評価する。
第1の実施形態におけるプロセッサ1を示す概略ブロック図である。 第1の実施形態におけるグローバルカウンタ42を示す概略ブロック図である。 第1の実施形態におけるメモリアクセス情報テーブル記憶部43が記憶するメモリアクセス情報テーブルT1の一例である。 第1の実施形態におけるメモリ階層別情報テーブル記憶部44が記憶するメモリ階層別情報テーブルT2の一例である。 第1の実施形態における制御部41を示す概略ブロック図である。 第1の実施形態において、メモリアクセス開始時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。 第1の実施形態において、メモリアクセス終了時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。 第2の実施形態におけるプロセッサ1bを示す概略ブロック図である。 第2の実施形態におけるコア情報テーブルT3の一例である。 第2の実施形態におけるメモリ7を示す概略ブロック図である。 MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第1の例である。 MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第2の例である。 図12のメモリ階層別テーブルの場合におけるメモリ階層毎のIPCを示す表である。 MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第3の例である。 図14のメモリ階層別テーブルの場合におけるメモリ階層毎のIPCを示す表である。 第2の実施形態におけるプロセッサ1bの処理の第1の処理例を示すフローチャートである。 第2の実施形態におけるプロセッサ1bの処理の第2の処理例を示すフローチャートである。 第2の実施形態におけるキャッシュメモリのイメージ図の一例である。 第2の実施形態におけるプロセッサ1bの処理の第3の処理例を示すフローチャートである。
以下、本発明の実施形態について、図面を参照して詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態におけるプロセッサ1を示す概略ブロック図である。実線のブロックが物理的または論理的な機能または記憶領域を有するブロックを表しており、破線のブロックは機能ブロック間で受け渡される情報を表しており、矢印は情報の伝達経路を表している。これら記憶領域は、情報を記憶可能であればどのような手段を用いて実現してもよい。例えば、レジスタといったハードウェアを利用してもよいし、C言語などのソフトウェアの変数を利用してもよい。
機能ブロックについても、所望の機能が実現可能であればどのような手段を用いて実現してもよい。例えば、加算器・減算器のようなハードウェアを利用してもよいし、C言語などのソフトウェアの加減算機能を利用してもよい。情報の伝達経路も、正しく情報をやり取りできる手段であればどのようなものであってもよい。例えば、配線による信号の伝達といったハードウェアを利用してもよいし、C言語といったソフトウェアの変数の代入を利用してもよい。
プロセッサ1は、メモリデバイス3及びモニタリングユニット4に接続されたCPU(Central Processing Unit)コア2と、CPUコア2に接続されたメモリデバイス3と、CPUコア2に接続されたモニタリングユニット(情報処理装置)4とを備える。
CPUコア2は、命令単位でプログラムを実行する。ここで、CPUコア2は、演算部22とメモリアクセスユニット24に接続された命令発行器21、命令発行器21とメモリアクセスユニット24に接続された演算部22、及び命令発行器21と演算部22に接続されたメモリアクセスユニット24を備える。ここで、演算部22は、命令発行器21とメモリアクセスユニット24に接続された第1演算器221、及び命令発行器21とメモリアクセスユニット24に接続された第2演算器222を備える。
命令発行器21は、第1演算器221、第2演算器222及びメモリアクセスユニット24等に命令を発行する。
第1演算器221及び第2演算器222は、命令発行器21が発行した命令に従って計算を行う。
メモリアクセスユニット24は、メモリデバイス3に対するアクセス要求をメモリデバイス3へ発行する。
なお、本実施形態では、CPUコア2の構成要素として2つの演算器と1つのメモリアクセスユニットを例示したが、このような構成に限定されるものではない。CPUコアは、演算機能を保持する機能ブロックであればよく、演算器を1つ以上保持すればよい。また、例えば、演算器は1つであっても3つ以上であってもよいし、CPUコア2は、メモリアクセスユニットや命令発行器を複数備えていてもよい。
メモリデバイス3には、データやプログラムコードが記憶されている。メモリデバイス3は、一例として、メモリアクセスユニット24と接続されたL1キャッシュ31、L1キャッシュ31及び主記憶33と接続されたL2キャッシュ32、L2キャッシュ32と接続された主記憶33という三つのレベルの階層構造で構成されている。メモリの階層構造とは、共有メモリ領域のデータを記憶可能であってCPUコア2からのアクセス速度が異なるメモリ群を指す。本実施形態では、CPUコア2からのアクセス速度は、L1キャッシュが最も速く、主記憶が最も遅い。
なお、本実施形態では3階層のメモリ階層を例示したが、このような構成に限定されるものではない。例えば、L1キャッシュ、L2キャッシュ、L3キャッシュ、主記憶という四つのレベルの階層構造であってもよいし、L1キャッシュ、主記憶といった二つのレベルの階層構造であってもよい。また、五つレベル以上の階層構造であってもよい。また、図1には図示されていないが、主記憶は補助記憶装置等と接続されていてもよい。
モニタリングユニット4は、CPUコア2及びメモリデバイス3を監視し、メモリアクセス開始から終了までの間における演算部22の演算性能を評価する。演算性能とは、例えば、時間(例えば、実行サイクルまたは実時間)あたりの発行、コミットまたは実行された命令数すなわち単位時間あたりの発行、コミットまたは実行された命令数、または単位時間あたりの演算器の使用率といった性能指標をさす。
図1に示すように、モニタリングユニット4は、制御部41、制御部41と接続されたグローバルカウンタ42、制御部41と接続されたメモリアクセス情報テーブル43、及び制御部41と接続されたメモリ階層別情報テーブル記憶部44を備える。
グローバルカウンタ42は、実行中のCPUコア2の状態を保持する記憶領域である。図2は、第1の実施形態におけるグローバルカウンタ42を示す概略ブロック図である。図2に示すように、グローバルカウンタ42は、時間カウンタ421と命令数カウンタ422を備える。
時間カウンタ421は、任意の時点からの時間を計測する。ここで、時間とは、時間情報を定量的に表せるものであればどのようなものでもよく、クロックサイクル数のようなプロセッサの実装に依存した時間であってもよいし、時刻のようなプロセッサの実装に依存しない時間であってもよい。
時間カウンタ421の更新のタイミングは、任意のタイミングでよい。1サイクル毎であってもよいし、10サイクル毎であってもよいし、1000サイクル毎であってもよい。
命令数カウンタ422は、任意の時点からの命令数を計測する。命令数は、実行された命令数(以下、実行命令数という)が直接的または近似的に計測可能な情報であればどのようなものでもよい。例えば、命令のコミット数をこの命令数として計測してもよいし、第1演算器221及び第2演算器222で演算を終えた命令数をこの命令数として計測してもよいし、命令の発行数をこの命令数として計測してもよい。
命令数カウンタ422の更新のタイミングは、任意のタイミングでよい。例えば、一定のサイクル数毎であってもよいし、一定の命令数毎であってもよい。
メモリアクセス情報テーブル記憶部43は、実行中のメモリアクセスの情報を記録する。
図3は、第1の実施形態におけるメモリアクセス情報テーブル記憶部43が記憶するメモリアクセス情報テーブルT1の一例である。図3のメモリアクセス情報テーブルT1に示すように、メモリアクセス情報テーブル記憶部43には、メモリアクセス毎に、そのメモリアクセスを識別するメモリアクセスIDと、開始時間情報と開始命令数情報が関連付けられて記憶されている。ここで開始時間情報は、メモリアクセスを開始した時刻を表す情報(例えば、時間カウンタ421の値)である。また開始命令数情報は、メモリアクセスを開始した時点での命令数(例えば、命令数カウンタ422の値)である。
なお、メモリアクセスIDには様々なものが利用可能である。例えば、メモリアクセス情報テーブル記憶部43は、アクセス先のメモリアドレスをメモリアクセスIDに用いてもよいし、メモリアクセス発行時に一意に発行されるIDをメモリアクセスIDとして用いてもよい。
メモリ階層別情報テーブル記憶部44は、メモリ毎に、対象階層へのメモリアクセスに関する情報を記録する。図4は、第1の実施形態におけるメモリ階層別情報テーブル記憶部44が記憶するメモリ階層別情報テーブルT2の一例である。図4の「Non−mem時間情報」は、メモリアクセス以外の時間である。図4のメモリ階層別情報テーブルT2に示すように、メモリ階層別情報テーブル記憶部44には、メモリ毎に時間情報と命令数情報が関連付けられて記憶されている。ここで時間情報は、メモリアクセスに要した時間の積算値である。命令数情報は、メモリアクセス中に実行された命令数の積算値である。
制御部41は、グローバルカウンタ42、メモリアクセス情報テーブル記憶部43及びメモリ階層別情報テーブル記憶部44を制御する。また制御部41は、加減算を行う演算機能を保持する。
図5は、第1の実施形態における制御部41を示す概略ブロック図である。制御部41は、評価部413に接続された時間情報取得部411、評価部413に接続された演算量取得部412、時間情報取得部411と演算量取得部412とに接続された評価部413、メモリアクセス情報テーブル記憶部43と接続された第1記憶処理部414、及びメモリアクセス情報テーブル記憶部43と接続された第2記憶処理部415を備える。
第1記憶処理部414は、プログラムの任意の時点からの時間を計数する時間カウンタが計数するメモリアクセス開始時の時間カウンタの値を開始時間情報としてメモリアクセス情報テーブル記憶部43に記憶させる。
第1記憶処理部415は、プログラムの任意の時点からの命令数を計数する命令数カウンタ422が計数するメモリアクセス開始時の命令数カウンタ422の値を開始命令数情報としてメモリアクセス情報テーブル記憶部43に記憶させる。
時間情報取得部411は、命令発行器21による命令に従ったメモリアクセスユニット24による対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する。より詳細には、時間情報取得部411は、対象メモリについて上記メモリアクセス時間を取得する。時間情報取得部411は、上記の処理を全てのメモリについて行うことで、全てのメモリについて上記メモリアクセス時間を取得する。すなわち、時間情報取得部411は、メモリ毎に上記メモリアクセス時間を取得する。
具体的には、例えば、時間情報取得部411は、メモリアクセス開始時の時刻とメモリアクセス終了時の時刻を比較することで、メモリアクセス時間を算出する。より詳細には、時間情報取得部411は、例えば、メモリアクセス情報テーブル記憶部43に記憶された開始時間情報を取得し、メモリアクセス終了時の時間カウンタの値を取得し、取得した開始時間情報と取得した時間カウンタの値の差を、メモリアクセスの際に対象データを取得したメモリについてのメモリアクセス時間として取得する。
時間情報取得部411は、取得したメモリアクセス時間を示すメモリアクセス時間情報を評価部413へ出力する。
演算量取得部412は、メモリアクセスユニット24が対象メモリへアクセスを開始した時から終了した時までに、命令発行器21による命令に基づく演算量を算出する。演算量取得部412は、上記の処理を全てのメモリについて行うことで、全てのメモリについて、上記演算量を算出する。すなわち、演算量取得部412は、メモリ毎に上記演算量を算出する。
ここで、演算量は、例えば、発行、コミットまたは実行された命令数である。その前提で、例えば、演算量取得部412は、メモリアクセス開始時の命令数とメモリアクセス終了時の命令数を比較することで、上記アクセス開始から終了までの間の命令数を算出する。
より詳細には、演算量取得部412は、例えば、メモリアクセス情報テーブル記憶部43に記憶された開始命令数情報を取得し、メモリアクセス終了時の命令数カウンタ422の値を取得し、取得した開始命令数情報と取得した命令数カウンタ422の値との差を、前記メモリアクセスの際に対象データを取得したメモリについての上記アクセス開始から終了までの間の命令数として取得する。
演算量取得部412は、取得した演算量(ここでは、一例として命令数)を示す演算量情報を評価部413へ出力する。
評価部413は、時間情報取得部411が取得したメモリアクセス時間と演算量取得部412が取得した演算量とに基づいて、上記アクセス開始から終了までの間における演算部22による演算性能を評価する。より詳細には、評価部413は、対象メモリのメモリアクセス時間と、対象メモリの演算量とに基づいて、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能を評価する。評価部413は、上記の処理を全てのメモリについて行うことで、全てのメモリについて演算部22による演算性能を評価する。すなわち、評価部413は、階層状に接続されたメモリ毎に、そのメモリのメモリアクセス情報とそのメモリの演算量情報とに基づいて、そのメモリについてアクセス開始から終了までの間における演算部22による演算性能を評価する。
以下、あるメモリアクセスを例にし、モニタリングユニット4の動作例を説明する。モニタリングユニット4の動作は、メモリアクセス開始時と、メモリアクセス終了時に行う必要があるため、それぞれについて以下で説明する。
<モニタリングユニット4のメモリアクセス開始時の処理>
図6は、第1の実施形態において、メモリアクセス開始時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。
(ステップS101)メモリアクセス命令がメモリアクセスユニット24に発行されると、制御部41はそのメモリアクセス命令の発行を検知する。制御部41がメモリアクセス開始を検知可能であれば、その実現方法はいかなるものであってもよい。例えば、図1に示すように、メモリアクセスを行うメモリアクセスユニット24がメモリアクセスの開始を制御部41に伝達してもよいし、制御部41がメモリアクセスユニット24を定期的に監視することによってメモリアクセスの開始を検知してもよい。
(ステップS102)次に、制御部41は、メモリアクセス命令発行時のCPUコア2の状態をチェックする。具体的には、例えば、制御部41は、グローバルカウンタ42が備える時間カウンタ421の値と命令数カウンタ422の値を参照し、これら2つの値を現在値情報として取得する。
(ステップS103)次に、制御部41は、メモリアクセスを特定可能なメモリアクセスIDとともに現在値情報を、メモリアクセス情報テーブル記憶部44のメモリアクセス情報テーブルに記録する。具体的には、制御部41は、メモリアクセス情報テーブルの開始時間情報には時間カウンタ421の値を、メモリアクセス情報テーブルの開始命令数情報には命令数カウンタ422の値を記録する。
以上に処理により、メモリアクセス開始時の時間とその時までに実行された命令数とがメモリアクセス情報テーブル記憶部44に記録される。
<モニタリングユニット4のメモリアクセス終了時の処理>
図7は、第1の実施形態において、メモリアクセス終了時のモニタリングユニット4の処理の流れの一例を示すフローチャートである。
(ステップS201)まず、制御部41は、メモリアクセス終了の情報を含むメモリアクセス情報をメモリアクセスユニット24から受け取る。メモリアクセス情報には、メモリアクセスIDと、終了したメモリアクセスがデータを取得したメモリを示すメモリ識別情報とが含まれる。
メモリ識別情報は、メモリデバイス3を構成するメモリを一意に特定できる情報であればどのようなものでもよい。例えば、「L1キャッシュ」、「主記憶」といったテキストデータであってもよいし、メモリに割り当てられた識別子を付与しておいてもよい。メモリ識別情報は、例えばアクセス対象のデータと一緒にメモリアクセスユニット24に送付されてもよいし、データが存在した階層のメモリから直接、制御部41へと伝達されてもよい。
なお、メモリアクセスユニット24は、メモリアクセスに要した時間からデータを取得したメモリを予測してもよい。具体的には、例えば、メモリアクセスユニット24は、メモリアクセスに要した時間が第1の閾値以下(例えば、5以下)のサイクル数の場合、データを取得したメモリをL1キャッシュと予測してもよい。また、例えば、メモリアクセスユニット24は、メモリアクセスに要した時間が所定の範囲(10以上50未満)のサイクル数の場合、データを取得したメモリをL2キャッシュと予測してもよい。また、例えば、メモリアクセスユニット24は、メモリアクセスに要した時間が第2の閾値以上(例えば、80以上)のサイクル数の場合、データを取得したメモリを主記憶と予測してもよい。
図1ではメモリアクセスユニット24が制御部41にメモリ識別情報を送付するように記載されているが、制御部41がメモリアクセスの終了を検知できればどのような実現形態を用いてもよい。例えば、制御部41がメモリアクセスユニット24を定期的にチェックしてもよい。
制御部41は、メモリアクセス終了の情報を取得すると、ステップS202〜ステップS204にあるように、それぞれの情報を取得するために、グローバルカウンタ42、メモリアクセス情報テーブル記憶部43及びメモリ階層別情報テーブル記憶部44に対して、リクエストを送付する。
(ステップS202)制御部41は、グローバルカウンタ42からは現在値情報を取得する。既述したように、現在値情報は、時間カウンタ421の値と命令数カウンタ422の値である。
(ステップS203)制御部41は、ステップS202及びS204と並行して、メモリアクセス情報テーブル記憶部43から、開始時間情報と開始命令数情報を取得する。
(ステップS204)制御部41は、ステップS202及びS203と並行して、メモリ階層別情報テーブル記憶部44から、ステップS201で取得したメモリ識別情報が示すメモリ、すなわちデータを取得したメモリについて、時間情報と命令数情報を取得する。
なお、図7ではステップS202〜S204の処理を同時に行うように図示されているが、これは同時処理が可能であることを示しているだけであり、必ずしも同時処理に限定されるものではない。例えば、ステップS202〜S204の処理を逐次的に行ってもよい。
(ステップS205)ステップS203及びステップS204の処理が完了すると、制御部41の時間情報取得部411は、対象メモリへのアクセス開始から終了までの時間(以下、メモリアクセス時間)を算出する。具体的には、例えば、制御部41の時間情報取得部411は、グローバルカウンタ42の時間カウンタ421の値から、開始時間情報の値を減算し、減算して得られた値をメモリアクセス時間とする。
また、制御部41の演算量取得部412は、メモリアクセス中に実行された命令数(以下、メモリアクセス中命令数という)を算出する。また、例えば、制御部41の演算量取得部412は、グローバルカウンタ42の命令数カウンタ422の値から開始命令数情報の値を減算し、減算して得られた値をメモリアクセス中命令数とする。
続いて、制御部41は、以下のようにして、対象メモリのメモリアクセス時間およびメモリアクセス中命令数に基づいて、メモリ階層別情報テーブルT2を更新する。
(ステップS207)ステップS205及びステップS206の処理が完了すると、制御部41は、例えば、ステップS204で読み出した時間情報の値に、ステップS205で算出したメモリアクセス時間を加算し、加算して得られた値を更新値情報の一つである時間更新値とする。同様に、例えば、制御部41は、命令数情報の値に、ステップS205で算出したメモリアクセス中命令数を加算し、加算して得られた値を更新値情報の一つである命令数更新値とする。
(ステップS208)次に、制御部41は、メモリ階層別情報テーブル記憶部44に記憶されたメモリ階層別情報テーブルT2において、ステップS201で取得したメモリ識別情報が示すメモリに対応する時間情報を時間更新値で上書きする。また、制御部41は、メモリ階層別情報テーブル記憶部44に記憶されたメモリ階層別情報テーブルT2において、ステップS201で取得したメモリ識別情報が示すメモリに対応する命令数情報を命令数更新値で上書きする。
以上の処理により、対象メモリアクセスについて、メモリアクセス時間とメモリアクセス中命令数が取得される。また、メモリアクセスの積算時間とメモリアクセス中の命令数の積算値がメモリ毎にメモリ階層別情報テーブルT2に記憶される。
以上、第1の実施形態において、時間情報取得部411は、メモリアクセス毎のメモリアクセスに要した時間を示すメモリアクセス時間情報を取得する。そして、演算量取得部412が、メモリアクセス毎のメモリアクセス中の演算量を示す演算量情報を取得する。そして、評価部413が、上記メモリアクセス情報と上記演算量情報とに基づいて、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能を評価する。
制御部41は、算出したメモリアクセス時間とメモリアクセス中命令数とに基づいて、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能の一例として、プロセッサ1の実行効率を評価する。具体的には、例えば、制御部41は、このプロセッサ1の実行効率の一例として、メモリアクセス中の命令実行スループットを算出する。例えば、命令実行スループットをIPC(Instructions Per Cycle:単位サイクル当たりの命令数)で表現する場合、制御部41は、例えば、算出したメモリアクセス中命令数をメモリアクセス時間で除算し、除算した値をIPCとする。これにより、対象のメモリアクセスについて、IPCが算出される。 このような、メモリアクセス時間とメモリアクセス中命令数に基づく演算性能の算出は任意のタイミングで行ってもよい。例えば、ステップS205の後に行ってもよいし、Sステップ208の後に行ってもよい。
このように、対象メモリへのアクセス開始から終了までの間における演算部22による演算性能を評価できるので、メモリアクセスがプロセッサの演算性能に与える影響の程度を精度良く評価することができる。
なお、本実施形態では、メモリ毎に時間と命令数を個別の記憶領域に保持する方式を示したが、保持する情報はメモリ毎の演算性能であってもよい。例えば、制御部41は、メモリ階層別情報テーブルT2にメモリアクセス中命令数を個別に記録せず、2つの値を除算して得られるIPCを記録してもよい。
図1に示したプロセッサ1では、CPUコア2、メモリデバイス3及びモニタリングユニット4を個別の機能ユニットとして例示した。しかし、これに限定されるものではなく、それぞれの機能ブロックを分割または結合してもよい。例えば、メモリアクセス情報テーブル記憶部43がメモリアクセスユニット24と結合されて実装されてもよいし、制御部41による制御機能が制御対象のカウンタまたはテーブルに分散されていてもよい。
また、モニタリングユニット4の機能は、一般的なプロセッサに備えられている機能を利用し実装することも可能である。例えば、モニタリングユニット4の時間カウンタ421は、一般的なプロセッサが備えているサイクル数計測カウンタを利用してもよいし、制御部41の演算は、CPUコア2の第1演算器221または第2演算器222を利用してもよい。メモリアクセスユニット24は、メモリアクセス毎にタグ付けされて管理するため、この管理の際の識別情報に、メモリアクセス情報テーブル記憶部43のメモリアクセスIDを流用してもよい。
また、モニタリングユニット4の機能には様々な実装形態をとりうる。全てハードウェアで実装してもよいし、全てソフトウェアで実装してもよいし、ハードウェアとソフトウェアの両方を用いて実装してもよい。ハードウェアとソフトウェアの両方を用いる実装として、例えば、図1のグローバルカウンタ42、メモリ階層別情報テーブル記憶部44、メモリアクセス情報テーブル記憶部43の情報記憶機能および情報更新機能をハードウェアで実装し、それらを読み取り演算性能を算出する制御部41の機能をソフトウェアで実装するといった形態が考えられる。
(第2の実施形態)
続いて、第2の実施形態について説明する。第2の実施形態は、第1の実施形態のモニタリングユニット4の利用例である。モニタリングユニットの計測情報から算出できるメモリアクセス中演算性能を利用すれば、特定のメモリがどの程度プロセッサの性能に影響を与えているか判明する。そこで、本実施形態におけるプロセッサは、レイテンシが異なる複数のメモリを使い分ける場合の制御情報としてメモリアクセス中演算性能を利用する。
図8は、第2の実施形態におけるプロセッサ1bを示す概略ブロック図である。プロセッサ1bは、情報処理装置5、情報処理装置5及びメモリ7に接続された第1CPUコア100、情報処理装置5及びメモリ7に接続された第2CPUコア200、及びメモリ7を備える。
情報処理装置5は、第1CPUコア100と第2CPUコア200への処理の割り当てを制御する。ここで、情報処理装置5は、インタフェース部52に接続された処理管理部51、処理管理部51と第1CPUコア100と第2CPUコア200に接続されたインタフェース部52、インタフェース部52と第1CPUコア100に接続されたモニタリングユニット53、及びインタフェース部52と第2CPUコア200に接続されたモニタリングユニット54を備える。
処理管理部51は、処理に関する情報の管理や、第1CPUコア100及び第2CPUコア200に対する処理の割り当てを行う。「処理」とは、2つ以上の命令からなる命令列を指し、例えば、プロセスやスレッドや基本ブロックなどである。処理管理部20は、スケジューラ513に接続されたコア情報テーブル記憶部512及びコア情報テーブル記憶部512及びインタフェース部52に接続されたスケジューラ(割当部)513を備える。
処理管理部51は主にソフトウェアで実装されるが、一部もしくはすべてがハードウェアで実装されてもよい。処理管理部51がソフトウェアで実装される場合、そのプログラムが図1の第1のコア100もしくは第2のコア200で実行されてもよいし、第1のコア100と第2のコア200以外の演算装置で実行されてもよい。
コア情報テーブル記憶部512は、コア毎の情報を記録するテーブルである。
スケジューラ513は、コア情報テーブル記憶部512の情報をもとに、インタフェース部52を介して、第1CPUコア100及び第2CPUコア200のいずれかに処理を割り当てる。その際、スケジューラ513は、例えば、演算部22による演算性能に加えてメモリアクセス時間に基づいて、いずれかのコアに処理を割り当てる。
具体的には、例えば、スケジューラ513は、時間情報取得部411が取得した各メモリアクセス時間の比較結果と、評価部413が評価して得た各演算性能の比較結果とに基づいて、いずれかのコアに処理を割り当ててもよい。また、例えば、スケジューラ513は、時間情報取得部411が取得した対象メモリへのメモリアクセス時間と全メモリへのメモリアクセス時間との比較結果と、評価部413が評価して得た各演算性能の比較結果とに基づいて、いずれかのコアに処理を割り当ててもよい。
なお、スケジューラ513は、演算部22の演算性能に少なくとも基づいて、プログラムを処理するコアを割り当ててもよい。より詳細には、スケジューラ513は、モニタリングユニット53の評価部が評価して得たメモリ毎の実行効率(例えば、IPC)を比較し、比較した結果に基づいて、いずれかのコアに処理を割り当ててもよい。
また、スケジューラ513は、インタフェース部52を介して、第1CPUコア100及び第2CPUコア200からの情報を受け取り、コア情報テーブル記憶部512の内容を更新する。
インタフェース部52は、モニタリングユニット53、モニタリングユニット54、第1CPUコア100及び第2CPUコア200との情報交換を行う入出力機能を有する。
モニタリングユニット53は、第1の実施形態におけるモニタリングユニット4と同様の機能を有し、第1CPUコア100及びメモリ7を監視し、第1CPUコア100の実行効率に対するメモリアクセスの影響の程度を評価する。
モニタリングユニット54は、第1の実施形態におけるモニタリングユニット4と同様の機能を有し、第2CPUコア200及びメモリ7を監視し、第2CPUコア200の実行効率に対するメモリアクセスの影響の程度を評価する。
図9は、第2の実施形態におけるコア情報テーブルT3の一例である。同図のテーブルT3において、コアを識別するコアIDと、ローカルメモリ記録方式とが関連付けられている。本実施形態では、一例として、第1CPUコア100のコアIDが1であり、第2CPUコア200のコアIDが2である。ローカルメモリ記録方式に、コアローカルなメモリの種類が記録される。
第1CPUコア100には、ローカルメモリにMRAMが用いられているため、MRAMであることを識別可能な情報(本例では文字列「MRAM」)が記録される。第2CPUコア200にはローカルメモリにSRAMが用いられているため、SRAMであることを識別可能な情報(本例では文字列「SRAM」)が記録される。
本実施形態では、コアローカルなメモリの種類を文字列で表現してこれを記録することとしたが、スケジューラ23がコアの特徴を識別可能な情報であれば、文字列に限らない。例えば、MRAMが値「1」に対応し、SRAMに値「2」が対応することを仕様として予め決めておいてもよい。その場合、コア情報テーブル記憶部512が保持するコア情報テーブルT3において、コアID1のローカルメモリ記録方式として「1」が、コアID2のローカルメモリ記録方式として「2」が記録されてもよい。
図9の例では、コア情報テーブル記憶部512が保持するコア情報テーブルT3にローカルメモリ記録方式のみを情報として記録されることを想定したが、それ以外の情報が記録されてもよい。例えば、動作周波数などのコアの演算能力が記録されてもよい。
図10は、第2の実施形態におけるメモリ7を示す概略ブロック図である。メモリ7は、第1CPUコア100と接続されたL1命令キャッシュ101、第1CPUコア100と接続されたL1データキャッシュ102、L1命令キャッシュ101及びL1データキャッシュ102と接続されたL2キャッシュ103を備える。
メモリ7は、第2CPUコア200と接続されたL1命令キャッシュ201、第2CPUコア200と接続されたL1データキャッシュ202、L1命令キャッシュ201及びL1データキャッシュ202と接続されたL2キャッシュ203を更に備える。メモリ7は、L2キャッシュ103及びL2キャッシュ203と接続されたバス300及びバス300と接続された主記憶400を備える。
全てのL1キャッシュ(L1命令キャッシュ101及び201、L1データキャッシュ102及び202)は、一例として、SRAMで構成され、主記憶はMRAMで構成されている。一方、L2キャッシュについては、第1CPUコア100がアクセス可能なL2キャッシュ103はMRAMであるのに対し、第2CPUコア200がアクセス可能なL2キャッシュ203はSRAMである。
以下では、アクセス可能なL2キャッシュがMRAMの第1CPUコア100をMRAMコアともいう。アクセス可能なL2キャッシュがSRAMの第2CPUコア200をSRAMコアともいう。
なお、本実施形態では、一例として、MRAMで構成されたL2キャッシュ103はSRAMで構成されたL2キャッシュ203より大容量であるのものレイテンシが大きい(低速)。逆な観点からみれば、SRAMで構成されたL2キャッシュ203は、MRAMで構成されたL2キャッシュ103より小容量であるもののレイテンシが小さい(高速)である。
第1CPUコア100と第2CPUコア200を使い分けるポリシーには様々なものが考えられる。単純な方法としては、MRAMコアとSRAMコアの両方でプログラムを実行し、性能が高いコアを利用する制御が考えられる。しかしながら、この方法では最適なCPUコアの選択に両方のCPUコアでの事前実行が必要となる。当然、片方のCPUコアのみの実行で最適なCPUコアが選択できることが望ましい。
本実施形態では、片方のCPUコアのみの実行で最適なCPUコアを選択するポリシーの一例として、スケジューラ513は、例えば、MRAMコアで処理を実行する際の短所がプロセッサ全体として問題となっていなければMRAMコアが最適であると判断する。具体的には例えば、スケジューラ513は、まずMRAMコアに最初に処理を割り当てる。そして、MRAMから構成されるL2キャッシュの短所であるレイテンシがプロセッサ性能へと影響を与えていなければ、スケジューラ513は、MRAMコアでそのまま処理を実行させる。このような制御を行う場合に、スケジューラ513は、例えば、モニタリングユニット53及び54が測定したメモリ毎のアクセス中IPCを用いる。
(第2の実施形態の第1の処理例)
以下、第2の実施形態の第1の処理例について説明する。MRAMコアにおいて、MRAMから構成されるL2キャッシュのレイテンシが問題とならないのは、第1の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較し十分に小さい」場合、または第2の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較しそれなりに大きいものの、メモリアクセスレイテンシ隠蔽技術の効果により、L2キャッシュのレイテンシの影響でそれほど性能が低下していない」場合の2つである。
スケジューラ513は、これらの条件を、モニタリングユニット53及び54の情報から判断可能である。スケジューラ513は、一例として、第1の条件を、メモリ階層別情報テーブルT2のL2キャッシュ時間情報がプログラムの全実行時間に占める割合から判断する。スケジューラ513は、第2の条件を、一例として、メモリ階層別情報テーブルT2から算出されるメモリ毎のアクセス中IPCから判断する。以下、それぞれの判断処理について例示する。
まず、第1の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較し十分に小さい」場合の例として、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの一例を図11に示す。図11は、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの一例である。同図のメモリ階層別テーブルにおいて、時間と命令数が関連付けられている。Non−memは、メモリアクセスが無いときを表す。L1キャッシュは、L1キャッシュにアクセスしたときを表す。L2キャッシュは、L2キャッシュにアクセスしたときを表す。主記憶は、主記憶にアクセスしたときを表す。
図11のテーブルを参照すると分かるように、L2キャッシュ以外(Non−mem、L1キャッシュ、主記憶)の時間合計は2200サイクルであるが、L2キャッシュへのアクセス時間は20サイクルとなっており、この時間合計に占めるL2キャッシュへのアクセス時間の割合が非常に小さい。従って、L2キャッシュアクセス中のIPCをチェックするまでもなくMRAM L2キャッシュのレイテンシが問題とならないことが分かり、対象プログラムのMRAMコアでの実行が最適であると判断できる。
次に、第2の条件である「L2キャッシュへのアクセス時間がプログラムの実行時間と比較しそれなりに大きいものの、メモリアクセスレイテンシ隠蔽技術の効果により、L2キャッシュのレイテンシによりそれほど性能が低下していない」かどうかをチェックする例を示す。なお、一般的にメモリアクセスレイテンシが長い階層ほどCPU性能を低下させやすい。このため、メモリ毎のアクセス中IPCは、一般的に、メモリアクセスが無いときのIPCが最も高く、主記憶に近いメモリほどメモリアクセス中のIPCが低下する傾向にある。逆に言うと、モニタリングユニット53及び54で計測したL2キャッシュアクセス中のIPCが、メモリアクセスが無いときのIPCや、L1キャッシュアクセス中のIPCと変わらなければ、スケジューラ513は、L2キャッシュレイテンシ要因での性能低下が無いと判断可能である。
あるプログラムをMRAMコアで実行した時のメモリ階層別テーブルが、例えば図12のようになった場合を考える。図12は、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第2の例である。図11と同様に、同図のメモリ階層別テーブルにおいて、時間と命令数が関連付けられている。Non−memは、メモリアクセスが無いときを表す。L1キャッシュは、L1キャッシュにアクセスしたときを表す。L2キャッシュは、L2キャッシュにアクセスしたときを表す。主記憶は、主記憶にアクセスしたときを表す。
この場合のメモリ階層毎のIPCを計算すると図13の表のようになる。図13は、図12のメモリ階層別テーブルの場合におけるメモリ毎のIPCを示す表である。図13の表の項目は、Non−memはメモリアクセスが無いときのIPCを表しており、その他のメモリの名前はそれぞれのメモリにアクセス中のIPCを表している。この例だと、L2キャッシュアクセス中のIPCは4であり、メモリアクセスが無いときのIPCおよびL1キャッシュアクセス中のIPCも4であるため、L2キャッシュのレイテンシによるプロセッサ1bの性能低下が無いことが分かる。つまり、この場合はMRAM L2キャッシュのレイテンシがプロセッサ1b全体の性能において問題とならないことが分かり、MRAMコアでの実行が最適であると判断できる。
一方で、MRAMコアでプログラムを実行した結果、SRAMコアへのプログラムの再割り当てが必要なメモリ階層別テーブルの例を図14に示す。図14は、MRAMコアであるプログラムを実行した後のメモリ階層別テーブルの第3の例である。図11と同様に、同図のメモリ階層別テーブルにおいて、時間と命令数が関連付けられている。Non−memは、メモリアクセスが無いときを表す。L1キャッシュは、L1キャッシュにアクセスしたときを表す。L2キャッシュは、L2キャッシュにアクセスしたときを表す。主記憶は、主記憶にアクセスしたときを表す。
この場合のメモリ毎のIPCを計算すると図15の表のようになる。図15は、図14のメモリ階層別テーブルの場合におけるメモリ毎のIPCを示す表である。図15に示すように、メモリアクセスが無いときのIPC及びL1キャッシュアクセス中のIPCは4であるが、L2キャッシュアクセス中のIPCは0.3であり、L2キャッシュのレイテンシによりプロセッサ1bの性能が低下していることが分かる。この場合、スケジューラ513は、最適化のため、MRAMコアからSRAMコアへと処理の再割り当てを行う。
図16は、第2の実施形態におけるプロセッサ1bの処理の第1の例を示すフローチャートである。ここでは、最初に、処理が第1CPUコアに割り当てられていることを前提とする。プロセッサ1bは、所定の時刻が経過した場合に、以下の処理を実行する。ここで、所定の時刻は、例えば、サイクル数、実時間、またはプログラムの命令数である。例えば、プロセッサ1bは、1000命令実行したら、以下の処理を実行してもよい。
(ステップS301)まず、モニタリングユニット53の制御部41は、メモリ階層別情報テーブル記憶部44に記憶されているメモリ階層別情報テーブルT2を参照して、メモリ毎のアクセス時間を取得する。
(ステップS302)次に、モニタリングユニット53の制御部41は、メモリ階層別情報テーブル記憶部44に記憶されているメモリ階層別情報テーブルT2を参照して、メモリ毎の命令数を取得する。
(ステップS303)次に、モニタリングユニット53の制御部41は、メモリ階層毎に、該当する命令数を該当するアクセス時間で除算することで、メモリ階層毎にIPCを取得する。
(ステップS304)次に、スケジューラ513は、メモリ階層別情報テーブル記憶部44に記憶されているメモリ階層別情報テーブルT2内の全てのメモリのアクセス時間の総和を全実行時間として算出する。本例では、全実行時間をメモリ階層別情報テーブルT2の情報を利用し算出するが、全実行時間の算出方法はこれに限定されない。例えば、全実行時間をカウントするテーブルを別に保持してもよい。
(ステップS305)次に、スケジューラ513は、例えば、L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合(例えば、5%)を乗じた時間よりも短いか否か判定する。L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合を乗じた時間よりも短い場合(YES)、スケジューラ513はステップS306へ進む。L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合(例えば、5%)を乗じた時間より短くない場合(NO)、ステップS307に進む。
(ステップS306)ステップS305で、L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合を乗じた時間よりも短いと判定された場合、スケジューラ513は第1CPUコア(MRAMコア)100にそのまま処理を実行させ、その処理を終了する。
(ステップS307)一方、ステップS305で、L2キャッシュ103へのアクセス時間がプログラムの全実行時間に所定の割合を乗じた時間よりも短くないと判定された場合、スケジューラ513は、L2キャッシュアクセス103中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合(例えば、10%)を乗じた値よりも小さいか否か判定する。
L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCの所定の割合よりも小さい場合(YES)、スケジューラ513はステップS308へ進む。L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合を乗じた値よりも小さくない場合(NO)、スケジューラ513はステップS309へ進む。
(ステップS308)ステップS307で、L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合を乗じた値よりも小さいと判定された場合、スケジューラ513は第1CPUコア(MRAMコア)100から第2CPUコア(SRAMコア)200へと処理の再割り当てを行い、その処理を終了する。
(ステップS309)ステップS307で、L2キャッシュ103アクセス中のIPCがL1データキャッシュ102アクセス中のIPCに所定の割合を乗じた値よりも小さくないと判定された場合、スケジューラ513は第1CPUコア(MRAMコア)100にそのまま処理を実行させ、その処理を終了する。
なお、本例では、スケジューラ513は、最初に第1の条件をチェックし、第2の条件をチェックした。しかしながら、この順番に限定されるものではなく、スケジューラ513は、逆の順番でチェックを行ってもよい。
以上、第2の実施形態の第1の処理例において、スケジューラ513は、MRAMからなる対象メモリへのアクセス時間と全実行時間との比較、及び対象メモリにアクセス中のIPCと他のメモリにアクセス中のIPCとの比較に基づいて、いずれかのコアに処理を割り当てる。
これにより、対象メモリへのアクセス時間がプログラムの全実行時間よりも十分に小さい場合、MRAMコアに処理が割り当てられる。その場合、MRAMコアが実行してMRAMからなる対象メモリへアクセスしたとしても、アクセス時間がプログラムの全実行時間より十分に小さいので、処理性能の低下を抑えることができる。
また、対象メモリにアクセス中のIPCが、他のメモリにアクセス中のIPCより小さい場合、対象メモリへのアクセスによって処理の実行効率が低下しているので、MRAMコアからSRAMコアへ処理の割り当てを変更することで、性能の低下を抑えることができる。一方、対象メモリにアクセス中のIPCが、他のメモリにアクセス中のIPCと比べてあまり低下していない場合、対象メモリへのアクセスによって処理の実行効率があまり低下していないので、MRAMコアが処理をそのまま実行しても、大きな性能の低下にはならない。
よって、第2の実施形態の第1の処理例において、スケジューラ513は、メモリアクセスによる処理性能の低下を抑えることができるCPUコアに処理を割り当てることができるので、プロセッサの演算性能を向上させることができる。
(第2の実施形態の第2の処理例)
続いて、第2の実施形態の第2の処理例について説明する。第1の処理例では、スケジューラ513は、L2キャッシュ103へのアクセス時間と全実行時間との比較結果、及びL2キャッシュ103アクセス中のIPCとL1データキャッシュ102アクセス中のIPCとの比較結果に基づいて、いずれかのコアに処理を割り当てた。
それに対し、第2の処理例では、スケジューラ513は、主記憶400へのアクセス時間、L2キャッシュ103へのアクセス時間、主記憶400アクセス中のIPC、及びL2キャッシュ103アクセス中のIPCを参照して、いずれかのコアに処理を割り当てる。
これにより、L2キャッシュ103へのアクセス時間が処理効率低下の原因になっている場合、MRAMコアからSRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがMRAMからSRAMへと変わり、L2キャッシュへのアクセス速度が向上するので、処理効率の向上が期待できる。また、主記憶400へのアクセス時間が処理効率低下の原因になっている場合、SRAMコアからMRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがSRAMからMRAMへと変わり、L2キャッシュの容量が大きくなって、主記憶へのアクセス頻度が低下するので、処理効率の向上が期待できる。
以下、具体的にスケジューラ513の処理を説明する。例えば、SRAMコアで実行中に、スケジューラ513は、例えば、主記憶400のIPC低下度とL2キャッシュ203のIPC低下度を算出する。具体的には、例えば、スケジューラ513は、主記憶400より上位の階層のキャッシュにアクセス中のIPCで主記憶400アクセス中のIPCを除算し、1からその除算後の値を減算した数値を主記憶400のIPC低下度として算出する。ここで、主記憶400より上位の階層のキャッシュにアクセス中のIPCは、例えば、L2キャッシュ203にアクセス中のIPC、L1キャッシュにアクセス中のIPCまたはメモリアクセスしない場合のIPC・若しくは処理全体のIPCである。また、例えば、スケジューラ513は、L2キャッシュ203より上位の階層のキャッシュにアクセス中のIPC(例えば、L1キャッシュにアクセス中のIPCまたはメモリアクセスしない場合のIPC・若しくは処理全体のIPC)でL2キャッシュにアクセス中のIPCを除算し、1からその除算後の値を減算した数値をL2キャッシュ203のIPC低下度として算出する。
例えば、SRAMコアで実行中に、主記憶400へのアクセス時間と主記憶400のIPC低下度との積が、L2キャッシュ203へのアクセス時間とL2キャッシュ203のIPC低下度との積より大きい場合、L2キャッシュ203より主記憶400へのアクセスで待たされているので、スケジューラ513は、SRAMコアからMRAMコアへ処理の割り当てを変更する。ここで、主記憶400へのアクセス時間と主記憶400のIPC低下度との積は、主記憶400で待たされている時間に相当する係数である。L2キャッシュ203へのアクセス時間とL2キャッシュ203のIPC低下度との積は、L2キャッシュ203で待たされている時間に相当する係数である。
これにより、上述したようにMRAMのL2キャッシュ103はSRAMのL2キャッシュ203より容量が大きいので、MRAMコアは、SRAMコアよりも主記憶400へのアクセス時間を少なくすることができ、主記憶400へのアクセスで待たされている時間を短くすることができる。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
また、例えば、スケジューラ513は、現在処理を実行しているコアがアクセス可能な対象L2キャッシュへのアクセス時間の全実行時間に対する割合、及び全実行時間に対する主記憶400アクセス時間の割合が、両方とも閾値より大きいか否か判定する。両方とも閾値より大きい場合、スケジューラ513は、対象L2キャッシュへのアクセス時間と対象L2キャッシュのIPC低下度との積と、主記憶400へのアクセス時間と主記憶400のIPC低下度との積とを比較する。対象L2キャッシュへのアクセス時間と対象L2キャッシュのIPC低下度との積の方が小さい場合、対象L2キャッシュより主記憶400で待たされていることになる。一方、主記憶400へのアクセス時間と主記憶400のIPC低下度との積の方が小さい場合、主記憶400より対象L2キャッシュで待たされていることになる。
ここで、一例として、最初にMRAMコアに処理が割り当てられている場合を前提とする。例えば、対象L2キャッシュがMRAMで構成されたL2キャッシュ103の場合を想定する。主記憶400へのアクセス時間と主記憶400のIPC低下度との積よりL2キャッシュ103へのアクセス時間とL2キャッシュ103のIPC低下度との積の方が大きい場合、主記憶400よりL2キャッシュ103へのアクセスで待たされている場合、スケジューラ513は、MRAMコアからSRAMコアへ処理の割り当てを変更する。これにより、SRAMコアに処理が割り当てられることで、SRAMコアがアクセスするL2キャッシュ203がL2キャッシュ103より高速であるので、L2キャッシュへのアクセスで待たされている時間が短縮される。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
一方、一例として、最初にSRAMコアに処理が割り当てられている場合を前提とする。例えば、対象L2キャッシュがSRAMで構成されたL2キャッシュ203の場合を想定する。L2キャッシュ203へのアクセス時間とL2キャッシュ203のIPC低下度との積より主記憶400へのアクセス時間と主記憶400のIPC低下度との積の方が大きい場合、L2キャッシュ203より主記憶400へのアクセスで待たされている場合、スケジューラ513は、SRAMコアからMRAMコアへ処理の割り当てを変更する。これにより、MRAMコアに処理が割り当てられることで、MRAMコアがアクセスするL2キャッシュ103の容量がL2キャッシュ203の容量より大きいので、主記憶400へアクセスする回数が少なくなるので、主記憶400へのアクセスで待たされている時間を短くすることができる。そのため、主記憶400アクセス中のIPCの値が改善される。その結果、スケジューラ513は、処理の実行効率向上が期待できる。
図17は、第2の実施形態におけるプロセッサ1bの処理の第2の処理例を示すフローチャートである。プロセッサ1bは、所定の時刻が経過した場合に、以下の処理を実行する。ここで、所定の時刻は、例えば、サイクル数、実時間、またはプログラムの命令数である。例えば、プロセッサ1bは、1000命令実行したら、以下の処理を実行してもよい。
ステップS401〜S403の処理は、図16のステップS301〜S303と同一であるので、その説明を省略する。
(ステップS406)次に、スケジューラ513は、第1CPUコアで処理実行中の場合は全実行時間に対する対象L2キャッシュへのアクセス時間が閾値より大きいかをチェックする。また、スケジューラ513は、第2CPUコアで処理実行中の場合は、全実行時間に対する主記憶400へのアクセス時間が閾値より大きいか否か判定する。第1CPUコアで処理実行中で、全実行時間に対する対象L2キャッシュへのアクセス時間が閾値より大きい場合、もしくは、第2CPUコアで処理実行中で、全実行時間に対する主記憶400へのアクセス時間が閾値より大きい場合に、スケジューラ513は、ステップS408に進む。これらの条件に当てはまらない場合、ステップS407に進む。
(ステップS407)実行中の処理がステップS406の条件に当てはまらない場合、スケジューラ513は、現在処理を実行しているコアにそのまま処理を実行させる。
(ステップS408)スケジューラ513は、主記憶400へのアクセス時間と主記憶400のIPC低下度との積(以下、主記憶積という)が対象L2キャッシュへのアクセス時間と対象L2キャッシュのIPC低下度との積(以下、対象L2積という)より大きいか否か判定する。主記憶積がL2積より大きい場合(YES)、スケジューラ513は、ステップS409に進む。一方、主記憶積が対象L2積以下の場合(NO)、スケジューラ513は、ステップS412に進む。
(ステップS409)ステップS408で主記憶積が対象L2積より大きいと判定された場合、対象L2キャッシュより主記憶400へのアクセスで待たされている。その場合、スケジューラ513は、第2CPUコア200で実行中か否か判定する。第2CPUコア200で実行中の場合(YES)、スケジューラ513はステップS410へ進む。第2CPUコア200で実行中でない場合(NO)、スケジューラ513はステップS411へ進む。
(ステップS410)ステップS409で第2CPUコア200で実行中と判定された場合、スケジューラ513は、処理の割り当てを第2CPUコア200から第1CPUコア100へ切り替える。これにより、第1CPUコア(MRAMコア)100がアクセスするL2キャッシュ103の容量がL2キャッシュ203の容量より大きいので、主記憶400へアクセスする回数が少なくなるので、主記憶400へのアクセスで待たされている時間を短くすることができる。そのため、主記憶400アクセス中のIPCの値が改善される。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
(ステップS411)ステップS409で第2CPUコア200で実行中でないと判定された場合、スケジューラ513は、第1CPUコア100に処理をそのまま実行させる。
(ステップS412)ステップS408で主記憶積が対象L2積以下であると判定された場合、主記憶400より対象L2キャッシュへのアクセスで待たされている。その場合、スケジューラ513は、第1CPUコア100で実行中か否か判定する。第1CPUコア100で実行中の場合(YES)、スケジューラ513はステップS413へ進む。一方、第1CPUコア100で実行中でない場合(NO、スケジューラ513はステップS414へ進む。
(ステップS413)ステップS412で第1CPUコア100で実行中と判定された場合、スケジューラ513は、第1CPUコア100から第2CPUコア200へ処理の割り当てを変更する。これにより、第2CPUコア(SRAMコア)200がアクセスするL2キャッシュ203がL2キャッシュ103より高速であるので、L2キャッシュへのアクセスで待たされている時間が短縮される。その結果、スケジューラ513は、処理の実行効率を向上させることが期待できる。
(ステップS414)ステップS412で第1CPUコア100で実行中でないと判定された場合、スケジューラ513は、第2CPUコア200に処理をそのまま実行させる。
以上、第2の実施形態の第2の処理例において、スケジューラ513は、主記憶400へのアクセス時間とL2キャッシュ103へのアクセス時間との比較結果と、主記憶400へのアクセス時間と閾値との比較及びL2キャッシュ103へのアクセス時間と閾値との比較とのうち少なくとも一方と、主記憶400アクセス中のIPCとL2キャッシュ103アクセス中のIPCとの比較結果とに基づいて、どのコアに処理を割り当てるか決定する。
これにより、L2キャッシュ103へのアクセス時間が処理効率低下の主要因になっている場合、MRAMコアからSRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがMRAMからSRAMへと変わり、L2キャッシュへのアクセス速度が向上するので、処理効率向上が期待できる。また、主記憶400へのアクセス時間が処理効率低下の主要因になっている場合、SRAMコアからMRAMコアへ処理の割り当てを変更することができる。その結果、アクセスするL2キャッシュがSRAMからMRAMへと変わり、L2キャッシュの容量が大きくなって、主記憶へのアクセス頻度が低下するので、処理効率向上が期待できる。
(第2の実施形態における第3の処理例)
続いて、第2の実施形態における第3の処理例について説明する。第3の処理例では、スケジューラ513は、MRAMコアでの実行情報と、MRAMコアでの実行情報から予測されるSRAMコアでの実行情報とを比較することで、処理を割り当てるコアを決定する。
より詳細には、スケジューラ513は、各コアが互いに異なるメモリ系統で対応する階層のメモリにアクセスする際のレイテンシによるオーバーヘッドそれぞれと、MRAMコアからSRAMコアへの処理の移動に伴う予測キャッシュミス増加回数と、処理の割り当ての変更に必要な時間であるマイグレーションオーバーヘッドとに基づいて、いずれかのコアに処理を割り当てる。ここで、複数のコアそれぞれは、階層状に接続された複数のメモリを含む複数のメモリ系統のうち互いに異なるメモリ系統に含まれるメモリにアクセス可能である。また、各コアが互いに異なるメモリ系統で対応する階層のメモリは、一例として、L2キャッシュ103とL2キャッシュ203である。
以下、スケジューラ513の処理の具体例について説明する。ここで、一例として、最初にMRAMコアに処理が割り当てられていることを前提とする。その前提の下で、スケジューラ513は、例えば、MRAMコアが実行を開始した時から所定の時間経過後に、「MRAMコアのL2キャッシュレイテンシによるオーバーヘッド」から「SRAMコアでのL2キャッシュミスによるオーバーヘッド」を差分して、差分値を得る。そして、スケジューラ513は、例えば、差分値がマイグレーションオーバーヘッド未満であれば、そのままMRAMコアで実行し、差分値がマイグレーションオーバーヘッド以上であれば、SRAMコアへと処理の再割り当てを行う。これにより、スケジューラ513は、マイグレーションオーバーヘッドを考慮して処理の割り当てを切り替えるか決定するので、処理割り当て変更による処理効率向上の効果を、処理割り当て変更によるオーバーヘッドが上回る状態の発生頻度を抑制することが出来る。
なお、マイグレーションオーバーヘッドは、プログラム実行コア移動の頻度を調節する閾値である。マイグレーションオーバーヘッドは、処理実実行前にあらかじめ与えられた定数であってもよいし、実行履歴等から算出される値であってもよい。マイグレーションオーバーヘッドは、プログラム実行コア移動に要するオーバーヘッドをスケジューラ513によって算出された値であってもよい。本実施形態では、一例として、マイグレーションオーバーヘッドは、プログラムの全実行時間の5%として、プログラム実行前に予め与えられている。
スケジューラ513は、例えば、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドOH_L2Mを、次の式(1)で算出する。
OH_L2M = MRAM総アクセスレイテンシ×IPC低下度 …(1)
MRAM総アクセスレイテンシは、処理開始時から所定の時間経過時のL2キャッシュ103のアクセスレイテンシの積算値である。スケジューラ513が、例えば、総アクセスレイテンシとして、例えば、図14のモニタリングユニット53のL2キャッシュへのアクセス時間の値を用いると、総アクセスレイテンシは1000である。このように、スケジューラ513は、例えば、メモリ階層別テーブルT2のL2キャッシュへのアクセス時間の値を、MRAM総アクセスレイテンシとしてもよい。
IPC低下度は例えばモニタリングユニット53を利用し算出できる。スケジューラ513は、例えば、モニタリングユニット53の情報を基に、L2キャッシュアクセス中のIPCと、L2キャッシュより上位階層キャッシュの情報を含むIPC(例えば、L1キャッシュのIPC、またはメモリアクセスしない場合のIPC、または処理全体のIPC)を比較することでIPC低下度を算出する。具体的には、例えば、スケジューラ513は、L1キャッシュのIPCでL2キャッシュアクセス中のIPCを除算し、1からその除算後の値を減算した値をL2キャッシュについてのIPC低下度として算出する。
なお、総アクセスレイテンシの取得方法は、これに限定されない。例えば、静的にMRAM L2キャッシュへのアクセスレイテンシが与えられており、スケジューラ513は、プログラム実行中に取得されるL2キャッシュアクセス回数とMRAM L2キャッシュへのアクセスレイテンシとを乗算することで総アクセスレイテンシを算出してもよい。
図11から算出された図12にあるように、L2キャッシュアクセス中のIPCは0.3である。L2キャッシュより上位の階層のIPCはL1キャッシュの値を用いてもNon−memの値を用いてもよいが、本実施形態では、スケジューラ513は、一例としてNon−memの値である4を用いる。スケジューラ513は、例えば、これらの値から、IPC低下度として0.925(=1−(0.3÷4))を算出する。そして、スケジューラ513は、例えば、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドMRAMコアのL2キャッシュレイテンシによるオーバーヘッドとして、925(=1000×0.925)を算出する。
スケジューラ513は、例えば、SRAMコアでのL2キャッシュミスによるオーバヘッドOH_L2Sを、次の式(2)で算出する。なお、MRAMコアでプログラム実行中にSRAMコアの実行情報を取得するには、MRAMコア実行情報を基にしたSRAMコア実行情報の予測が必要となる。
OH_L2S = 主記憶アクセスレイテンシ×SRAMコアによるL2キャッシュミスの増加回数予測値 …(2)
主記憶アクセスレイテンシは、主記憶への1回のアクセスに要するレイテンシである。スケジューラ513は、第1CPUコア(MRAMコア)100に接続されたモニタリングユニット53のメモリ階層別テーブルT2に格納された主記憶400へのアクセス時間を主記憶アクセス回数で除算し主記憶アクセスレイテンシとしてもよい。ここで、メモリ階層別テーブルT2に記録されている主記憶400へのアクセス時間は1回以上の主記憶400へのメモリアクセス時間を積算された積算値である。また、静的に主記憶400へのアクセスレイテンシが与えられてもよい。本実施形態では、一例として、スケジューラ513は、主記憶レイテンシとして200を用いる。
スケジューラ513は、SRAMコアによるL2キャッシュミスの増加回数予測値を、MRAMコアにおけるキャッシュのLRU(Least Recently Used )アクセス情報を利用することで予想することが可能である。まず、以下で、一般的なキャッシュについて説明すると共にLRUの基本動作を示す。
図18は、第2の実施形態におけるキャッシュメモリのイメージ図の一例である。キャッシュメモリは、図18に示すように、メモリアドレスのハッシュ値毎にセットを保持する。ウェイは、同一セットのデータを保持可能な上限数である。図18の領域R181は、セットのインデックス情報(タグメモリアレイ)をイメージとして表したもので、領域R182は、ウェイのインデックス情報(タグメモリアレイ)をイメージとして表したものである。また、領域R183は、データを格納するキャッシュメモリ(データメモリアレイ)そのものを表したものである。
メモリアドレスとセットの対応関係を決定するハッシュ関数は、様々な方式が存在する。本実施形態では、一例として、セット数が10であるため、アドレスの上位3ビットの値でセットが決定される。例えば、32ビットアドレス「01000001010101010101010101010101」のデータは上位ビットが「010」であるため、セット3に格納される。
同一セットのデータのうちどのデータを残しておくかを決定する一般的な方式が前述のLRUである。LRUではウェイ1からウェイ8の順に直近にアクセスされたデータが配置される。例えば、ウェイ1に配置されているデータはウェイ2に配置されているデータより直近に参照されている。このようなデータ配置は、アクセスしたデータをウェイ1に配置し、それ以外のデータを1ウェイずらすことで実現する。また、新たなデータがキャッシュに配置される場合には、ウェイ8のデータをキャッシュから下位階層に移動する。
図18のような一般的なキャッシュでは、セット数が同一であるキャッシュは、同一ウェイ番号のキャッシュアクセスの振る舞いも同一のものとなる。同一セット数の、SRAM 1MB 4wayのキャッシュ、および、MRAM 4MB 16wayのキャッシュを例とした場合、SRAM 4wayまでのアクセス履歴と、MRAM 4wayまでのアクセス履歴は同一のものとなる。逆に言うと、MRAM 4MBのway5〜way16へのアクセスは、MRAM 4MBではキャッシュヒットとなるものの、SRAM 1MBではミスとなるアクセスである。
したがって、スケジューラ513は、例えば、MRAMコアでの実行中に、SRAMコアのキャッシュに存在しないウェイへのアクセスをカウントすることにより、SRAMコアでのキャッシュミス増加回数を取得する。その際、スケジューラ513は、このウェイ毎のアクセスカウントを、ウェイ毎に用意されたアクセスカウンターを用いて取得してもよいし、複数のウェイ毎に用意されたアクセスカウンターを用いて取得してもよい。
本実施形態では、一例として、取得されたSRAMコアでのアクセス増加回数予測値が3である。この場合、SRAMコアによるL2キャッシュミスによるオーバーヘッドは600(=200×3)である。
スケジューラ513は、例えば、上記のように算出された、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドからSRAMコアによるL2キャッシュミスによるオーバーヘッドを減算する。本例では、減算して得られる減算値は、325(=925−600)である。
ここで、一例として、マイグレーションオーバーヘッドが、プログラムの開始から終了までにかかる時間(以下、プログラムの全実行時間という)の5%であることを前提とする。その前提で、例えば、プログラムの全実行時間が10000サイクルであった場合、算出された減算値325はマイグレーションオーバーヘッド500(=10000×5/100)未満のため、スケジューラ513は、MRAMコアにそのまま処理を行わせる。
一方、例えば、プログラムの全実行時間が5000サイクルであった場合、算出された減算値325はマイグレーションオーバーヘッド250(=5000×5/100)以上のため、スケジューラ513は、処理の割り当てをMRAMコアからSRAMコアへ切り替える。
図19は、第2の実施形態におけるプロセッサ1bの処理の第3の処理例を示すフローチャートである。
ステップS501〜S503の処理は、図16のステップS301〜S303と同一であるので、その説明を省略する。
(ステップS504)次に、スケジューラ513は、IPC低下度を算出する。
(ステップS505)次に、スケジューラ513は、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドを算出する。
(ステップS506)次に、スケジューラ513は、SRAMコアによるL2キャッシュミスの増加回数予測値を算出する。
(ステップS507)次に、スケジューラ513は、SRAMコアによるL2キャッシュミスによるオーバーヘッドを算出する。
(ステップS508)次に、スケジューラ513は、MRAMコアのL2キャッシュレイテンシによるオーバーヘッドからSRAMコアによるL2キャッシュミスによるオーバーヘッドを減算し、減算した得た減算値を取得する。
(ステップS509)次に、スケジューラ513は、マイグレーションオーバヘッドを算出する。本例では、静的に設定されたマイグレーションオーバヘッドを用いるため、スケジューラ513は、マイグレーションオーバヘッドを格納している記憶領域から読み出しを行う。
(ステップS510)次に、スケジューラ513は減算値がマイグレーションオーバーヘッド以上か否か判定する。減算値がマイグレーションオーバーヘッド以上である場合(YES)、スケジューラ513はステップS511に進む。減算値がマイグレーションオーバーヘッド以上でない場合(NO)、スケジューラ513はステップS512に進む。
(ステップS511)ステップS510で減算値がマイグレーションオーバーヘッド以上であると判定された場合、スケジューラ513は、第1CPUコア(MRAMコア)100から第2CPUコア(SRAMコア)200へ処理の割り当てを変更する。
(ステップS512)次に、ステップS510で減算値がマイグレーションオーバーヘッド以上でないと判定された場合、スケジューラ513は、第1CPUコア100に処理をそのまま実行させる。
以上、第2の実施形態における第3の処理において、スケジューラ513は、例えば、MRAMコアが実行を開始した時から所定の時間経過後に、「MRAMコアのL2キャッシュレイテンシによるオーバーヘッド」から「SRAMコアでのL2キャッシュミスによるオーバーヘッド」を差分して、差分値を得る。そして、スケジューラ513は、例えば、この差分値がマイグレーションオーバーヘッド未満であれば、そのままMRAMコアで実行し、この差分値がマイグレーションオーバーヘッド以上であれば、MRAMコアからSRAMコアへ処理の割り当てを変更する。これにより、スケジューラ513は、マイグレーションオーバーヘッドを考慮して処理の割り当てを切り替えるか決定するので、処理割り当て変更による処理効率向上の効果が、処理割り当て変更によるオーバーヘッドを上回る発生頻度の向上を期待出来る。
なお、上述した第3の処理は一例であって、これに限ったものではない。スケジューラ513は、上記の差分値とマイグレーションオーバーヘッドを比較して、この比較結果に基づいて、いずれかのコアに処理を割り当てたが、これに限らず、スケジューラ513は、第1の性能低下度と第2の性能低下度との比較結果から、いずれかのコアに処理を割り当ててもよい。
以上、第2の実施形態における第3の処理をまとめると以下のようになる。第1CPUコア100または第2CPUコア200への演算割り当てを行うことにより、処理毎に第1CPUコア100がアクセス可能な第1のメモリと第2CPUコア200がアクセス可能で第1のメモリよりも小容量かつレイテンシが低速な第2のメモリを選択可能である。
そして、評価部413は、第1のコアでの処理実行中に、上記第1のメモリに含まれる複数のメモリそれぞれ毎に演算性能を評価する。
そして、スケジューラ513は、評価した演算性能を利用して 上記第1のメモリのレイテンシによる第1の性能低下度を特定し、上記第1のメモリのLRUアクセス情報から、第2のメモリでのデータ非保持による第2の性能低下度を特定し、この第1の性能低下度とこの第2の性能低下度とを比較し、この比較結果に基づいて、いずれかのコアに処理を割り当てる。
なお、評価部413が評価した演算性能は、様々な用途に用いることができる。例えば、第2の実施形態のように、OS(Operating System)が評価部から得られる演算性能(例えば、IPC低下度)を参照し、適切な処理のコア割り当ての判断情報として利用してもよい。また、プログラマーが、評価部から得られる演算性能(例えば、IPC低下度)を参照して、対象処理(ソフトウェア)のデータ構造またはアルゴリズム改良して、最適化を行ってもよい。
また、モニタリングユニットの実装形態には様々なものが考えられるが、その1つとしてプロセッサの実行効率を計測するパフォーマンスカウンタ(パフォーマンスモニタ)機能が考えられる。パフォーマンスカウンタの機能として、例えば、上述した各実施形態における時間情報取得部411、演算量取得部412及び評価部413を全て備えてもよいし、時間情報取得部411、演算量取得部412のみを備えてもよい。つまり、パフォーマンスカウンタの値として、評価部413の出力結果を利用する形態でもよいし、パフォーマンスカウンタの値として時間情報取得部と演算量取得部の出力結果を利用する形態でも良い。
なお、複数の装置を備えるシステムが、各実施形態のモニタリングユニットまたは情報処理装置の各処理を、それらの複数の装置で分散して処理してもよい。
また、各実施形態のモニタリングユニットまたは情報処理装置の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、モニタリングユニットまたは情報処理装置に係る上述した種々の処理を行ってもよい。
なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
以上、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
1 プロセッサ
2 CPUコア
21 命令発行器
22 演算部
221 第1演算器
222 第2演算器
24 メモリアクセスユニット
3 メモリ
31 L1キャッシュ
32 L2キャッシュ
33 主記憶
4 モニタリングユニット(情報処理装置)
41 制御部
411 時間情報取得部
412 演算量取得部
413 評価部
414 第1記憶処理部
415 第2記憶処理部
42 グローバルカウンタ
421 時間カウンタ
422 命令数カウンタ
43 メモリアクセス情報テーブル記憶部
44 メモリ階層別情報テーブル記憶部
5 情報処理装置
51 処理管理部
512 コア情報テーブル記憶部
513 スケジューラ(割当部)
52 インタフェース部
53 モニタリングユニット
54 モニタリングユニット
7 メモリ
100 第1CPUコア
101 L1命令キャッシュ
102 L1データキャッシュ
103 L2キャッシュ
200 第2CPUコア
201 L1命令キャッシュ
202 L1データキャッシュ
203 L2キャッシュ
300 バス
400 主記憶

Claims (13)

  1. 時間情報取得部が、命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得ステップと、
    演算量取得部が、前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算部の演算量を算出する演算量取得ステップと、
    評価部が、前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価ステップと、
    を有する情報処理方法。
  2. 前記対象メモリは、階層状に接続された複数のメモリのうちの一つのメモリである
    請求項1に記載の情報処理方法。
  3. 前記対象メモリは、階層状に接続された複数のメモリそれぞれであり、
    前記時間情報取得ステップにおいて、前記時間情報取得部が、前記メモリ毎に前記メモリアクセス時間を取得し、
    前記演算量取得ステップにおいて、前記演算量取得部が、前記メモリ毎に前記演算量を算出し、
    前記評価ステップは、前記評価部が、前記メモリ毎に、前記メモリアクセス時間と前記演算量とに基づいて、そのメモリへのアクセス開始から終了までの間における前記演算部による演算性能を評価する
    請求項1に記載の情報処理方法。
  4. 前記演算量は、発行、コミットまたは実行された命令数であり、
    前記時間情報取得ステップにおいて、前記時間情報取得部が、メモリアクセス開始時の時刻とメモリアクセス終了時の時刻を比較することで、前記メモリアクセス時間を算出し、
    前記演算量取得ステップにおいて、前記演算量取得部が、メモリアクセス開始時の命令数とメモリアクセス終了時の前記命令数を比較することで、前記アクセス開始から終了までの間の前記命令数を算出する
    請求項1から3のいずれか一項に記載の情報処理方法。
  5. 第1記憶処理部が、プログラムの任意の時点からの時間を計数可能な時間カウンタが計数したメモリアクセス開始時の前記時間カウンタの値を開始時間情報として記憶部に記憶させるステップと、
    第2記憶処理部が、プログラムの任意の時点からの前記命令数を計数可能な命令数カウンタが計数したメモリアクセス開始時の前記命令数カウンタの値を開始命令数情報として記憶部に記憶させるステップと、
    を更に有し、
    前記時間情報取得ステップにおいて、
    前記記憶部に記憶された開始時間情報を取得し、メモリアクセス終了時の前記時間カウンタの値を取得し、前記取得した開始時間情報と前記取得した時間カウンタの値との差を、前記対象メモリのメモリアクセス時間として取得し、
    前記演算量取得ステップにおいて、
    前記記憶部に記憶された開始命令数情報を取得し、メモリアクセス終了時の前記命令数カウンタの値を取得し、前記取得した開始命令数情報と前記取得した命令数カウンタの値との差を、前記対象メモリの前記アクセス開始から終了までの間の前記命令数として取得する
    請求項4に記載の情報処理方法。
  6. 前記評価ステップにおいて、前記評価部は前記命令発行器と前記メモリアクセスユニットと前記演算部とを備える複数のコアそれぞれ毎に、前記演算性能を評価し、
    割当部が、前記演算性能の比較に少なくとも基づいて、いずれかのコアに処理を割り当てる割当ステップを更に有する
    請求項1から5のいずれか一項に記載の情報処理方法。
  7. 前記評価ステップは、前記評価部は、階層状に接続された複数のメモリそれぞれ毎に前記演算性能を評価し、
    前記割当ステップにおいて、割当部が、前記評価部が評価して得たメモリ毎の演算性能を比較し、比較した結果に基づいて、いずれかのコアに処理を割り当てる
    請求項6に記載の情報処理方法。
  8. 前記割当ステップにおいて、
    割当部は、前記演算部による演算性能に加えて前記メモリアクセス時間に基づいて、いずれかのコアに処理を割り当てる
    請求項6に記載の情報処理方法。
  9. 前記時間情報取得ステップにおいて、前記時間情報取得部が、階層状に接続された複数のメモリそれぞれ毎に前記メモリアクセス時間を取得し、
    前記評価ステップは、前記評価部は、前記複数のメモリそれぞれ毎に前記演算性能を評価し、
    前記割当ステップにおいて、前記割当部は、前記時間情報取得部が取得したメモリアクセス時間と前記評価部が評価して得た演算性能から得られる性能低下度との積を前記メモリ間で比較し、この比較結果に基づいて、いずれかのコアに処理を割り当てる
    請求項8に記載の情報処理方法。
  10. 第1のコアまたは第2のコアへの演算割り当てを行うことにより、演算毎に前記第1のコアがアクセス可能な第1のメモリと前記第2のコアがアクセス可能で前記第1のメモリよりも小容量かつレイテンシが低速な第2のメモリを選択可能であり、
    前記評価ステップにおいて、前記評価部は、前記第1のコアでの処理実行中に、前記第1のメモリに含まれる複数のメモリそれぞれ毎に演算性能を評価し、
    前記割当ステップにおいて、前記割当部は、評価した演算性能を利用して前記第1のメモリのレイテンシによる第1の性能低下度を特定し、
    前記第1のメモリのLRUアクセス情報から、前記第2のメモリでのデータ非保持による第2の性能低下度を特定し、
    前記第1の性能低下度と前記第2の性能低下度とを比較し、この比較結果に基づいて、いずれかのコアに処理を割り当てる
    請求項8に記載の情報処理方法。
  11. 命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得部と、
    前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算部の演算量を算出する演算量取得部と、
    を備える情報処理装置に、
    前記情報処理装置から取得する前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価ステップ
    を実行させるためのプログラム。
  12. 命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得部と、
    前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算部の演算量を算出する演算量取得部と、
    前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価部と、
    を備える情報処理装置。
  13. コンピュータに、
    命令発行器による命令に従ったメモリアクセスユニットによる対象メモリへのアクセスの開始とこのアクセスの終了とを検知し、この検知に基づいてこのアクセスの開始から終了までの時間をメモリアクセス時間として取得する時間情報取得ステップと、
    前記メモリアクセスユニットが前記対象メモリへアクセスを開始した時から終了した時までに、前記命令発行器による命令に基づく演算部の演算量を算出する演算量取得ステップと、
    前記メモリアクセス時間と前記演算量とに基づいて、前記アクセス開始から終了までの間における前記演算部による演算性能を評価する評価ステップと、
    を実行させるためのプログラム。
JP2013164584A 2013-08-07 2013-08-07 情報処理方法、情報処理装置及びプログラム Active JP6166616B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013164584A JP6166616B2 (ja) 2013-08-07 2013-08-07 情報処理方法、情報処理装置及びプログラム
PCT/JP2014/070750 WO2015020092A1 (ja) 2013-08-07 2014-08-06 情報処理方法、情報処理装置及びプログラム
US15/014,673 US10025504B2 (en) 2013-08-07 2016-02-03 Information processing method, information processing apparatus and non-transitory computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013164584A JP6166616B2 (ja) 2013-08-07 2013-08-07 情報処理方法、情報処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2015035028A JP2015035028A (ja) 2015-02-19
JP6166616B2 true JP6166616B2 (ja) 2017-07-19

Family

ID=52461423

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013164584A Active JP6166616B2 (ja) 2013-08-07 2013-08-07 情報処理方法、情報処理装置及びプログラム

Country Status (3)

Country Link
US (1) US10025504B2 (ja)
JP (1) JP6166616B2 (ja)
WO (1) WO2015020092A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011041623A1 (en) 2009-10-01 2011-04-07 Interdigital Patent Holdings, Inc. Uplink control data transmission
KR102585652B1 (ko) 2011-01-07 2023-10-05 인터디지탈 패튼 홀딩스, 인크 다중 송신 포인트의 채널 상태 정보(csi) 전달
EP2742716A1 (en) 2011-08-12 2014-06-18 Interdigital Patent Holdings, Inc. Interference measurement in wireless networks
CN108111196B (zh) 2012-06-04 2021-06-18 交互数字专利控股公司 传递多个传输点的信道状态信息(csi)
TW201509144A (zh) 2013-05-08 2015-03-01 Interdigital Patent Holdings 在長期進化(lte)系統中網路輔助干擾取消及/或抑制(naics)方法、系統及裝置
JP6327994B2 (ja) * 2014-07-28 2018-05-23 ルネサスエレクトロニクス株式会社 制御システムおよび半導体装置
JP5974133B1 (ja) * 2015-03-20 2016-08-23 株式会社東芝 メモリシステム
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム
US10846004B2 (en) * 2018-05-03 2020-11-24 Mediatek Inc. Memory management system and memory management method for dynamic memory management by monitoring whether memory is accessed and predicting when memory is to be accessed
US11580023B2 (en) 2020-03-11 2023-02-14 Fujitsu Limited Information processing apparatus, computer-readable recording medium having stored therein memory control program, and computer-readable recording medium having stored therein information processing program

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004044745A1 (ja) * 2002-11-13 2004-05-27 Fujitsu Limited マルチスレッディングプロセッサにおけるスケジューリング方法およびマルチスレッディングプロセッサ
US7954102B2 (en) 2002-11-13 2011-05-31 Fujitsu Limited Scheduling method in multithreading processor, and multithreading processor
US7181599B2 (en) * 2004-01-14 2007-02-20 International Business Machines Corporation Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
US7457926B2 (en) * 2005-05-18 2008-11-25 International Business Machines Corporation Cache line replacement monitoring and profiling
WO2009096161A1 (ja) * 2008-01-29 2009-08-06 Panasonic Corporation プロセッサ性能解析装置、方法及びシミュレータ
US9547594B2 (en) * 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9418013B2 (en) * 2014-06-30 2016-08-16 Intel Corporation Selective prefetching for a sectored cache

Also Published As

Publication number Publication date
JP2015035028A (ja) 2015-02-19
US20160154589A1 (en) 2016-06-02
US10025504B2 (en) 2018-07-17
WO2015020092A1 (ja) 2015-02-12

Similar Documents

Publication Publication Date Title
JP6166616B2 (ja) 情報処理方法、情報処理装置及びプログラム
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
JP5413001B2 (ja) キャッシュメモリ
KR101361945B1 (ko) 컴퓨터 스레드들의 이종 리소스들로의 맵핑
US9477601B2 (en) Apparatus and method for determining a sector division ratio of a shared cache memory
US20190179763A1 (en) Method of using memory allocation to address hot and cold data
US10496541B2 (en) Dynamic cache partition manager in heterogeneous virtualization cloud cache environment
JP6149595B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
CN109597771B (zh) 用于控制分层存储器系统的方法和装置
KR20220110219A (ko) 프리페치 레벨 강등
US9836396B2 (en) Method for managing a last level cache and apparatus utilizing the same
JP2012033001A (ja) 情報処理装置および情報処理方法
CN111258927A (zh) 一种基于采样的应用程序cpu末级高速缓存缺失率曲线的预测方法
JP2022552124A (ja) 再利用期間に基づくキャッシュ管理
US11487671B2 (en) GPU cache management based on locality type detection
WO2014141419A1 (ja) 仮想計算機システムおよびスケジューリング方法
JP2014010604A (ja) ストレージ装置とプログラムと方法
US20220114097A1 (en) System performance management using prioritized compute units
US20240028389A1 (en) Memory aware context switching
CN117331858B (zh) 存储装置及数据处理系统
Pai et al. AB-Aware: application behavior aware management of shared last level caches
Ovant et al. Allocation of last level cache partitions through thread classification with parallel universes
Mahto et al. ACAM: Application Aware Adaptive Cache Management for Shared LLC
JP6260456B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2014157476A (ja) 計測装置及び計測方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170623

R151 Written notification of patent or utility model registration

Ref document number: 6166616

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350