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

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

Info

Publication number
JP6488711B2
JP6488711B2 JP2015005010A JP2015005010A JP6488711B2 JP 6488711 B2 JP6488711 B2 JP 6488711B2 JP 2015005010 A JP2015005010 A JP 2015005010A JP 2015005010 A JP2015005010 A JP 2015005010A JP 6488711 B2 JP6488711 B2 JP 6488711B2
Authority
JP
Japan
Prior art keywords
instruction
unit
prefetch
memory access
arithmetic processing
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
JP2015005010A
Other languages
English (en)
Other versions
JP2016130948A (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 JP2015005010A priority Critical patent/JP6488711B2/ja
Priority to US14/992,435 priority patent/US9824016B2/en
Publication of JP2016130948A publication Critical patent/JP2016130948A/ja
Application granted granted Critical
Publication of JP6488711B2 publication Critical patent/JP6488711B2/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
    • 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

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)
  • Advance Control (AREA)

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
CPU(Central Processing Unit)等の演算処理装置は、命令をデコードするデコード部と、デコードされた命令に基づいて演算を実行する演算部と、演算部と主記憶装置との間に配置されたキャッシュメモリとを有する。演算部は、主記憶装置またはキャッシュメモリに記憶されたデータを参照して、演算を実行する。キャッシュメモリは、主記憶装置が記憶するデータの一部を保持する。
演算処理装置は、演算処理装置と同一の半導体装置の内部にあり、同一のクロックで動作するキャッシュメモリに記憶されたデータを参照することにより、主記憶装置に記憶されたデータを参照する場合に比べて、データを参照するときの待ち時間を短縮できる。すなわち、演算処理装置は、主記憶装置に記憶された参照対象のデータをキャッシュメモリに予めフェッチするプリフェッチを実行することにより、データを参照する場合の待ち時間を短縮できる。
プリフェッチの実現方法として、ソフトウェアによるプリフェッチ(ソフトウェアプリフェッチ)と、ハードウェアによるプリフェッチ(ハードウェアプリフェッチ)とが知られている。ソフトウェアプリフェッチでは、プログラムのコンパイル装置は、ソースプログラムを演算処理装置で実行可能なオブジェクトプログラムに変換する際に、プリフェッチを実行するプリフェッチ命令をオブジェクトプログラムに挿入する。そして、演算処理装置は、プリフェッチ命令に基づいて、プリフェッチを実行する(例えば、特許文献1−3参照)。
一方、ハードウェアプリフェッチでは、ハードウェアプリフェッチ機構等のハードウェアが演算処理装置内に設けられる。例えば、ハードウェアプリフェッチ機構は、アクセス先が規則的に変化するメモリアクセスが実行されると判定した場合、次にアクセスされるデータを予測し、主記憶装置に記憶されたデータを予めフェッチする。
特開2003−223359号公報 特表2011−150691号公報 特開2002−24007号公報
演算処理装置により参照されるデータが格納先された領域のアドレスは、プログラムの実行時に確定する。このため、ソースプログラムをオブジェクトプログラムに変換する段階では、コンパイル装置は、プリフェッチ命令の要否を判別できない。例えば、キャッシュメモリに記憶されたデータに対するプリフェッチ命令がオブジェクトプログラムに挿入される場合がある。この場合、キャッシュメモリに記憶されたデータをあらためて主記憶装置からキャッシュメモリにフェッチする余計なプリフェッチ命令が実行され、命令数の増加、バスの消費量の増加による転送速度の低下等の性能低下を引き起こすおそれがある。すなわち、余計なプリフェッチ命令が実行された場合、演算処理装置の性能が低下するおそれがある。
1つの側面では、本件開示の演算処理装置および演算処理装置の制御方法は、余計なプリフェッチ命令によるメモリアクセスを低減することを目的とする。
一観点によれば、主記憶装置に記憶されたデータをキャッシュメモリに保持させるプリフェッチ命令を実行する演算処理装置は、命令をデコードする命令デコード部と、命令デコード部がデコードした命令に基づいて、演算を実行する演算部と、命令デコード部がデコードした命令のうち、主記憶装置に対するメモリアクセスを実行させるメモリアクセス命令とプリフェッチ命令とを保持する命令保持部と、命令デコード部がデコードしたメモリアクセス命令がキャッシュメモリに保持されたデータに対する対象メモリアクセス命令であるかを予測する予測部と、予測部が予測した対象メモリアクセス命令に対応するプリフェッチ命令であって、対象メモリアクセス命令の実行前に実行される対応プリフェッチ命令を命令保持部が保持する場合、対応プリフェッチ命令の演算部による実行を抑止する抑止部とを有する。
別の観点によれば、主記憶装置に記憶されたデータをキャッシュメモリに保持させるプリフェッチ命令を実行する演算処理装置の制御方法では、演算処理装置が有する命令デコード部が、命令をデコードし、演算処理装置が有する演算部が、命令デコード部がデコードした命令に基づいて、演算を実行し、演算処理装置が有する命令保持部が、命令デコード部がデコードした命令のうち、主記憶装置に対するメモリアクセスを実行させるメモリアクセス命令とプリフェッチ命令とを保持し、演算処理装置が有する予測部が、命令デコード部がデコードしたメモリアクセス命令がキャッシュメモリに保持されたデータに対する対象メモリアクセス命令であるかを予測し、演算処理装置が有する抑止部が、予測部が予測した対象メモリアクセス命令に対応するプリフェッチ命令であって、対象メモリアクセス命令の実行前に実行される対応プリフェッチ命令を命令保持部が保持する場合、対応プリフェッチ命令の演算部による実行を抑止する。
本件開示の演算処理装置および演算処理装置の制御方法は、余計なプリフェッチ命令によるメモリアクセスを低減できる。
演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。 演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。 図2に示した命令保持部、予測部および抑止部の一例を示す図である。 余計なプリフェッチ命令の実行が抑止される場合の一例を示す図である。 図2に示した演算処理装置の動作の一例を示す図である。 図2に示した命令保持部の動作の一例を示す図である。
以下、実施形態について、図面を用いて説明する。
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。この実施形態の演算処理装置1は、主記憶装置100に記憶されたデータをキャッシュメモリ7に転送するプリフェッチを実行するCPU(Central Processing Unit)等のプロセッサである。
プリフェッチの実現方法として、ソフトウェアによるプリフェッチ(ソフトウェアプリフェッチ)が用いられる。なお、プリフェッチの実現方法として、ソフトウェアプリフェッチと、ハードウェアによるプリフェッチ(ハードウェアプリフェッチ)との両方が用いられてもよい。
ソフトウェアプリフェッチでは、主記憶装置100に記憶されたデータをキャッシュメモリ7に保持させるプリフェッチ命令が、ソースプログラムを演算処理装置1で実行可能なオブジェクトプログラムに変換するコンパイル処理時に生成される。また、コンパイル処理では、プリフェッチ命令を生成する場合、主記憶装置100に対するメモリアクセスを実行させるメモリアクセス命令とプリフェッチ命令との対応を示す識別情報を、メモリアクセス命令およびプリフェッチ命令にそれぞれ付加する。以下、識別情報は、識別子とも称される。
識別情報の付加は、識別情報付きのメモリアクセス命令等を新たに追加することにより実現されてもよいし、メモリアクセス命令等のオペランドに識別情報を追加することにより実現されてもよい。以下、識別情報が付加された命令は、識別子付き命令とも称される。例えば、識別情報が付加されたメモリアクセス命令は、識別子付きメモリアクセス命令とも称される。
メモリアクセス命令は、主記憶装置100に記憶されたデータをロードするロード命令、データを主記憶装置100にストアするストア命令等である。プリフェッチ命令は、ロード命令に対応して生成されてもよいし、ストア命令に対応して生成されてもよい。例えば、演算処理装置1は、ストア対象のデータが記憶される領域を示すアドレスのデータを主記憶装置100からキャッシュメモリ7にロードした後にキャッシュメモリ7を介してデータを主記憶装置100にストアするストア命令を実行する場合がある。この場合、プリフェッチ命令は、ストア命令に対応して生成されてもよい。なお、以下では、動作を分かりやすくするために、プリフェッチ命令に関連する演算処理装置1等の動作を、ロード命令に対応して生成されるプリフェッチ命令を例にして説明する。
主記憶装置100には、演算処理装置1により実行されるオブジェクトプログラム、演算処理装置1による演算で使用されるデータ、演算結果等が記憶される。演算処理装置1は、命令デコード部2、演算部3、命令保持部4、予測部5、抑止部6およびキャッシュメモリ7を有する。キャッシュメモリ7は、主記憶装置100が記憶するデータの一部を保持する。
命令デコード部2は、命令が記憶されている命令キャッシュ等から命令を読み出し、読み出した命令をデコードする。そして、命令デコード部2は、デコードした命令を演算部3、命令保持部4等に出力する。例えば、命令デコード部2は、固定小数点演算命令、浮動小数点演算命令等の演算命令を演算部3に出力し、メモリアクセス命令(ロード命令、ストア命令)およびプリフェッチ命令を命令保持部4に出力する。
演算部3は、メモリアクセス命令、プリフェッチ命令等を実行するロード/ストア処理部、演算命令を実行する演算器等を有し、命令デコード部2でデコードされた命令に基づいて演算を実行する。例えば、演算部3は、命令デコード部2でデコードされた命令に基づいて、キャッシュメモリ7に保持されたデータを参照して演算を実行する。そして、演算部3は、演算結果をキャッシュメモリ7に保持させる。
命令保持部4は、命令デコード部2でデコードされた命令のうち、主記憶装置100に対するメモリアクセスを実行させるメモリアクセス命令とプリフェッチ命令とを、命令デコード部2から受ける。そして、命令保持部4は、命令デコード部2から受けたメモリアクセス命令とプリフェッチ命令とを保持する。
予測部5は、命令デコード部2でデコードされたメモリアクセス命令がキャッシュメモリ7に保持されたデータに対する対象メモリアクセス命令であるかを予測する。例えば、予測部5は、実行された複数のメモリアクセス命令によるそれぞれのメモリアクセスがキャッシュヒットしたかキャッシュミスしたかを示す履歴に基づいて、予測対象のメモリアクセス命令によるメモリアクセスがキャッシュヒットするかを予測する。以下、メモリアクセスがキャッシュヒットしたかキャッシュミスしたかを示す履歴は、キャッシュ履歴とも称される。
抑止部6は、キャッシュメモリ7に保持されたデータに対するアクセスであると予測された対象メモリアクセス命令に対応するプリフェッチ命令である対応プリフェッチ命令が命令保持部4に存在する場合、対応プリフェッチ命令の演算部3による実行を抑止する。すなわち、抑止部6は、予測部5が予測した対象メモリアクセス命令に対応するプリフェッチ命令である対応プリフェッチ命令を命令保持部4が保持する場合、対応プリフェッチ命令の演算部3による実行を抑止する。
ここで、例えば、データAをロードするロード命令AとデータBをロードするロード命令Bとがソースプログラムに含まれる場合、ロード命令Bに対応するプリフェッチ命令Bとロード命令Aに対応するプリフェッチ命令Aとがコンパイル処理時に生成される。プリフェッチ命令の実行により、プリフェッチ命令に対応するロード命令でロードされるデータの格納先を示すアドレスに所定のアドレス量を加算したアドレスを含む1キャッシュライン分のデータが主記憶装置100からキャッシュメモリ7にロードされる。
このため、例えば、所定のアドレス量が1キャッシュラインの容量に対応するアドレス量の整数倍である場合、キャッシュヒットするメモリアクセスであると予測されたメモリアクセス命令に対応するプリフェッチ命令は、余計なプリフェッチ命令である。例えば、所定のアドレス量が1キャッシュラインの容量に対応するアドレス量の整数倍で、データAとデータBとが互いに同じキャッシュラインに保持される場合、プリフェッチ命令Bとプリフェッチ命令Aとで互いに同じデータがロードされる。
このため、演算処理装置1は、キャッシュヒットするメモリアクセスであると予測したメモリアクセス命令に対応するプリフェッチ命令の実行を余計なプリフェッチ命令と判定し、余計なプリフェッチ命令の実行を抑止する。なお、余計なプリフェッチ命令が実行された場合、命令数の増加、バスの消費量の増加による転送速度の低下等の性能低下を引き起こすおそれがある。すなわち、余計なプリフェッチ命令が実行された場合、演算処理装置の性能が低下するおそれがある。演算処理装置1は、余計なプリフェッチ命令の実行を抑止できるため、演算処理装置の性能が低下することを抑止できる。
例えば、抑止部6は、キャッシュヒットすると予測部5で予測されたメモリアクセス命令に付加された識別情報に一致する識別情報が付加されたプリフェッチ命令(余計なプリフェッチ命令)を無効にする。これにより、余計なプリフェッチ命令の実行が抑止され、余計なプリフェッチ命令によるメモリアクセスを低減することができる。なお、演算処理装置1の構成および演算処理装置1の制御方法は、図1に示す例に限定されない。
以上、図1に示す実施形態では、演算処理装置1は、キャッシュヒットすると予測したメモリアクセス命令に対応するプリフェッチ命令の実行を余計なプリフェッチ命令と判定し、余計なプリフェッチ命令の実行を抑止する。これにより、図1に示す実施形態では、余計なプリフェッチ命令によるメモリアクセスを低減できる。この結果、図1に示す実施形態では、演算処理装置の性能が低下することを抑制できる。
図2は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。この実施形態の演算処理装置10は、例えば、主記憶装置100に記憶されたデータをキャッシュメモリ70に転送するプリフェッチを実行するCPU等のプロセッサである。プリフェッチの実現方法として、ソフトウェアプリフェッチが用いられる。なお、プリフェッチの実現方法として、ソフトウェアプリフェッチとハードウェアプリフェッチとの両方が用いられてもよい。
演算処理装置10は、命令デコード部20、演算部30、命令保持部40、予測部50、抑止部60およびキャッシュメモリ70を有する。命令デコード部20、演算部30、命令保持部40、予測部50、抑止部60およびキャッシュメモリ70は、図1に示した命令デコード部2、演算部3、命令保持部4、予測部5、抑止部6およびキャッシュメモリ7と同一または同様である。例えば、キャッシュメモリ70は、主記憶装置100が記憶するデータの一部を保持する。
命令デコード部20は、命令が記憶されている命令キャッシュ等から命令を読み出し、読み出した命令をデコードし、デコードした命令を各命令処理用のポート(リザベーションステーション34、命令保持部40等)に登録する。例えば、命令デコード部20は、メモリアクセス命令とプリフェッチ命令との対応を示す識別情報がそれぞれ付加されたメモリアクセス命令およびプリフェッチ命令をデコードする。そして、命令デコード部20は、デコードしたメモリアクセス命令およびプリフェッチ命令を命令保持部40に登録する。
また、命令デコード部20は、識別子付き命令をデコードした際、識別子付き命令の格納先を示すプログラムカウンタ値、アクセス対象のデータの格納先を示す論理アドレス、識別情報(識別子)等を抽出する。プログラムカウンタ値および識別情報は、予測部50および抑止部60にそれぞれ通知される。なお、識別情報は、図4に示すように、コンパイル処理に、メモリアクセス命令およびプリフェッチ命令にそれぞれ付加される。
演算部30は、ロード/ストア処理部32、複数のリザベーションステーション34および複数の演算器36を有し、命令デコード部20でデコードされた命令に基づいて演算を実行する。ロード/ストア処理部32は、メモリアクセス命令(ロード命令、ストア命令)およびプリフェッチ命令を命令保持部40から受け、データのアクセス処理を命令保持部40から受けた命令に基づいて実行する。データのアクセス処理は、データのロード、データのストア、プリフェッチ等の処理である。
複数のリザベーションステーション34は、複数の演算器36にそれぞれ対応して設けられる。リザベーションステーション34は、命令デコード部20でデコードされた命令のうち、演算命令(固定小数点演算命令、浮動小数点演算命令等)を受け、命令デコード部20から受けた演算命令を保持する。そして、リザベーションステーション34は、実行可能な状態の演算命令を演算器36に出力する。演算器36は、対応するリザベーションステーション34から受けた演算命令に基づいて、キャッシュメモリ70に保持されたデータを参照して演算を実行する。そして、演算器36は、演算結果をキャッシュメモリ70に保持させる。
命令保持部40は、命令デコード部20でデコードされた命令のうち、主記憶装置100に対するメモリアクセスを実行させるメモリアクセス命令とプリフェッチ命令とを保持する。命令保持部40は、ロード/ストア処理部32によるデータのアクセス処理の順番を変更する際の緩衝用のバッファとして使用されてもよい。すなわち、命令保持部40は、リザベーションステーションとして使用されてもよい。ロード/ストア処理部32によるデータのアクセス処理が演算器34による演算とは別のパイプラインで実行される場合、演算器34による演算と依存関係のないデータのアクセス処理は、演算器34による演算 と並行して実行可能である。なお、命令保持部40、予測部50および抑止部60の詳細は、図3で説明する。
演算処理装置10の構成および演算処理装置10の制御方法は、図2に示す例に限定されない。例えば、演算処理装置10は、複数の命令保持部40を有してもよい。また、命令保持部40は、演算部30内に設けられてもよい。また、プリフェッチ命令専用の命令保持部が設けられてもよい。
図3は、図2に示した命令保持部40、予測部50および抑止部60の一例を示す。
命令保持部40は、ロード命令、ストア命令、プリフェッチ命令等の複数の命令を保持するキュー構造のバッファである。例えば、命令保持部40は、メモリアクセス命令とプリフェッチ命令との対応を示す識別情報と、命令の種類を示す命令コードと、命令のアクセス先を示すアドレスと、抑止情報とを記憶する。このように、命令保持部40は、識別情報が付加されたプリフェッチ命令を、識別情報とともに保持する。
図3の識別情報の列に記載した識別情報”id1”、”id2”、”id3”、”id4”は、各命令の識別子を示す。図3の命令コードの列に記載した命令コード”01”、”10”、”11”は、ロード命令、ストア命令、プリフェッチ命令をそれぞれ示す。図3のアドレスの列に記載したアドレス”CL1”、”CL2”、”CL3”、”CL4”は、ロード命令等によりアクセスされるキャッシュラインを示す。図3の抑止情報の列に記載した論理値”0”、”1”は、命令保持部40に保持された命令が無効か有効かを示す。例えば、抑止情報が論理値”0”に設定された命令は、無効な命令であり、実行されない。
例えば、演算処理装置10は、命令保持部40に保持された命令のうち、読み出し用のポインタ(以下、読み出しポインタとも称する)で指定された領域に保持された命令を選択し、選択した命令に従ってデータにアクセスする。アクセス処理が実行された命令が保持されていた領域には、メモリアクセス命令またはプリフェッチ命令が新規に登録される。メモリアクセス命令またはプリフェッチ命令が新規に保持される領域は、書き込み用のポインタ(以下、書き込みポインタとも称する)により指定される。
読み出しポインタの値は、読み出しポインタで指定された領域に保持された命令が実行される度に更新される。この際、抑止情報が論理値”0”に設定された命令は、スキップされる。抑止情報が論理値”0”に設定されたことによりスキップされた命令が保持されていた領域には、メモリアクセス命令またはプリフェッチ命令が新規に登録される。
予測部50は、履歴レジスタ52、排他的論理和回路54a、連結部54b、パターン履歴テーブル56および予測結果出力部58を有する。なお、予測部50内の信号に付した符号の括弧内に示したj、kは、正の整数である。
履歴レジスタ52は、実行された複数のメモリアクセス命令によるそれぞれのメモリアクセスがキャッシュヒットしたかキャッシュミスしたかを示す履歴情報RINFを保持するキャッシュ履歴レジスタ部の一例である。図3の例では、履歴レジスタ52は、k段のシフトレジスタであり、過去k回のメモリアクセス命令の履歴情報RINF[k−1:0]を保持する。シフトレジスタの各段の保持部(例えば、フリップフロック)に保持した履歴情報RINFは、メモリアクセス命令が実行される度に1つシフトする。履歴レジスタ52の1段目の保持部(例えば、フリップフロック)に保持された履歴情報RINF[0]は、履歴レジスタ52に保持された履歴情報RINF[k−1:0]の中で、最新のメモリアクセスに対する履歴情報である。
排他的論理和回路54aおよび連結部54bは、メモリアクセス命令が格納されたアドレスを示すプログラムカウンタ値PCVと履歴情報PINFとに基づいて、インデックスを生成するインデックス生成部の一例である。排他的論理和回路54aは、kビットの履歴情報RINF[k−1:0]を履歴レジスタ52から受け、kビットのプログラムカウンタ値PCV[k+j−1:j]を命令デコード部20から受ける。そして、排他的論理和回路54aは、履歴情報RINF[k−1:0]とプログラムカウンタ値PCV[k+j−1:j]との排他的論理和を演算し、演算結果EXOF[k−1:0]を連結部54bに出力する。なお、プログラムカウンタ値PCV[k+j−1:j]は、メモリアクセス命令が格納されたアドレスを示すプログラムカウンタ値PCV(0ビット目が最下位ビット)のうちのjビット目から”k+j−1”ビット目のデータである。
連結部54bは、kビットの演算結果EXOF[k−1:0]を排他的論理和回路54aから受け、jビットのプログラムカウンタ値PCV[j−1:0]を命令デコード部20から受ける。そして、連結部54bは、演算結果EXOF[k−1:0]とプログラムカウンタ値PCV[j−1:0]とを連結して”k+j”ビットのインデックスINDX[k+j−1:0]を生成する。インデックスINDX[k+j−1:0]の上位kビットは、演算結果EXOF[k−1:0]であり、インデックスINDX[k+j−1:0]の下位jビットは、プログラムカウンタ値PCV[j−1:0]である。なお、プログラムカウンタ値PCV[j−1:0]は、メモリアクセス命令が格納されたアドレスを示すプログラムカウンタ値PCVのうちの0ビット目から”j−1”ビット目のデータである。
パターン履歴テーブル56は、キャッシュヒットの頻度を示す予測パターン情報BCVをインデックスINDX毎に保持するパターン保持部の一例である。パターン履歴テーブル56は、例えば、2ビットの飽和カウンタをインデックスINDX毎に有し、飽和カウンタの値を予測パターン情報BCVとしてインデックスINDX毎に保持する。2ビットの飽和カウンタの値は、メモリアクセス命令がキャッシュヒットしたかキャッシュミスしたかの結果に応じて、”00”、”01”、”10”、”11”の4つの状態のいずれかに遷移する。
例えば、カウンタ値”00”は、第1キャッシュミス状態を示し、カウンタ値”01”は、第1キャッシュミス状態よりキャシュミスする可能性が低い第2キャッシュミス状態を示す。また、カウンタ値”10”は、第2キャッシュヒット状態を示し、カウンタ値”11”は、第2キャッシュヒット状態よりキャシュヒットする可能性が高い第1キャッシュヒット状態を示す。
この場合、2ビットの飽和カウンタの値は、メモリアクセス命令がキャッシュヒットする度に1つカウントアップし、メモリアクセス命令がキャッシュミスする度に1つカウントダウンする。なお、2ビットの飽和カウンタの値が”00”である場合、2ビットの飽和カウンタの値は、メモリアクセス命令がキャッシュミスしても、”00”に維持される。また、2ビットの飽和カウンタの値が”11”である場合、2ビットの飽和カウンタの値は、メモリアクセス命令がキャッシュヒットしても、”11”に維持される。
このように、メモリアクセス命令が実行される度に、実行されたメモリアクセス命令のプログラムカウンタ値PCVを用いて生成されたインデックスINDXに対応する予測パターン情報BCVの値は、2ビットの飽和カウンタにより更新される。
予測結果出力部58は、パターン履歴テーブル56に保持された予測パターン情報BCVのうち、予測対象のメモリアクセス命令に対応する予測パターン情報BCVを受ける。すなわち、予測結果出力部58は、予測対象のメモリアクセス命令のプログラムカウンタ値PCVを用いて生成されたインデックスINDXに対応する予測パターン情報BCVを、パターン履歴テーブル56から受ける。そして、予測結果出力部58は、パターン履歴テーブル56から受けた予測パターン情報BCVに基づいて、予測対象のメモリアクセス命令が対象メモリアクセス命令であるかを示す予測結果情報PINFを抑止部60に出力する。
なお、対象メモリアクセス命令は、図1で説明したように、キャッシュメモリ70に保持されたデータに対するメモリアクセス命令である。すなわち、対象メモリアクセス命令は、キャッシュヒットするメモリアクセス命令である。
例えば、予測結果出力部58は、予測パターン情報BCVが第1キャッシュヒット状態(BCV=11)または第2キャッシュヒット状態(BCV=10)を示している場合、論理値”1”の予測結果情報PINFを抑止部60に出力する。論理値”1”の予測結果情報PINFは、予測対象のメモリアクセス命令が対象メモリアクセス命令であると予測されたことを示す。また、予測結果出力部58は、予測パターン情報BCVが第1キャッシュミス状態(BCV=00)または第2キャッシュミス状態(BCV=01)を示している場合、論理値”0”の予測結果情報PINFを抑止部60に出力する。論理値”0”の予測結果情報PINFは、予測対象のメモリアクセス命令が対象メモリアクセス命令でないと予測されたことを示す。
抑止部60は、レジスタ62および複数の判定部64を有する。レジスタ62は、無効化の対象であるプリフェッチ命令を示す命令コード”11”が設定される。命令コード(図3では、”11”)のレジスタ62への設定は、例えば、コンパイル処理の実行時やランタイムに、一度実行されればよい。
複数の判定部64は、命令保持部40に保持される複数の命令にそれぞれ対応する複数の抑止情報をそれぞれ更新する。各判定部64は、比較部65、66、論理積回路67および否定論理積回路68を有する。
比較部65は、命令デコード部20が識別情報IDINF付きのメモリアクセス命令(ロード命令またはストア命令)をデコードした場合、メモリアクセス命令に付加された識別情報IDINFを命令デコード部20から受ける。そして、比較部65は、命令保持部40の対応する領域に保持された識別情報(例えば、id1)と命令デコード部20から受けた識別情報IDINFとを比較し、比較結果を論理積回路67に出力する。命令保持部40に保持された識別情報と命令デコード部20から受けた識別情報IDINFとが一致した場合、比較結果として論理値”1”が論理積回路67に出力される。命令保持部40に保持された識別情報と命令デコード部20から受けた識別情報IDINFとが一致しない場合、比較結果として論理値”0”が論理積回路67に出力される。
比較部66は、命令保持部40の対応する領域に保持された命令コード(例えば、”11”)とレジスタ62に設定された命令コード(例えば、”11”)とを比較し、比較結果を論理積回路67に出力する。命令保持部40に保持された命令コードとレジスタ62に設定された命令コードとが一致した場合、比較結果として論理値”1”が論理積回路67に出力される。命令保持部40に保持された命令コードとレジスタ62に設定された命令コードとが一致しない場合、比較結果として論理値”0”が論理積回路67に出力される。
論理積回路67は、比較部65から受けた信号と比較部66から受けた信号との論理積を演算し、演算結果を否定論理積回路68に出力する。すなわち、論理積回路67は、命令デコード部20から抑止部60に転送された識別情報IDINFに一致する識別情報が付加されたプリフェッチ命令が命令保持部40に存在する場合、論理値”1”を否定論理積回路68に出力する。
否定論理積回路68は、予測結果情報PINFを予測部50(より詳細には、予測結果出力部58)から受ける。そして、否定論理積回路68は、予測部50から受けた予測結果情報PINFと論理積回路67から受けた信号との否定論理積を演算し、演算結果を命令保持部40に出力する。これにより、命令保持部40に保持された抑止情報のうち、判定部64に対応する領域に保持された抑止情報は、否定論理積回路68の演算結果が示す論理値に更新される。
このように、抑止部60は、対象メモリアクセス命令に付加された識別情報IDINFに対応する識別情報が付加された対応プリフェッチ命令が命令保持部40に存在する場合、対応プリフェッチ命令の演算部30による実行を抑止する。
なお、命令保持部40、予測部50および抑止部60の構成は、図3に示す例に限定されない。例えば、予測部50のパターン履歴テーブル56は、2ビットの飽和カウンタ以外の方法で予測パターン情報BCVを更新してもよい。また、予測部50は、キャッシュヒットまたはキャッシュミスの周期的な変化に基づいて、予測対象のメモリアクセス命令が対象メモリアクセス命令であるかを予測してもよい。あるいは、予測部50は、予測対象のメモリアクセス命令と同じプログラムカウンタ値PCVのメモリアクセス命令の履歴(ローカル履歴)に基づいて、予測対象のメモリアクセス命令が対象メモリアクセス命令であるかを予測してもよい。
また、例えば、レジスタ62、比較部66および論理積回路67は、抑止部60から省かれてもよい。正常な動作では、メモリアクセス命令に付加された識別情報IDINFは、命令保持部40に存在するメモリアクセス命令に付加された識別情報と重ならないように割り当てられる。このため、正常な動作では、命令保持部40に存在する命令のうち、命令デコード部20から抑止部60に転送された識別情報IDINFに一致する識別情報が付加された命令は、プリフェッチ命令であると判定されてもよい。
また、命令保持部40に命令を保持する段階より前の段階(例えば、命令をデコードする段階)で余計なプリフェッチ命令の実行を抑止する機会があれば、命令保持部40に命令を保持する段階より前の段階で余計なプリフェッチ命令の実行を抑止してもよい。
図4は、余計なプリフェッチ命令の実行が抑止される場合の一例を示す。図4の例では、キャッシュメモリ70の各キャッシュラインCL(CLm、CLn、CLo、CLp、Lq)の容量は、128バイトである。また、データA、B、Cは、構造体Sの要素であり、互いに近いメモリ領域に配置される。データX、Y、Zは、構造体Rの要素であり、互いに近いメモリ領域に配置される。ソースプログラムSPRGは、構造体Sの複数の要素A、B、Cと構造体Rの複数の要素X、Y、Zとを同一のループ内でアクセスするプログラムである。
データA、B、C、X、Y、Zが格納される領域のアドレスは、プログラム(ソースプログラムSPRGを変換したオブジェクトプログラム)の実行時に確定する。したがって、ソースプログラムをオブジェクトプログラムに変換する段階では、コンパイル装置は、データA、B、C、X、Y、ZがどのキャッシュラインCLに配置されるか分からない。このため、コンパイル装置は、データA、B、C、X、Y、Zの各ロード命令(load)に対応したプリフェッチ命令(prefetch)をオブジェクトプログラムに挿入する。
また、コンパイラ装置は、ロード命令とプリフェッチ命令との対応を示す識別情報(例えば、id1)を、ロード命令およびプリフェッチ命令に付加する。プリフェッチ命令の挿入対象のデータは、コンパイラに指示を与える最適化制御行やプラグマ等により指定される。最適化制御行はFORTRANで用いられ、プラグマはC言語等で用いられる。ユーザは、構造体S内の要素をプリフェッチ命令の挿入対象のデータとして指定する最適化制御行(例えば、「!ocl prefetch_cancel_bypredict(S)」)をソースプログラムSPRG内に記述してもよい。なお、プリフェッチ命令の挿入は、翻訳オプション(例えば、「-Kprefetch_cancel_bypredict」)で指定されてもよい。
ここで、図4の例では、データB、Cは、互いに同じキャシュラインCLnに配置される。また、各データは、データA、B、X、Y、C、Zの順でアクセスされる。データA、B、X、Yは、互いに異なるキャッシュラインCLに配置されるため、ランダムな最初のアクセスでキャッシュミスする。この場合、データA、B、X、Yの各ロード命令に対応する各プリフェッチ命令は、有効なプリフェッチ命令である。
データCは、データBと同じキャッシュラインCLnに配置されるため、キャッシュヒットする。この場合、データCのロード命令(load addr(c)、id5)に対応するプリフェッチ命令(prefetch addr(c+128)、id5)は、余計なプリフェッチ命令である。このため、抑止部60は、余計なプリフェッチ命令(prefetch addr(c+128)、id5)の実行を抑止する。
構造体SのデータA、B、Cが繰り返しアクセスされる場合、繰り返しアクセスされるデータAのアドレス間隔は一定間隔とは限らないが、データA、B、C間のアドレス間隔は、一定に維持される。この場合、データCに対するアクセスがキャッシュヒットするかキャッシュミスするかの予測は、直前のロード命令(データA、B、X、Yのロード命令)のキャッシュ履歴(キャッシュヒットしたかキャッシュミスしたかの履歴)に依存する。例えば、予測部50は、図3で説明したように、キャッシュ履歴(履歴情報RINF)を保持する履歴レジスタ52等を用いて、データCに対するアクセスがキャッシュヒットするかキャッシュミスするかを予測する。
図4の例では、予測部50は、データCのロード命令(load addr(c)、id5)によるアクセスはキャッシュヒットすると予測する。このため、抑止部60は、命令保持部40に保持された抑止情報のうち、データCのロード命令に対応するプリフェッチ命令に対応する抑止情報を論理値“0”(無効を示す論理値)に設定する。これにより、余計なプリフェッチ命令(prefetch addr(c+128)、id5)の実行が抑止され、余計なプリフェッチ命令によるメモリアクセスが低減される。
なお、配列の値をもとに間接アクセスする場合においても、メモリアクセスがキャッシュヒットするかキャッシュミスするかの予測は、直前のロード命令のキャッシュ履歴に依存する。このため、配列の値をもとに間接アクセスする場合においても、演算処理装置10は、予測部50の予測結果に基づいて、余計なプリフェッチ命令の実行を抑止できる。
図5は、図2に示した演算処理装置10の動作の一例を示す。なお、図5は、演算処理装置10の制御方法の一形態を示す。図5の動作は、余計なプリフェッチ命令を無効にする際の演算処理装置10の動作に対応する。図5の動作は、ハードウェアのみで実現されてもよく、ハードウェアをソフトウェアにより制御することにより実現されてもよい。
ステップS100では、命令デコード部20は、図2で説明したように、命令が記憶されている命令キャッシュ等から命令を読み出し、読み出した命令をデコードする。これにより、命令の格納先を示すプログラムカウンタ値PCV、アクセス対象のデータの格納先を示す論理アドレス等が抽出される。なお、識別子付き命令がデコードされた場合、プログラムカウンタ値PCV、アクセス対象のデータの格納先を示す論理アドレス、識別情報(識別子IDINF)が抽出される。
ステップS110では、命令デコード部20は、ステップS100でデコードした命令が識別子付きメモリアクセス命令(識別子付きロード命令、識別子付きストア命令)であるかを判定する。ステップS100でデコードした命令が識別子付きメモリアクセス命令である場合、演算処理装置10の動作は、ステップS120に移る。一方、ステップS100でデコードした命令が識別子付きメモリアクセス命令でない場合、余計なプリフェッチ命令を無効にする処理(演算処理装置10の動作)は、終了する。
ステップS120では、命令デコード部20は、図2で説明したように、ステップS100でデコードした識別子付きメモリアクセス命令の格納先を示すプログラムカウンタ値PCVと識別子IDINFとを予測部50および抑止部60にそれぞれ通知する。
ステップS130では、予測部50は、図3で説明したように、ステップS100でデコードした識別子付きメモリアクセス命令によるアクセスがキャッシュヒットするかを予測する。すなわち、予測部50は、ステップS100でデコードした識別子付きメモリアクセス命令がキャッシュメモリ70に保持されたデータに対する対象メモリアクセス命令であるかを予測する。そして、予測部50は、予測結果HINFを抑止部60に通知する。
ステップS140では、抑止部60は、図3で説明したように、予測結果HINF(ステップS130の予測処理の結果)が論理値“1”であるかを判定する。すなわち、抑止部60は、ステップS100でデコードした識別子付きメモリアクセス命令によるアクセスがキャッシュヒットすると予測されたかを判定する。予測結果HINFが論理値“1”(キャッシュヒット)である場合、演算処理装置10の動作は、ステップS150に移る。一方、予測結果HINFが論理値“1”でない場合、余計なプリフェッチ命令を無効にする処理(演算処理装置10の動作)は、終了する。
ステップS150では、抑止部60は、図3で説明したように、命令保持部40に保持された識別子(図3に示したid)のいずれかとステップS100でデコードした識別子付きメモリアクセス命令の識別子IDINFとが互いに一致するかを判定する。すなわち、抑止部60は、キャッシュメモリ70に保持されたデータに対するアクセスであると予測された対象メモリアクセス命令に対応する対応プリフェッチ命令が命令保持部40に存在するか判定する。
命令保持部40に保持された識別子のいずれかと識別子付きメモリアクセス命令の識別子IDINFとが互いに一致する場合、演算処理装置10の動作は、ステップS160に移る。一方、識別子付きメモリアクセス命令の識別子IDINFが命令保持部40に保持された識別子のいずれかにも一致しない場合、余計なプリフェッチ命令を無効にする処理(演算処理装置10の動作)は、終了する。
ステップS160では、抑止部60は、図3で説明したように、ステップS100でデコードした識別子付きメモリアクセス命令の識別子IDINFに一致した識別子が付加されたプリフェッチ命令に対応する抑止情報を論理値“0”(無効を示す状態)に設定する。これにより、余計なプリフェッチ命令は無効になり、余計なプリフェッチ命令の実行は抑止される。なお、予測部50による予測(ステップS130での予測)が外れた場合、プリフェッチ命令が実行されないだけであり、後続のロード命令によりデータは、取得される。
演算処理装置10の動作は、図5に示す例に限定されない。例えば、互いに同じキャッシュラインCLにアクセスする複数のプリフェッチ命令が命令保持部40に存在する場合に複数のプリフェッチ命令の1つ以外を無効にする処理(以下、重複解消処理とも称する)が追加されてもよい。
ここで、重複解消処理を実行することにより、例えば、連続して実行されるロード命令によりアクセスされるデータが互いに同じキャッシュラインCLに配置される場合、余計なプリフェッチ命令の実行が抑止される。しかし、重複解消処理は、連続して実行されるロード命令によりアクセスされるデータが互いに異なるキャッシュラインCLに配置される場合(例えば、図4に示したデータA、B、X、Y、C、Z等)に対応していない。重複解消処理を実行しても、余計なプリフェッチ命令の実行が抑止されない場合を、図4に示したアクセスを例にして説明する。
図4に示したデータCのロード命令に対応する余計なプリフェッチ命令とデータBのロード命令に対応するプリフェッチ命令とが同時に命令保持部40に存在する期間がない場合、重複解消処理を実行しても、余計なプリフェッチ命令の実行は抑止されない。例えば、図4に示したデータCのロード命令に対応する余計なプリフェッチ命令が命令保持部40に保持される前にデータBのロード命令に対応するプリフェッチ命令が実行された場合、重複解消処理を実行しても、余計なプリフェッチ命令の実行は抑止されない。
これに対し、演算処理装置10は、メモリアクセス命令によるアクセスがキャシュヒットするかを命令のデコード時に予測し、キャシュヒットと予測したメモリアクセス命令に対応する余計なプリフェッチ命令を識別情報を用いて検出する。このため、演算処理装置10は、データCのロード命令に対応する余計なプリフェッチ命令とデータBのロード命令に対応するプリフェッチ命令とが同時に命令保持部40に存在していない場合でも、余計なプリフェッチ命令の実行を抑止できる。
このように、演算処理装置10は、メモリアクセス命令によるアクセスがキャシュヒットするかをメモリアクセス命令を命令保持部40に保持する前に予測する。そして、演算処理装置10は、メモリアクセス命令がキャッシュヒットすると予測した場合、キャシュヒットと予測したメモリアクセス命令に対応する余計なプリフェッチ命令の実行を抑止する。
動的に獲得した領域(構造体、配列、ポインタアクセス等)にアクセスするデータとの依存関係、アドレス配置等がコンパイル処理時に分からない場合、コンパイル処理時に保守的に挿入されたプリフェッチ命令は、余計なプリフェッチ命令になる場合がある。この場合でも、演算処理装置10は、キャシュヒットするかを予測可能な規則性のあるデータアクセス(ランダムアクセスや連続アクセス)において、余計なプリフェッチ命令の実行を抑止できる。余計なプリフェッチ命令の実行がハードウェアで自動的に抑止されるため、ソフトウェアを再構築する必要がない。
余計なプリフェッチ命令の実行が抑止され、適切なプリフェッチ命令が実行されるため、演算処理装置10の性能を向上することができる。例えば、余計なプリフェッチ命令の実行によるハード資源の浪費(パイプライン資源の消費、バンド幅の消費等)を防ぐことができ、演算処理装置10の実行効率を向上させることができる。これにより、プログラムを高速化することができる。
図6は、図2に示した命令保持部40の動作の一例を示す。
ステップS200では、命令保持部40は、読み出しポインタが示す領域に保持した要素(図3に示した識別情報、命令コード、アドレス、抑止情報)を参照する。
ステップS210では、命令保持部40は、ステップS200で参照した抑止情報が論理値”0”(無効を示す状態)であるかを判定する。抑止情報が論理値”0”である場合、命令保持部40の動作は、ステップS220に移る。一方、抑止情報が論理値”0”でない場合、命令保持部40の動作は、ステップS230に移る。
ステップS220では、命令保持部40は、読み出しポインタを次の要素の領域を示す値に更新する。そして、命令保持部40の動作は、ステップS200に戻る。すなわち、抑止情報が論理値”0”に設定された命令は、スキップされる。抑止情報が論理値”0”に設定されたことによりスキップされた命令が保持されていた領域には、メモリアクセス命令またはプリフェッチ命令が新規に登録される。
ステップS230では、命令保持部40は、読み出しポインタが示す領域の命令(ステップS200で参照した命令)をロード/ストア処理部32に転送する。これにより、データのアクセス処理が、読み出しポインタが示す領域の命令に基づいて実行される。アクセス処理が実行された命令が保持されていた領域には、メモリアクセス命令またはプリフェッチ命令が新規に登録される。
読み出しポインタは、データのアクセス処理と並行して更新されるため、NOP(No Operation)のような無意味なサイクルを消費せずに、次の命令(命令保持部40内の要素)を示す値に更新される。これにより、命令保持部40は、データのアクセス処理が実行されるタイミングが遅れることを抑止できる。
以上、図2から図6に示した実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、図2から図6に示した実施形態では、演算処理装置10は、キャッシュヒットするメモリアクセスであると予測したメモリアクセス命令に対応するプリフェッチ命令の実行を余計なプリフェッチ命令と判定し、余計なプリフェッチ命令の実行を抑止する。これにより、図2から図6に示した実施形態では、余計なプリフェッチ命令によるメモリアクセスを低減でき、演算処理装置の性能が低下することを抑制できる。
また、図2から図6に示した実施形態では、命令保持部40に保持された抑止情報が論理値”0”に設定された命令は、スキップされる。これにより、演算処理装置10は、NOPのような無意味なサイクルを消費せずに、データのアクセス処理を実行できる。この結果、図2から図6に示した実施形態では、データのアクセス処理が実行されるタイミングが遅れることを抑止できる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
主記憶装置に記憶されたデータをキャッシュメモリに保持させるプリフェッチ命令を実行する演算処理装置において、
命令をデコードする命令デコード部と、
前記命令デコード部がデコードした命令に基づいて、演算を実行する演算部と、
前記命令デコード部がデコードした命令のうち、前記主記憶装置に対するメモリアクセスを実行させるメモリアクセス命令と前記プリフェッチ命令とを保持する命令保持部と、
前記命令デコード部がデコードしたメモリアクセス命令が前記キャッシュメモリに保持されたデータに対する対象メモリアクセス命令であるかを予測する予測部と、
前記予測部が予測した前記対象メモリアクセス命令に対応するプリフェッチ命令である対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令の前記演算部による実行を抑止する抑止部と
を有することを特徴とする演算処理装置。
(付記2)
付記1に記載の演算処理装置において、
前記命令デコード部は、前記メモリアクセス命令と前記プリフェッチ命令との対応を示す識別情報がそれぞれ付加された前記メモリアクセス命令および前記プリフェッチ命令をデコードし、
前記命令保持部は、前記識別情報が付加された前記プリフェッチ命令を、前記識別情報とともに保持し、
前記抑止部は、前記対象メモリアクセス命令に付加された識別情報に対応する対応識別情報が付加された前記対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令の前記演算部による実行を抑止する
ことを特徴とする演算処理装置。
(付記3)
付記1または付記2に記載の演算処理装置において、
前記命令保持部は、前記プリフェッチ命令が有効か無効かを示す抑止情報を前記プリフェッチ命令とともに保持し、
前記抑止部は、前記対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令に対応して前記命令保持部に保持された抑止情報を、無効を示す状態に設定する
ことを特徴とする演算処理装置。
(付記4)
付記1ないし付記3のいずれか1項に記載の演算処理装置において、
前記予測部は、
実行された複数のメモリアクセス命令によるそれぞれのメモリアクセスがキャッシュヒットしたかキャッシュミスしたかを示す履歴情報を保持するキャッシュ履歴レジスタ部と、
前記メモリアクセス命令が格納されたアドレスを示すプログラムカウンタ値と前記履歴情報とに基づいて、インデックスを生成するインデックス生成部と、
キャッシュヒットの頻度を示す予測パターン情報を前記インデックス毎に保持するパターン保持部と、
前記パターン保持部に保持された前記予測パターン情報のうち、予測対象のメモリアクセス命令のプログラムカウンタ値を用いて生成されたインデックスに対応する予測パターン情報に基づいて、前記予測対象のメモリアクセス命令が前記対象メモリアクセス命令であるかを示す予測結果情報を前記抑止部に出力する予測結果出力部とを有する
ことを特徴とする演算処理装置。
(付記5)
付記1ないし付記4のいずれか1項に記載の演算処理装置において、
前記演算部は、前記メモリアクセス命令および前記プリフェッチ命令を実行するロード/ストア処理部を有する
ことを特徴とする演算処理装置。
(付記6)
主記憶装置に記憶されたデータをキャッシュメモリに保持させるプリフェッチ命令を実行する演算処理装置の制御方法において、
前記演算処理装置が有する命令デコード部が、命令をデコードし、
前記演算処理装置が有する演算部が、前記命令デコード部がデコードした命令に基づいて、演算を実行し、
前記演算処理装置が有する命令保持部が、前記命令デコード部がデコードした命令のうち、前記主記憶装置に対するメモリアクセスを実行させるメモリアクセス命令と前記プリフェッチ命令とを保持し、
前記演算処理装置が有する予測部が、前記命令デコード部がデコードしたメモリアクセス命令が前記キャッシュメモリに保持されたデータに対する対象メモリアクセス命令であるかを予測し、
前記演算処理装置が有する抑止部が、前記予測部が予測した前記対象メモリアクセス命令に対応するプリフェッチ命令である対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令の前記演算部による実行を抑止する
ことを特徴とする演算処理装置の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1、10‥演算処理装置;2、20‥命令デコード部;3、30‥演算部;4、40‥命令保持部;5、50‥予測部;6、60‥抑止部;7、70‥キャシュメモリ;32‥ロード/ストア処理部;34‥リザベーションステーション;36‥演算器;52‥履歴レジスタ;54a‥排他的論理和回路;54b‥連結部;56‥パターン履歴テーブル;58‥予測結果出力部;62‥レジスタ;64‥判定部;65、66‥比較部;67‥論理積回路;68‥否定論理積回路;100‥主記憶装置

