JP2003223359A - 演算処理装置 - Google Patents
演算処理装置Info
- Publication number
- JP2003223359A JP2003223359A JP2002020244A JP2002020244A JP2003223359A JP 2003223359 A JP2003223359 A JP 2003223359A JP 2002020244 A JP2002020244 A JP 2002020244A JP 2002020244 A JP2002020244 A JP 2002020244A JP 2003223359 A JP2003223359 A JP 2003223359A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- prefetch
- address
- cache
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
いて、実行時情報に基づいてプリフェッチ命令を命令ス
トリーム中に挿入することにより、キャッシュ汚染等の
問題を最小限に抑制しつつ効率的にプリフェッチを実行
する。 【解決手段】 この演算処理装置は、予めメインメモリ
からキャッシュメモリへデータを転送するように指示す
るプリフェッチ命令を動的に命令列中に挿入して実行す
るものであり、キャッシュミスを起こす命令のうちプリ
フェッチ処理の対象とすべき命令を選択する手段と、プ
リフェッチ処理の対象とされた命令の実行時におけるメ
モリアクセスアドレスを予測する手段と、プリフェッチ
処理の対象とされた命令に対応するプリフェッチ命令の
命令列中への挿入位置を決定する手段と、予測されたメ
モリアクセスアドレスをオペランドに有するプリフェッ
チ命令を当該決定された挿入位置に挿入する手段と、を
具備する。
Description
を備えるとともにメモリアクセスレイテンシ(memory ac
cess latency)を隠蔽するためにプリフェッチ処理を行
う演算処理装置に関し、より詳細には、実行時情報に基
づいてプリフェッチ処理を行うことでその効果の改善を
図った演算処理装置に関する。
アクセスレイテンシの増大は、システム全体の性能向上
を妨げる大きな原因となっている。一般の計算機システ
ムは、メモリアクセスの時間的・空間的な局所性に着目
し、プロセッサ(レジスタ)とメインメモリとの間に高
速にアクセスすることができるキャッシュメモリを装備
しており、これによってメモリアクセス性能の向上を図
っている。
ャッシュメモリにデータが存在しない場合すなわちキャ
ッシュミスが発生した場合には、メインメモリからデー
タを転送する必要がある。このとき、データ転送に多く
の時間を要する(キャッシュミスペナルティ)。現在の
演算処理装置においては、キャッシュメモリへのアクセ
スは1〜十数サイクル程度であるが、キャッシュミスペ
ナルティは、数十サイクルに達する。したがって、プロ
グラムの実行時間はキャッシュミスペナルティによって
律速される部分が大きい。プロセッサの動作速度とメモ
リアクセス速度とのギャップは年々大きくなっており、
上記の問題は、将来、より深刻なダメージを計算機シス
テムに対して与えることになる。
データプリフェッチ(データ先読み、以下単にプリフェ
ッチと呼ぶ)と呼ばれる方式が広く提案・利用されてい
る。データプリフェッチとは、将来アクセスされるであ
ろうと予想されるデータを、前もってメモリの上位階層
(キャッシュメモリ)に転送しておくという処理であ
る。適切にデータプリフェッチを行うことで、メインメ
モリへのアクセス遅延時間が隠蔽され、見かけ上キャッ
シュにデータが常に存在しているかのようにプログラム
の実行が行われる。
されているが、大きく分けて以下の2つの方式に分けら
れる。
コンパイラなどが静的にプログラムの挙動解析を行い、
プリフェッチ命令をプログラム中に挿入する。プログラ
ムを実行したプロファイル情報を元に、コンパイラなど
がプリフェッチ命令を挿入する場合もある。
サの内部あるいは外部に、プリフェッチ専用のハードウ
ェア機構を備える。一般に、動的に(プログラム実行中
に)、この専用ハードウェアがキャッシュミスの発生を
認識し、予め定められたアルゴリズムに基づいてプリフ
ェッチ処理を行う。既存のハードウェアプリフェッチ方
式は、キャッシュミスが数回発生したことを認識し、こ
れをトリガとしてプリフェッチを開始する。
802号公報では、原始プログラムを中間テキストに変
換し、変換した中間テキストに対して最適化を行い、デ
ータプリフェッチを行うアドレスを算出してプリフェッ
チ命令を挿入するというコンパイル技術が提案されてい
る。
キャッシュブロックがアクセスされた場合に、次のキャ
ッシュブロックに対して近い将来アクセスされるであろ
うと予測し、そのアドレスに対してプリフェッチを行う
というものや、その他にも、ある一定の値を加算して次
回アクセスするアドレスを決定するストライド予測によ
るプリフェッチなど、数多くの方式が提案されている。
また、実際に、商用で利用されているものとして、Pent
ium (登録商標)4においては、実際にアクセスされて
いるアドレスから常に256バイト先のデータを先読み
するといった機構が備わっている。
処理を行う場合には、以下のような問題点に留意する必
要がある。
フェッチを行うことで、キャッシュメモリに格納されて
いたデータが追い出されてしまう。プリフェッチ処理を
行わなければ、追い出されずに本来キャッシュにヒット
したであろうデータが存在した場合には、プリフェッチ
によって性能低下を招くことがある。
クセスによって使用前に追い出されること。プリフェッ
チしたデータに実際にアクセスするときよりも長時間前
にプリフェッチ処理を行ってしまうと、実際のアクセス
の前に、先行するメモリアクセスによってプリフェッチ
したデータが追い出されてしまうことがある。
帯域幅を浪費してしまうこと。必要以上にプリフェッチ
処理を行うことで、メモリバス帯域幅を浪費してしま
い、逆に性能低下を招く。
挿入位置とプリフェッチされたデータを実際に使用する
命令との距離(プリフェッチ距離)を適切に決定する必
要がある。また、上記(3)については、キャッシュミス
が発生するメモリアクセス全てについてプリフェッチを
行うのではなく、プリフェッチを行えば効果的であると
判断できる場合のみ、プリフェッチ命令を挿入しなけれ
ばならない。
は、実行時の状況によりプログラムの挙動が変化する場
合や、あるいは、システム構成の変更(プロセッサある
いはメモリシステムの構成の変更)が行われる場合があ
るため、プリフェッチ距離を適切に設定することは困難
である。
述のような環境の変更が発生した場合、原始プログラム
を再コンパイルするなどの作業が必要になる。このよう
にシステム毎に実行ファイルを用意することは現実的で
ない。また、プログラムへの入力によって挙動が変わる
ようなプログラムの場合には対処できない。
も、単純にロードミスが発生した場合に即座にプリフェ
ッチを行うという方法では、効果的なプリフェッチ距離
を保つことができない。また、ハードウェアプリフェッ
チを行うかどうかの決定方法に関する複雑な処理につい
ては、その実装が困難である。実際、従来のハードウェ
アプリフェッチでは、キャッシュミスが数回発生した段
階でプリフェッチを実行したり、アクセスされたブロッ
クの次のブロックに対してプリフェッチし続けるなど一
般に単純である。
たものであり、その目的は、キャッシュメモリを備えた
演算処理装置であって、実行時情報に基づいてプリフェ
ッチ命令を命令ストリーム中に挿入することにより、従
来のプリフェッチ方式に伴うキャッシュ汚染等の問題を
最小限に抑制しつつ効率的にプリフェッチを実行し得る
ものを提供することにある。
に、本発明の第1の面によれば、予めメインメモリから
キャッシュメモリへデータを転送するように指示するプ
リフェッチ命令を動的に命令列中に挿入して実行する演
算処理装置であって、キャッシュミスを起こす命令のう
ちプリフェッチ処理の対象とすべき命令を選択するプリ
フェッチ対象選択手段と、前記プリフェッチ対象選択手
段によってプリフェッチ処理の対象とされた命令の実行
時におけるメモリアクセスアドレスを予測するアドレス
予測手段と、前記プリフェッチ対象選択手段によってプ
リフェッチ処理の対象とされた命令に対応するプリフェ
ッチ命令の命令列中への挿入位置を決定するプリフェッ
チ命令挿入位置決定手段と、前記アドレス予測手段によ
って予測されたメモリアクセスアドレスをオペランドに
有するプリフェッチ命令を、前記プリフェッチ命令挿入
位置決定手段によって決定された挿入位置に、挿入する
プリフェッチ命令挿入手段と、を具備する演算処理装置
が提供される。
くは、前記プリフェッチ対象選択手段は、命令アドレス
ごとにキャッシュミスが発生する回数を計測するカウン
タを備え、該カウンタの値が一定値を超えた場合に、キ
ャッシュミス情報を処理するハンドラを起動して、該ハ
ンドラによってプリフェッチ処理の対象とすべき命令を
選択する。
くは、前記プリフェッチ命令挿入位置決定手段は、過去
に実行が完了した命令列について命令アドレス及び実行
完了時刻を保持するテーブルを備え、該テーブルの情報
に基づいてプリフェッチ命令の命令列中への挿入位置を
決定する。
リフェッチ対象選択手段、前記プリフェッチ命令挿入位
置決定手段、前記アドレス予測手段及び前記プリフェッ
チ命令挿入手段をキャッシュメモリ内に備えるようにし
てもよい。
実行命令流が制御可能な演算処理装置の場合、前記キャ
ッシュミス情報を処理するハンドラが独立した命令流と
して主命令流とは独立に実行される。
の実施形態について説明する。
挿入処理を行う演算処理装置の動作の概要を説明するた
めの図である。この図1は、本発明で関係のある部分の
みについて示している。命令フェッチ部および命令デコ
ーダ部をまとめ、命令の実行を制御する部分とし、この
部分を制御部と呼ぶことにする。本発明の対象となる演
算処理装置では、制御部から次に実行すべき命令を指示
する命令アドレスが指定され、命令列が格納されている
メモリ(またはキャッシュメモリ)から、命令が読み出
され、制御部に入力される。その後、命令は、単一ある
いは複数の演算部において実行される。メモリから読み
出される命令の並びのことを、本発明では「命令ストリ
ーム(命令流)」と呼ぶ。
にプリフェッチ命令を挿入する。実行時、プログラムそ
れ自体はメインメモリに格納されており、これを直接修
正することは行われない。指定された命令アドレスにプ
リフェッチ命令を挿入して実行する方法の一例において
は、命令フェッチユニット(図1では、制御部内に含ま
れる)が、フェッチする命令アドレスと、挿入する命令
アドレスとを比較し、それらが一致すれば、メインメモ
リから取得した命令ストリーム中にプリフェッチ命令を
割り込ませ、その後、そのプリフェッチ命令を演算部が
実行する。
ュミスが発生する命令アドレス(ロード/ストア命令、
メモリアクセスを伴う演算命令など)が検出される。検
出された命令アドレスに対して、実際にデータプリフェ
ッチを行うかどうかを決定するために、様々なアルゴリ
ズムを適用することが考えられる。そして、プリフェッ
チを行う場合には、システムにおけるキャッシュミスペ
ナルティを考慮して、これに応じたプリフェッチ命令挿
入位置(命令アドレス)が指定される。さらに、プリフ
ェッチ対象とするデータアドレスについては、現在まで
にすでに提案されている様々なデータアドレス予測方式
が適用され得る。かくして、プログラムに対して再コン
パイルを行ったりせず、また、実行時環境に依存せず、
動的で効果的なプリフェッチを行うことができる。
成例を示す図である。図2に示される実施形態では、メ
インメモリ10に対して、命令キャッシュ12及びデー
タキャッシュ14が設けられている。命令フェッチユニ
ット20は、プログラムカウンタ(PC)24の値(フ
ェッチされるべき命令が格納されているアドレス)に基
づいて命令キャッシュ12から命令をフェッチしデコー
ダ30に送出する。デコーダ30にてデコードされた命
令は、分岐命令処理ユニット32、算術命令処理ユニッ
ト34又はロード/ストア命令処理ユニット36におい
て処理される。
20の内部には、プリフェッチ命令の挿入アドレスを指
定する複数のレジスタ(プリフェッチ命令挿入アドレス
レジスタ)22a〜22dが装備されている。命令フェ
ッチユニット20は、命令フェッチ時にプログラムカウ
ンタ(PC)24の値とプリフェッチ命令挿入アドレス
レジスタ22a〜22dの値とを、比較器(コンパレー
タ)26a〜26dにおいて並列に比較する。そして、
もし一致していれば、デコーダ30に命令を投入するた
めの命令キュー28の所定位置に、プリフェッチ命令が
割り込み挿入される。
プリフェッチ処理の対象とすべき命令を選択するに際し
ては、キャッシュミスが発生した命令アドレスを記録
し、統計的に処理することで、プリフェッチ処理により
充分な効果が得られる命令アドレスを選択することがで
きるようにしておくことが望ましい。
発生する命令アドレスの統計データを効率的に取得する
ために、キャッシュミスの発生を計測するカウンタが装
備される。すなわち、図2におけるレジスタファイル4
0中のイベントカウンタ42がそのカウンタである。イ
ベントカウンタ42が、指定された回数だけカウントす
ると、演算処理装置内部であらかじめ指定されたハンド
ラが実行される。このような機構を用意することで、キ
ャッシュミスが発生するたびに検出機能が起動されると
いうオーバヘッドを避けつつ、ソフトウェアによる柔軟
なキャッシュミス情報の処理を行うことができる。
うな、命令アドレスごとにキャッシュミスが発生した回
数を記憶するテーブルに基づいて、プリフェッチ処理を
行うべきか否かを判定する。なお、このテーブルは、メ
インメモリ上に設けられている。
に、例えば、1命令あたりの実行サイクル数(Cycle Pe
r Instruction,CPI)を仮定し、対象となるシステ
ム構成におけるキャッシュミスペナルティを考慮して、
適切なプリフェッチ距離を算出することができる。
ステム(対象プログラム)のCPIを知ることは一般に
難しく、また、それがプリフェッチ対象としている命令
付近の実行状況を反映しているとは必ずしも言えない。
履歴を、ある固定された命令数だけ保持しておくテーブ
ルを演算処理装置に備えることが好ましい。この場合、
プリフェッチ命令を挿入する際、このテーブルを参照す
ることで、CPIを仮定するよりも、精度良い挿入アド
レスを知ることができる。これにより、プリフェッチに
よる悪影響を最小限に抑えることができる。
命令実行履歴を保持するテーブルであって、上述のハン
ドラが、プリフェッチ処理の対象とされた命令に対応す
るプリフェッチ命令の命令列中への挿入位置を決定する
際に参照するものである。この実行履歴テーブル50の
構成例が図4に示される。この図に示されるように、テ
ーブル内の各エントリは、命令アドレスと実行命令完了
時の時刻(クロック単位)とで構成される。このテーブ
ルは、複数のエントリからなり、最近実行完了した命令
から数十命令程度以前の完了情報を保持することができ
るものである。
るハンドラは、プリフェッチ命令を挿入する場合、実行
履歴テーブル50を参照して、挿入位置を決定し、プリ
フェッチ命令挿入アドレスレジスタ22a〜22dのい
ずれかにセットする。なお、このハンドラは、レジスタ
22a〜22dに対して、一般レジスタと同様にアクセ
スすることができる。このように、かかるハンドラは、
プリフェッチ命令を挿入する際、実行履歴テーブル50
にアクセスすることで、プリフェッチ命令を挿入する位
置を精度良く決定することができる。なお、この場合、
実行履歴テーブルにアクセスするための命令を追加する
か、あるいは、このテーブルをメモリマップする等が必
要となる。
レス、すなわちプリフェッチ命令のオペランドの決定に
は、図2中のアドレス予測ユニット60が使用される。
上述のハンドラは、このユニットに対して、予めプリフ
ェッチ処理が行われるべき命令(ロード命令)の命令ア
ドレスを送信する。なお、アドレス予測ユニット60
は、すでに一般的に知られているアドレス予測技術を実
装したものである。例えば、特開平4-206917号公報、M.
H. Lipasti, et al. “Value Locality and LoadValue
Prediction” in ASPLOS-VII, 1996、等に開示された技
術が利用可能である。
ドレス予測テーブルが用意されている。このテーブルの
各エントリは、ロード命令アドレス(インデックス)、
前回及び前々回にロード対象とされたメモリアドレスが
保持されている。このアドレス予測ユニット60に対し
て、ロード命令アドレスを送信すると、このユニット
は、(1) アドレス予測テーブル内に当該アドレスが存在
するか、インデックスとの比較を行い、(2) もしあれ
ば、前回及び前々回のメモリアドレスの差分(ストライ
ド)から次回アクセスされるアドレスを予測する。
用いてプリフェッチ命令を挿入するシーケンスを例示す
る。そのサンプルプログラムを図5に示す。このプログ
ラムは、あるプログラム全体から、配列の指定範囲内に
ついてループ演算処理を行う部分のみを切り出したもの
である。ここでは、特定のアーキテクチャの命令ではな
く、擬似命令を用いて記述している。
命令(ld)がキャッシュミスを多数発生するロード命
令である。なお、このロード命令は、レジスタr6に格
納された値とレジスタr7に格納された値とを加算して
得られる値でアドレッシングされるメモリの内容をレジ
スタr1へロードするものである。以下、そのシーケン
スを示す。
れるロード命令の実行時にキャッシュミスが発生する。
このとき、イベントカウンタ42(図2)がカウントア
ップされるが、そのカウンタが溢れた場合にはハンドラ
が起動される。
3に示されるテーブルに基づいて、この命令アドレスで
キャッシュミスが多数発生していてプリフェッチ処理を
行うべき状況に至っているか否かを判定する。
ドラは、実行履歴テーブル50(図4)を参照する。こ
のサンプルプログラムの場合、実行履歴テーブル50の
内容は、図6に示されるようになっている。なお、図6
は、実行履歴テーブル50とともに、対応する命令スト
リームをも示している。本システムにおいて、キャッシ
ュミスペナルティが0x60(16進表示)プロセッサ
サイクルであった場合、このテーブルから2ループ前の
ロード命令の前後にプリフェッチ命令を挿入すれば良い
ことがわかる。
20内のプリフェッチ命令挿入アドレスを指定するため
のレジスタ22a〜22dの一つにロード命令の命令ア
ドレス(0x00010030)をセットし、同時に、
アドレス予測ユニット60に対してオペランド(メモリ
アドレス)の生成を指示する。また、何ループ先の予測
アドレスを取得したいか(この例の場合、2)も指示す
る。
命令アドレスがユニット内のアドレス予測テーブルに存
在すれば、当該エントリの前回及び前々回のメモリアド
レスの差分を求める。この例の場合、1ループ実行され
るたびにadd命令でレジスタr7に32が加算されて
いることからわかるように、メモリアドレスの差分は3
2バイトとなる。
(バイト)×2(ループ)先のデータをプリフェッチの
対象メモリアドレスとして、命令フェッチユニット20
に送信する。
ペナルティ(0x60サイクル)は、システム構成が変
わった場合に変更されるものである。以後、命令フェッ
チユニット20は、再度当該ロード命令前後の実行にさ
しかかった場合、そのアドレスに対するプリフェッチ命
令を繰り返し挿入する。このとき、アドレス予測ユニッ
ト60は、その都度プリフェッチ対象となるメモリアド
レスの生成を行う。
置における命令フェッチユニット20(すなわち、図1
における制御部)においてプリフェッチ命令の挿入が行
われているが、プリフェッチ命令の挿入をキャッシュメ
モリで行うこともできる。多くの演算処理装置において
は、命令ワードを格納するための専用キャッシュメモリ
(命令キャッシュ)あるいは、データとともに命令ワー
ドを格納する共有キャッシュメモリが装備されている。
このキャッシュメモリ装置内部に、上述したプリフェッ
チ命令挿入装置を持たせ、制御部からの命令取得要求が
あったときにプリフェッチ命令を挿入したものを返すよ
うにすることができる。
チ挿入機能を持たせることにより、演算処理装置の内部
(制御部、演算部)に何ら修正を加えることなく、機能
を追加することが可能となる。
の制御しか行えない場合(スーパスカラプロセッサ等)
においては、ソフトウェアハンドラを実行するときに、
一旦、現在実行中のプログラムの実行を中断し、その実
行コンテキストを退避した後に当該ハンドラの実行を開
始する。また、ハンドラの実行後は、退避した実行コン
テキストを復帰させてプログラムの実行を再開する。ハ
ンドラの起動に際しては、以上のようなオーバヘッドが
生じる。
ding)あるいはCMP(on Chip Multi Processor)の
ように、独立した複数の命令流を同時に制御することが
できるようなアーキテクチャの場合には、ハンドラを主
命令流とは並列に実行することで、上述したハンドラの
実行に伴うオーバヘッドを削減することができる。
用する場合、複数の命令制御部が備えられる。しかし、
プロセッサ動作中においては必ずしも全ての命令制御部
が稼動しているわけではない。そこで、命令制御部がア
イドリングしている場合に、上記ハンドラの実行を行う
ようにすることで、実行オーバヘッドを削減しつつ、演
算処理装置(プロセッサ)の稼働率を向上させることが
できる。
eading)アーキテクチャを採用するシステムに本発明を
適用した例について、その基本的な構成を示す図であ
る。図中、DCはデコーダ、ALUは算術論理ユニッ
ト、REGはレジスタである。また、SUはスケジュー
リングユニットである。また、FPAは浮動小数点加算
器、FPMは浮動小数点乗算器、FPDは浮動小数点割
算器、LD/STはロードストアユニットである。
して述べたと同様に、プリフェッチ命令挿入アドレスを
格納するレジスタおよび比較器を備えている。また、各
スレッドを制御するためのシーケンサ121a、121
b及び121cは、それぞれ独立したレジスタを備えて
いる。なお、符号128a、128b及び128cは、
命令キューを示す。
ントカウンタ(図示せず)がオーバフローした際に、そ
のイベントが割り込みとして通知される場合、その割り
込みは、ある特定のシーケンサ(例えば、121c)に
のみ通知される。かくして、キャッシュミス情報を処理
するためのハンドラは、ある特定のシーケンサにて実行
されることとなる。
実行されるので、ハンドラの実行に際して主命令流の実
行は妨げられない。また、この図の場合、シーケンサ毎
にレジスタ等の実行コンテキスト(レジスタ)が保持さ
れているので、ハンドラの起動・終了時に退避・復帰処
理のオーバヘッドを伴うことがない。
態を参照して詳細に説明した。本発明の容易な理解のた
め、本発明の具体的な形態を以下に付記する。
シュメモリへデータを転送するように指示するプリフェ
ッチ命令を動的に命令列中に挿入して実行する演算処理
装置であって、キャッシュミスを起こす命令のうちプリ
フェッチ処理の対象とすべき命令を選択するプリフェッ
チ対象選択手段と、前記プリフェッチ対象選択手段によ
ってプリフェッチ処理の対象とされた命令の実行時にお
けるメモリアクセスアドレスを予測するアドレス予測手
段と、前記プリフェッチ対象選択手段によってプリフェ
ッチ処理の対象とされた命令に対応するプリフェッチ命
令の命令列中への挿入位置を決定するプリフェッチ命令
挿入位置決定手段と、前記アドレス予測手段によって予
測されたメモリアクセスアドレスをオペランドに有する
プリフェッチ命令を、前記プリフェッチ命令挿入位置決
定手段によって決定された挿入位置に、挿入するプリフ
ェッチ命令挿入手段と、を具備する演算処理装置。
段は、命令アドレスごとにキャッシュミスが発生する回
数を計測するカウンタを備え、該カウンタの値が一定値
を超えた場合に、キャッシュミス情報を処理するハンド
ラを起動して、該ハンドラによってプリフェッチ処理の
対象とすべき命令を選択する、付記1に記載の演算処理
装置。
置決定手段は、過去に実行が完了した命令列について命
令アドレス及び実行完了時刻を保持するテーブルを備
え、該テーブルの情報に基づいてプリフェッチ命令の命
令列中への挿入位置を決定する、付記1又は付記2に記
載の演算処理装置。
段、前記プリフェッチ命令挿入位置決定手段、前記アド
レス予測手段及び前記プリフェッチ命令挿入手段をキャ
ッシュメモリ内に備える、付記1に記載の演算処理装
置。
であり、前記キャッシュミス情報を処理するハンドラが
独立した命令流として主命令流とは独立に実行される、
付記3に記載の演算処理装置。
シュメモリへデータを転送するように指示するプリフェ
ッチ命令を動的に命令列中に挿入して実行する演算処理
方法であって、(a) キャッシュミスを起こす命令のうち
プリフェッチ処理の対象とすべき命令を選択するステッ
プと、(b) ステップ(a)によってプリフェッチ処理の対
象とされた命令の実行時におけるメモリアクセスアドレ
スを予測するステップと、(c) ステップ(a)によってプ
リフェッチ処理の対象とされた命令に対応するプリフェ
ッチ命令の命令列中への挿入位置を決定するステップ
と、(d) ステップ(b)によって予測されたメモリアクセ
スアドレスをオペランドに有するプリフェッチ命令を、
ステップ(c)によって決定された挿入位置に、挿入する
ステップと、を具備する演算処理方法。
スごとにキャッシュミスが発生する回数を計測し、該回
数が一定値を超えた場合に、キャッシュミス情報を処理
するハンドラを起動して、該ハンドラによってプリフェ
ッチ処理の対象とすべき命令を選択する、付記6に記載
の演算処理方法。
が完了した命令列について命令アドレス及び実行完了時
刻を保持するテーブルを備え、該テーブルの情報に基づ
いてプリフェッチ命令の命令列中への挿入位置を決定す
る、付記6又は付記7に記載の演算処理方法。
であり、前記キャッシュミス情報を処理するハンドラを
独立した命令流として主命令流とは独立に実行させるス
テップを更に具備する、付記8に記載の演算処理方法。
キャッシュメモリを備えた演算処理装置において、実行
時情報に基づいてプリフェッチ命令を命令ストリーム中
に挿入することにより、従来のプリフェッチ方式に伴う
キャッシュ汚染等の問題を最小限に抑制しつつ効率的に
プリフェッチを実行することが可能となる。
う演算処理装置の動作の概要を説明するための図であ
る。
である。
回数を記憶するテーブルの構成を示す図である。
テーブルの内容を命令ストリームとともに示す図であ
る。
発明を適用した例について、その基本的な構成を示す図
である。
タ 24…プログラムカウンタ(PC) 26a〜26d…比較器(コンパレータ) 28…命令キュー 30…デコーダ 32…分岐命令処理ユニット 34…算術命令処理ユニット 36…ロード/ストア命令処理ユニット 40…レジスタファイル 42…イベントカウンタ 50…実行履歴テーブル 60…アドレス予測ユニット 120…命令フェッチユニット 121a,121b,121c…シーケンサ 128a,128b,128c…命令キュー
Claims (5)
- 【請求項1】 予めメインメモリからキャッシュメモリ
へデータを転送するように指示するプリフェッチ命令を
動的に命令列中に挿入して実行する演算処理装置であっ
て、 キャッシュミスを起こす命令のうちプリフェッチ処理の
対象とすべき命令を選択するプリフェッチ対象選択手段
と、 前記プリフェッチ対象選択手段によってプリフェッチ処
理の対象とされた命令の実行時におけるメモリアクセス
アドレスを予測するアドレス予測手段と、 前記プリフェッチ対象選択手段によってプリフェッチ処
理の対象とされた命令に対応するプリフェッチ命令の命
令列中への挿入位置を決定するプリフェッチ命令挿入位
置決定手段と、 前記アドレス予測手段によって予測されたメモリアクセ
スアドレスをオペランドに有するプリフェッチ命令を、
前記プリフェッチ命令挿入位置決定手段によって決定さ
れた挿入位置に、挿入するプリフェッチ命令挿入手段
と、 を具備する演算処理装置。 - 【請求項2】 前記プリフェッチ対象選択手段は、命令
アドレスごとにキャッシュミスが発生する回数を計測す
るカウンタを備え、該カウンタの値が一定値を超えた場
合に、キャッシュミス情報を処理するハンドラを起動し
て、該ハンドラによってプリフェッチ処理の対象とすべ
き命令を選択する、請求項1に記載の演算処理装置。 - 【請求項3】 前記プリフェッチ命令挿入位置決定手段
は、過去に実行が完了した命令列について命令アドレス
及び実行完了時刻を保持するテーブルを備え、該テーブ
ルの情報に基づいてプリフェッチ命令の命令列中への挿
入位置を決定する、請求項1又は請求項2に記載の演算
処理装置。 - 【請求項4】 前記プリフェッチ対象選択手段、前記プ
リフェッチ命令挿入位置決定手段、前記アドレス予測手
段及び前記プリフェッチ命令挿入手段をキャッシュメモ
リ内に備える、請求項1に記載の演算処理装置。 - 【請求項5】 複数の実行命令流が制御可能であり、前
記キャッシュミス情報を処理するハンドラが独立した命
令流として主命令流とは独立に実行される、請求項3に
記載の演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002020244A JP4030314B2 (ja) | 2002-01-29 | 2002-01-29 | 演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002020244A JP4030314B2 (ja) | 2002-01-29 | 2002-01-29 | 演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003223359A true JP2003223359A (ja) | 2003-08-08 |
JP4030314B2 JP4030314B2 (ja) | 2008-01-09 |
Family
ID=27743794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002020244A Expired - Fee Related JP4030314B2 (ja) | 2002-01-29 | 2002-01-29 | 演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4030314B2 (ja) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005182825A (ja) * | 2003-12-18 | 2005-07-07 | Nvidia Corp | マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ |
JP2005249735A (ja) * | 2004-03-08 | 2005-09-15 | Advantest Corp | パターン発生器、及び試験装置 |
JP2007072883A (ja) * | 2005-09-08 | 2007-03-22 | Matsushita Electric Ind Co Ltd | キャッシュメモリ解析方法、プロセッサおよび模擬情報処理装置 |
JP2008090411A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 情報処理装置、命令制御機構及び命令制御方法 |
JP2008226025A (ja) * | 2007-03-14 | 2008-09-25 | Fujitsu Ltd | プリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法 |
JP2008269450A (ja) * | 2007-04-24 | 2008-11-06 | Fujitsu Ltd | プロセッサ及びプリフェッチ制御方法 |
JPWO2008093399A1 (ja) * | 2007-01-30 | 2010-05-20 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP2011076314A (ja) * | 2009-09-30 | 2011-04-14 | Nec Corp | ハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置 |
JP2013504815A (ja) * | 2009-09-11 | 2013-02-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データストリームのためのストアアウェアプリフェッチ |
WO2014030387A1 (ja) * | 2012-08-22 | 2014-02-27 | 三菱電機株式会社 | キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 |
US9824016B2 (en) | 2015-01-14 | 2017-11-21 | Fujitsu Limited | Device and processing method |
US11709679B2 (en) | 2016-03-31 | 2023-07-25 | Qualcomm Incorporated | Providing load address predictions using address prediction tables based on load path history in processor-based systems |
-
2002
- 2002-01-29 JP JP2002020244A patent/JP4030314B2/ja not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005182825A (ja) * | 2003-12-18 | 2005-07-07 | Nvidia Corp | マルチスレッド式マイクロプロセッサのスレッドにまたがるアウト・オブ・オーダー命令ディスパッチ |
JP2005249735A (ja) * | 2004-03-08 | 2005-09-15 | Advantest Corp | パターン発生器、及び試験装置 |
JP4486383B2 (ja) * | 2004-03-08 | 2010-06-23 | 株式会社アドバンテスト | パターン発生器、及び試験装置 |
JP2007072883A (ja) * | 2005-09-08 | 2007-03-22 | Matsushita Electric Ind Co Ltd | キャッシュメモリ解析方法、プロセッサおよび模擬情報処理装置 |
JP2008090411A (ja) * | 2006-09-29 | 2008-04-17 | Fujitsu Ltd | 情報処理装置、命令制御機構及び命令制御方法 |
JPWO2008093399A1 (ja) * | 2007-01-30 | 2010-05-20 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
JP4491500B2 (ja) * | 2007-01-30 | 2010-06-30 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
US8671246B2 (en) | 2007-01-30 | 2014-03-11 | Fujitsu Limited | Information processing system and information processing method |
JP2008226025A (ja) * | 2007-03-14 | 2008-09-25 | Fujitsu Ltd | プリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法 |
JP2008269450A (ja) * | 2007-04-24 | 2008-11-06 | Fujitsu Ltd | プロセッサ及びプリフェッチ制御方法 |
JP2013504815A (ja) * | 2009-09-11 | 2013-02-07 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | データストリームのためのストアアウェアプリフェッチ |
JP2011076314A (ja) * | 2009-09-30 | 2011-04-14 | Nec Corp | ハードウェアプロセッサおよびハードウェアプロセッサ制御方法並びに情報処理装置 |
WO2014030387A1 (ja) * | 2012-08-22 | 2014-02-27 | 三菱電機株式会社 | キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 |
US9824016B2 (en) | 2015-01-14 | 2017-11-21 | Fujitsu Limited | Device and processing method |
US11709679B2 (en) | 2016-03-31 | 2023-07-25 | Qualcomm Incorporated | Providing load address predictions using address prediction tables based on load path history in processor-based systems |
Also Published As
Publication number | Publication date |
---|---|
JP4030314B2 (ja) | 2008-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7904661B2 (en) | Data stream prefetching in a microprocessor | |
US5136697A (en) | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache | |
US8230422B2 (en) | Assist thread for injecting cache memory in a microprocessor | |
US7472256B1 (en) | Software value prediction using pendency records of predicted prefetch values | |
US20070180438A1 (en) | Stall prediction thread management | |
Dorai et al. | Transparent threads: Resource sharing in SMT processors for high single-thread performance | |
JPH08147165A (ja) | マルチコンテキストをサポートするプロセッサおよび処理方法 | |
US9483406B2 (en) | Communicating prefetchers that throttle one another | |
JP2000347863A (ja) | 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム | |
US5784711A (en) | Data cache prefetching under control of instruction cache | |
WO2004059472A2 (en) | Method and apparatus for generating prefetches | |
KR20180090284A (ko) | 이벤트 기동된 프로그래머블 프리페처 | |
KR20100111700A (ko) | 로킹된 오퍼레이션을 수행하기 위한 방법 및 시스템 | |
JP4030314B2 (ja) | 演算処理装置 | |
US20190079771A1 (en) | Lookahead out-of-order instruction fetch apparatus for microprocessors | |
Vander Wiel et al. | A compiler-assisted data prefetch controller | |
Loikkanen et al. | A fine-grain multithreading superscalar architecture | |
JP2004518183A (ja) | マルチスレッド・システムにおける命令のフェッチとディスパッチ | |
US20050198439A1 (en) | Cache memory prefetcher | |
US20050216713A1 (en) | Instruction text controlled selectively stated branches for prediction via a branch target buffer | |
US20080209174A1 (en) | Processor And Its Instruction Issue Method | |
WO2004059473A2 (en) | Performing hardware scout threading in a system that supports simultaneous multithreading | |
JP2006518896A (ja) | 特定コード部分のキャッシュトラッシングの低減 | |
US7340567B1 (en) | Value prediction for missing read operations instances | |
JP2004192021A (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041119 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070703 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070717 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070905 |
|
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: 20070918 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071016 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101026 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101026 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111026 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111026 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121026 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121026 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131026 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |