JP2009230374A - 情報処理装置,プログラム,及び命令列生成方法 - Google Patents

情報処理装置,プログラム,及び命令列生成方法 Download PDF

Info

Publication number
JP2009230374A
JP2009230374A JP2008073863A JP2008073863A JP2009230374A JP 2009230374 A JP2009230374 A JP 2009230374A JP 2008073863 A JP2008073863 A JP 2008073863A JP 2008073863 A JP2008073863 A JP 2008073863A JP 2009230374 A JP2009230374 A JP 2009230374A
Authority
JP
Japan
Prior art keywords
instruction
unit
address
prefetch
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.)
Withdrawn
Application number
JP2008073863A
Other languages
English (en)
Inventor
Hideki Ogawara
英喜 大河原
Masatoshi Haraguchi
正寿 原口
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 JP2008073863A priority Critical patent/JP2009230374A/ja
Priority to US12/334,795 priority patent/US8166250B2/en
Priority to EP10187472A priority patent/EP2299356A1/en
Priority to EP08171949A priority patent/EP2131276A3/en
Priority to KR1020080136801A priority patent/KR100976433B1/ko
Priority to CN2009100060393A priority patent/CN101539853B/zh
Publication of JP2009230374A publication Critical patent/JP2009230374A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】プリフェッチによってより効果的な性能向上を得ることができるようにする。
【解決手段】命令実行部15と記憶部11との間に介装された少なくとも一つのキャッシュメモリ12,13と、ハードウェアプリフェッチ要求発行部22aによる、メモリアクセス要求があったアドレスとアドレス情報保持部21に保持されたアドレス情報との比較処理の結果に基づいてアドレス情報の内容を制御する制御部25とを備え、制御部25が、アドレス情報保持部21にアドレス情報を保持させると、あるいは、アドレス情報保持部21のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止するように構成する。
【選択図】図1

Description

