JP6458682B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP6458682B2
JP6458682B2 JP2015165280A JP2015165280A JP6458682B2 JP 6458682 B2 JP6458682 B2 JP 6458682B2 JP 2015165280 A JP2015165280 A JP 2015165280A JP 2015165280 A JP2015165280 A JP 2015165280A JP 6458682 B2 JP6458682 B2 JP 6458682B2
Authority
JP
Japan
Prior art keywords
prefetch
unit
instruction
address
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
JP2015165280A
Other languages
English (en)
Other versions
JP2017045153A (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 JP2015165280A priority Critical patent/JP6458682B2/ja
Priority to US15/222,999 priority patent/US9990297B2/en
Publication of JP2017045153A publication Critical patent/JP2017045153A/ja
Application granted granted Critical
Publication of JP6458682B2 publication Critical patent/JP6458682B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0877Cache access modes
    • G06F12/0884Parallel mode, e.g. in parallel with main memory or CPU
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
コンピュータはCPU(Central Processing Unit)コアと主記憶装置との間に複数階層のキャッシュメモリを有し、主記憶装置や複数階層のキャッシュメモリのうち、より主記憶装置側に近い下位階層キャッシュメモリへのアクセスレイテンシ隠蔽やスループット不足の改善を図っている。CPUにおけるコアの高速化やメニーコア化が進んでおり、キャッシュメモリのヒット率向上やキャッシュミスレイテンシの隠蔽が必要とされている。
このような問題に対する1つの解決手段として、近い将来必要と予測されるデータを予めキャッシュメモリに読み込んでおくことでキャッシュミスの発生を減らすプリフェッチが用いられている。プリフェッチの実現方法としては、ソフトウェアによる手法(ソフトウェアプリフェッチ)とハードウェアによる手法(ハードウェアプリフェッチ)とがある。
ソフトウェアプリフェッチでは、コンパイラやプログラマが予め命令列の中にプリフェッチ命令を明示的に挿入してプリフェッチを行う。従来のソフトウェアプリフェッチでは、予め命令列の中にプリフェッチ命令を明示的に挿入しておくため柔軟な制御が可能であるが、キャッシュヒット及びキャッシュミスの発生状況やアドレス計算結果などの動的な振る舞いに応じて必要なプリフェッチ命令を挿入するのが困難である。
また、ソフトウェアプリフェッチでは、アドレス計算のための命令やプリフェッチ命令が命令発行や命令実行に係るハードウェア資源を消費するため、性能オーバーヘッドが発生することもある。また、ソフトウェアプリフェッチでは、プリフェッチを行うキャッシュライン単位に必要最低限の1つのプリフェッチ命令のみを挿入するのが困難であるために冗長なプリフェッチ命令が挿入されるという問題点がある。
一方、ハードウェアプリフェッチでは、過去のメモリアクセスアドレスやキャッシュミスアドレスのパターンをハードウェアで記憶しておき、過去のアクセスパターンから規則性を抽出し、次のアクセスアドレスを予測してプリフェッチを行う。例えば、キャッシュライン単位での連続アクセスや一定間隔での定型ストライドアクセスの場合に、そのアクセスパターンに応じたハードウェアプリフェッチを行う方式がある。
ハードウェアプリフェッチでは、検出するアクセスパターンが複雑になるほどアルゴリズムが複雑で実現性に対する難易度が高くなったり、ハードウェアコストとしての回路物量や電力が増加してしまう。また、ハードウェアプリフェッチは、ハードウェア回路として実装されたアルゴリズムに従って動作するため、プリフェッチを発行するタイミングやどれだけ先のアドレスに対するプリフェッチを行うかのプリフェッチ距離が固定的となる。
定型スライドアクセスのハードウェアプリフェッチを実現する例として、同じプログラムカウンタ(PC)値のメモリアクセス命令間でのパターン検出に限定することで、アクセスパターン抽出の難易度を低減する手法が提案されている。しかし、PC値をハードウェアプリフェッチ制御部が使用できるようにするために、PC値をハードウェアプリフェッチ制御部まで伝搬させるハードウェアコストが発生する。また、PC値毎にアクセスパターンを検出しようとすると、保持すべきテーブルのエントリ数が大きくなってしまう。特に、ソフトウェア最適化の一環でループ処理を展開するループアンローリングをした場合、系列数やストライド幅が大きくなる傾向になり、効果的にハードウェアプリフェッチを生成できなくなることも考えられる。
また、キャッシュメモリのブロックサイズ、ブロック数、ブロック間のストライド幅を命令コードで指示した1つのソフトウェアプリフェッチ命令によってハードウェアプリフェッチ回路を起動して複数回のプリフェッチを行う技術が提案されている(例えば、特許文献1、2参照)。この技術では、ソフトウェアプリフェッチ命令が、命令発行や命令実行に係るハードウェア資源を消費する影響は低減できるが、命令コードでストライド幅等を指示しているため、却って命令コードを消費してしまう結果となる。
ハードウェアプリフェッチに関し、プリフェッチアドレスキューへの登録やハードウェアプリフェッチの発行を抑止するヒント情報をメモリアクセス命令に付加することで、不要なハードウェアプリフェッチの生成を防ぐ技術が提案されている(例えば、特許文献3、4参照)。また、アプリケーション毎の実行時の挙動に基づいてプリフェッチの禁止又は許可をオペレーティングシステムから設定できるようにする技術が提案されている(例えば、特許文献5参照)。プリフェッチヒント命令等でハードウェアプリフェッチが検出すべきアクセスパターン等を指示してハードウェアプリフェッチの動作を制御する技術が提案されている(例えば、特許文献6参照)。
米国特許第6578130号明細書 米国特許第6915415号明細書 米国特許第8166250号明細書 欧州特許出願公開第2204741号明細書 米国特許第7318125号明細書 米国特許第7533242号明細書
従来のハードウェアプリフェッチでは、プリフェッチを発行するタイミングやプリフェッチ距離はハードウェア設定された固定のものであった。一つの側面では、本発明は、ハードウェアプリフェッチの動作を柔軟に制御できるようにすることを目的とする。
演算処理装置の一態様は、メモリアクセス命令を実行する命令実行部と、メモリアクセス命令に係るデータを記憶する記憶部と命令実行部との間に配されたキャッシュメモリ部と、キャッシュメモリ部に対して発行するプリフェッチに係る制御情報を保持する制御情報保持部と、過去に実行されたメモリアクセス命令に基づくアドレス情報を保持するアドレス情報保持部と、ハードウェアプリフェッチ要求を生成し発行する制御部とを有する。制御部は、アドレス情報保持部に保持されたアドレス情報と実行するメモリアクセス命令でのアクセスアドレスとを比較し、比較結果に基づいてメモリアクセス命令に付加された指示情報で指定される制御情報保持部の制御情報に応じたキャッシュメモリ部に対するハードウェアプリフェッチ要求を生成し発行する。
発明の一態様においては、ハードウェアプリフェッチの動作を柔軟に制御することが可能となる。
第1の実施形態における演算処理装置の構成例を示す図である。 第1の実施形態におけるプリフェッチ設定レジスタの構成例を示す図である。 第1の実施形態におけるプリフェッチ指示情報の付加例を説明するための図である。 第1の実施形態におけるプリフェッチ指示情報の付加例を説明するための図である。 第1の実施形態におけるプリフェッチモード情報の一例を示す図である。 第1の実施形態におけるプリフェッチアドレスキュー動作設定レジスタの構成例を示す図である。 第1の実施形態におけるハードウェアプリフェッチ制御部の処理動作例を示すフローチャートである。 第1の実施形態におけるハードウェアプリフェッチ制御部の処理動作例を示すフローチャートである。 第2の実施形態における演算処理装置の構成例を示す図である。 本実施形態におけるプリフェッチ指示情報付メモリアクセス命令の生成処理の例を示すフローチャートである。
以下、本発明の実施形態を図面に基づいて説明する。
(第1の実施形態)
本発明の第1の実施形態について説明する。
図1は、第1の実施形態における演算処理装置の構成例を示すブロック図である。第1の実施形態における演算処理装置(プロセッサ)は、命令発行部・命令実行部10、一次キャッシュ部20、二次キャッシュ部30、プリフェッチ設定レジスタ40、及びハードウェアプリフェッチ制御部50Aを有する。
命令発行部・命令実行部10は、供給される命令をデコードし、デコード結果に応じて処理を実行する。例えば、命令発行部・命令実行部10は、命令のデコード結果に応じて主記憶装置60が保持するデータに対するアクセスを行うとき、一次キャッシュ部10に対してメモリアクセス命令を発行する。
ここで、本実施形態におけるメモリアクセス命令には、プリフェッチモード情報とプリフェッチ設定レジスタ番号とがプリフェッチ指示情報として付加されている。プリフェッチモード情報は、ハードウェアプリフェッチに係る動作モードを指定する情報であり、プリフェッチ設定レジスタ番号は、参照するプリフェッチ設定レジスタを指定する情報である。命令発行部・命令実行部10から発行されたプリフェッチ指示情報付きのメモリアクセス命令は、プリフェッチ設定レジスタ40及びハードウェアプリフェッチ制御部50Aにも入力される。
一次キャッシュ部20は、命令発行部・命令実行部10からの要求に対して高速に応答可能であり、アクセス速度の速い一次キャッシュメモリを有する。一次キャッシュ部20は、命令発行部・命令実行部10からのメモリアクセス命令に対して、アクセスアドレスのデータが一次キャッシュメモリに存在する場合、そのデータをメモリアクセスデータとして命令発行部・命令実行部10に供給する。一方、一次キャッシュ部20は、アクセスアドレスのデータが一次キャッシュメモリに存在しない場合、そのデータを要求する一次キャッシュ登録要求を二次キャッシュ部30に発行する。
二次キャッシュ部30は、一次キャッシュメモリより容量が大きく、かつ主記憶装置60よりアクセス速度の速い二次キャッシュメモリを有する。二次キャッシュ部30は、一次キャッシュ部20から要求されたアクセスアドレスのデータが二次キャッシュメモリに存在する場合、そのデータを一次キャッシュ登録データとして一次キャッシュ部20に供給する。一次キャッシュ登録データとして一次キャッシュ部20に供給されたデータは、一次キャッシュ部20にて保持されるとともに命令発行部・命令実行部10に供給される。また、二次キャッシュ部20は、要求されたアクセスアドレスのデータが二次キャッシュメモリに存在しない場合、そのデータを要求する二次キャッシュ登録要求を主記憶装置60に発行する。
主記憶装置60は、二次キャッシュ部30からの二次キャッシュ登録要求を受けると、要求されたアクセスアドレスのデータを二次キャッシュ登録データとして二次キャッシュ部30に供給する。二次キャッシュ登録データとして二次キャッシュ部30に供給されたデータは、二次キャッシュ部30及び一次キャッシュ部20のそれぞれにて保持されるとともに命令発行部・命令実行部10に供給される。
プリフェッチ設定レジスタ40は、ハードウェアプリフェッチ制御部50Aの動作を指示するレジスタである。本実施形態では、プリフェッチ設定レジスタ40によって、どのようなハードウェアプリフェッチを行うかを設定することができる。メモリアクセス命令に付加されたプリフェッチ指示情報のプリフェッチ設定レジスタ番号により示されるプリフェッチ設定レジスタ40に設定された情報が、ハードウェアプリフェッチ制御部50Aに供給される。プリフェッチ設定レジスタ40は、図2に示すようなフィールドを有し、設定レジスタ書き込み命令を用いてソフトウェアによって設定情報が更新可能となっている。
図2は、プリフェッチ設定レジスタ40の構成例を示す図である。バリッドビット(V)201は、このプリフェッチ設定レジスタに設定された情報が有効であるか否かを示す。本実施形態では、バリッドビット(V)201の値が“1”である場合に有効であるとし、バリッドビット(V)201の値が“0”である場合に無効であるとする。プリフェッチ設定レジスタ40のバリッドビット(V)201の値が“0”である場合、本実施形態ではハードウェアプリフェッチ動作は行われない。
優先度指示ビット(L1S)202は、一次キャッシュプリフェッチの優先度が高いことを示すものであり、一次キャッシュプリフェッチの重要度が高く、優先的に処理するなどの制御重み付けに使用される。また、優先度指示ビット(L2S)203は、二次キャッシュプリフェッチの優先度が高いことを示すものであり、二次キャッシュプリフェッチの重要度が高く、優先的に処理するなどの制御重み付けに使用される。
フィールド204は、先行のメモリアクセス命令と後続のメモリアクセス命令との間のアクセスアドレスの差分期待値(PFQ_OFFSET)が格納される。差分期待値(PFQ_OFFSET)は、先行のメモリアクセス命令のアクセスアドレスに対してどの程度離れたアドレスに後続のメモリアクセス命令がきたらハードウェアプリフェッチ要求を生成するかを指示するためのものである。
フィールド205は、ハードウェアプリフェッチ要求を生成する際、メモリアクセス命令のアクセスアドレスからどの程度離れたアドレスに対して二次キャッシュプリフェッチ要求を生成するかを指示する二次キャッシュプリフェッチ距離(L2PF_DIST)が格納される。また、フィールド206は、ハードウェアプリフェッチ要求を生成する際、メモリアクセス命令のアクセスアドレスからどの程度離れたアドレスに対して一次キャッシュプリフェッチ要求を生成するかを指示する一次キャッシュプリフェッチ距離(L1PF_DIST)が格納される。
本実施形態に示す例では、設定される差分期待値(PFQ_OFFSET)、プリフェッチ距離(L2PF_DIST)、プリフェッチ距離(L1PF_DIST)のそれぞれにおける最上位ビット(本例では第21ビット)をサインビットとする。したがって、図2に示す例では、差分期待値(PFQ_OFFSET)、プリフェッチ距離(L2PF_DIST)、プリフェッチ距離(L1PF_DIST)のそれぞれは、±2MBの範囲で設定可能であり、アドレス昇順方向及びアドレス降順方向のどちらに対してもハードウェアプリフェッチの制御が可能となる。なお、プリフェッチ距離(L2PF_DIST)が0の場合には二次キャッシュプリフェッチ要求は生成されず、プリフェッチ距離(L1PF_DIST)が0の場合には一次キャッシュプリフェッチ要求は生成されない。
ここで、メモリアクセス命令にプリフェッチ指示情報を付加する方法の例としては、例えば図3や図4に示す方法がある。図3は、メモリアクセス命令の命令コードの一部を使ってプリフェッチ指示情報を付加する例を示している。命令種別、ベースアドレスが格納されたベースレジスタ番号、及びベースアドレスに対するオフセットを示すアドレス即値をそれぞれ指定する領域301、302、303に加えて領域304、305を設けて、プリフェッチモード情報(PF_MODE)及びプリフェッチ設定レジスタ番号をそれぞれ指定する。
図4は、アクセスアドレスの未使用ビットを使ってプリフェッチ指示情報を付加する例を示している。演算処理装置によっては、メモリアクセス命令におけるアクセスアドレスとして使用可能なアドレス範囲の内の一部しか使用しないことがあり、このような未使用のアドレス範囲が存在する場合には未使用ビットを使ってプリフェッチ指示情報を付加することが可能である。例えば、図4(A)に示すようにメモリアクセス命令では下位側の領域403だけを使用する場合、上位側に領域401、402を設けてプリフェッチモード情報(PF_MODE)及びプリフェッチ設定レジスタ番号をそれぞれ指定する。
例えば、図4(B)に示すようなプログラムを実行することで、プリフェッチモード情報(PF_MODE)及びプリフェッチ設定レジスタ番号を設定することができる。なお、図4(B)には、プリフェッチモード情報(PF_MODE)が2ビットで値“10”を設定し、プリフェッチ設定レジスタ番号が4ビットで値“0000”を設定する例を示している。
まず、配列aのアクセスアドレスを取得する。そして、値“0x03ffffff”と論理積をとることによりプリフェッチモード情報(PF_MODE)及びプリフェッチ設定レジスタ番号を指示する上位6ビットの値を0にクリアした後、値“0x80000000”と論理和をとることによりプリフェッチモード情報(PF_MODE)及びプリフェッチ設定レジスタ番号を指示する。その後、メモリアクセス命令の実行において、プリフェッチ指示情報(プリフェッチモード情報(PF_MODE)及びプリフェッチ設定レジスタ番号)を埋め込んだアドレスをロードする。
図5に、プリフェッチモード情報(PF_MODE)で指定するハードウェアプリフェッチに係る動作モードの例を示す。一例として本実施形態においては、PF_MODE=00の場合が通常の連続アクセスのハードウェアプリフェッチの動作モードを示し、PF_MODE=01の場合がハードウェアプリフェッチの動作の抑止を示している。なお、通常の連続アクセスのハードウェアプリフェッチの動作モードでは、プリフェッチ設定レジスタを用いずに、ハードウェア設定に従ってハードウェアプリフェッチ要求が生成される。
また、PF_MODE=10の場合がプリフェッチアドレスキューへの登録を含んだプリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PFQ登録モード)を示し、PF_MODE=11の場合がプリフェッチアドレスキューへの登録を行わないプリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PFQ非登録モード)を示している。PF_MODE=10のPFQ登録モードでは、キャッシュミスを契機にプリフェッチアドレスキュー登録した後、後続メモリアクセス命令でハードウェアプリフェッチ要求を生成するため、キャッシュヒットが続くケースにはハードウェアプリフェッチ要求が生成されないというメリットがある反面、プリフェッチアドレスキューの資源数を超えて動作することができない。それに対して、PF_MODE=11のPFQ非登録モードでは、メモリアクセス命令の実行と同時にハードウェアプリフェッチ要求を生成するため、キャッシュヒットであってもハードウェアプリフェッチ要求が生成されてしまうが、プリフェッチアドレスキューの資源数に関係なくプリフェッチ要求を生成することができる。
図1に戻り、ハードウェアプリフェッチ制御部50Aは、プリフェッチアドレスキュー51、パターン監視部52、一次キャッシュプリフェッチ要求生成部53A、二次キャッシュプリフェッチ要求生成部54A、プリフェッチアドレスキュー更新アドレス生成部55、プリフェッチアドレスキュー制御部56、及びプリフェッチアドレスキュー動作設定レジスタ57を有する。ハードウェアプリフェッチ制御部50Aは、プリフェッチ指示情報が付加されたメモリアクセス命令及びプリフェッチ設定レジスタ40の指示等に基づいて、ハードウェアプリフェッチ要求の生成及び発行を制御する。
プリフェッチアドレスキュー51は、過去に実行されたメモリアクセス命令のアクセスアドレスに基づくアドレス情報(アドレスパターン)を保持する。図1に示す例では、プリフェッチアドレスキュー51は、エントリ<0>〜エントリ<N>の(N+1)のエントリを有し、各エントリにアドレス情報を保持する。なお、プリフェッチアドレスキュー51のエントリに空きがない場合、LRU(Least Recently Used)制御等に従って選択された1つのエントリにアドレス情報が上書きされる。
通常の連続アクセスのハードウェアプリフェッチの動作モード(PF_MODE=00)では、アクセスアドレスに対してハードウェア設定されたアドレス(例えばキャッシュラインサイズ)だけ離れたアドレスがアドレス情報としてプリフェッチアドレスキュー51に保持される。また、プリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PF_MODE=10)では、アクセスアドレスに対して差分期待値(PFQ_OFFSET)だけ離れたアドレスがアドレス情報としてプリフェッチアドレスキュー51に保持される。
パターン監視部52は、命令発行部・命令実行部10からのメモリアクセス命令のアクセスアドレスと、プリフェッチアドレスキュー51の各エントリに保持されたアドレス情報(アドレスパターン)との比較処理を行う。また、パターン監視部52は、比較処理の結果を、一次キャッシュプリフェッチ要求生成部53A、二次キャッシュプリフェッチ要求生成部54A、プリフェッチアドレスキュー更新アドレス生成部55、及びプリフェッチアドレスキュー制御部56に出力する。
一次キャッシュプリフェッチ要求生成部53Aは、パターン監視部52から出力された比較処理の結果等に応じて、一次キャッシュプリフェッチ要求を生成し一次キャッシュ部20に発行する。二次キャッシュプリフェッチ要求生成部54Aは、パターン監視部52から出力された比較処理の結果等に応じて、二次キャッシュプリフェッチ要求を生成し二次キャッシュ部30に発行する。プリフェッチアドレスキュー更新アドレス生成部55は、パターン監視部52から出力された比較処理の結果等に応じて、メモリアクセス命令のアクセスアドレスに基づくアドレス情報を生成しプリフェッチアドレスキュー制御部56に出力する。
プリフェッチアドレスキュー制御部56は、パターン監視部52から出力された比較処理の結果及び一次キャッシュ部20からのキャッシュミス情報に応じて、プリフェッチアドレスキュー更新アドレス生成部55で生成されたアドレス情報(アドレスパターン)をプリフェッチアドレスキュー51に保持させる。プリフェッチアドレスキュー制御部56は、プリフェッチアドレスキュー動作設定レジスタ57を参照するとともにLRU制御等に従ってプリフェッチアドレスキュー51のエントリを選択しアドレス情報(アドレスパターン)を保持させる。
プリフェッチアドレスキュー動作設定レジスタ57は、アドレス情報の登録を行う複数の動作モードでプリフェッチアドレスキュー51を共有する場合、各動作モードで最大何エントリまでプリフェッチアドレスキュー51を使用できるかを設定するレジスタである。プリフェッチアドレスキュー動作設定レジスタ57は、図6に示すようなフィールドを有し、ソフトウェアによって情報を設定可能となっている。
図6は、プリフェッチアドレスキュー動作設定レジスタ57の構成例を示す図である。図6に示す例では、フィールド601に通常の連続アクセスのハードウェアプリフェッチの動作モード(PF_MODE=00)で使用可能なエントリの最大数(MODE00_PFQ_MAX)を設定し、フィールド602にプリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PFQ登録モード)(PF_MODE=10)で使用可能なエントリの最大数(MODE10_PFQ_MAX)を設定する。図6に示した例では、それぞれのフィールド601、602は5ビットであり、使用可能なエントリの最大数を0〜31の範囲で指示可能である。
例えば、プリフェッチアドレスキュー51が16個のエントリを有し、フィールド601、602に設定された値がそれぞれ8である場合、8個のエントリずつ分割して使用することとなる。また、例えば、プリフェッチアドレスキュー51が16個のエントリを有し、フィールド601、602に設定された値がそれぞれ16である場合、どちらの動作モードでも16個のエントリを使用して良いこととなり、2つの動作モードで完全に共有した状態で動作する。
次に、本実施形態におけるハードウェアプリフェッチ制御部50Aの動作について説明する。図7及び図8は、ハードウェアプリフェッチ制御部50Aの処理動作例を示すフローチャートである。以下では、命令発行部・命令実行部10からアクセスアドレスAに対するメモリアクセス命令が発行された場合を例に説明する。
ハードウェアプリフェッチ制御部50Aは、ステップS701にて、命令発行部・命令実行部10から発行されたアクセスアドレスAに対するメモリアクセス命令が入力されると、ステップS702にて、付加されているプリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“10”又は“11”であるか否かを判定する。すなわち、ハードウェアプリフェッチ制御部50Aは、プリフェッチモード情報により示される動作モードが、プリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モードであるか否かを判定する。
プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“10”又は“11”である、すなわちプリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モードであると判定した場合(ステップS702のYES)、ステップS703へ進む。ステップS703にて、ハードウェアプリフェッチ制御部50Aは、プリフェッチ指示情報のプリフェッチ設定レジスタ番号で指定されたプリフェッチ設定レジスタ40が有効であるか否かを判定する。
指定されたプリフェッチ設定レジスタ40が有効であると判定した場合(ステップS703のYES)、ステップS704にて、ハードウェアプリフェッチ制御部50Aは、プリフェッチモード情報(PF_MODE)が“10”であるか否かを判定する。すなわち、ハードウェアプリフェッチ制御部50Aは、プリフェッチモード情報により示される動作モードが、プリフェッチアドレスキューへの登録処理を含んだプリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PFQ登録モード)であるか否かを判定する。
プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“10”である、すなわちプリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PFQ登録モード)であると判定した場合(ステップS704のYES)、ステップS705へ進む。ステップS705にて、ハードウェアプリフェッチ制御部50Aは、パターン監視部52によりアクセスアドレスAと一致するアドレス情報を保持したエントリがプリフェッチアドレスキュー51に存在するか否かを判定する。
アクセスアドレスAと一致するアドレス情報を保持したエントリがプリフェッチアドレスキュー51に存在すると判定した場合(ステップS705のYES)、ステップS706へ進む。ステップS706にて、ハードウェアプリフェッチ制御部50Aは、そのエントリが保持するアドレス情報を上書きして更新する。このとき、ハードウェアプリフェッチ制御部50Aは、指定されたプリフェッチ設定レジスタ40に設定されている差分期待値(PFQ_OFFSET)を用いてアドレス(A+PFQ_OFFSET)をプリフェッチアドレスキュー更新アドレス生成部55で計算し、新たなアドレス情報として保持させる。
また、ステップS706にて、ハードウェアプリフェッチ制御部50Aは、プリフェッチ設定レジスタ40の指示に基づくハードウェアプリフェッチ要求を、一次キャッシュプリフェッチ要求生成部53A及び二次キャッシュプリフェッチ要求生成部54Aにより生成発行させる。一次キャッシュプリフェッチ要求生成部53Aでは、設定されているプリフェッチ距離(L1PF_DIST)だけアクセスアドレスAから離れたアドレス(A+L1PF_DIST)に対する一次キャッシュプリフェッチ要求を生成させる。また、二次キャッシュプリフェッチ要求生成部54Aでは、設定されているプリフェッチ距離(L2PF_DIST)だけアクセスアドレスAから離れたアドレス(A+L2PF_DIST)に対する二次キャッシュプリフェッチ要求を生成させる。その後、処理を終了する。
ステップS705において、アクセスアドレスAと一致するアドレス情報を保持したエントリがプリフェッチアドレスキュー51に存在しないと判定した場合(ステップS705のNO)、ステップS707へ進む。ステップS707にて、ハードウェアプリフェッチ制御部50Aは、アクセスアドレスAのメモリアクセス命令がキャッシュミスであるか否かを判定する。
アクセスアドレスAのメモリアクセス命令がキャッシュミスであると判定した場合(ステップS707のYES)、ステップS708へ進む。ステップS708にて、ハードウェアプリフェッチ制御部50Aは、指定されたプリフェッチ設定レジスタ40に設定されている差分期待値(PFQ_OFFSET)を用いてアドレス(A+PFQ_OFFSET)をプリフェッチアドレスキュー更新アドレス生成部55で計算し、プリフェッチアドレスキュー51のエントリに新規登録する。ステップS708へ進んだ場合、プリフェッチアドレスキュー51へのアドレス情報の新規登録だけを行い、ハードウェアプリフェッチ要求の生成は行わずに、処理を終了する。
ステップS707において、アクセスアドレスAのメモリアクセス命令がキャッシュミスでない、すなわちキャッシュヒットであると判定した場合(ステップS707のNO)、ステップS709へ進み、プリフェッチアドレスキュー51へのアドレス情報の登録及びハードウェアプリフェッチ要求の生成をともに行わずに、処理を終了する。
ステップS704において、プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“10”でない、すなわちプリフェッチモード情報が“11”であると判定した場合(ステップS704のNO)、ステップS710へ進む。つまり、ステップS704において、プリフェッチモード情報により示される動作モードが、プリフェッチ設定レジスタの指示に基づくハードウェアプリフェッチの動作モード(PFQ非登録モード)であると判定した場合、ステップS710へ進む。
ステップS710にて、ハードウェアプリフェッチ制御部50Aは、プリフェッチアドレスキュー51へのアドレス情報の登録を行わずに、プリフェッチ設定レジスタ40の指示に基づくハードウェアプリフェッチ要求を、一次キャッシュプリフェッチ要求生成部53A及び二次キャッシュプリフェッチ要求生成部54Aにより生成発行させる。一次キャッシュプリフェッチ要求生成部53Aでは、設定されているプリフェッチ距離(L1PF_DIST)だけアクセスアドレスAから離れたアドレス(A+L1PF_DIST)に対する一次キャッシュプリフェッチ要求を生成させる。また、二次キャッシュプリフェッチ要求生成部54Aでは、設定されているプリフェッチ距離(L2PF_DIST)だけアクセスアドレスAから離れたアドレス(A+L2PF_DIST)に対する二次キャッシュプリフェッチ要求を生成させる。その後、処理を終了する。
ステップS703において、プリフェッチ指示情報のプリフェッチ設定レジスタ番号で指定されたプリフェッチ設定レジスタ40が有効ではないと判定した場合(ステップS703のNO)、ステップS711へ進み、プリフェッチアドレスキュー51へのアドレス情報の登録及びハードウェアプリフェッチ要求の生成をともに行わずに、処理を終了する。
ステップS702において、プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“10”でも“11”でもないと判定した場合(ステップS702のNO)、ステップS712へ進む。ステップS7712にて、ハードウェアプリフェッチ制御部50Aは、プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“01”であるか否かを判定する。すなわち、ハードウェアプリフェッチ制御部50Aは、プリフェッチモード情報により示される動作モードが、ハードウェアプリフェッチ抑止であるか否かを判定する。
プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“01”である、すなわちハードウェアプリフェッチ抑止であると判定した場合(ステップS712のYES)、ステップS711へ進み、プリフェッチアドレスキュー51へのアドレス情報の登録及びハードウェアプリフェッチ要求の生成をともに行わずに、処理を終了する。
一方、プリフェッチ指示情報のプリフェッチモード情報(PF_MODE)が“01”でない、すなわちプリフェッチモード情報が“00”であると判定した場合(ステップS712のNO)、ステップS713へ進む。つまり、ステップS712において、プリフェッチモード情報により示される動作モードが、通常の連続アクセスのハードウェアプリフェッチの動作モードであると判定した場合、ステップS713へ進む。
ステップS713にて、ハードウェアプリフェッチ制御部50Aは、通常の連続アクセスのハードウェアプリフェッチの動作を開始し、図8に示すステップS801へ進む。ステップS801にて、ハードウェアプリフェッチ制御部50Aは、パターン監視部52によりアクセスアドレスAのキャッシュラインとキャッシュラインが一致するアドレス情報を保持したエントリがプリフェッチアドレスキュー51に存在するか否かを判定する。
アクセスアドレスAのキャッシュラインとキャッシュラインが一致するアドレス情報を保持したエントリがプリフェッチアドレスキュー51に存在すると判定した場合(ステップS801のYES)、ステップS802へ進む。ステップS802にて、ハードウェアプリフェッチ制御部50Aは、そのエントリが保持するアドレス情報を上書きして更新する。このとき、ハードウェアプリフェッチ制御部50Aは、(A+キャッシュラインサイズ)のアドレスをプリフェッチアドレスキュー更新アドレス生成部55で計算し、新たなアドレス情報として保持させる。
また、ステップS802にて、ハードウェアプリフェッチ制御部50Aは、ハードウェア回路によって設定されるプリフェッチ距離に基づくハードウェアプリフェッチ要求を、一次キャッシュプリフェッチ要求生成部53A及び二次キャッシュプリフェッチ要求生成部54Aにより生成発行させる。一次キャッシュプリフェッチ要求生成部53Aでは、設定されるプリフェッチ距離だけアクセスアドレスAから離れたアドレスに対する一次キャッシュプリフェッチ要求を生成させる。また、二次キャッシュプリフェッチ要求生成部54Aでは、設定されているプリフェッチ距離だけアクセスアドレスAから離れたアドレスに対する二次キャッシュプリフェッチ要求を生成させる。その後、処理を終了する。
ステップS801において、アクセスアドレスAのキャッシュラインとキャッシュラインが一致するアドレス情報を保持したエントリがプリフェッチアドレスキュー51に存在しないと判定した場合(ステップS801のNO)、ステップS803へ進む。ステップS803にて、ハードウェアプリフェッチ制御部50Aは、アクセスアドレスAのメモリアクセス命令がキャッシュミスであるか否かを判定する。
アクセスアドレスAのメモリアクセス命令がキャッシュミスであると判定した場合(ステップS803のYES)、ステップS804へ進む。ステップS804にて、ハードウェアプリフェッチ制御部50Aは、(A+キャッシュラインサイズ)のアドレスをプリフェッチアドレスキュー更新アドレス生成部55で計算し、プリフェッチアドレスキュー51のエントリに新規登録する。ステップS804へ進んだ場合、プリフェッチアドレスキュー51へのアドレス情報の新規登録だけを行い、ハードウェアプリフェッチ要求の生成は行わずに、処理を終了する。
ステップS803において、アクセスアドレスAのメモリアクセス命令がキャッシュミスでない、すなわちキャッシュヒットであると判定した場合(ステップS803のNO)、ステップS805へ進み、プリフェッチアドレスキュー51へのアドレス情報の登録及びハードウェアプリフェッチ要求の生成をともに行わずに、処理を終了する。
第1の実施形態によれば、ハードウェアプリフェッチの動作を制御する複数のプリフェッチ設定レジスタを設け、メモリアクセス命令に付加するプリフェッチ指示情報によりプリフェッチ設定レジスタ番号を指示することで、ハードウェアプリフェッチ動作をソフトウェアから制御することができる。また、メモリアクセス命令毎に異なるプリフェッチ設定レジスタを指示すれば、データの特性に応じた最適なハードウェアプリフェッチ要求を生成させることができる。
また、本実施形態では、先行のメモリアクセス命令と後続のメモリアクセス命令との間のアクセスアドレスの差分の期待値を、プリフェッチ設定レジスタに設定することができ、連続アクセスだけでなく、任意のストライドアクセスに対してもハードウェアプリフェッチ要求を生成し発行することが可能となる。また、従来のハードウェアでアドレス差分を監視してアクセスパターン抽出するのに比べて、後続のアクセスアドレスの期待値が一意に設定されるため、アクセスパターンの検出回路が複雑にならず、回路や電力の効率が良いハードウェアの実装が可能である。
また、本実施形態では、後続のメモリアクセス命令でのメモリアドレスに対して、どれだけ先のプリフェッチ距離のアドレスに対してハードウェアプリフェッチ要求を生成し発行するかを、プリフェッチ設定レジスタに設定することができる。そのため、従来のハードウェアプリフェッチでは固定的なプリフェッチ距離でプリフェッチ要求を生成していたのに対して、ソフトウェアから柔軟なプリフェッチ距離の調整が可能となる。例えば、アクセスパターンは同じでも、プリフェッチ距離の異なるハードウェアプリフェッチ要求を生成したい場合には、メモリアクセス命令で指示するプリフェッチ設定レジスタを使い分けることで実現することができる。
このように、本実施形態では、メモリアクセス命令に付加する、ソフトウェアから指示可能な複数のプリフェッチ設定レジスタと複数のハードウェアプリフェッチの動作モードを、メモリアクセス命令毎に使い分けることで、ハードウェアプリフェッチのアクセスパターン・プリフェッチ距離・プリエッチアドレスキューの使い方を、ソフトウェアから柔軟に制御しながらハードウェアプリフェッチ要求を生成することが可能である。ハードウェアとソフトウェアが協調動作することで性能改善効率も良く、またハードウェアの回路物量や消費電力も削減することができる。また、メモリアクセス命令に付随してソフトウェア指示することで、ソフトウェアプリフェッチ命令を挿入する際の問題点であった命令数の増加や、冗長なプリフェッチ挿入といった問題を起こすことなく、メモリアクセス命令の実行とともにハードウェアプリフェッチ制御部によりアドレス計算やプリフェッチ要求の生成発行を行うことができる。プリフェッチ設定レジスタ番号を指示することで、命令コードに必要となるフィールドのビット数も少なくてすみ、またプリフェッチ設定レジスタの定義しだいでアドレス差分期待値やプリフェッチ距離の範囲を広げることも可能である。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
図9は、第2の実施形態における演算処理装置の構成例を示すブロック図である。この図9において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。第2の実施形態における演算処理装置(プロセッサ)は、図9に示すように命令発行部・命令実行部10、一次キャッシュ部20、二次キャッシュ部30、プリフェッチ設定レジスタ40、及びハードウェアプリフェッチ制御部50Bを有する。
第2の実施形態における演算処理装置は、ハードウェアプリフェッチ制御部50Bが、第1の実施形態における演算処理装置が有するハードウェアプリフェッチ制御部50Aと異なる。ハードウェアプリフェッチ制御部50Bは、一次キャッシュプリフェッチ要求生成部53B及び二次キャッシュプリフェッチ要求生成部54Bを有する。
第2の実施形態において、一次キャッシュプリフェッチ要求生成部53Bは、プリフェッチ設定レジスタ40の指示に基づいて、一次キャッシュプリフェッチ要求を生成し一次キャッシュ部20に発行する。また、二次キャッシュプリフェッチ要求生成部54Bは、プリフェッチ設定レジスタ40の指示に基づいて、二次キャッシュプリフェッチ要求を生成し二次キャッシュ部30に発行する。本実施形態においては、プリフェッチアドレスキューを有さず、メモリアクセス命令と同時にハードウェアプリフェッチ要求の発行を可能にしている。
このような構成によれば、過去に実行したメモリアクセス命令のアドレス情報を保持するプリフェッチアドレスキューを備えなくても、メモリアクセス命令と同時に、プリフェッチ設定レジスタの設定に応じて、アドレス計算を行ってハードウェアプリフェッチ要求を生成することも可能である。そのため、プリフェッチアドレスキューそのものを実装しないことで、ハードウェア物量を削減した演算処理装置を実装することも可能である。
図10は、本発明の一実施形態におけるプリフェッチ指示情報付きのメモリアクセス命令の生成処理の例を示すフローチャートである。図10には、ソフトウェアプリフェッチ生成のための命令数増加を考慮して、ハードウェアプリフェッチの生成を指示するメモリアクセス命令をソフトウェアが生成する際のフローチャートの例を示している。
ソフトウェア・プログラムとして、典型的なメモリアクセス命令のアクセスパターンの例としては、インダイレクトアクセス、ストライドアクセス、及び連続アクセスがある。キャッシュライン単位で動作するプリフェッチの観点では、ストライド幅がキャッシュラインサイズより小さいストライドアクセスまでが、従来の連続アクセスハードウェアプリフェッチでもサポート可能な範囲である。
インダイレクトアクセスは、アクセスアドレスが別変数を参照して決定されるため、連続アクセスであるケースもあるが、ランダムアクセスであるケースもある。インダイレクトアクセスだが、連続アクセス又は連続アクセスの可能性が高い場合には、従来の連続アクセスのハードウェアプリフェッチで、動的なアクセスパターン検出をした上でハードウェアプリフェッチ生成することは可能である。一方、ソフトウェアプリフェッチ命令を生成しようとすると、インダイレクトアクセスにおいてはプリフェッチによりアクセスするアドレス(アクセスアドレス+プリフェッチ距離)の計算が必要となり、命令数も増加するし、不要なソフトウェアプリフェッチ命令が挿入される可能性も高く、ソフトウェアプリフェッチ命令のコストが大きい。
そこで、図10に示す処理例では、インダイレクトアクセス(連続アクセスと推定されるケース)、ストライドアクセス、連続アクセスの順にプリフェッチアドレスキューを割り当てるようにしている。
まず、ステップS1001にて、インダイレクトアクセスではあるが連続アクセスパターンだと推定されて連続アクセスのプリフェッチしたいケースは、プリフェッチアドレスキューが有するエントリ数の範囲でプリフェッチモード情報(PF_MODE)として00又は10を指示してメモリアクセス命令生成する。全体として見れば結果的に連続アクセスの性質はあるが、連続アクセスを起こしているメモリアクセス命令が特定できない場合などはプリフェッチモード情報(PF_MODE)を00で指示して、従来の連続アクセスのハードウェアプリフェッチでの連続アクセスパターン検出からハードウェアプリフェッチで行う。どのメモリアクセス命令に連続性があるか特定できる場合には、プリフェッチモード情報(PF_MODE)を10で指示してプリフェッチ設定レジスタを使っても良い。
次に、ステップS1002にて、ストライドアクセスに対するプリフェッチの判定を行う。プリフェッチしたいストライドアクセスが存在する場合、ステップS1003にて、プリフェッチアドレスキューのエントリ数の範囲で、ハードウェアプリフェッチを出したいストライドアクセスに対してプリフェッチモード情報(PF_MODE)を10(PFQ登録モード)でメモリアクセス命令を生成する。ストライド幅などの情報はプリフェッチ設定レジスタに設定する。プリフェッチアドレスキューのエントリ数を超えてストライドアクセスにおいてハードウェアプリフェッチを出したい場合は、プリフェッチ設定レジスタを設定した上で、プリフェッチモード情報(PF_MODE)を11(PFQ非登録モード)でメモリアクセス命令を生成する。
最後に、連続アクセスに対して方針を決定する。ステップS1004にて、プリフェッチ要求を出したい連続アクセスがプリフェッチアドレスキューのエントリ数の範囲か否かを判定する。その結果、プリフェッチアドレスキューのエントリ数の範囲であれば、ステップS1006にて、プリフェッチモード情報(PF_MODE)として00又は10を指示したメモリアクセス命令を生成する。また、連続アクセスのストリーム数がプリフェッチアドレスキューのエントリ数の範囲を超えている場合は、ステップS1005にて、着目している連続アクセスをハードウェアプリフェッチするか否かを個別に判定する。そして、ステップS1006にてプリフェッチアドレスキューを優先的に割り当ててプリフェッチモード情報(PF_MODE)として00又は10を指示するか、ステップS1007にてプリフェッチアドレスキューを使用せずにプリフェッチモード情報(PF_MODE)として11を指示するか、ステップS1008にてプリフェッチモード情報(PF_MODE)として01を指示してハードウェアプリフェッチ抑止にし、必要に応じてソフトウェアプリフェッチ命令を挿入するかの、いずれかを選択する。
ソフトウェアプリフェッチ命令を挿入するためには、プリフェッチ対象のアドレスを生成する必要があり、プリフェッチアドレスの生成では、インダイレクトアクセスが最も命令数やレジスタを必要とするために性能影響が大きい。次いで、ストライドアクセス、最後に連続アクセスの順に、ソフトウェアプリフェッチ命令のコストがかかる。図10に示すような生成処理を行うことで、インダイレクトアクセス、ストライドアクセス、連続アクセスの順に優先付けて、プリフェッチアドレスキューに登録するモードでプリフェッチ指示情報付きのメモリアクセス命令を生成することが可能となる。
なお、前述した実施形態では、命令発行部・命令実行部10と主記憶装置60との間に、一次キャッシュ部20及び二次キャッシュ部30の二階層のキャッシュメモリを有する構成を例に説明したが、これに限定されるものではない。命令発行部・命令実行部10と主記憶装置60との間に任意の階層数のキャッシュメモリを有する構成に、本発明は適用可能である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
10 命令発行部・命令実行部
20 一次キャッシュ部
30 二次キャッシュ部
40 プリフェッチ設定レジスタ
50A、50B ハードウェアプリフェッチ制御部
51 プリフェッチアドレスキュー
52 パターン監視部
53A、53B 一次キャッシュプリフェッチ要求生成部
54A、54B 二次キャッシュプリフェッチ要求生成部
55 プリフェッチアドレスキュー更新アドレス生成部
56 プリフェッチアドレスキュー制御部
57 プリフェッチアドレスキュー動作設定レジスタ
60 主記憶装置