Claims (4)

  1. 主記憶装置に記憶されたデータをキャッシュメモリに保持させるプリフェッチ命令を実行する演算処理装置において、
    命令をデコードする命令デコード部と、
    前記命令デコード部がデコードした命令に基づいて、演算を実行する演算部と、
    前記命令デコード部がデコードした命令のうち、前記主記憶装置に対するメモリアクセスを実行させるメモリアクセス命令と前記プリフェッチ命令とを保持する命令保持部と、
    前記命令デコード部がデコードしたメモリアクセス命令が前記キャッシュメモリに保持されたデータに対する対象メモリアクセス命令であるかを予測する予測部と、
    前記予測部が予測した前記対象メモリアクセス命令に対応するプリフェッチ命令であって、前記対象メモリアクセス命令の実行前に実行される対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令の前記演算部による実行を抑止する抑止部と
    を有することを特徴とする演算処理装置。
  2. 請求項1に記載の演算処理装置において、
    前記命令デコード部は、前記メモリアクセス命令と前記プリフェッチ命令との対応を示す識別情報がそれぞれ付加された前記メモリアクセス命令および前記プリフェッチ命令をデコードし、
    前記命令保持部は、前記識別情報が付加された前記プリフェッチ命令を、前記識別情報とともに保持し、
    前記抑止部は、前記対象メモリアクセス命令に付加された識別情報に対応する対応識別情報が付加された前記対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令の前記演算部による実行を抑止する
    ことを特徴とする演算処理装置。
  3. 請求項1または請求項2に記載の演算処理装置において、
    前記命令保持部は、前記プリフェッチ命令が有効か無効かを示す抑止情報を前記プリフェッチ命令とともに保持し、
    前記抑止部は、前記対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令に対応して前記命令保持部に保持された抑止情報を、無効を示す状態に設定する
    ことを特徴とする演算処理装置。
  4. 主記憶装置に記憶されたデータをキャッシュメモリに保持させるプリフェッチ命令を実行する演算処理装置の制御方法において、
    前記演算処理装置が有する命令デコード部が、命令をデコードし、
    前記演算処理装置が有する演算部が、前記命令デコード部がデコードした命令に基づいて、演算を実行し、
    前記演算処理装置が有する命令保持部が、前記命令デコード部がデコードした命令のうち、前記主記憶装置に対するメモリアクセスを実行させるメモリアクセス命令と前記プリフェッチ命令とを保持し、
    前記演算処理装置が有する予測部が、前記命令デコード部がデコードしたメモリアクセス命令が前記キャッシュメモリに保持されたデータに対する対象メモリアクセス命令であるかを予測し、
    前記演算処理装置が有する抑止部が、前記予測部が予測した前記対象メモリアクセス命令に対応するプリフェッチ命令であって、前記対象メモリアクセス命令の実行前に実行される対応プリフェッチ命令を前記命令保持部が保持する場合、前記対応プリフェッチ命令の前記演算部による実行を抑止する
    ことを特徴とする演算処理装置の制御方法。