本発明は、情報処理装置において行なわれるプリフェッチに用いて好適な技術に関する。
従来から、コンピュータはCentral Processing Unit(CPU)と、主記憶装置との間に少なくとも1階層のキャッシュメモリを有し、主記憶装置のアクセスレーテンシ隠蔽やスループット不足の改善を図っている。
CPUの高速化・高性能化に比べ、メモリシステムの性能向上率は低く、近年、キャッシュメモリのヒット率向上やキャッシュミスレイテンシの隠蔽が益々必要とされている。
これらの問題に対する一つの解決手段として、近い将来必要とされるであろうデータを予めキャッシュメモリに読み込んでおくプリフェッチ手法が用いられている。
プリフェッチの実現方法としては、ソフトウェアによるソフトウェアプリフェッチと、ハードウェアによるハードウェアプリフェッチとの2つに大別される。
ソフトウェアプリフェッチでは、コンパイラやプログラマが予め命令列の中にプリフェッチ命令を明示的に挿入してプリフェッチを行なう。
一方、ハードウェアプリフェッチでは、過去のメモリアクセスアドレスやキャッシュミスアドレス等のアドレスパターンをプリフェッチアドレスキューに記憶しておき、過去のアドレスパターンから連続なメモリアクセスが行なわれた場合に、さらにその先のアドレスをプリフェッチする。
なお、従来から、ハードウェアプリフェッチに関し、プリフェッチに用いられるストライド値を決定するための技術や、命令をメモリからプリフェッチしてキャッシュに格納させる命令キャッシュ装置に関する技術がある(例えば、下記特許文献1,2参照)。
特表2006−510082号公報 特開平11−306028号公報
ところで、従来のソフトウェアプリフェッチでは、予め命令列の中にプリフェッチ命令を明示的に挿入しておくため、柔軟な制御が可能である。しかし、ソフトウェアプリフェッチは、キャッシュミス発生やアドレス計算結果などの動的な振る舞いに応じて必要なプリフェッチ命令を挿入するのが困難である。
さらに、ソフトウェアプリフェッチは、プリフェッチを行なうキャッシュライン単位に必要最低限の一発のプリフェッチ命令のみを挿入するのが困難であり、すべてのキャッシュライン単位にプリフェッチ命令を挿入することが多いので、実際には不必要な冗長なプリフェッチ命令が挿入されるという問題点もある。
一方、従来のハードウェアプリフェッチでは、プリフェッチアドレスキューがアドレスパターンを記録可能なエントリ数を超える複数系列の連続アクセスが同時に発生した場合には、Least Recently Used(LRU)制御によって、既存のエントリ上に連続アクセスに係る新たなアドレスパターンを上書きする。
しかし、複数系列の連続アクセスが同時に発生しているため、それら複数系列間で上書きし合ってしまい、連続アクセス検出できず、ハードウェアプリフェッチが生成されなくなる問題が考えられる。
例えば、図10に従来のLRU制御によってプリフェッチアドレスキュー100に保持されるアドレスパターンの遷移を示す。なお、プリフェッチアドレスレスキュー100は、エントリ0〜3の4エントリを有し、4つのアドレスパターンを記録可能である。
また、図10は、5つの別系列(ここではアクセスアドレスA〜E)のメモリアクセスが同時に行なわれる場合の、プリフェッチアドレスキュー100のアドレスパターンの遷移を示す。ここで、図10において縦方向は時間を示している。
まず、時間t1〜t4にかけて、系列A〜Dのアドレスパターンが順に登録される。ここでは、一般的なハードウェアプリフェッチ機構として、アクセスアドレスの次のキャッシュラインアドレスA+1〜D+1が、アドレスパターンとしてプリフェッチアドレスキューのエントリ0〜3にそれぞれ登録される。
つまり、時間t1における系列Aのアクセスの発生に応じてエントリ0にアドレスパターンA+1が登録される。また、時間t2における系列Bのアクセスの発生に応じてエントリ1にアドレスパターンB+1が登録される。さらに、時間t3における系列Cのアクセスの発生に応じてエントリ2にアドレスパターンC+1が登録される。そして、時間t4における系列Dのアクセスの発生に応じてエントリ3にアドレスパターンD+1が登録される。
これにより、プリフェッチアドレスキュー100は全エントリ0〜3が使用されている状態になる。
さらに連続アクセスが進んで時間t5において後続の系列Eのアクセスが発生すると、LRU制御によって、最も古いエントリ0のアドレスパターンA+1が上書きされて、エントリ0にアドレスパターンE+1が登録される。
その後、時間t6において系列Aの連続アクセスが発生しても、時間t4まではエントリ0に登録されていたアドレスパターンA+1は時間t5で上書きされて消去されてしまっている。そのため、このとき系列Aの連続アクセスが発生しているにも係わらず系列Aのプリフェッチ要求の発行が行なえない。
そして、このとき、アドレスパターンA+2が、エントリ1のアドレスパターンB+1に上書き処理される。
以降、図10に示すように、時間t7〜t9に掛けて、系列B〜Dの連続アクセスが発生しても、系列Aと同様に、それら系列B〜Dのプリフェッチ要求も発行できない。
このように、従来のLRU制御によれば、プリフェッチアドレスキュー100のエントリ数よりも多い系列のアクセスが同時期に起きると、プリフェッチアドレスレスキュー100においてそれぞれの系列のアドレスパターンを上書き登録し合ってしまう。その結果、プリフェッチ要求を発行できないという不具合が生じる。
また、ハードウェアプリフェッチは、回路として実装されたアルゴリズムに従って動作するため、プリフェッチ発生するタイミングや、どれだけ先のアドレスをプリフェッチするかの距離が固定的となってしまい、ソフトウェアプリフェッチほど柔軟な制御を行なうことができない。
さらに、従来、ハードウェアプリフェッチはコンパイラやプログラマからは見えない存在であるため、ハードウェアプリフェッチとソフトウェアプリフェッチは独立に最適化を行なっていた。そのため、同じアドレスにソフトウェアプリフェッチとハードウェアプリフェッチとの両方がプリフェッチを行なうなど、最適化効率が悪いという課題もある。
本発明は、このような課題に鑑み創案されたもので、プリフェッチによってより効果的な性能向上を得ることができるようにすることを目的とする。
上記目的を達成するために、この情報処理装置は、命令実行部と記憶部との間に介装された少なくとも一つのキャッシュメモリと、ハードウェアプリフェッチ要求発行部による、メモリアクセス要求があったアドレスとアドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいてアドレス情報の内容を制御する制御部とを備え、制御部は、アドレス情報保持部にアドレス情報を保持させると、あるいは、アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止する。
また、上記目的を達成するために、この情報処理装置は、上記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部を備え、ハードウェアプリフェッチ要求発行部は、指示情報に基づいて、比較処理及びハードウェアプリフェッチ要求の発行処理を実行する。
また、上記目的を達成するために、このプログラムは、上記ハードウェアプリフェッチ対象指示部として、コンピュータを機能させることを要件とする。
さらに、上記目的を達成するために、この命令列生成方法は、アクセス情報保持部が保持しうるアドレス情報のエントリ数に応じて、ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報をメモリアクセス命令に付加し、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する一方、ハードウェアプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止する。
このように、上述した情報処理装置によれば、制御部が、アドレス情報保持部にアドレス情報を保持させると、あるいは、アドレス情報保持部のアドレス情報を更新すると、そのアドレス情報に対する上書き処理を所定期間抑止する。そのため、従来のLRU制御のように、連続アクセスが確認された有効なアドレス情報を登録または更新後すぐに上書き処理によって消去することを抑止できる。つまり、アドレス情報保持部がエントリ数を超える複数系列の連続アクセスが発生しても、登録されているアドレス情報が複数系列のメモリアクセスによって上書きし合うことを確実に抑止できる。その結果、アドレス情報保持部を有効に使用でき、連続アクセスに対するプリフェッチ要求を効率良く発行でき、本情報処理装置はプリフェッチによってより効果的な性能向上を得ることができる。
また、上述したプログラム及び命令列生成方法によれば、プリフェッチ対象指示部が、プリフェッチ要求発行対象であるか否かを示す指示情報を、メモリアクセス命令に付加するので、ソフトウェアプリフェッチ側で、ハードウェアプリフェッチを実行させる否かを決定でき、ソフトウェアプリフェッチとハードウェアプリフェッチを効率良く両立させることができる。その結果、プリフェッチによってより効果的な性能向上を得ることができる。
以下、図面を参照しながら本発明の実施の形態について説明する。
〔1〕本発明の一実施形態について
まず、図1に示す機能ブロック図を参照しながら、本発明の一実施形態としての情報処理装置1の構成について説明する。
図1に示すように、本情報処理装置1は、コンパイル部2,プロセッサユニット(命令発行部・命令実行部)10,主記憶装置(記憶部)11,一次キャッシュ12,二次キャッシュ13,及びハードウェアプリフェッチ制御装置20を有する。本情報処理装置1は、コンパイラによって生成されたプログラム命令列を入力とし、命令発行部・命令実行部10によってプログラムが実行される。
コンパイル部2は、コンパイラによって実現されるものであり、プログラミング言語で記述されたソースコードを、プロセッサユニット10が実行可能な形式に変換するものである。
図2に示すように、コンパイラはソフトウェアであり、プログラマによるプログラム生成後、コンパイラによって実現されるコンパイル部2によってプログラム命令列が生成される。
なお、プログラマによるプログラム生成には、ソフトウェアプリフェッチ命令の生成・挿入や、後述するハードウェアプリフェッチ対象指示が含まれていてもよい。
また、コンパイル部2による命令列生成処理には、コンパイル部2が有するプリフェッチ対象指示部(ハードウェアプリフェッチ対象指示部)3によるハードウェアプリフェッチ対象指示と、コンパイル部2が有するメモリアクセス命令生成部4によるソフトウェアプリフェッチ命令挿入処理が含まれる。
このように、コンパイル部2によって、ソフトウェアプリフェッチを実現される。
一方、ソフトウェアであるコンパイラに対して、プロセッサユニット10,主記憶装置11,一次キャッシュメモリ12a,二次キャッシュメモリ13a,及びハードウェアプリフェッチ制御装置20は、ハードウェアである。
なお、図2の例では、一次キャッシュメモリ12a(即ち、一次キャッシュ12)及びハードウェアプリフェッチ制御装置20がプロセッサユニット10内に設けられた例であるが、本発明において、一次キャッシュ12,二次キャッシュ13,及びハードウェアプリフェッチ制御装置20が設けられる位置は限定されない。
プリフェッチ対象指示部3は、変換した命令列に基づいて、連続アクセスを認識すると、その連続アクセスが発生するメモリアクセス命令について、ハードウェアプリフェッチによるプリフェッチを実行させるか否かを判断する。
つまり、プリフェッチ対象指示部3は、連続アクセスが発生するメモリアクセス命令が、ハードウェアプリフェッチ制御装置20の後述するハードウェアプリフェッチ要求発行部22aによるハードウェアプリフェッチ要求発行対象(以下、プリフェッチ要求発行対象ともいう)であるか否かを決定する。そして、プリフェッチ対象指示部3は、ハードウェアプリフェッチ要求発行部22aによるプリフェッチ要求発行対象であるか否かを示す指示情報(ハードウェアプリフェッチ対象指示)を、そのメモリアクセス命令に付加する。
つまり、指示情報は、ハードウェアプリフェッチ要求発行部22aにハードウェアプリフェッチ要求を発行させるか否かを指示する情報である。
メモリアクセス命令生成部4は、連続アクセスが発生するメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するものである。なお、コンパイル部2は、メモリアクセス命令生成部によってソフトウェアプリフェッチ命令を挿入された命令列をメモリアクセス命令として出力する。
具体的には、メモリアクセス命令生成部4は、プリフェッチ対象指示部3によってプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止する。
一方、メモリアクセス命令生成部4は、プリフェッチ対象指示部3によって連続アクセスが発生すると判断され、且つ、プリフェッチ要求発行対象ではない(即ち、プリフェッチ発行非対象である)ことを示す指示情報が付加されたメモリアクセス命令については、ソフトウェアプリフェッチを実行すべく、ソフトウェアプリフェッチ命令を生成し命令列に挿入する。
プロセッサユニット10は、計算処理を実行するものであり、命令解読部14及び命令実行部15を有する。
命令解読部14は、コンパイル部2によって生成されたプログラム命令列(単に命令列ともいう)を命令実行部15が実行可能に解読するものである。
命令実行部15は、命令解読部14によって解読されたメモリアクセス命令を実行するものであり、一次キャッシュ12に対してメモリアクセス要求を行なう。なお、以降の説明において、そのメモリアクセス要求にかかるメモリアクセス要求アドレスをアクセスアドレスという。
また、命令実行部15から一次キャッシュ12へのメモリアクセス要求(アクセスアドレス)は、プリフェッチ対象指示部3によって付加されたハードウェアプリフェッチ対象指示とともに、ハードウェアプリフェッチ制御装置20の後述するアクセスパターン監視部22にも入力される。
主記憶装置11は、命令実行部15によって実行されるメモリアクセス命令にかかるデータを保持するものである。
一次キャッシュ12は、アクセス速度の速い一次キャッシュメモリ12aと、その制御装置12bとを有する。なお、一次キャッシュ12の制御単位は例えば64B(バイト)である。
二次キャッシュ13は、主記憶装置11よりアクセス速度が速く一次キャッシュ12の一次キャッシュメモリ12aより容量の大きい二次キャッシュメモリ13aと、その制御装置13bとを有する。なお、二次キャッシュ13の制御単位は例えば256Bである。
一次キャッシュ12は、プロセッサユニット10からのメモリアクセス要求に対して、アクセスアドレスのデータを自身が保持していれば、そのデータをフェッチデータとしてプロセッサユニットに出力する(図中“メモリアクセスデータ”参照)。
一方、一次キャッシュ12は、アクセスアドレスのデータを自身が保持していなければ、そのデータを二次キャッシュ13に要求する(図中“一次キャッシュ登録要求”参照)。
二次キャッシュ13は、一次キャッシュ12から要求されたデータを保持していれば、一次キャッシュ12に応答する(図中“一次キャッシュ登録データ”参照)。
しかし、二次キャッシュ13は要求されたデータを保持していなければ、主記憶装置11に対してそのデータの要求を行なう(図中“二次キャッシュ登録要求”参照)。そして、主記憶装置11は、そのデータを二次キャッシュ13に応答する(図中“二次キャッシュ登録データ”参照)。
そして、そのデータは、主記憶装置11から二次キャッシュ13及び一次キャッシュ12を介してプロセッサユニット10に出力される。
ハードウェアプリフェッチ制御装置20は、登録済みの過去のアドレスパターンと、後続メモリアクセス命令のアクセスアドレスとの比較処理の結果を基に連続アクセスを検出してキャッシュブロックのハードウェアプリフェッチ要求を発行するものである。
そして、ハードウェアプリフェッチ制御装置20は、プリフェッチアドレスキュー(アドレス情報保持部)21,アクセスパターン監視部22,一次キャッシュプリフェッチ要求発行部23,二次キャッシュプリフェッチ要求発行部24,及びプリフェッチアドレスキュー更新部(制御部)25を有する。
プリフェッチアドレスキュー21は、命令実行部15によって実行されたメモリアクセス命令のアクセスアドレスに基づくアドレスパターン(アドレス情報)を保持するものである。
ここでは、プリフェッチアドレスキュー21は、エントリ0〜NのN+1個のエントリを有し、例えば、各エントリ0〜Nにアクセスアドレスの次のキャッシュラインアドレスを、アドレス情報として保持する。
なお、プリフェッチアドレスキュー21の内容は、プリフェッチアドレスキュー更新部25によって制御される。
また、プリフェッチアドレスキュー21は、各エントリ0〜Nにアドレスパターンが登録されているか否かを示すフラグを有している。
さらに、プリフェッチアドレスキュー21は、複数のエントリ0〜N毎に対応するカウンタ21a−0〜N(図中、符号21aで示す)を有している。
このカウンタ21a−0〜N(以下、これらカウンタ21a−0〜Nを特に区別しない場合には、単にカウンタ21aという。)は、アドレスパターンが新たに保持、あるいは、更新されてからのクロックサイクル数を複数のエントリ0〜N毎にカウントする。
ここで、クロックサイクルとは、この情報処理装置1(例えばプロセッサユニット10)のクロックサイクルである。
アクセスパターン監視部22は、プロセッサユニット10の命令実行部15からのメモリアクセス要求があったアクセスアドレスと、プリフェッチアドレスキュー21に保持されたアドレスパターンとの比較処理を行なうものである。
ここでは、アクセスパターン監視部22は、メモリアクセス要求に付加された指示情報に基づいて、指示情報がプリフェッチ要求発行対象であることを示す場合は、上記比較処理を行なう。
しかし、指示情報がプリフェッチ要求発行対象でないことを示す場合は、アクセスパターン監視部22は上記比較処理を行なわない。つまり、この場合、アクセスパターン監視部22は、比較処理の実行を抑止して、プリフェッチ要求発行処理を抑止する。
したがって、ハードウェアプリフェッチ制御装置20は、指示情報がプリフェッチ要求発行対象でないことを示すメモリアクセス要求に対しては、動作しない。
そして、アクセスパターン監視部22は、上記比較処理の結果、アクセスアドレスと、プリフェッチアドレスキュー21に保持されたアドレスパターンとが一致すれば、一次キャッシュプリフェッチ要求発行部23または二次キャッシュプリフェッチ要求発行部24にプリフェッチ要求を発行させる。
つまり、アクセスパターン監視部22は、比較処理の結果、過去に近傍アドレスへのアクセスが行なわれていて(即ち、プリフェッチアドレスキュー21にアドレスパターン登録済みで)、連続アクセスが進んでいるのが検出された場合、近い将来さらに連続アクセスが進むと判断してプリフェッチ要求を発行させる。
なお、一次キャッシュプリフェッチ要求発行部23にプリフェッチ要求を発行させるか、あるいは、二次キャッシュプリフェッチ要求発行部24にプリフェッチ要求を発行させるかは、本発明において限定されるものではなく、例えばハードウェアプリフェッチ制御装置20の仕様によって決定される。
一次キャッシュプリフェッチ要求発行部23は、アクセスパターン監視部22からの指示に応じて、プリフェッチ要求を一次キャッシュ12に発行する。
具体的には、一次キャッシュプリフェッチ要求発行部23は、アドレスパターン、即ち、アクセスアドレスの次のキャッシュラインの1ブロック分のデータを一次キャッシュ12にプリフェッチさせる要求を発行する。
なお、一次キャッシュプリフェッチ要求発行部23及び二次キャッシュプリフェッチ要求発行部24がプリフェッチを要求するブロック数、及び、アクセスアドレスからどれだけ先のキャッシュラインのデータをプリフェッチするか、即ち、プリフェッチの距離は、本発明において限定されるものではない。これらはハードウェアプリフェッチ制御装置20の仕様等によって決定される。
二次キャッシュプリフェッチ要求発行部24は、アクセスパターン監視部22からの指示に応じて、プリフェッチ要求を二次キャッシュ13に発行する。
なお、ここでは、二次キャッシュプリフェッチ要求発行部24も、一次キャッシュプリフェッチ要求発行部23と同様に、アクセスアドレスの次のキャッシュラインのデータをプリフェッチする。
このように、アクセスパターン監視部22,一次キャッシュプリフェッチ要求発行部23,及び二次キャッシュプリフェッチ要求発行部24は、命令実行部15からメモリアクセス要求があったアクセスアドレスと、プリフェッチアドレスキュー21に保持されたアドレスパターンとの比較処理の結果に基づいて、一次キャッシュ12または二次キャッシュ13に対するプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部22aとして機能する。
プリフェッチアドレスキュー更新部25(以下、単に更新部25という)は、アクセスパターン監視部22による比較処理の結果に基づいて、プリフェッチアドレスキュー21に保持されるアドレスパターンの内容を更新し制御するものである。
具体的には、更新部25は、アクセスパターン監視部22による比較処理の結果、アクセスアドレスがプリフェッチアドレスキュー21に登録されていなければ、そのアクセスアドレスに基づくアドレスパターンを、プリフェッチアドレスキュー21に新規登録する。
ただし、新規登録は、そのアクセスアドレスにプリフェッチ発行対象でないことを示す指示情報が付加されていないことが条件であり、さらに、プリフェッチアドレスキュー21に登録しうる空きエントリ0〜Nあるいは上書き可能なエントリ0〜Nがあることが条件である。
一方、更新部25は、アクセスパターン監視部22による比較処理の結果、アクセスパターンがプリフェッチアドレスキュー21に登録されていれば、そのアドレスパターンの内容を次のキャッシュラインのアドレスに更新する。
また、更新部25は、プリフェッチアドレスキュー21にアドレスパターンを保持させる(即ち、新規登録する)と、あるいは、プリフェッチアドレスキュー21のアドレスパターンの内容を更新すると、そのアドレスパターンに対する上書き処理を所定期間抑止する。
ここでは、更新部25は、そのアドレスパターンが登録されているエントリ0〜Nに対応するカウンタ21aの値が所定値になったことを所定期間として認識し、カウンタ21aの値が所定値になるまでの間は、そのエントリ0〜Nにおいて当該アドレスパターンを消去して他のアドレスパターンを登録することを抑止する。
なお、更新部25による制御処理の詳細は、後述する図4を参照しながら説明する。
さらに、更新部25は、プリフェッチアドレスキュー21のカウンタ21aを制御するカウンタ制御部26を有する。
カウンタ制御部26は、エントリ0〜Nにアドレスパターンが保持されている場合には、対応するカウンタ21aの値を、システムクロックに応じて1ずつカウントアップさせる。
また、カウンタ制御部26は、エントリ0〜Nに新たにアドレスパターンが登録されたとき、及び、エントリ0〜Nに保持されたアドレスパターンが更新されたときに、その値を0にリセットする。
ここで、図3に示すフローチャート(ステップS1〜S4)を参照しながら、ハードウェアプリフェッチ制御装置20の動作手順の概略について説明する。
まず、プロセッサユニット10の命令実行部15からメモリアクセス命令が一次キャッシュにアクセスされると(ステップS1)、ハードウェアプリフェッチ制御装置20のアクセスパターン監視部22が、そのメモリアクセス命令に付加された指示情報が、ハードウェアプリフェッチ対象指示であるか否かを判断する(ステップS2)。即ち、アクセスパターン監視部22は、かかる指示情報が、プリフェッチ要求発行対象であることを示しているか否かを判断する。
ここで、アクセスパターン監視部22が、そのメモリアクセス命令についてハードウェアプリフェッチ対象指示があると判断すると(ステップS2のYesルート)、ハードウェアプリフェッチ制御装置20は、そのメモリアクセスアドレスを用いて後述する図4に示す手順でハードウェアプリフェッチ機構を動作させる(ステップS3)。
つまり、アクセスパターン監視部22が比較処理を行なうことで連続アクセス検出を行ない、ハードウェアプリフェッチ機構が、連続アクセス時にはプリフェッチの発行及びプリフェッチアドレスキュー21の更新を行なう。
一方、アクセスパターン監視部22の比較処理の結果、プリフェッチアドレスキュー21にヒットミスしたら、そのメモリアクセスアドレスをプリフェッチアドレスキュー21に新規登録する。
これに対して、アクセスパターン監視部22が、そのメモリアクセス命令についてハードウェアプリフェッチ対象指示がないと判断すると(ステップS2のNoルート)、ハードウェアプリフェッチ制御装置20は、そのメモリアクセスアドレスでは、ハードウェアプリフェッチ機構を動作させない(ステップS4)。
つまり、アクセスパターン監視部22の比較処理もプリフェッチアドレスキュー21への新規登録/更新処理も実行されない。
次に、図4に示すフローチャート(ステップS10〜S18)を参照しながら、更新部25の処理手順について説明する。
まず、アクセスパターン監視部22による比較結果及び指示情報に応じて、ハードウェアプリフェッチ動作対象のメモリアクセス要求についてアドレスパターンの新規登録要求が生じると、更新部25は、プリフェッチアドレスキュー21の各エントリ0〜Nのフラグに基づき、無効なエントリ、即ち、アドレスパターンが登録されていないエントリ0〜Nがあるか否かを判断する(ステップS11)。
ここで、無効エントリがないと判断されると(ステップS11のNoルート)、次に、更新部25は、上書き処理が抑止(禁止)されていないエントリ0〜Nがあるか否かを判断する(ステップS12)。
つまり、ここでは、更新部25は、カウンタ21aの値が所定値になったエントリがあるか否かを判断する。
そして、上書き処理が禁止されていないエントリ0〜Nがなければ(ステップS12のNoルート)、更新部25は、新規登録要求が生じたメモリアクセス要求にかかるアドレスパターンは新規登録せず(ステップS13)、処理を終了する。
つまり、カウンタ21aの値が所定値以上になっていないため、更新部25は、エントリ0〜Nのアドレスパターンに対する上書き処理を抑止する。
一方、上書き処理が禁止されていないエントリ0〜Nがあれば(ステップS12のYesルート)、更新部25は、上書き可能なエントリ0〜Nから一つのエントリ0〜Nを選択して上書きから新規登録する(ステップS14)。
なお、このときカウンタ21aの値が同一のエントリ0〜Nが複数存在すれば、更新部25は、例えば、その中で最も古いエントリ0〜Nに上書き処理を行なう。
そして、更新部25による新規アドレスパターンの上書き処理が行なわれると、カウンタ制御部26が、そのエントリ0〜Nに対応するカウンタ21aの値を0に設定(リセット)する(ステップS15)。なお、その後、カウンタ制御部26は、毎サイクル、カウンタを1加算する(ステップS15)。
また、上記ステップS11において、無効エントリ0〜Nがあれば(ステップS11のYesルート)、更新部25は、その無効エントリ0〜Nを選択して、新規登録要求が発生したアクセスアドレスにかかるアドレスパターンを登録する(ステップS16)。
その後、カウンタ制御部26は、そのエントリ0〜Nに対応するカウンタ21aの値を0にリセットし、その後サイクル毎にカウンタ値を1加算する(ステップS15)。
一方、ハードウェアプリフェッチ動作対象、即ち、指示情報がプリフェッチ発行対象を示すメモリアクセスで、アクセスパターン監視部22による比較処理の結果が一致して連続アクセスが検出されると(ステップS17)、アクセスパターン監視部22は、一次キャッシュプリフェッチ要求発行部23または二次キャッシュプリフェッチ要求発行部24に対して次のキャッシュラインのハードウェアプリフェッチを発行する。さらにこのとき、更新部25は、対応するエントリ0〜Nのアドレスパターンを更新する(ステップS18)。
その後、カウンタ制御部26は、そのエントリ0〜Nに対応するカウンタ21aの値を0にリセットし、その後サイクル毎にカウンタ値を1加算する(ステップS15)。
ここで、図5にプリフェッチアドレスキュー21のエントリ数(最大エントリ数)以上の連続アクセスが発生した場合の、プリフェッチアドレスキュー21に保持されるアドレスパターンの一例を示す。
なお、図5及び後述する図7,図8の例は、以下の説明を容易にするため、プリフェッチアドレスキュー21がエントリ0〜3の4エントリを有し、4つのアドレスパターンを記録可能であると仮定したものである。また、図5及び後述する図7,図8において縦方向は時間を示している。
まず、時間t1〜t4にかけて、アクセスアドレスA〜Dのメモリアクセス要求があると、それら系列A〜Dのアドレスパターンが順に登録される。ここでは、ハードウェアプリフェッチ機構として、アクセスアドレスの次のキャッシュラインアドレスA+1〜D+1が、アドレスパターンとしてプリフェッチアドレスキューのエントリ0〜3にそれぞれ登録される。
つまり、時間t1における系列Aのアクセスの発生に応じて、更新部25はエントリ0にアドレスパターンA+1を新規登録する。また、時間t2における系列Bのアクセスの発生に応じて、更新部25はエントリ1にアドレスパターンB+1を新規登録する。さらに、時間t3における系列Cのアクセスの発生に応じて、更新部25はエントリ2にアドレスパターンC+1を新規登録する。そして、時間t4における系列Dのアクセスの発生に応じて、更新部25はエントリ3にアドレスパターンD+1を新規登録する。
これにより、プリフェッチアドレスキュー21は全エントリ0〜3が使用されている状態になる。
次に、時間t5にアクセスアドレスEのメモリアクセス要求があると、更新部25は、上記図4のステップS10,S11,S12,S13の処理を順に行ない、結果的に、エントリ0〜3のエントリに対する上書き処理を抑止して、系列Eのアドレスパターンの新規登録は行なわない。
つまり、時間t5において、エントリ0〜3に対応する、カウンタ21aはそれぞれ、“4”,“3”,“2”,“1”を示しており、所定値“8”にはなっていないので、更新部25は上書き処理を抑止する。
以降、時間t6〜t9に掛けて、アクセスアドレスA+1〜D+1のメモリアクセス要求があると、各時間t6〜t9において、アクセスパターン監視部22,一次キャッシュプリフェッチ要求発行部23または二次キャッシュプリフェッチ要求発行部24により、アドレスA+2〜D+2のプリフェッチ要求が行なわれる。
そして、更新部25は、それらアドレスA+2〜D+2をアドレスパターンとして対応するエントリ0〜3に登録する更新処理を行なう。
次に、図6に示すフローチャート(ステップS20〜S26)を参照しながら、コンパイル部2(プリフェッチ対象指示部3及びメモリアクセス命令生成部4)の動作手順の一例について説明する。
まず、コンパイル部2のプリフェッチ対象指示部3は、コンパイルしたメモリアクセス命令が連続アクセスであるか否かを判断する(ステップS20)。
ここで、プリフェッチ対象指示部3は、連続アクセスであると判断すると(ステップS20のYesルート)、次に1キャッシュライン当たりのキャッシュヒット率が予め設定された所定値M以下であるか否かを判断する(ステップS21)。なお、所定値Mはハード(CPU等)に依存する。
また、キャッシュヒット率は、次式(1)によって求められる。
キャッシュヒット率=キャッシュヒット数÷最大キャッシュヒット数×100
・・・(1)
ただし、キャッシュヒット数は、ループが1回まわる間に何回ヒットしているかを示すものであり、次式(2)によって求められ、最大キャッシュヒット数は次式(3)によって求められる。
キャッシュヒット数=1キャッシュラインサイズ÷ループ1回転毎の更新幅
・・・(2)
最大キャッシュヒット数=1キャッシュラインサイズ÷メモリアクセスの型
・・・(3)
そして、かかるキャッシュヒット率が所定値M以上であれば(ステップS21のNoルート)、同時に連続アクセスが発生したアクセス系列数が、プリフェッチアドレスキュー21が記録可能な最大エントリ数(ここではN)よりおおきか以上であるか否かを判断する(ステップS22)。なお、ここでいう同時に連続アクセスが発生するとは、メモリアクセスが厳密に同時に発生することをいうのではなく、コンパイル部2によって同時期にコンパイルされ連続アクセスが検出されることをいう。
そして、アクセス系列数がプリフェッチアドレスキュー21の最大エントリ数以下であれば(ステップS22のNoルート)、プリフェッチ対象指示部3は、当該メモリアクセス命令は、ハードウェアプリフェッチ対象であると判断して、プリフェッチ要求発行対象であることを示す指示情報をそのメモリアクセス命令に付加する(ステップS23)。これにより、プリフェッチ対象指示部3は、そのメモリアクセス命令がハードウェアプリフェッチ対象であることを指示し、処理を終了する。
一方、プリフェッチ対象指示部3は、上記ステップS21においてキャッシュヒット率がMより小さいと判断した場合(ステップS21のYesルート)、及び、上記ステップS22において同時に発生するアクセス系列数がプリフェッチアドレスキュー21の最大エントリ数より多いと判断した場合(ステップS22のYesルート)、そのメモリアクセス命令はハードウェアプリフェッチ対象外であることを指示する(ステップS24)。
つまり、これらの場合、プリフェッチ対象指示部3は、そのメモリアクセス命令に、プリフェッチ要求発行対象ではないことを示す指示情報を付加する。
さらに、上記ステップS20において連続アクセスでないと判断したメモリアクセス命令に対しても(ステップS20のNoルート)、プリフェッチ対象指示部3は、そのメモリアクセス命令はハードウェアプリフェッチ対象外であることを指示する(ステップS24)。
ただし、プリフェッチ対象指示部3は、メモリアクセス命令が連続アクセスであるかどうか不明である場合には、ステップS24においてハードウェアプリフェッチ対象外指示を行なってもよいし、ハードウェアプリフェッチ対象指示(ステップS23)を行なってもよい。
次に、プリフェッチ対象指示部3は、上記ステップS24においてハードウェアプリフェッチ対象外指示を行なったメモリアクセス命令について、ソフトウェアプリフェッチを実行するか否かを判断する(ステップS25)。
そして、ソフトウェアプリフェッチを実行すると判断すると(ステップS25のYesルート)、メモリアクセス命令生成部4は、そのメモリアクセス命令についてのソフトウェアプリフェッチ命令を生成して命令列に挿入して(ステップS26)、処理を終了する。
一方、メモリアクセス命令生成部4は、ソフトウェアプリフェッチを実行しないと判断すると(ステップS25のNoルート)、ステップS26の処理は行なわずに処理を終了する。
なお、メモリアクセス命令生成部4は、上記ステップS23においてハードウェアプリフェッチ対象指示がされたメモリアクセス命令については、ソフトウェアプリフェッチ命令の生成を抑止する。
このように、コンパイル部2のプリフェッチ対象指示部3は、複数系列の連続アクセスが同時発生する場合には、プリフェッチアドレスキュー21が保持しうるアドレスパターンのエントリ数N+1に応じて、指示情報を付加する。
具体的には、プリフェッチ対象指示部3は、連続アクセスが同時発生する命令系列の数が、かかるエントリ数N+1を超える場合には、その超えた数の命令系列のメモリアクセス命令には、プリフェッチ要求発行対象でないことを示す指示情報を付加する。
そして、このとき、メモリアクセス命令生成部4は、プリフェッチ要求発行対象でないことを示す指示情報を付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する。
ここで、図7に指示情報(ハードウェアプリフェッチ対象指示)に応じたプリフェッチアドレスキュー21のアドレスパターンの保持内容の一例を示す。
まず、時間t1〜t3にかけて、ハードウェアプリフェッチ対象であるアクセスアドレスA〜Cのメモリアクセス要求があると、更新部25は、それら系列A〜CのアドレスパターンA+1〜C+1をエントリ0〜2に順に登録する。
続いて、時間t4,t5において、ハードウェアプリフェッチ非対象であるアクセスアドレスD,Eのメモリアクセス要求があると、アクセスパターン監視部22は比較処理を抑止する。さらに更新部25も、エントリ3が無効エントリ(空きエントリ)であるが、それらアクセスアドレスD,Eのアドレスパターンは、プリフェッチアドレスキュー21への登録を抑止する。
これと同様に、更新部25は、時間t8において生じたアクセスアドレスFのアドレスパターンもプリフェッチアドレスキュー21には登録しない。
一方、時間t6,t7,t9に発生した系列A,Bのメモリアクセス要求に対しては、更新部25は、アドレスパターンの更新処理を行なう。また、アクセスパターン監視部22,一次キャッシュプリフェッチ要求発行部23または二次キャッシュプリフェッチ要求発行部24により、プリフェッチ要求が発行される。
また、図8に命令実行部15によってソフトウェアプリフェッチ命令が実行される場合のプリフェッチアドレスキュー21のアドレスパターンの保持内容の一例を示す。
この図8に示すように、時間t5においてアクセスアドレスD+8のソフトウェアプリフェッチ命令が要求されると、その指示情報は、ハードウェアプリフェッチ非対象であるため、そのアクセスアドレスD+8に対して、アクセスパターン監視部22は比較処理を抑止する。さらに、更新部25も、エントリ3が無効エントリ(空きエントリ)であるが、アクセスアドレスD+8のアドレスパターンのプリフェッチアドレスキュー21への登録を抑止する。
なお、図8において時間t4,t9,t10でハードウェアプリフェッチ非対象のアクセスアドレスD,D+1,D+9のメモリアクセス要求が発行されるが、これらについても、アクセスパターン監視部22による比較処理及び更新部25による登録処理が抑止される。
このように、本発明の一実施形態としての情報処理装置1によれば、更新部25が、プリフェッチアドレスキュー21にアドレスパターンを保持させる(新規登録する)と、あるいは、プリフェッチアドレスキュー21のアドレスパターンを更新すると、そのアドレスパターンに対する上書き処理を所定期間抑止する。
そのため、従来のLRU制御のように、連続アクセスが確認された有効なアドレスパターンを登録または更新後すぐに上書き処理によって消去することを抑止できる。つまり、プリフェッチアドレスキュー21のエントリ数N+1を超える複数系列の連続アクセスが発生しても、登録されているアドレスパターンが複数系列のメモリアクセスによって上書きし合うことを確実に抑止できる。
その結果、プリフェッチアドレスキュー21を有効に使用でき、連続アクセスに対するプリフェッチ要求を効率良く発行できる。つまり、キャッシュミスによるレーテンシ隠蔽やスループット向上等、プリフェッチによってより効果的な性能向上を得ることができる。
具体的には、更新部25は、アドレス情報が保持あるいは更新されてからのクロックサイクル数をカウントするカウンタ21aの値が所定値になったことを、上記所定期間として認識する。したがって、カウンタ21aにより所定のクロックサイクル数がカウントされるまでの間、更新部25によって、対応するエントリのアドレスパターンの上書き処理は抑止されることになり、上述した効果を確実に得ることができる。
また、プリフェッチ対象指示部3が、ハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、メモリアクセス命令に付加し、ハードウェアプリフェッチ制御装置20が、その指示情報に基づいて、上記比較処理及びプリフェッチ要求の発行処理を実行する。したがって、コンパイル部2側、即ち、ソフトウェアプリフェッチ側で、ハードウェアプリフェッチを実行させる否かを決定でき、ソフトウェアプリフェッチとハードウェアプリフェッチを効率良く両立させることができる。
つまり、メモリアクセス命令生成部4が、プリフェッチ対象指示部3によってプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することにより、ソフトウェアプリフェッチとハードウェアプリフェッチとが同一のメモリアクセス命令に対して行なわれることを確実に抑止できる。その結果、同じプリフェッチ要求がソフトウェアプリフェッチと、ハードウェアプリフェッチとの双方から行なわれることが無くなり、冗長はプリフェッチ要求の発行を確実に抑止できる。
具体的には、プリフェッチ対象指示部3は、複数系列の連続アクセスが同時発生する場合には、プリフェッチアドレスキュー21が保持しうるエントリ数N+1に応じて、指示情報を付加する。したがって、ハードウェアプリフェッチ制御装置20のハード構成に応じた処理を実行でき、プリフェッチアドレスキュー21をより有効的に使用できるとともに、連続アクセスに対するプリフェッチ要求もより効率化できる。
つまり、プリフェッチ対象指示部3は、連続アクセスが同時発生する命令系列の数が、エントリ数N+1を超える場合には、その超えた数の命令系列のメモリアクセス命令には、プリフェッチ要求発行対象でないことを示す指示情報を付加する。そして、メモリアクセス命令生成部4は、プリフェッチ要求発行対象でないことを示す指示情報を付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する。したがって、プリフェッチアドレスキュー21のエントリ数N+1を超える数のアドレスパターンの登録処理が発生することを極力抑止できる。しかも、エントリ数N+1を超える部分は、ソフトウェアプリフェッチで確実にカバーできるので、プリフェッチ要求をより確実に、且つ、より効率良く発行できる。しかも、ハードウェアプリフェッチとソフトウェアプリフェッチとの間で、担当するプリフェッチ要求を分担することになるので、ハードウェアプリフェッチとソフトウェアプリフェッチとをより効率良く両立できる。
〔2〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、プロセッサユニット10と主記憶装置11との間に2つのキャッシュシステム(キャッシュ12,13)を有する場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、プロセッサユニット10と主記憶装置11との間には、少なくとも一つのキャッシュメモリが介装されていればよい。
また、上述した実施形態では、ハードウェアプリフェッチ制御装置20が、プロセッサユニット10の一次キャッシュ12に対するメモリアクセス要求を監視した場合を例にあげて説明した。つまり、アクセスパターン監視部22が、プロセッサユニット10の一次キャッシュ12に対するメモリアクセス要求とその指示情報を取得して、比較処理を行なう場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、情報処理装置1の仕様等に応じて、アクセスパターン監視部22が、一次キャッシュ12の二次キャッシュ13に対するメモリアクセス要求を監視するように構成してもよい。また、アクセスパターン監視部22が、二次キャッシュ13の主記憶装置11に対するメモリアクセス要求を監視するように構成してもよい。
さらに、上述した実施形態では、プロセッサユニット10のコンパイル部2がプリフェッチ対象指示部3を備え、対象指示に基づいてプリフェッチに係る処理が実行されるという特徴と、更新部25がカウンタ21aに基づいて所定期間の上書き抑止処理を行なうという特徴とを有する場合を例にあげて説明した。しかし、本発明はこれら2つの特徴を必ずしも同時に備える必要はなく、いずれか一方だけの特徴を有していてもよい。
また、上述した実施形態では、カウンタ21aが、クロックサイクル数をカウントする場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、例えば、本発明の変形例として、カウンタ21aが、対応するエントリ0〜Nにアドレスパターンが保持あるいは更新されてからの当該アドレスパターンに対する更新部25による上書き処理の抑止回数をカウントするように構成してもよい。
この場合、更新部25は、カウンタの値が所定値になったことを、上書き処理を抑止する所定期間として認識する。つまり、更新部25は、所定回数以上上書き処理を抑止するまでは、そのエントリ0〜Nの上書き処理を抑止する。
このときの更新部25の処理手順を図9のフローチャート(ステップS10〜S18,S13´)に示す。なお、図9において図4と同一の符号部分は同一の処理もしくは略同一の処理を示しているので、ここではその詳細な説明は省略する。
図9に示すように、更新部25がステップS13において新規登録をしなかった場合、即ち、登録済のアドレスパターンの上書き処理を抑止した場合、カウンタ制御部26は、その登録済の各エントリ0〜Nのカウンタ(上書き処理禁止回数)を1加算する(ステップS13´)。
これによっても、上述した実施形態と同様の作用効果を得ることができる。
また、上述した実施形態では、カウンタ制御部26がカウンタ21aをリセットする場合には、エントリ0〜Nの種類に係わらず0にリセットする場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、例えば、更新部25が、プリフェッチアドレスキュー21において更新されたアドレスパターンにかかる所定期間を、プリフェッチアドレスキュー21に新たに保持されたアドレスパターンの所定期間よりも長くするように構成してもよい。
具体的には、例えば、カウンタ21aの値が8のときに、更新部25の上書き処理の抑止制御が解除される場合、新たにアドレスパターンが登録されたときは、カウンタ制御部26はその値を4にリセットする。一方、連続アクセスが検出されてアドレスパターンが更新された場合、カウンタ制御部26はカウンタ値を0にリセットする。
これにより、更新部25は、更新されたアドレスパターンにかかる所定期間を、プリフェッチアドレスキュー21に新たに保持されたアドレスパターンにかかる所定期間よりも長くする。
このようにアドレスパターンが更新され、連続アクセスすることが判明したアドレスパターンの上書き処理抑止期間を、新規登録されたアドレスパターンの上書き処理抑止期間よりも長くすることで、連続アクセスすることが判明したアドレスパターンを優先的にプリフェッチアドレスキュー21に保持させるように制御できる。その結果、プリフェッチ要求の発行をより確実に行なうことができ、プロセッサユニット10の性能向上、つまり、キャッシュミスによるレーテンシ隠蔽やスループット向上に寄与できる。
さらに、上述した実施形態では、プリフェッチ対象指示部3が、プリフェッチアドレスキュー21のエントリ数N+1を超える数の系列の連続アクセスが発生した場合に、ソフトウェアプリフェッチが実行する場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、例えば、ハードウェアプリフェッチ制御装置20によるプリフェッチの距離(ここでは次のキャッシュラインまでの間隔)が不適切であり、距離が長過ぎたり短過ぎたりする場合、即ち、所定の範囲外である場合に、プリフェッチ対象指示部3が、その系列のメモリアクセス命令がプリフェッチ要求発行対象でないことを示す指示情報を付加してもよい。そして、このときメモリアクセス命令生成部4は、そのメモリアクセス命令のソフトウェアプリフェッチ命令を生成する。
つまり、ハードウェアプリフェッチ制御装置20において、どれだけ先のキャッシュラインをプリフェッチするかという仕様は、その回路実装されたアルゴリズムによって制限され、設定変更の自由度が少ない。
これに対して、ソフトウェアプリフェッチは、プリフェッチの距離を種々変更できるため、ハードウェアプリフェッチ制御装置20によるハードウェアプリフェッチの距離が所定範囲内になく、ハードウェアプリフェッチしてもキャッシュヒット率やスループット等が向上しない場合には、ハードウェアプリフェッチを止めて、ソフトウェアプリフェッチにより、最適なプリフェッチの距離でプリフェッチを実行する。
つまり、ハードウェアプリフェッチ制御装置20によるハードウェアプリフェッチによって、キャッシュヒット率やスループット等のハードウェアプリフェッチ効果が所定値以上得られるか否かを判断する。そして、所定以上のハードウェアプリフェッチ効果が得られないと判断した場合には、プリフェッチ対象指示部3がそのメモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加する。さらに、メモリアクセス命令生成部4がそのメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する。
一方、所定以上のハードウェアプリフェッチ効果が得られると判断した場合には、そのままハードウェアプリフェッチを行ない、メモリアクセス命令生成部4はそのメモリアクセス命令のソフトウェアプリフェッチ命令は生成しない。つまり、プリフェッチ対象指示部3はそのメモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加する。
これにより、上述した実施形態の作用効果をより確実に得ることができる。
なお、ハードウェアプリフェッチ効果の判断は、既存の種々の方法を用いて、本情報処理装置1のオペレータ等が行なってもよいし、自動的に判断するように構成してもよい。
また、上述した変形例及び一実施形態においてコンパイル部2による処理はその一部や全部をプログラマが実現してもよい。
なお、上述したコンパイル部2,カウンタ21a,アクセスパターン監視部22,一次キャッシュプリフェッチ要求発行部23,二次キャッシュプリフェッチ要求発行部24,及びプリフェッチアドレスキュー更新部25としての機能は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のアプリケーションプログラム(プリフェッチ制御プログラム)を実行することによって実現されてもよい。
そのプログラムは、例えばフレキシブルディスク,CD(CD−ROM,CD−R,CD−RWなど),DVD(DVD−ROM,DVD−RAM,DVD−R,DVD−RW,DVD+R,DVD+RWなど)等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプリフェッチ制御プログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしてもよい。
ここで、コンピュータとは、ハードウェアとOS(オペレーティングシステム)とを含む概念であり、OSの制御の下で動作するハードウェアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。
上記プリフェッチ制御プログラムとしてのアプリケーションプログラムは、上述のようなコンピュータに、コンパイル部2,カウンタ21a,アクセスパターン監視部22,一次キャッシュプリフェッチ要求発行部23,二次キャッシュプリフェッチ要求発行部24,及びプリフェッチアドレスキュー更新部25としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
なお、本実施形態としての記録媒体としては、上述したフレキシブルディスク,CD,DVD,磁気ディスク,光ディスク,光磁気ディスクのほか、ICカード,ROMカートリッジ,磁気テープ,パンチカード,コンピュータの内部記憶装置(RAMやROMなどのメモリ),外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することもできる。
〔3〕付記
(付記1)
メモリアクセス命令を実行する命令実行部と、
前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
前記比較処理の結果に基づいて前記アドレス情報保持部に保持されるアドレス情報の内容を制御する制御部とを備え、
前記制御部は、前記アドレス情報保持部にアドレス情報を保持させると、あるいは、前記アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止することを特徴とする、情報処理装置。
(付記2)
前記アドレス情報が保持あるいは更新されてからのクロックサイクル数をカウントするカウンタを備え、
前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、付記1記載の情報処理装置。
(付記3)
前記アドレス情報が保持あるいは更新されてからの当該アドレス情報に対する前記制御部による前記上書き処理の抑止回数をカウントするカウンタを備え、
前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、付記1記載の情報処理装置。
(付記4)
前記制御部は、更新された前記アドレス情報にかかる前記所定期間を、前記アドレス情報保持部に新たに保持されたアドレス情報の前記所定期間よりも長くすることを特徴とする、付記1〜3のいずれか1項に記載の情報処理装置。
(付記5)
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部を備え、
前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、付記1〜4のいずれか1項に記載の情報処理装置。
(付記6)
メモリアクセス命令を実行する命令実行部と、
前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部とを備え、
前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、情報処理装置。
(付記7)
前記ハードウェアプリフェッチ要求発行部は、前記指示情報がハードウェアプリフェッチ要求発行対象であることを示すものであれば前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行する一方、前記指示情報がハードウェアプリフェッチ要求発行対象でないことを示すものであれば前記比較処理及びハードウェアプリフェッチ要求の発行処理の実行を抑止することを特徴とする、付記6記載の情報処理装置。
(付記8)
連続アクセスが発生するメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するメモリアクセス命令生成部を備え、
前記メモリアクセス命令生成部は、前記ハードウェアプリフェッチ対象指示部によってハードウェアプリフェッチ要求発行対象であることを示す前記指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することを特徴とする、付記5〜7のいずれか1項に記載の情報処理装置。
(付記9)
前記ハードウェアプリフェッチ対象指示部は、複数系列の連続アクセスが発生する場合には、前記アドレス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記指示情報を付加することを特徴とする、付記5〜8のいずれか1項に記載の情報処理装置。
(付記10)
前記ハードウェアプリフェッチ対象指示部は、前記の連続アクセスが発生する命令系列の数が、前記エントリ数を超える場合には、その超えた数の命令系列の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、
前記メモリアクセス命令生成部は、ハードウェアプリフェッチ要求発行対象でないことを示す前記指示情報を付加された前記メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入することを特徴とする、付記9記載の情報処理装置。
(付記11)
ハードウェアプリフェッチの距離が所定範囲外である場合には、前記ハードウェアプリフェッチ対象指示部は当該アドレス情報にかかるメモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加するとともに、前記メモリアクセス命令生成部は当該メモリアクセス命令のソフトウェアプリフェッチ命令を生成することを特徴とする、付記8記載の情報処理装置。
(付記12)
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部とを有する情報処理装置において、前記キャッシュメモリへのプリフェッチを実行する機能をコンピュータに実現させるためのプログラムであって、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部、及び、
前記比較処理の結果に基づいて前記アドレス情報保持部に保持されるアドレス情報の内容を制御する制御部として、前記コンピュータを機能させるとともに、
前記制御部は、前記アドレス情報保持部にアドレス情報を保持させると、あるいは、前記アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止するように、前記コンピュータを機能させることを特徴とする、プログラム。
(付記13)
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、前記キャッシュメモリへのプリフェッチを実行する機能をコンピュータに実現させるためのプログラムであって、
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部として、前記コンピュータを機能させることを特徴とする、プログラム。
(付記14)
連続アクセスが発生するメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するメモリアクセス命令生成部として、前記コンピュータを機能させるとともに、
前記メモリアクセス命令生成部は、前記ハードウェアプリフェッチ対象指示部によってハードウェアプリフェッチ要求発行対象であることを示す前記指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止する一方、ハードウェアプリフェッチ要求発行対象でないことを示す前記指示情報を付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するように、前記コンピュータを機能させることを特徴とする、付記13記載のプログラム。
(付記15)
前記ハードウェアプリフェッチ対象指示部は、複数系列の連続アクセスが発生する場合には、前記アドレス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記指示情報を付加するように、前記コンピュータを機能させることを特徴とする、付記13または付記14記載のプログラム。
(付記16)
前記ハードウェアプリフェッチ対象指示部は、複数系列の連続アクセスが発生する場合に、前記エントリ数の範囲内で、前記メモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加し、前記エントリ数を超える場合には、その超えた数の命令系列の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加するように、前記コンピュータを機能させることを特徴とする、付記15記載のプログラム。
(付記17)
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、命令列を生成する命令列生成方法であって、
前記アクセス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記ハードウェアプリフェッチ要求発行部にハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報をメモリアクセス命令に付加し、
前記ハードウェアプリフェッチ要求発行対象でないことを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する一方、ハードウェアプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することを特徴とする、命令列生成方法。
(付記18)
複数系列の連続アクセスが発生する場合に、前記エントリ数の範囲内で、前記メモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加し、前記エントリ数を超える場合には、その超えた数の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加することを特徴とする、付記17記載の命令列生成方法。
(付記19)
ハードウェアプリフェッチの距離が所定範囲外である場合には、当該アドレス情報にかかるメモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、当該メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成することを特徴とする、付記17または付記18記載の命令列生成方法。
(付記20)
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチによって所定以上のハードウェアプリフェッチ効果が得られるか否かを判断し、所定以上のハードウェアプリフェッチ効果が得られないと判断した場合には、当該メモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、当該メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成することを特徴とする、付記17または付記18記載の命令列生成方法。
本発明の一実施形態としての情報処理装置の構成を示すブロック図である。 本発明の一実施形態としての情報処理装置の構成を説明するための図である。 本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置の動作手順の一例を示すフローチャートである。 本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキュー更新部の動作手順の一例を示すフローチャートである。 本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキューのエントリ数以上の連続アクセスが発生した場合のプリフェッチアドレスキューに保持されるアドレスパターンの遷移例を示す図である。 本発明の一実施形態としての情報処理装置のプロセッサユニットのコンパイル部の動作手順の一例を示すフローチャートである。 本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキューに保持されるアドレスパターンの遷移例を示す。 本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキューに保持されるアドレスパターンの遷移例を示す。 本発明の変形例としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキュー更新部の動作手順の一例を示すフローチャートである。 従来のLRU制御によってプリフェッチアドレスキューに保持されるアドレスパターンの遷移を示す。
符号の説明
1 情報処理装置
2 コンパイル部
3 プリフェッチ対象指示部(ハードウェアプリフェッチ対象指示部)
4 メモリアクセス命令生成部
10 プロセッサユニット
11 主記憶装置(記憶部)
12 一次キャッシュ
12a 一次キャッシュメモリ
12b 制御装置
13 二次キャッシュ
13a 二次キャッシュメモリ
13b 制御装置
14 命令解読部
15 命令実行部
20 ハードウェアプリフェッチ制御装置(プリフェッチ制御装置)
21 プリフェッチアドレスキュー(アドレス情報保持部)
21a,21a−0〜N カウンタ
22 アクセスパターン監視部
22a ハードウェアプリフェッチ要求発行部
23 一次キャッシュプリフェッチ要求発行部
24 二次キャッシュプリフェッチ要求発行部
25 プリフェッチアドレスキュー更新部(制御部)
26 カウンタ制御部