Claims (11)

  1. メモリアクセス命令を実行する命令実行部と、
    前記メモリアクセス命令に係るデータを記憶する記憶部と前記命令実行部との間に配されたキャッシュメモリ部と、
    前記キャッシュメモリ部に対して発行するプリフェッチに係る制御情報を保持する制御情報保持部と、
    過去に実行された前記メモリアクセス命令に基づくアドレス情報を保持するアドレス情報保持部と、
    前記アドレス情報保持部に保持されたアドレス情報と実行する前記メモリアクセス命令でのアクセスアドレスとを比較し、比較結果に基づいて前記メモリアクセス命令に付加された指示情報で指定される前記制御情報保持部の制御情報に応じた前記キャッシュメモリ部に対するハードウェアプリフェッチ要求を生成し発行する制御部とを有する演算処理装置。
  2. 前記制御情報保持部に保持される前記制御情報をソフトウェア指示により書き換え可能である請求項1記載の演算処理装置。
  3. 前記制御情報保持部に保持する制御情報は、前記メモリアクセス命令でのアクセスアドレスにおける差分の期待値を含み、
    前記メモリアクセス命令を実行した場合、前記メモリアクセス命令のアクセスアドレスと前記差分の期待値とから計算されるアドレス情報を前記アドレス情報保持部に保持させる制御部を有する請求項1又は2記載の演算処理装置。
  4. 前記制御情報保持部に保持する制御情報は、前記メモリアクセス命令でのアクセスアドレスに対するハードウェアプリフェッチ要求のアクセス先のアドレスを指示するプリフェッチ距離に係る情報を含む請求項1〜3の何れか1項に記載の演算処理装置。
  5. 前記キャッシュメモリ部に対して発行するプリフェッチに係る制御情報を保持する前記制御情報保持部を複数有する請求項1〜4の何れか1項に記載の演算処理装置。
  6. 前記制御情報保持部の制御情報に応じた前記キャッシュメモリ部に対するハードウェアプリフェッチ要求を生成するか、ハードウェア設定に応じた前記キャッシュメモリ部に対するハードウェアプリフェッチ要求を生成するかを前記メモリアクセス命令に付加された指示情報によって切り替え可能である請求項1〜5の何れか1項に記載の演算処理装置。
  7. 前記制御情報保持部の制御情報に応じた前記キャッシュメモリ部に対するハードウェアプリフェッチ要求を生成する場合、キャッシュミスの発生を契機に前記アドレス情報保持部にアドレス情報を登録してアクセスパターン検出を行うとともにハードウェアプリフェッチ要求を生成する第1のモードと、前記アドレス情報保持部にアドレス情報を登録せずにメモリアクセス命令と同時にハードウェアプリフェッチ要求を生成する第2のモードとを、前記メモリアクセス命令に付加された指示情報によって切り替え可能である請求項1〜6の何れか1項に記載の演算処理装置。
  8. 前記演算処理装置はさらに、設定情報を保持する設定情報保持部を有し、
    前記制御情報保持部の制御情報に応じた前記アドレス情報保持部の最大エントリ数と、前記設定情報保持部が設定する設定情報に応じた前記アドレス情報保持部の最大エントリ数とを、前記設定情報保持部に保持された設定情報に応じて切り替え可能である請求項1〜7の何れか1項に記載の演算処理装置。
  9. 前記ハードウェアプリフェッチ要求を生成するか否かを前記メモリアクセス命令に付加された指示情報によって制御する請求項1〜8の何れか1項に記載の演算処理装置。
  10. メモリアクセス命令を実行する命令実行部と、
    前記メモリアクセス命令に係るデータを記憶する記憶部と前記命令実行部との間に配されたキャッシュメモリ部と、
    前記キャッシュメモリ部に対して発行するプリフェッチに係る制御情報を保持する制御情報保持部と、
    前記メモリアクセス命令に付加された指示情報で指定される前記制御情報保持部の制御情報に応じた前記キャッシュメモリ部に対するハードウェアプリフェッチ要求を生成し発行する制御部とを有する演算処理装置。
  11. メモリアクセス命令を実行する命令実行部と、前記メモリアクセス命令に係るデータを記憶する記憶部と前記命令実行部との間に配されたキャッシュメモリ部と、前記キャッシュメモリ部に対して発行するプリフェッチに係る制御情報を保持する制御情報保持部と、過去に実行された前記メモリアクセス命令に基づくアドレス情報を保持するアドレス情報保持部とを有する演算処理装置の制御方法において、
    前記演算処理装置が有する制御部が、前記アドレス情報保持部に保持されたアドレス情報と実行する前記メモリアクセス命令でのアクセスアドレスとを比較し、
    前記制御部が、比較結果に基づいて前記メモリアクセス命令に付加された指示情報で指定される前記制御情報保持部の制御情報に応じた前記キャッシュメモリ部に対するハードウェアプリフェッチ要求を生成し発行する演算処理装置の制御方法。
JP2015165280A 2015-08-24 2015-08-24 演算処理装置及び演算処理装置の制御方法 Active JP6458682B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015165280A JP6458682B2 (ja) 2015-08-24 2015-08-24 演算処理装置及び演算処理装置の制御方法
US15/222,999 US9990297B2 (en) 2015-08-24 2016-07-29 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015165280A JP6458682B2 (ja) 2015-08-24 2015-08-24 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2017045153A JP2017045153A (ja) 2017-03-02
JP6458682B2 true JP6458682B2 (ja) 2019-01-30

Family

ID=58095552

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015165280A Active JP6458682B2 (ja) 2015-08-24 2015-08-24 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US9990297B2 (ja)
JP (1) JP6458682B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10967298B2 (en) 2012-03-15 2021-04-06 Flodesign Sonics, Inc. Driver and control for variable impedence load
US10704021B2 (en) 2012-03-15 2020-07-07 Flodesign Sonics, Inc. Acoustic perfusion devices
US9950282B2 (en) 2012-03-15 2018-04-24 Flodesign Sonics, Inc. Electronic configuration and control for acoustic standing wave generation
US9458450B2 (en) 2012-03-15 2016-10-04 Flodesign Sonics, Inc. Acoustophoretic separation technology using multi-dimensional standing waves
US11708572B2 (en) 2015-04-29 2023-07-25 Flodesign Sonics, Inc. Acoustic cell separation techniques and processes
US11021699B2 (en) 2015-04-29 2021-06-01 FioDesign Sonics, Inc. Separation using angled acoustic waves
US11377651B2 (en) 2016-10-19 2022-07-05 Flodesign Sonics, Inc. Cell therapy processes utilizing acoustophoresis
US11459540B2 (en) 2015-07-28 2022-10-04 Flodesign Sonics, Inc. Expanded bed affinity selection
US11474085B2 (en) 2015-07-28 2022-10-18 Flodesign Sonics, Inc. Expanded bed affinity selection
US11214789B2 (en) 2016-05-03 2022-01-04 Flodesign Sonics, Inc. Concentration and washing of particles with acoustics
CA3041517A1 (en) 2016-10-19 2018-04-26 Flodesign Sonics, Inc. Affinity cell extraction by acoustics
US10452551B2 (en) * 2016-12-12 2019-10-22 Intel Corporation Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register
KR102353859B1 (ko) 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
JP2019164411A (ja) * 2018-03-19 2019-09-26 株式会社東芝 管理装置、情報処理装置、管理方法、およびプログラム
US11204875B1 (en) 2020-07-17 2021-12-21 International Business Machines Corporation Software assisted data address prefetch
JP7024127B2 (ja) * 2021-02-04 2022-02-22 株式会社東芝 管理装置、情報処理装置、管理方法、およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578130B2 (en) 2001-10-18 2003-06-10 International Business Machines Corporation Programmable data prefetch pacing
US6915415B2 (en) 2002-01-07 2005-07-05 International Business Machines Corporation Method and apparatus for mapping software prefetch instructions to hardware prefetch logic
US6871246B2 (en) * 2003-05-07 2005-03-22 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7318125B2 (en) 2004-05-20 2008-01-08 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
JP4212521B2 (ja) * 2004-06-30 2009-01-21 株式会社東芝 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム
US7533242B1 (en) 2005-10-31 2009-05-12 Sun Microsystems, Inc. Prefetch hardware efficiency via prefetch hint instructions
CN101689144B (zh) * 2007-06-19 2013-07-24 富士通株式会社 信息处理装置及其控制方法
JP2009230374A (ja) * 2008-03-21 2009-10-08 Fujitsu Ltd 情報処理装置,プログラム,及び命令列生成方法
US8156286B2 (en) 2008-12-30 2012-04-10 Advanced Micro Devices, Inc. Processor and method for using an instruction hint to prevent hardware prefetch from using certain memory accesses in prefetch calculations