JP2015005010A 2015-01-14 2015-01-14 演算処理装置および演算処理装置の制御方法 Active JP6488711B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015005010A JP6488711B2 (ja) 2015-01-14 2015-01-14 演算処理装置および演算処理装置の制御方法
US14/992,435 US9824016B2 (en) 2015-01-14 2016-01-11 Device and processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015005010A JP6488711B2 (ja) 2015-01-14 2015-01-14 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2016130948A JP2016130948A (ja) 2016-07-21
JP6488711B2 true JP6488711B2 (ja) 2019-03-27

Family

ID=56367676

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015005010A Active JP6488711B2 (ja) 2015-01-14 2015-01-14 演算処理装置および演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US9824016B2 (ja)
JP (1) JP6488711B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
JP6488711B2 (ja) * 2015-01-14 2019-03-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US9898322B2 (en) * 2015-10-29 2018-02-20 International Business Machines Corporation Steganographic message passing between a virtual machine and a hypervisor
JP2017122997A (ja) * 2016-01-06 2017-07-13 富士通株式会社 情報処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム
US10580189B2 (en) 2016-09-16 2020-03-03 Intel Corporation Apparatus and method for optimized ray tracing
US11099995B2 (en) * 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US10877889B2 (en) * 2019-05-16 2020-12-29 Micron Technology, Inc. Processor-side transaction context memory interface systems and methods
US10877894B2 (en) 2019-05-16 2020-12-29 Micron Technology, Inc. Memory-side transaction context memory interface systems and methods, wherein first context and first address are communicated on plural wires during different clock cycles and second context (of block of the first context) is communicated on additional wire during one of the different clock cycles
US11379376B2 (en) 2020-05-20 2022-07-05 Micron Technologies, Inc. Embedding data in address streams

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3873589B2 (ja) 2000-07-12 2007-01-24 株式会社日立製作所 プロセッサシステム
JP2003044357A (ja) * 2001-07-27 2003-02-14 Nec Computertechno Ltd キャッシュ先取り方式
JP4030314B2 (ja) 2002-01-29 2008-01-09 富士通株式会社 演算処理装置
WO2008093399A1 (ja) * 2007-01-30 2008-08-07 Fujitsu Limited 情報処理システムおよび情報処理方法
US8069310B1 (en) * 2007-03-22 2011-11-29 Emc Corporation Methods and systems for incorporating sequential stream read requests into prefetch management for data storage having a cache memory
JP5625809B2 (ja) 2009-12-25 2014-11-19 富士通株式会社 演算処理装置、情報処理装置及び制御方法
JP2014191663A (ja) * 2013-03-27 2014-10-06 Fujitsu Ltd 演算処理装置、情報処理装置、および演算処理装置の制御方法
JP6488711B2 (ja) * 2015-01-14 2019-03-27 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP2016130948A (ja) 2016-07-21
US9824016B2 (en) 2017-11-21
US20160203081A1 (en) 2016-07-14