Claims (10)

  1. メモリアクセス命令を実行する命令実行部と、
    前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
    前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
    前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
    前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
    前記比較処理の結果に基づいて前記アドレス情報保持部に保持されるアドレス情報の内容を制御する制御部とを備え、
    前記制御部は、前記アドレス情報保持部にアドレス情報を保持させると、あるいは、前記アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止することを特徴とする、情報処理装置。
  2. 前記アドレス情報が保持あるいは更新されてからのクロックサイクル数をカウントするカウンタを備え、
    前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、請求項1記載の情報処理装置。
  3. 前記アドレス情報が保持あるいは更新されてからの当該アドレス情報に対する前記制御部による前記上書き処理の抑止回数をカウントするカウンタを備え、
    前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、請求項1記載の情報処理装置。
  4. 前記制御部は、更新された前記アドレス情報にかかる前記所定期間を、前記アドレス情報保持部に新たに保持されたアドレス情報の前記所定期間よりも長くすることを特徴とする、請求項1〜3のいずれか1項に記載の情報処理装置。
  5. 前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部を備え、
    前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、請求項1〜4のいずれか1項に記載の情報処理装置。
  6. メモリアクセス命令を実行する命令実行部と、
    前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
    前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
    前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
    前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
    前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部とを備え、
    前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、情報処理装置。
  7. メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、前記キャッシュメモリへのプリフェッチを実行する機能をコンピュータに実現させるためのプログラムであって、
    前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部として、前記コンピュータを機能させることを特徴とする、プログラム。
  8. メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、命令列を生成する命令列生成方法であって、
    前記アクセス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報をメモリアクセス命令に付加し、
    前記ハードウェアプリフェッチ要求発行対象でないことを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する一方、ハードウェアプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することを特徴とする、命令列生成方法。
  9. 複数系列の連続アクセスが発生する場合に、前記エントリ数の範囲内で、前記メモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加し、前記エントリ数を超える場合には、その超えた数の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加することを特徴とする、請求項8記載の命令列生成方法。
  10. ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチによって所定以上のハードウェアプリフェッチ効果が得られるか否かを判断し、所定以上のハードウェアプリフェッチ効果が得られないと判断した場合には、当該メモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、当該メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成することを特徴とする、請求項8または請求項9記載の命令列生成方法。