Also Published As

Publication number Publication date
JP2017045153A (ja) 2017-03-02
US9990297B2 (en) 2018-06-05
US20170060751A1 (en) 2017-03-02

Similar Documents

Publication Publication Date Title
JP6458682B2 (ja) 演算処理装置及び演算処理装置の制御方法
US6446167B1 (en) Cache prefetching of L2 and L3
US8490065B2 (en) Method and apparatus for software-assisted data cache and prefetch control
US6574712B1 (en) Software prefetch system and method for predetermining amount of streamed data
JP5615361B2 (ja) スレッドシフト:コアへのスレッド割振り
US6356980B1 (en) Method and system for bypassing cache levels when casting out from an upper level cache
US20100146209A1 (en) Method and apparatus for combining independent data caches
EP1769364B1 (en) Information processing apparatus and information processing method
US10108548B2 (en) Processors and methods for cache sparing stores
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
JP2009098934A (ja) プロセッサ及びキャッシュメモリ
US8856453B2 (en) Persistent prefetch data stream settings
US20140310479A1 (en) Communicating prefetchers that throttle one another
JP6457200B2 (ja) プロセッシング装置
US6535962B1 (en) System and method for prefetching data using a hardware prefetch mechanism
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
JP2016536665A (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
JP2017191503A (ja) 演算処理装置、および演算処理装置の制御方法
JP2014115851A (ja) データ処理装置及びその制御方法
KR20190095489A (ko) 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
US7823013B1 (en) Hardware data race detection in HPCS codes
JP2003223359A (ja) 演算処理装置
US11474946B2 (en) Calculator and calculation method
KR20210097345A (ko) 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법
JP7131156B2 (ja) 演算処理装置及び演算処理装置の制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181210

R150 Certificate of patent or registration of utility model

Ref document number: 6458682

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150