JP6252348B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

演算処理装置および演算処理装置の制御方法 Download PDF

Info

Publication number
JP6252348B2
JP6252348B2 JP2014100210A JP2014100210A JP6252348B2 JP 6252348 B2 JP6252348 B2 JP 6252348B2 JP 2014100210 A JP2014100210 A JP 2014100210A JP 2014100210 A JP2014100210 A JP 2014100210A JP 6252348 B2 JP6252348 B2 JP 6252348B2
Authority
JP
Japan
Prior art keywords
instruction
prefetch
unit
arithmetic processing
memory
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
JP2014100210A
Other languages
English (en)
Other versions
JP2015219550A (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 JP2014100210A priority Critical patent/JP6252348B2/ja
Priority to US14/695,341 priority patent/US9830268B2/en
Publication of JP2015219550A publication Critical patent/JP2015219550A/ja
Application granted granted Critical
Publication of JP6252348B2 publication Critical patent/JP6252348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
演算処理装置は、例えば、命令をデコードするデコード部と、デコードされた命令に基づく演算を実行する演算部と、演算部と主記憶装置であるメインメモリとの間に配置されたキャッシュメモリとを有する。演算部は、例えば、メインメモリやキャッシュメモリに記憶されたデータを参照して、演算を実行する。キャッシュメモリは、例えば、演算部により参照されたデータを記憶する。
演算処理装置は、例えば、キャッシュメモリに記憶されたデータを参照することにより、メインメモリに記憶されたデータを参照するときに比べて、データを参照するときの待ち時間を短縮できる。なお、例えば、配列等の大規模なデータを使用する数値計算処理では、データの局所性が低いため、キャッシュメモリのヒット率が低下する。この場合、キャッシュメモリが有効に使用されないため、データを参照するときの待ち時間の短縮効果は小さい。
キャッシュメモリのヒット率低下に対する解決手段として、例えば、メインメモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチが用いられる(例えば、特許文献1−7参照)。プリフェッチの実現方法としては、ソフトウエアによるソフトウエアプリフェッチと、ハードウエアによるハードウエアプリフェッチとが知られている。
例えば、ソフトウエアプリフェッチでは、コンパイル装置は、メインメモリに記憶されたデータを事前にキャッシュメモリに転送する命令(以下、プリフェッチ命令とも称する)を機械語プログラムに挿入する。なお、コンパイル装置は、例えば、ソースプログラムをプロセッサ等の演算処理装置で実行可能な機械語プログラムに変換するコンパイル処理を実行する。
一方、ハードウエアプリフェッチでは、ハードウエアプリフェッチ機構等のハードウエアが演算処理装置内に設けられる。例えば、ハードウエアプリフェッチ機構は、連続的なメモリアクセスが実行されると判定した場合、次にアクセスされるデータを予測し、メインメモリに記憶されたデータを事前にキャッシュメモリに転送する。
なお、例えば、ハードウエアプリフェッチ機構を有する演算処理装置では、ソフトウエアプリフェッチを適用したにも拘わらず、演算処理装置の性能が低下する場合がある。例えば、ハードウエアプリフェッチ機構によるプリフェッチとプリフェッチ命令によるプリフェッチとの両方が同じアドレスのデータに対して実行される場合がある。すなわち、不要なプリフェッチ命令が実行される場合がある。この場合、例えば、命令数の増加、バスの消費量の増加による転送速度の低下等の性能低下を引き起こすおそれがある。
このため、ハードウエアプリフェッチとソフトウエアプリフェッチとを効率よく両立させて、演算処理装置の性能を向上させる技術が提案されている(例えば、特許文献1参照)。この種の演算処理装置では、例えば、ハードウエアプリフェッチの対象であるか否かを示す指示情報を付加したメモリアクセス命令が使用される。例えば、コンパイル処理では、連続的なメモリアクセスが発生するメモリアクセス命令を検出した場合、指示情報を付加したメモリアクセス命令を生成する。例えば、ハードウエアプリフェッチの対象であることを示す指示情報が付加されたメモリアクセス命令に対しては、プリフェッチ命令の生成が抑止される。
特開2009−230374号公報 特表2011−504274号公報 特開2010−244204号公報 特開2006−330813号公報 特開2011−81836号公報 特開2002−297379号公報 特開2001−166989号公報
ハードウエアプリフェッチ機構を有する演算処理装置にソフトウエアプリフェッチを適用した場合、不要なプリフェッチ命令が実行され、演算処理装置の性能が低下するおそれがある。なお、コンパイル処理時にプリフェッチ命令の生成を抑止する方法においても、不要なプリフェッチ命令が実行されるおそれがある。例えば、ハードウエアプリフェッチの対象でないとコンパイル処理時に判定したメモリアクセス命令が、演算処理装置の実際の動作では、ハードウエアプリフェッチの対象になる場合もある。この場合、不要なプリフェッチ命令が実行されるおそれがある。
1つの側面では、本件開示の演算処理装置および演算処理装置の制御方法は、不要なプリフェッチ命令によるメモリアクセスを低減することを目的とする。
一観点によれば、メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチを実行可能な演算処理装置は、命令をデコードするデコード部と、デコードされた命令のうち、メモリアクセスに関する命令が登録される命令保持部と、メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチ命令とは別の所定の契機で、プリフェッチを実行するハードウエアプリフェッチ制御部と、ハードウエアプリフェッチ制御部によりキャッシュメモリに転送されるデータに含まれるデータをメモリからキャッシュメモリに転送する不要なプリフェッチ命令が命令保持部に登録されているか否かを判定し、不要なプリフェッチ命令が命令保持部に登録されている場合、不要なプリフェッチ命令を無効にする制御部とを有する。
別の観点によれば、メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチを実行可能な演算処理装置の制御方法では、演算処理装置が有するデコード部が、命令をデコードし、デコードした命令のうち、メモリアクセスに関する命令を命令保持部に登録し、演算処理装置が有するハードウエアプリフェッチ制御部が、メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチ命令とは別の所定の契機で、プリフェッチを実行し、演算処理装置が有する制御部が、ハードウエアプリフェッチ制御部によりキャッシュメモリに転送されるデータに含まれるデータをメモリからキャッシュメモリに転送する不要なプリフェッチ命令が命令保持部に登録されているか否かを判定し、不要なプリフェッチ命令が命令保持部に登録されている場合、不要なプリフェッチ命令を無効にする。
本件開示の演算処理装置および演算処理装置の制御方法は、不要なプリフェッチ命令によるメモリアクセスを低減できる。
演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。 図1に示したフェッチポート、ハードウエアプリフェッチ制御装置および制御部の一例を示す図である。 図1に示した演算処理装置の動作の一例を示す図である。 配列データのアクセス順とプリフェッチとの関係の一例を示す図である。
以下、実施形態を図面を用いて説明する。
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。この実施形態の演算処理装置10は、例えば、主記憶装置であるメインメモリ100に記憶されたデータを事前にキャッシュメモリ80に転送するプリフェッチを実行可能なCPU(Central Processing Unit)等のプロセッサである。メインメモリ100には、例えば、演算処理装置10による演算で使用されるデータや演算結果が記憶される。
プリフェッチの実現方法として、ソフトウエアによるソフトウエアプリフェッチと、ハードウエアによるハードウエアプリフェッチとが用いられる。例えば、ソフトウエアプリフェッチでは、メインメモリ100に記憶されたデータを事前にキャッシュメモリ80に転送するプリフェッチ命令が、ソースプログラムを演算処理装置10で実行可能な機械語プログラムに変換するコンパイル処理時に生成される。なお、プリフェッチ命令は、データをロードする命令で実現されてもよいし、プリフェッチ専用の命令で実現されてもよい。一方、ハードウエアプリフェッチは、例えば、ハードウエアプリフェッチ制御装置40により実行される。
演算処理装置10は、例えば、命令デコーダ20、フェッチポート30、ハードウエアプリフェッチ制御装置40、制御部50、リザベーションステーション60(60a、60b)、演算部70(70a、70b)およびキャッシュメモリ80を有する。
命令デコーダ20は、命令をデコードするデコード部の一例である。例えば、命令デコーダ20は、命令が記憶されている命令キャッシュ等から命令を読み出し、読み出した命令をデコードする。そして、命令デコーダ20は、デコードした命令をフェッチポート30およびリザベーションステーション60に出力する。
フェッチポート30は、メモリアクセスに関する命令が登録される命令保持部の一例である。例えば、フェッチポート30には、命令デコーダ20でデコードされた命令のうち、メモリアクセスに関する命令が、実行待ちの命令として登録される。メモリアクセスに関する命令は、例えば、データをストアするストア命令、データをロードするロード命令、プリフェッチ命令等である。
例えば、フェッチポート30は、メモリアクセスに関する命令を記憶するバッファである。フェッチポート30は、例えば、依存関係のないデータのロードやストアのパイプライン処理で実行順序を変えて制御する場合に、複数の命令を格納する緩衝用のバッファとして使用される。例えば、フェッチポート30は、任意の個数のロード命令またはストア命令を保持できる。すなわち、フェッチポート30は、ストア命令、ロード命令、プリフェッチ命令等のメモリアクセスに関する命令用のリザベーションステーションとして用いられる。
ハードウエアプリフェッチ制御装置40は、プリフェッチを実行するハードウエアプリフェッチ制御部の一例である。例えば、ハードウエアプリフェッチ制御装置40は、プリフェッチ命令とは別の所定の契機で、プリフェッチを実行する。例えば、ハードウエアプリフェッチ制御装置40は、連続領域アクセスにおいて連続するキャッシュラインのキャッシュミスを検出したことを契機として、ハードウエアプリフェッチを実行する。連続領域アクセスは、例えば、キャッシュメモリ80のキャッシュラインをアクセス単位とした場合のアクセス先の変化が2ライン未満の変化量(キャッシュラインが連続する範囲)のアクセスである。
あるいは、ハードウエアプリフェッチ制御装置40は、アクセス先が一定のアクセス幅で昇順および降順のいずれか一方向に変化するアクセスにおいて、キャッシュミスが連続したことを検出した場合に、ハードウエアプリフェッチを実行してもよい。このように、ハードウエアプリフェッチ制御装置40は、アクセス先が規則的に変化するアクセスにおいて、連続したキャッシュミスを契機として、ハードウエアプリフェッチを実行する。なお、ハードウエアプリフェッチが実行される所定の契機(動作条件)は、この例に限定されない。
制御部50は、不要なプリフェッチ命令を無効にする制御部の一例である。例えば、制御部50は、不要なプリフェッチ命令がフェッチポート30に登録されているか否かを判定する。そして、制御部50は、不要なプリフェッチ命令がフェッチポート30に登録されている場合、不要なプリフェッチ命令を無効にする。なお、不要なプリフェッチ命令は、例えば、ハードウエアプリフェッチ制御装置40によりキャッシュメモリ80に転送されるデータに含まれるデータをメインメモリ100からキャッシュメモリ80に転送するプリフェッチ命令である。
このように、制御部50は、不要なプリフェッチ命令を無効にする。これにより、演算処理装置10は、不要なプリフェッチ命令によるメモリアクセス(メインメモリ100へのアクセス等)を低減できる。なお、制御部50は、例えば、不要なプリフェッチ命令をフェッチポート30から削除することにより、不要なプリフェッチ命令を無効にする。あるいは、制御部50は、不要なプリフェッチ命令をNOP(No Operation)命令に置き換えることにより、不要なプリフェッチ命令を無効にしてもよい。
リザベーションステーション60(60a、60b)は、例えば、演算命令用のリザベーションステーションである。リザベーションステーション60aには、命令デコーダ20でデコードされた命令のうち、演算部70aで実行される命令が登録される。例えば、リザベーションステーション60aは、プログラム順に拘わらず、実行可能な状態の命令を選択する。そして、リザベーションステーション60aは、選択した命令を演算部70aに出力する。
リザベーションステーション60bには、命令デコーダ20でデコードされた命令のうち、演算部70bで実行される命令が登録される。例えば、リザベーションステーション60bは、プログラム順に拘わらず、実行可能な状態の命令を選択する。そして、リザベーションステーション60bは、選択した命令を演算部70bに出力する。
演算部70(70a、70b)は、デコードされた命令に基づく演算を実行する。例えば、演算部70aは、リザベーションステーション60aから受信した命令に基づく演算を、キャッシュメモリ80に記憶されたデータを参照して実行する。また、例えば、演算部70bは、リザベーションステーション60bから受信した命令に基づく演算を、キャッシュメモリ80に記憶されたデータを参照して実行する。そして、演算部70は、例えば、演算結果をキャッシュメモリ80に記憶する。
キャッシュメモリ80は、メインメモリ100から受信したデータを記憶する。例えば、キャッシュメモリ80は、演算部70により参照されたデータを記憶する。さらに、キャッシュメモリ80は、ハードウエアプリフェッチやソフトウエアプリフェッチによりメインメモリ100から転送されたデータを記憶する。また、キャッシュメモリ80は、演算結果等のデータをメインメモリ100に出力する。
図2は、図1に示したフェッチポート30、ハードウエアプリフェッチ制御装置40および制御部50の一例を示す。なお、図2では、キャッシュメモリ80のキャッシュライン”A+1”をアクセスした場合の動作を中心に説明する。キャッシュライン”A+1”は、キャッシュライン番号が”A+1”のキャッシュラインである。また、図2の例では、ハードウエアプリフェッチ制御装置40は、連続領域アクセスにおいて連続するキャッシュラインのキャッシュミスを検出したことを契機として、ハードウエアプリフェッチを実行する。以下、連続領域アクセスをストリームアクセスとも称する。また、プリフェッチの対象データをプリフェッチデータとも称する。
ハードウエアプリフェッチ制御装置40は、プリフェッチキュー42およびオフセット付加部44を有する。プリフェッチキュー42は、所定の契機(ハードウエアプリフェッチを実行するための契機)を検出する際に参照される第1アドレス情報を記憶するアドレス保持部の一例である。例えば、プリフェッチキュー42は、複数のエントリをFIFO(First-In First-Out)で保持する。例えば、ハードウエアプリフェッチ制御装置40は、キャッシュライン”A”でキャッシュミスが発生した場合、キャッシュライン”A+1”および”A−1”を示すライン情報をプリフェッチキュー42に新規登録する。
そして、後続のアクセスによりキャッシュライン”A+1”がアクセスされ、キャッシュライン”A+1”でキャッシュミスが発生した場合、プリフェッチキュー42に登録されたライン情報”A+1”がヒットする。これにより、ハードウエアプリフェッチ制御装置40は、昇順ストリームアクセスと判定し、以降、昇順方向にハードウエアプリフェッチを開始する。また、ハードウエアプリフェッチ制御装置40は、プリフェッチキュー42のエントリを、キャッシュライン”A+1”を示すライン情報からキャッシュライン”A+2”を示すライン情報に更新する。
なお、キャッシュライン”A”へのアクセスの後続のアクセスによりキャッシュライン”A−1”がアクセスされ、キャッシュライン”A−1”でキャッシュミスが発生した場合、プリフェッチキュー42に登録されたライン情報”A−1”がヒットする。これにより、ハードウエアプリフェッチ制御装置40は、降順ストリームアクセスと判定し、以降、降順方向にハードウエアプリフェッチを開始する。また、ハードウエアプリフェッチ制御装置40は、プリフェッチキュー42のエントリを、キャッシュライン”A−1”を示すライン情報からキャッシュライン”A−2”を示すライン情報に更新する。
ハードウエアプリフェッチ制御装置40は、例えば、ストリームアクセスが1キャッシュライン分進む度に、キャッシュメモリ80にハードウエアプリフェッチ要求を発行し、キャッシュメモリ80にプリフェッチデータを書き込む。以下、1キャッシュラインを128バイトとして説明する。なお、ラインサイズは、128バイトに限定されない。例えば、一度のプリフェッチでは、128バイト(1ライン)分のデータがメインメモリ100からキャッシュメモリ80に転送される。
なお、プリフェッチの対象アドレスは、例えば、ロード命令等により指定されたアドレス(プリフェッチキュー42内のヒットしたキャッシュライン番号)に対して、所定のライン分(図2の例では、2ライン分)のオフセットを加算あるいは減算して算出される。
例えば、オフセット付加部44は、プリフェッチの対象データが昇順ストリームアクセスと判定された場合、ロード命令等により指定されたアドレスに256バイト(2ライン)のオフセットを加算してプリフェッチの対象アドレスを算出する。また、例えば、オフセット付加部44は、プリフェッチの対象データが降順ストリームアクセスと判定された場合、ロード命令等により指定されたアドレスから256バイト(2ライン)のオフセットを減算してプリフェッチの対象アドレスを算出する。
図2の例では、オフセット付加部44は、昇順ストリームアクセスにおいて、キャッシュライン”A+1”でキャッシュミスが発生したため、プリフェッチキュー42に登録されているライン情報が示すキャッシュライン”A+1”に2を加算する。これにより、プリフェッチの対象アドレスに対応するキャッシュライン”A+3”が算出される。
例えば、オフセット付加部44は、プリフェッチの対象アドレスに対するハードウエアプリフェッチの実行を要求するハードウエアプリフェッチ要求を、キャッシュメモリ80に発行する。これにより、メインメモリ100からキャッシュメモリ80のキャッシュライン”A+3”に、1ライン分のプリフェッチデータが転送される。また、オフセット付加部44は、プリフェッチの対象アドレスに対応するキャッシュラインを示す情報を制御部50の比較部52に出力する。
このように、ハードウエアプリフェッチ制御装置40は、メインメモリ100からキャッシュメモリ80のキャッシュライン”A+3”に、1ライン分のプリフェッチデータを転送する。また、ハードウエアプリフェッチ制御装置40は、プリフェッチキュー42のエントリを、キャッシュライン”A+1”を示すライン情報からキャッシュライン”A+2”を示すライン情報に更新する。
このように、ハードウエアプリフェッチ制御装置40は、所定の契機を検出する際に参照されるライン情報を記憶するプリフェッチキュー42を有し、プリフェッチキュー42に記憶したライン情報に基づいてプリフェッチのアクセス先を算出する。なお、プリフェッチデータのアクセス先およびサイズは、この例に限定されない。例えば、プリフェッチデータのアクセス先およびサイズは、書き換え可能なレジスタに設定され、任意に変更されてもよい。
フェッチポート30は、命令の種類を示す命令コードと、命令のアクセス先を示すアドレス情報(図2のアドレス)と、フラグとを記憶する。例えば、図2の命令コードの列に記載した命令コード”01”、”10”、”11”は、ロード命令、ストア命令、プリフェッチ命令をそれぞれ示す。なお、フェッチポート30は、例えば、ロード用のプリフェッチ命令とストア用のプリフェッチ命令とを識別可能に記憶してもよい。また、図2のアドレスの列に記載したアドレス情報”B”、”C”、”D”、”A+3”は、ロード命令等によりアクセスされるキャッシュラインを示す。
フラグは、フェッチポート30に登録された命令が有効か無効かを示す。例えば、フラグが”0”に設定された命令は、無効な命令であり、実行されない。例えば、演算処理装置10は、フェッチポート30に登録された命令のうち、読み出し用のポインタ(以下、読み出しポインタとも称する)で指定された位置に登録された命令を選択し、選択した命令に従ってデータにアクセスする。例えば、読み出しポインタで指定された位置に登録された命令が実行される度に、読み出しポインタの値が更新される。この際、フラグが”0”に設定された命令は、スキップされる。
読み出しポインタは、データのアクセス処理と並行して更新されるため、NOPのような無意味なサイクルを消費せずに、次の対象(命令)を示す値に更新される。また、例えば、アクセス処理が実行された命令が登録されていた位置、および、フラグが”0”に設定されたことによりスキップされた命令が登録されていた位置には、メモリアクセスに関する命令が新規に登録される。メモリアクセスに関する命令が新規に登録される位置は、例えば、書き込み用のポインタ(以下、書き込みポインタとも称する)により指定される。このように、フェッチポート30では、フラグが”0”に設定されることにより、登録された命令が削除される。
制御部50は、ハードウエアプリフェッチ制御装置40によるプリフェッチが実行された場合、不要なプリフェッチ命令がフェッチポート30に登録されているか否かを判定する。例えば、制御部50は、プリフェッチキュー42のライン情報に基づいて算出されたアクセス先にアクセスするプリフェッチ命令がフェッチポート30に登録されているか否かを、フェッチポート30に記憶された命令コードおよびアドレス情報に基づいて判定する。
そして、制御部50は、ライン情報に基づいて算出されたアクセス先にアクセスするプリフェッチ命令がフェッチポート30に登録されている場合、ライン情報に基づいて算出されたアクセス先にアクセスするプリフェッチ命令を無効にする。すなわち、制御部50は、プリフェッチキュー42のライン情報に基づいて算出されたアクセス先にアクセスするプリフェッチ命令を不要なプリフェッチ命令として無効にする。
例えば、制御部50は、比較部52、54、56およびレジスタ58を有する。比較部52、54、56は、例えば、プリフェッチキュー42の各エントリ(ハードウエアプリフェッチを並行して実行可能な各エントリ)に対応して設けられる。なお、図2では、図を見やすくするために、プリフェッチキュー42の複数のエントリのうちの1つのエントリに対応する比較部52、54、56を記載している。レジスタ58には、例えば、無効化の対象であるプリフェッチ命令を示す命令コード”11”が設定される。命令コード(図2では、”11”)のレジスタ58への設定は、例えば、コンパイル処理の実行時やランタイムに、一度実行されればよい。
比較部52、54、56による比較処理は、例えば、フェッチポート30に登録された命令に対して、読み出しポインタにより選択される順に実行される。例えば、現状の読み出しポインタが図2のフェッチポート30の一番下の行を示している場合、先ず、フェッチポート30の一番下の行の命令コード、アドレスが比較対象として選択され、フェッチポート30の一番下の行のフラグに比較結果が反映される。
例えば、比較部52は、プリフェッチの対象アドレスに対応するキャッシュラインを示す情報をオフセット付加部44から受信する。そして、比較部52は、フェッチポート30に登録された命令のうち、読み出しポインタにより選択される命令のアクセス先を示すアドレスとプリフェッチの対象アドレスに対応するキャッシュラインを示す情報とを比較し、比較結果を比較部56に出力する。
図2の例では、読み出しポインタにより選択される命令のアクセス先を示すアドレスとプリフェッチの対象アドレスに対応するキャッシュラインとの両方がキャッシュライン“A+3”である。このため、比較部52は、読み出しポインタにより選択される命令のアクセス先を示すアドレスとプリフェッチの対象アドレスに対応するキャッシュラインとが一致することを示す比較結果を、比較部56に出力する。例えば、比較部52は、比較結果が真であることを示す情報を、比較部56に出力する。
また、例えば、比較部54は、フェッチポート30に登録された命令のうち、読み出しポインタにより選択される命令の命令コードとレジスタ58に設定された命令コードとを比較し、比較結果を比較部56に出力する。図2の例では、読み出しポインタにより選択される命令の命令コードとレジスタ58に設定された命令コードとの両方が命令コード“11”である。このため、比較部54は、読み出しポインタにより選択される命令の命令コードとレジスタ58に設定された命令コードとが一致することを示す比較結果を、比較部56に出力する。例えば、比較部54は、比較結果が真であることを示す情報を、比較部56に出力する。
比較部56は、比較部52の比較結果と比較部54の比較結果とを比較し、両方の比較結果が真である場合、フェッチポート30に登録された命令のうち、読み出しポインタにより選択される命令のフラグを“0”に設定する。なお、比較部56は、比較部52の比較結果と比較部54の比較結果とのいずれかが偽である場合、フラグの値を変更しない。これにより、現状の読み出しポインタが示す位置の命令に対する比較処理(比較部52、54、56による比較処理)が終了する。
図2の例では、比較部56は、比較部52の比較結果と比較部54の比較結果とを比較し、両方の比較結果が真であるため、読み出しポインタにより選択される命令のフラグ(図2のフェッチポート30の一番下の行のフラグ)を“0”に設定する。これにより、図2のフェッチポート30の一番下の行のプリフェッチ命令が無効になる。
また、例えば、読み出しポインタが次に示す位置が、図2のフェッチポート30の下から2行目の場合、図2のフェッチポート30の下から2行目の命令に対して、比較処理(比較部52、54、56による比較処理)が実行される。例えば、比較部52は、図2のフェッチポート30の下から2行目の命令のアクセス先を示すアドレス“D”とプリフェッチの対象アドレスに対応するキャッシュライン“A+3”とが一致しないことを示す比較結果を、比較部56に出力する。例えば、比較部52は、比較結果が偽であることを示す情報を、比較部56に出力する。
また、例えば、比較部54は、図2のフェッチポート30の下から2行目の命令の命令コード“10”とレジスタ58に設定された命令コード“11”とが一致しないことを示す比較結果を、比較部56に出力する。例えば、比較部54は、比較結果が偽であることを示す情報を、比較部56に出力する。比較部56は、比較部52の比較結果と比較部54の比較結果とが偽であるため、図2のフェッチポート30の下から2行目の命令のフラグの値を“1”に維持する。
このように、比較部52、54、56による一連の比較処理は、所定の順序で、フェッチポート30に登録された命令毎に実行される。なお、所定の順序は、読み出しポインタにより選択される順に限定されない。また、比較部52、54、56による一連の比較処理は、フェッチポート30に登録された全ての命令に対して実行されてもよいし、フェッチポート30に登録された命令のうち、予め設定された上限の個数までの命令に対して実行されてもよい。例えば、ハードウエアプリフェッチ要求が発行されてから次のハードウエアプリフェッチ要求が発行されるまでの期間内に処理可能な数(比較対象の命令数)が、上限の個数として設定されてもよい。
また、図2の制御部50では、比較部52、54、56による比較処理で、不要なプリフェッチ命令がフェッチポート30に登録されているか否かの判定を実現できる。このため、この実施形態では、不要なプリフェッチ命令の検出に複雑な判定アルゴリズムを使用する構成に比べて、演算処理装置10の回路規模の増加を抑制できる。
なお、フェッチポート30、ハードウエアプリフェッチ制御装置40および制御部50の構成は、この例に限定されない。例えば、フェッチポート30は、ロード命令等によりアクセスされるデータの論理アドレス(例えば、メインメモリ100のアドレス)をアドレス情報として記憶してもよい。この場合、制御部50は、論理アドレスに対応するキャッシュラインを算出する変換回路を有する。比較部52は、変換回路で算出されたキャッシュラインのライン番号とオフセット付加部44から受信した情報が示すライン番号とを比較する。
例えば、キャッシュメモリ80のキャッシュラインのライン番号をCL、ラインサイズをLS(バイト)、1ウエイあたりの容量をWS(キロバイト)、論理アドレスをaddrとした場合、ライン番号CLは、式(1)で表される。なお、論理アドレスaddrは、例えば、メインメモリ100のアドレスである。
CL=mod(addr/LS,(WS×1024)/LS) ・・・(1)
式(1)のmodは剰余演算子である。すなわち、キャッシュラインのライン番号CLは、”addr/LS”を”(WS×1024)/LS”で割った余りに対応する。
また、例えば、フェッチポート30に記憶される情報からフラグが省かれてもよい。この場合、比較部56は、不要なプリフェッチ命令の命令コードを、NOP命令を示す命令コードに書き換えることにより、不要なプリフェッチ命令を無効にする。また、例えば、無効化の対象であるプリフェッチ命令を示す命令コードを変更しない場合等、レジスタ58は、省かれてもよい。この場合、無効化の対象であるプリフェッチ命令を示す命令コード”11”は、例えば、演算処理装置10内に固定値で設定される。
また、例えば、演算処理装置10は、フェッチポート30を、プリフェッチ命令専用のフェッチポートと、プリフェッチ命令以外の命令(ロード命令、ストア命令等)用のフェッチポートとに分けて有してもよい。この場合、比較部54は、省かれてもよい。
図3は、図1に示した演算処理装置10の動作の一例を示す。なお、図3は、演算処理装置10の制御方法の一形態を示す。図3の動作は、不要なプリフェッチ命令を無効にする際の演算処理装置10の動作に対応する。なお、命令のデコード、メモリアクセスに関する命令のフェッチポート30への登録、命令に基づく演算等は、例えば、図3の動作と並行して実行される。図3の動作は、ハードウエアのみで実現されてもよく、ハードウエアをソフトウエアにより制御することにより実現されてもよい。
ステップS100では、演算処理装置10は、ハードウエアプリフェッチを実行するか否かを判定する。ハードウエアプリフェッチが実行される場合(ステップS100のYes)、演算処理装置10の動作は、ステップS110に移る。一方、ハードウエアプリフェッチが実行されない場合(ステップS100のNo)、演算処理装置10の動作は、ステップS100に戻る。すなわち、ステップS110−S150は、ハードウエアプリフェッチが実行される度に実行される。
ステップS110では、制御部50は、フェッチポート30に登録された命令から、判定対象の命令を選択する。例えば、制御部50は、不要なプリフェッチ命令か否かの判定が実行されていない判定対象の命令のうち、命令の実行順が最も早い命令を選択する。
ステップS120では、制御部50は、ステップS110で選択した命令がプリフェッチ命令か否かを判定する。例えば、比較部54は、ステップS110で選択された命令の命令コードとレジスタ58に設定された命令コードとを比較する。ステップS110で選択された命令がプリフェッチ命令の場合(ステップS120のYes)、演算処理装置10の動作は、ステップS130に移る。一方、ステップS110で選択された命令がプリフェッチ命令でない場合(ステップS120のNo)、演算処理装置10の動作は、ステップS150に移る。
ステップS130では、制御部50は、ステップS110で選択した命令のアクセス先がハードウエアプリフェッチのアクセス先と一致するか否かを判定する。例えば、比較部52は、ステップS110で選択された命令のアクセス先を示すアドレスとオフセット付加部44から受信した情報が示すアドレスとを比較する。
ステップS110で選択された命令のアクセス先がハードウエアプリフェッチのアクセス先と一致する場合(ステップS130のYes)、演算処理装置10の動作は、ステップS140に移る。すなわち、ステップS110で選択された命令が不要なプリフェッチ命令の場合、演算処理装置10の動作は、ステップS140に移る。一方、ステップS110で選択された命令のアクセス先がハードウエアプリフェッチのアクセス先と一致しない場合(ステップS130のNo)、演算処理装置10の動作は、ステップS150に移る。すなわち、ステップS110で選択された命令が不要なプリフェッチ命令でない場合、演算処理装置10の動作は、ステップS150に移る。
ステップS140では、制御部50は、ステップS110で選択した命令に無効フラグを設定する。例えば、比較部54は、フェッチポート30に登録された命令のうち、ステップS110で選択された命令のフラグを”0”に設定する。
ステップS150では、制御部50は、判定対象の全ての命令に対して、不要なプリフェッチ命令か否かの判定が実行されたか否かを判定する。なお、判定対象の命令は、フェッチポート30に登録された全ての命令でもよいし、予め設定された上限の個数までの命令でもよい。
不要なプリフェッチ命令か否かの判定が実行されていない判定対象の命令がフェッチポート30に存在する場合(ステップS150のNo)、演算処理装置10の動作は、ステップS110に戻る。一方、不要なプリフェッチ命令か否かの判定が実行されていない判定対象の命令がフェッチポート30に存在しない場合(ステップS150のYes)、不要なプリフェッチ命令を無効にする処理は、終了する。すなわち、不要なプリフェッチ命令か否かの判定が判定対象の全ての命令に対して実行された場合、不要なプリフェッチ命令を無効にする処理は、終了する。
このように、制御部50は、ハードウエアプリフェッチによりキャッシュメモリ80に転送されるデータに含まれるデータをメインメモリ100からキャッシュメモリ80に転送する不要なプリフェッチ命令がフェッチポート30に登録されているか否かを判定する。そして、制御部50は、不要なプリフェッチ命令がフェッチポート30に登録されている場合、不要なプリフェッチ命令を無効にする。これにより、演算処理装置10は、不要なプリフェッチ命令によるメモリアクセスを低減できる。
なお、演算処理装置10の動作は、この例に限定されない。例えば、ステップS120は、ステップS130の後に実行されてもよい。
図4は、配列データZ(LIST(i))のアクセス順とプリフェッチとの関係の一例を示す。図4に示したソースプログラムSPRGでは、例えば、配列データZ(LIST(i))で示される値をYに加算する演算がn回繰り返される。以下、配列データZ(LIST(i))を配列データZとも称する。例えば、配列データZのアクセス先は、配列データLIST(i)で指定され、演算処理装置10でソースプログラムSPRGを実行したときに確定する。図4の例では、配列データZは、プリフェッチ命令の挿入対象のデータである。
例えば、プリフェッチ命令の挿入対象のデータは、コンパイラに指示を与える最適化制御行やプラグマ等により指定される。最適化制御行は、例えば、FORTRANで用いられる。また、例えば、プラグマは、C言語等で用いられる。例えば、ユーザは、配列データZ(LIST(i))をプリフェッチ命令の挿入対象のデータとして指定する最適化制御行(例えば、「!ocl prefetch_beaten(LIST(i+α))」)をソースプログラムSPRG内に記述してもよい。この場合、配列データZ(LIST(i))に対するプリフェッチ命令(例えば、図4のprefetch Z(LIST(i+α))が生成される。
なお、プリフェッチ命令の挿入は、例えば、翻訳オプションで指定されてもよい。この場合、演算処理装置10でソースプログラムSPRGを実行したときにアクセス先が確定するデータ(以下、不規則な間接アクセスデータとも称する)を、プリフェッチ命令の挿入対象のデータとしてコンパイル処理が実行される。
図の符号iは、配列データZのアクセス順に対応する。図の配列データLIST(i)の値は、配列データZのアクセス先(メモリ領域のアドレス)に対応する。
ケース1では、配列データLIST(1)、配列データLIST(2)、配列データLIST(3)のそれぞれの値は、555、11、2000である。したがって、配列データZ(555)、配列データZ(11)、配列データZ(2000)の順で、アクセスされる。このように、配列データZのアクセス先は、メモリ領域のアドレス555、11、2000の順に、不規則に変化する。
このため、配列データZに対するハードウエアプリフェッチは実行されない。なお、配列データZに対するソフトウエアプリフェッチは、実行される。したがって、配列データZに対するプリフェッチ命令が挿入される。図の「prefetch Z(LIST(i+α))」は、α要素先の配列データZをプリフェッチすることを示す。これにより、不規則な間接アクセスデータに対しても、プリフェッチが実行される。この結果、この実施形態では、データを参照するときの待ち時間を短縮できる。
一方、ケース2では、配列データLIST(1)、配列データLIST(2)、配列データLIST(3)、配列データLIST(4)のそれぞれの値は、1、2、3、4である。したがって、配列データZ(1)、配列データZ(2)、配列データZ(3)、配列データZ(4)の順で、アクセスされる。このように、配列データZのアクセス先は、メモリ領域のアドレス1、2、3、4の順に、連続的に変化する。
このため、配列データZに対するハードウエアプリフェッチが実行される。これにより、この実施形態では、データを参照するときの待ち時間を短縮できる。なお、配列データZに対するハードウエアプリフェッチが実行されるため、図1から図3で説明したように、配列データZに対するプリフェッチ命令(ソフトウエアプリフェッチにより挿入されたプリフェッチ命令)は、実行されない。すなわち、この実施形態では、プリフェッチ命令の対象データに対して、ハードウエアプリフェッチとソフトウエアプリフェッチとの両方が実行されることを抑止できる。
例えば、演算処理装置10は、ハードウエアプリフェッチが実行された配列データZに対するプリフェッチ命令の実行を抑止する。これにより、この実施形態では、不要なプリフェッチ命令が実行されることを抑止できる。この結果、この実施形態では、不要なプリフェッチ命令の実行による演算処理装置10の性能低下(例えば、命令数の増加、バスの消費量の増加による転送速度の低下等の性能低下)を低減できる。
以上、図1から図4に示した実施形態の演算処理装置10および演算処理装置10の制御方法では、不要なプリフェッチ命令がフェッチポート30に登録されているか否かを判定する。そして、例えば、演算処理装置10は、不要なプリフェッチ命令がフェッチポート30に登録されている場合、不要なプリフェッチ命令を無効にする。不要なプリフェッチ命令は、例えば、ハードウエアプリフェッチ制御装置40によりキャッシュメモリ80に転送されるデータに含まれるデータをメインメモリ100からキャッシュメモリ80に転送するプリフェッチ命令である。
このように、この実施形態では、不要なプリフェッチ命令を無効にできるため、不要なプリフェッチ命令が実行されることを抑止できる。この結果、この実施形態では、不要なプリフェッチ命令によるメモリアクセスを低減できる。これにより、この実施形態では、不要なプリフェッチ命令の実行による演算処理装置10の性能低下を低減できる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチを実行可能な演算処理装置において、
命令をデコードするデコード部と、
デコードされた前記命令のうち、メモリアクセスに関する前記命令が登録される命令保持部と、
前記メモリに記憶された前記データを事前に前記キャッシュメモリに転送するプリフェッチ命令とは別の所定の契機で、前記プリフェッチを実行するハードウエアプリフェッチ制御部と、
前記ハードウエアプリフェッチ制御部により前記キャッシュメモリに転送される前記データに含まれる前記データを前記メモリから前記キャッシュメモリに転送する不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にする制御部とを有することを特徴とする演算処理装置。
(付記2)
付記1に記載の演算処理装置において、
前記制御部は、不要な前記プリフェッチ命令を前記命令保持部から削除することにより、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置。
(付記3)
付記1または付記2に記載の演算処理装置において、
前記ハードウエアプリフェッチ制御部は、前記所定の契機を検出する際に参照される第1アドレス情報を記憶するアドレス保持部を有し、前記アドレス保持部に記憶した前記第1アドレス情報に基づいて前記プリフェッチのアクセス先を算出し、
前記命令保持部は、前記命令の種類を示す命令コードと、前記命令のアクセス先を示す第2アドレス情報とを記憶し、
前記制御部は、前記ハードウエアプリフェッチ制御部による前記プリフェッチが実行された場合、前記第1アドレス情報に基づいて算出されたアクセス先にアクセスする不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを、前記命令保持部に記憶された前記命令コードおよび前記第2アドレス情報に基づいて判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置。
(付記4)
メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチを実行可能な演算処理装置の制御方法において、
前記演算処理装置が有するデコード部が、命令をデコードし、デコードした前記命令のうち、メモリアクセスに関する前記命令を命令保持部に登録し、
前記演算処理装置が有するハードウエアプリフェッチ制御部が、前記メモリに記憶された前記データを事前に前記キャッシュメモリに転送するプリフェッチ命令とは別の所定の契機で、前記プリフェッチを実行し、
前記演算処理装置が有する制御部が、前記ハードウエアプリフェッチ制御部により前記キャッシュメモリに転送される前記データに含まれる前記データを前記メモリから前記キャッシュメモリに転送する不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置の制御方法。
(付記5)
付記4に記載の演算処理装置の制御方法において、
前記制御部は、不要な前記プリフェッチ命令を前記命令保持部から削除することにより、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置の制御方法。
(付記6)
付記4または付記5に記載の演算処理装置の制御方法において、
前記ハードウエアプリフェッチ制御部が、前記所定の契機を検出する際に参照する第1アドレス情報をアドレス保持部に記憶し、前記アドレス保持部に記憶した前記第1アドレス情報に基づいて前記プリフェッチのアクセス先を算出し、
前記演算処理装置が、前記命令の種類を示す命令コードと、前記命令のアクセス先を示す第2アドレス情報とを前記命令保持部に記憶し、
前記ハードウエアプリフェッチ制御部が前記プリフェッチを実行した場合、前記制御部が、前記第1アドレス情報に基づいて算出されたアクセス先にアクセスする不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを、前記命令保持部に記憶された前記命令コードおよび前記第2アドレス情報に基づいて判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10‥演算処理装置;20‥命令デコーダ;30‥フェッチポート;40‥ハードウエアプリフェッチ制御装置;42‥プリフェッチキュー;44‥オフセット付加部;50‥制御部;52、54、56‥比較部;60a、60b‥リザベーションステーション;70a、70b‥演算部;80‥キャッシュメモリ;100‥メインメモリ

Claims (4)

  1. メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチを実行可能な演算処理装置において、
    命令をデコードするデコード部と、
    デコードされた前記命令のうち、メモリアクセスに関する前記命令が登録される命令保持部と、
    前記メモリに記憶された前記データを事前に前記キャッシュメモリに転送するプリフェッチ命令とは別の所定の契機で、前記プリフェッチを実行するハードウエアプリフェッチ制御部と、
    前記ハードウエアプリフェッチ制御部により前記キャッシュメモリに転送される前記データに含まれる前記データを前記メモリから前記キャッシュメモリに転送する不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にする制御部とを有することを特徴とする演算処理装置。
  2. 請求項1に記載の演算処理装置において、
    前記制御部は、不要な前記プリフェッチ命令を前記命令保持部から削除することにより、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置。
  3. 請求項1または請求項2に記載の演算処理装置において、
    前記ハードウエアプリフェッチ制御部は、前記所定の契機を検出する際に参照される第1アドレス情報を記憶するアドレス保持部を有し、前記アドレス保持部に記憶した前記第1アドレス情報に基づいて前記プリフェッチのアクセス先を算出し、
    前記命令保持部は、前記命令の種類を示す命令コードと、前記命令のアクセス先を示す第2アドレス情報とを記憶し、
    前記制御部は、前記ハードウエアプリフェッチ制御部による前記プリフェッチが実行された場合、前記第1アドレス情報に基づいて算出されたアクセス先にアクセスする不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを、前記命令保持部に記憶された前記命令コードおよび前記第2アドレス情報に基づいて判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置。
  4. メモリに記憶されたデータを事前にキャッシュメモリに転送するプリフェッチを実行可能な演算処理装置の制御方法において、
    前記演算処理装置が有するデコード部が、命令をデコードし、デコードした前記命令のうち、メモリアクセスに関する前記命令を命令保持部に登録し、
    前記演算処理装置が有するハードウエアプリフェッチ制御部が、前記メモリに記憶された前記データを事前に前記キャッシュメモリに転送するプリフェッチ命令とは別の所定の契機で、前記プリフェッチを実行し、
    前記演算処理装置が有する制御部が、前記ハードウエアプリフェッチ制御部により前記キャッシュメモリに転送される前記データに含まれる前記データを前記メモリから前記キャッシュメモリに転送する不要な前記プリフェッチ命令が前記命令保持部に登録されているか否かを判定し、不要な前記プリフェッチ命令が前記命令保持部に登録されている場合、不要な前記プリフェッチ命令を無効にすることを特徴とする演算処理装置の制御方法。
JP2014100210A 2014-05-14 2014-05-14 演算処理装置および演算処理装置の制御方法 Active JP6252348B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014100210A JP6252348B2 (ja) 2014-05-14 2014-05-14 演算処理装置および演算処理装置の制御方法
US14/695,341 US9830268B2 (en) 2014-05-14 2015-04-24 Arithmetic processing device for disabling an unnecessary prefetch command and control method of arithmetic processing device for disabling an unnecessary prefetch command

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014100210A JP6252348B2 (ja) 2014-05-14 2014-05-14 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015219550A JP2015219550A (ja) 2015-12-07
JP6252348B2 true JP6252348B2 (ja) 2017-12-27

Family

ID=54538626

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014100210A Active JP6252348B2 (ja) 2014-05-14 2014-05-14 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US9830268B2 (ja)
JP (1) JP6252348B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477774B2 (en) * 2013-09-25 2016-10-25 Akamai Technologies, Inc. Key resource prefetching using front-end optimization (FEO) configuration
US10452395B2 (en) 2016-07-20 2019-10-22 International Business Machines Corporation Instruction to query cache residency
US10621095B2 (en) * 2016-07-20 2020-04-14 International Business Machines Corporation Processing data based on cache residency
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US11645207B2 (en) * 2020-09-25 2023-05-09 Advanced Micro Devices, Inc. Prefetch disable of memory requests targeting data lacking locality

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222990A (ja) * 1992-10-16 1994-08-12 Fujitsu Ltd データ処理装置
JP3218932B2 (ja) * 1995-07-06 2001-10-15 株式会社日立製作所 データプリフェッチコード生成方法
US6134633A (en) * 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
JP3741945B2 (ja) * 1999-09-30 2006-02-01 富士通株式会社 命令フェッチ制御装置
JP2001166989A (ja) 1999-12-07 2001-06-22 Hitachi Ltd プリフェッチ機構を有するメモリシステム及びその動作方法
US7174434B2 (en) * 2001-02-24 2007-02-06 International Business Machines Corporation Low latency memory access and synchronization
JP3969009B2 (ja) 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US6785772B2 (en) * 2002-04-26 2004-08-31 Freescale Semiconductor, Inc. Data prefetching apparatus in a data processing system and method therefor
US6931494B2 (en) * 2002-09-09 2005-08-16 Broadcom Corporation System and method for directional prefetching
US7032076B2 (en) * 2002-09-16 2006-04-18 Intel Corporation Prefetching data in a computer system
JP5059609B2 (ja) * 2004-08-17 2012-10-24 エヌヴィディア コーポレイション メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
JP2006330813A (ja) 2005-05-23 2006-12-07 Hitachi Ltd プリフェッチ起動命令挿入機能を備えたコンパイラ装置
JP4945200B2 (ja) * 2006-08-29 2012-06-06 株式会社日立製作所 計算機システム及びプロセッサの制御方法
WO2008093399A1 (ja) * 2007-01-30 2008-08-07 Fujitsu Limited 情報処理システムおよび情報処理方法
US8260990B2 (en) 2007-11-19 2012-09-04 Qualcomm Incorporated Selective preclusion of a bus access request
JP2009230374A (ja) 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
JP5251688B2 (ja) 2009-04-02 2013-07-31 富士通株式会社 コンパイラプログラムおよびコンパイラ装置
JP5609092B2 (ja) * 2009-12-09 2014-10-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5238797B2 (ja) 2010-12-20 2013-07-17 パナソニック株式会社 コンパイラ装置
US9043579B2 (en) * 2012-01-10 2015-05-26 International Business Machines Corporation Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest
US9542190B2 (en) * 2012-02-14 2017-01-10 Renesas Electronics Corporation Processor with fetch control for stoppage
US9268881B2 (en) * 2012-10-19 2016-02-23 Intel Corporation Child state pre-fetch in NFAs
US9442727B2 (en) * 2013-10-14 2016-09-13 Oracle International Corporation Filtering out redundant software prefetch instructions

Also Published As

Publication number Publication date
JP2015219550A (ja) 2015-12-07
US9830268B2 (en) 2017-11-28
US20150331800A1 (en) 2015-11-19

Similar Documents

Publication Publication Date Title
JP6488711B2 (ja) 演算処理装置および演算処理装置の制御方法
US7716427B2 (en) Store stream prefetching in a microprocessor
US7904661B2 (en) Data stream prefetching in a microprocessor
US8316188B2 (en) Data prefetch unit utilizing duplicate cache tags
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
JP3640355B2 (ja) キャッシュ制御の命令プリフェッチ方法及びシステム
US8166250B2 (en) Information processing unit, program, and instruction sequence generation method
JP6252348B2 (ja) 演算処理装置および演算処理装置の制御方法
KR20240023151A (ko) 범위 프리페치 명령어
US20140215185A1 (en) Fetching instructions of a loop routine
JP6265041B2 (ja) コンパイルプログラム、コンパイル方法およびコンパイル装置
US9201798B2 (en) Processor instruction based data prefetching
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
US10031852B2 (en) Arithmetic processing apparatus and control method of the arithmetic processing apparatus
US20050198439A1 (en) Cache memory prefetcher
JP4030314B2 (ja) 演算処理装置
US8443176B2 (en) Method, system, and computer program product for reducing cache memory pollution
JP2001273137A (ja) マイクロプロセッサ
US20080250211A1 (en) Cache control method, cache device, and microcomputer
JP3770091B2 (ja) キャッシュ制御方法及びキャッシュ制御回路
JP5116275B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
CN107193757A (zh) 数据预取方法、处理器和设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170803

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171023

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171113

R150 Certificate of patent or registration of utility model

Ref document number: 6252348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150