JP2008073863A 2008-03-21 2008-03-21 情報処理装置,プログラム,及び命令列生成方法 Withdrawn JP2009230374A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2008073863A JP2009230374A (ja) 2008-03-21 2008-03-21 情報処理装置,プログラム,及び命令列生成方法
US12/334,795 US8166250B2 (en) 2008-03-21 2008-12-15 Information processing unit, program, and instruction sequence generation method
EP10187472A EP2299356A1 (en) 2008-03-21 2008-12-17 Information processing unit, program, and instruction sequence generation method
EP08171949A EP2131276A3 (en) 2008-03-21 2008-12-17 Information processing unit, program, and instruction sequence generation method
KR1020080136801A KR100976433B1 (ko) 2008-03-21 2008-12-30 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법
CN2009100060393A CN101539853B (zh) 2008-03-21 2009-01-22 信息处理单元、执行方法和指令序列生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008073863A JP2009230374A (ja) 2008-03-21 2008-03-21 情報処理装置,プログラム,及び命令列生成方法

Publications (1)

Publication Number Publication Date
JP2009230374A true JP2009230374A (ja) 2009-10-08

Family

ID=40790602

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008073863A Withdrawn JP2009230374A (ja) 2008-03-21 2008-03-21 情報処理装置,プログラム,及び命令列生成方法