Similar Documents

Publication Publication Date Title
JP6488711B2 (ja) 演算処理装置および演算処理装置の制御方法
Grayson et al. Evolution of the samsung exynos cpu microarchitecture
KR101493019B1 (ko) 희소 및 조밀 예측 캐쉬들을 갖는 하이브리드 브랜치 예측 장치
US7203827B2 (en) Link and fall-through address formation using a program counter portion selected by a specific branch address bit
US8935515B2 (en) Method and apparatus for vector execution on a scalar machine
Farooq et al. Value based btb indexing for indirect jump prediction
US20040093591A1 (en) Method and apparatus prefetching indexed array references
JP2006185462A (ja) 高データ密度のriscプロセッサ
US20110055529A1 (en) Efficient branch target address cache entry replacement
US8499293B1 (en) Symbolic renaming optimization of a trace
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
US7849292B1 (en) Flag optimization of a trace
US6910104B2 (en) Icache-based value prediction mechanism
US20050251621A1 (en) Method for realizing autonomous load/store by using symbolic machine code
US20180196675A1 (en) Processor and instruction code generation device
JP2012123810A (ja) 復帰スタックを管理する方法および装置
JP4134179B2 (ja) ソフトウエアによる動的予測方法および装置
US20040117606A1 (en) Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information
CN106557304B (zh) 用于预测子程序返回指令的目标的取指单元
US20180232232A1 (en) Compiler-assisted lookahead (cal) memory system apparatus for microprocessors
Stark et al. Reducing the performance impact of instruction cache misses by writing instructions into the reservation stations out-of-order
JP6252348B2 (ja) 演算処理装置および演算処理装置の制御方法
US20190079771A1 (en) Lookahead out-of-order instruction fetch apparatus for microprocessors
US7937564B1 (en) Emit vector optimization of a trace
JP2001243070A (ja) プロセッサ及び分岐予測方法並びにコンパイル方法

Legal Events

Date Code Title Description
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

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180214

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181025

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190211

R150 Certificate of patent or registration of utility model

Ref document number: 6488711

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150