Country Status (5)

Country Link
US (1) US8166250B2 (ja)
EP (2) EP2131276A3 (ja)
JP (1) JP2009230374A (ja)
KR (1) KR100976433B1 (ja)
CN (1) CN101539853B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014417A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 命令制御装置、及び命令制御方法
JP2015505091A (ja) * 2011-12-13 2015-02-16 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc キャッシュのプレローディングにgpuコントローラを使用するための機構
JP2015219652A (ja) * 2014-05-15 2015-12-07 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
JP2017045153A (ja) * 2015-08-24 2017-03-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9830268B2 (en) 2014-05-14 2017-11-28 Fujitsu Limited Arithmetic processing device for disabling an unnecessary prefetch command and control method of arithmetic processing device for disabling an unnecessary prefetch command

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI519955B (zh) * 2010-03-29 2016-02-01 威盛電子股份有限公司 預取單元、資料預取方法以及電腦程式產品
US8977819B2 (en) * 2010-09-21 2015-03-10 Texas Instruments Incorporated Prefetch stream filter with FIFO allocation and stream direction prediction
WO2012109882A1 (zh) * 2011-08-05 2012-08-23 华为技术有限公司 数据读取的方法和存储器控制器
US9811341B2 (en) * 2011-12-29 2017-11-07 Intel Corporation Managed instruction cache prefetching
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
US9442727B2 (en) * 2013-10-14 2016-09-13 Oracle International Corporation Filtering out redundant software prefetch instructions
US20160103612A1 (en) * 2014-10-12 2016-04-14 Qualcomm Incorporated Approximation of Execution Events Using Memory Hierarchy Monitoring
CN108255517B (zh) * 2016-12-29 2020-05-05 展讯通信(上海)有限公司 处理器及请求指令缓存数据的方法
CN109308280B (zh) * 2017-07-26 2021-05-18 华为技术有限公司 数据处理方法和相关设备
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
CN111475203B (zh) * 2020-04-03 2023-03-14 小华半导体有限公司 一种用于处理器的指令读取方法以及相应的处理器

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0449540B1 (en) * 1990-03-27 2000-05-17 Digital Equipment Corporation Memory system and method with prefetch buffer
US5737565A (en) * 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
US5944815A (en) * 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
JP3913895B2 (ja) 1998-04-17 2007-05-09 富士通株式会社 命令キャッシュ制御装置および記録媒体
JP3968914B2 (ja) * 1999-06-02 2007-08-29 株式会社日立製作所 ディスクアレイ装置
US6510494B1 (en) * 1999-06-30 2003-01-21 International Business Machines Corporation Time based mechanism for cached speculative data deallocation
US6460115B1 (en) * 1999-11-08 2002-10-01 International Business Machines Corporation System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism
US6542982B2 (en) * 2000-02-24 2003-04-01 Hitachi, Ltd. Data processer and data processing system
US6578130B2 (en) * 2001-10-18 2003-06-10 International Business Machines Corporation Programmable data prefetch pacing
US6823428B2 (en) * 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
KR20040038548A (ko) * 2002-11-01 2004-05-08 삼성전자주식회사 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법
CN1726459A (zh) 2002-12-12 2006-01-25 皇家飞利浦电子股份有限公司 基于用于数据预取的步距预测的计数器
US6981099B2 (en) 2002-12-16 2005-12-27 Sun Microsystems, Inc. Smart-prefetch
WO2005091146A1 (ja) * 2004-03-24 2005-09-29 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
US20060174228A1 (en) * 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US7380066B2 (en) * 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US7519776B2 (en) * 2005-07-26 2009-04-14 Invensys Systems, Inc. Method and system for time-weighted cache management
US7533242B1 (en) * 2005-10-31 2009-05-12 Sun Microsystems, Inc. Prefetch hardware efficiency via prefetch hint instructions
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
US7739478B2 (en) * 2007-03-08 2010-06-15 Hewlett-Packard Development Company, L.P. Multiple address sequence cache pre-fetching
US7908439B2 (en) * 2007-06-25 2011-03-15 International Business Machines Corporation Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
US7991956B2 (en) * 2007-06-27 2011-08-02 Intel Corporation Providing application-level information for use in cache management
CN100449481C (zh) * 2007-06-29 2009-01-07 东南大学 具有多通道指令预取功能的存储控制电路

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014417A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 命令制御装置、及び命令制御方法
JP2015505091A (ja) * 2011-12-13 2015-02-16 エーティーアイ・テクノロジーズ・ユーエルシーAti Technologies Ulc キャッシュのプレローディングにgpuコントローラを使用するための機構
US9830268B2 (en) 2014-05-14 2017-11-28 Fujitsu Limited Arithmetic processing device for disabling an unnecessary prefetch command and control method of arithmetic processing device for disabling an unnecessary prefetch command
JP2015219652A (ja) * 2014-05-15 2015-12-07 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
US9483244B2 (en) 2014-05-15 2016-11-01 Fujitsu Limited Compiling method and compiling device
JP2017045153A (ja) * 2015-08-24 2017-03-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20090240887A1 (en) 2009-09-24
KR100976433B1 (ko) 2010-08-18
CN101539853B (zh) 2012-08-22
US8166250B2 (en) 2012-04-24
KR20090101072A (ko) 2009-09-24
EP2131276A3 (en) 2010-04-07
EP2299356A1 (en) 2011-03-23
CN101539853A (zh) 2009-09-23
EP2131276A2 (en) 2009-12-09

Similar Documents

Publication Publication Date Title
JP2009230374A (ja) 情報処理装置,プログラム,及び命令列生成方法
US7424578B2 (en) Computer system, compiler apparatus, and operating system
US10853071B2 (en) Simulation of exclusive instructions
JP4427187B2 (ja) キャッシュメモリを有するデータ処理回路。
US7849453B2 (en) Method and apparatus for software scouting regions of a program
US6968429B2 (en) Method and apparatus for controlling line eviction in a cache
JP7377211B2 (ja) 投機的サイド・チャネル・ヒント命令
KR100535146B1 (ko) 마이크로프로세서에 의한 인스트럭션 실행 방법, 컴파일러및 다중 프로세서 데이터 처리 시스템
JP7007371B2 (ja) ベクトル命令のための要素間アドレス・ハザードの取扱い
JP7160956B2 (ja) 分岐命令のタイプに基づく先行分岐予測の選択的実行
KR20070052338A (ko) 프로세서 캐시로 데이터를 푸시하는 방법 및 장치
WO2007055889A1 (en) Facilitating communication and synchronization between main and scout threads
EP1983439B1 (en) Prefetching based on streaming hints
JP2006518053A (ja) ハードウェア・スカウト・スレッディングを通してコードを推測で実行することによるプリフェッチの生成
KR102590180B1 (ko) 자격 메타데이터를 관리하는 장치 및 방법
US20130159679A1 (en) Providing Hint Register Storage For A Processor
KR102478766B1 (ko) 디스크립터 링 관리
EP1305714B1 (en) Method and apparatus for software prefetching using non-faulting loads
JP4643740B2 (ja) プロセッサおよびプリフェッチ支援プログラム
CN1326036C (zh) 数据处理装置、数据处理方法和编译装置及编译方法
JP2006285727A (ja) キャッシュメモリ装置
US20160179676A1 (en) Cleaning a write-back cache
US9348754B2 (en) Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher
JPH08161226A (ja) データ先読み制御方法,キャッシュ制御装置およびデータ処理装置
JP2009277243A (ja) コンパイラ装置およびオペレーティングシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101119

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20120705