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
Application number
JP2002020244A
Other languages
English (en)
Other versions
JP4030314B2 (ja
Inventor
Shuji Yamamura
周史 山村
Koichi Kumon
耕一 久門
Mitsuru Sato
充 佐藤
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 JP2002020244A priority Critical patent/JP4030314B2/ja
Publication of JP2003223359A publication Critical patent/JP2003223359A/ja
Application granted granted Critical
Publication of JP4030314B2 publication Critical patent/JP4030314B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 キャッシュメモリを備えた演算処理装置にお
いて、実行時情報に基づいてプリフェッチ命令を命令ス
トリーム中に挿入することにより、キャッシュ汚染等の
問題を最小限に抑制しつつ効率的にプリフェッチを実行
する。 【解決手段】 この演算処理装置は、予めメインメモリ
からキャッシュメモリへデータを転送するように指示す
るプリフェッチ命令を動的に命令列中に挿入して実行す
るものであり、キャッシュミスを起こす命令のうちプリ
フェッチ処理の対象とすべき命令を選択する手段と、プ
リフェッチ処理の対象とされた命令の実行時におけるメ
モリアクセスアドレスを予測する手段と、プリフェッチ
処理の対象とされた命令に対応するプリフェッチ命令の
命令列中への挿入位置を決定する手段と、予測されたメ
モリアクセスアドレスをオペランドに有するプリフェッ
チ命令を当該決定された挿入位置に挿入する手段と、を
具備する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、キャッシュメモリ
を備えるとともにメモリアクセスレイテンシ(memory ac
cess latency)を隠蔽するためにプリフェッチ処理を行
う演算処理装置に関し、より詳細には、実行時情報に基
づいてプリフェッチ処理を行うことでその効果の改善を
図った演算処理装置に関する。
【0002】
【従来の技術】現在の計算機システムにおいて、メモリ
アクセスレイテンシの増大は、システム全体の性能向上
を妨げる大きな原因となっている。一般の計算機システ
ムは、メモリアクセスの時間的・空間的な局所性に着目
し、プロセッサ(レジスタ)とメインメモリとの間に高
速にアクセスすることができるキャッシュメモリを装備
しており、これによってメモリアクセス性能の向上を図
っている。
【0003】しかし、メモリアクセスが発生した際、キ
ャッシュメモリにデータが存在しない場合すなわちキャ
ッシュミスが発生した場合には、メインメモリからデー
タを転送する必要がある。このとき、データ転送に多く
の時間を要する(キャッシュミスペナルティ)。現在の
演算処理装置においては、キャッシュメモリへのアクセ
スは1〜十数サイクル程度であるが、キャッシュミスペ
ナルティは、数十サイクルに達する。したがって、プロ
グラムの実行時間はキャッシュミスペナルティによって
律速される部分が大きい。プロセッサの動作速度とメモ
リアクセス速度とのギャップは年々大きくなっており、
上記の問題は、将来、より深刻なダメージを計算機シス
テムに対して与えることになる。
【0004】この問題に対して、従来技術においては、
データプリフェッチ(データ先読み、以下単にプリフェ
ッチと呼ぶ)と呼ばれる方式が広く提案・利用されてい
る。データプリフェッチとは、将来アクセスされるであ
ろうと予想されるデータを、前もってメモリの上位階層
(キャッシュメモリ)に転送しておくという処理であ
る。適切にデータプリフェッチを行うことで、メインメ
モリへのアクセス遅延時間が隠蔽され、見かけ上キャッ
シュにデータが常に存在しているかのようにプログラム
の実行が行われる。
【0005】現在まで数多くのプリフェッチ方式が提案
されているが、大きく分けて以下の2つの方式に分けら
れる。
【0006】(1) ソフトウェアプリフェッチ。一般に、
コンパイラなどが静的にプログラムの挙動解析を行い、
プリフェッチ命令をプログラム中に挿入する。プログラ
ムを実行したプロファイル情報を元に、コンパイラなど
がプリフェッチ命令を挿入する場合もある。
【0007】(2) ハードウェアプリフェッチ。プロセッ
サの内部あるいは外部に、プリフェッチ専用のハードウ
ェア機構を備える。一般に、動的に(プログラム実行中
に)、この専用ハードウェアがキャッシュミスの発生を
認識し、予め定められたアルゴリズムに基づいてプリフ
ェッチ処理を行う。既存のハードウェアプリフェッチ方
式は、キャッシュミスが数回発生したことを認識し、こ
れをトリガとしてプリフェッチを開始する。
【0008】上記(1)の例として、特開平11−212
802号公報では、原始プログラムを中間テキストに変
換し、変換した中間テキストに対して最適化を行い、デ
ータプリフェッチを行うアドレスを算出してプリフェッ
チ命令を挿入するというコンパイル技術が提案されてい
る。
【0009】また、上記(2)については、例えば、ある
キャッシュブロックがアクセスされた場合に、次のキャ
ッシュブロックに対して近い将来アクセスされるであろ
うと予測し、そのアドレスに対してプリフェッチを行う
というものや、その他にも、ある一定の値を加算して次
回アクセスするアドレスを決定するストライド予測によ
るプリフェッチなど、数多くの方式が提案されている。
また、実際に、商用で利用されているものとして、Pent
ium (登録商標)4においては、実際にアクセスされて
いるアドレスから常に256バイト先のデータを先読み
するといった機構が備わっている。
【0010】
【発明が解決しようとする課題】一般に、プリフェッチ
処理を行う場合には、以下のような問題点に留意する必
要がある。
【0011】(1) キャッシュ汚染が発生すること。プリ
フェッチを行うことで、キャッシュメモリに格納されて
いたデータが追い出されてしまう。プリフェッチ処理を
行わなければ、追い出されずに本来キャッシュにヒット
したであろうデータが存在した場合には、プリフェッチ
によって性能低下を招くことがある。
【0012】(2) プリフェッチしたデータが、後続のア
クセスによって使用前に追い出されること。プリフェッ
チしたデータに実際にアクセスするときよりも長時間前
にプリフェッチ処理を行ってしまうと、実際のアクセス
の前に、先行するメモリアクセスによってプリフェッチ
したデータが追い出されてしまうことがある。
【0013】(3) 過剰なプリフェッチ処理によってバス
帯域幅を浪費してしまうこと。必要以上にプリフェッチ
処理を行うことで、メモリバス帯域幅を浪費してしま
い、逆に性能低下を招く。
【0014】上記(1)及び(2)については、プリフェッチ
挿入位置とプリフェッチされたデータを実際に使用する
命令との距離(プリフェッチ距離)を適切に決定する必
要がある。また、上記(3)については、キャッシュミス
が発生するメモリアクセス全てについてプリフェッチを
行うのではなく、プリフェッチを行えば効果的であると
判断できる場合のみ、プリフェッチ命令を挿入しなけれ
ばならない。
【0015】これに対して、従来のプリフェッチ方式で
は、実行時の状況によりプログラムの挙動が変化する場
合や、あるいは、システム構成の変更(プロセッサある
いはメモリシステムの構成の変更)が行われる場合があ
るため、プリフェッチ距離を適切に設定することは困難
である。
【0016】まず、ソフトウェアプリフェッチでは、上
述のような環境の変更が発生した場合、原始プログラム
を再コンパイルするなどの作業が必要になる。このよう
にシステム毎に実行ファイルを用意することは現実的で
ない。また、プログラムへの入力によって挙動が変わる
ようなプログラムの場合には対処できない。
【0017】一方、ハードウェアプリフェッチにおいて
も、単純にロードミスが発生した場合に即座にプリフェ
ッチを行うという方法では、効果的なプリフェッチ距離
を保つことができない。また、ハードウェアプリフェッ
チを行うかどうかの決定方法に関する複雑な処理につい
ては、その実装が困難である。実際、従来のハードウェ
アプリフェッチでは、キャッシュミスが数回発生した段
階でプリフェッチを実行したり、アクセスされたブロッ
クの次のブロックに対してプリフェッチし続けるなど一
般に単純である。
【0018】本発明は、上述した問題点に鑑みてなされ
たものであり、その目的は、キャッシュメモリを備えた
演算処理装置であって、実行時情報に基づいてプリフェ
ッチ命令を命令ストリーム中に挿入することにより、従
来のプリフェッチ方式に伴うキャッシュ汚染等の問題を
最小限に抑制しつつ効率的にプリフェッチを実行し得る
ものを提供することにある。
【0019】
【課題を解決するための手段】上記目的を達成するため
に、本発明の第1の面によれば、予めメインメモリから
キャッシュメモリへデータを転送するように指示するプ
リフェッチ命令を動的に命令列中に挿入して実行する演
算処理装置であって、キャッシュミスを起こす命令のう
ちプリフェッチ処理の対象とすべき命令を選択するプリ
フェッチ対象選択手段と、前記プリフェッチ対象選択手
段によってプリフェッチ処理の対象とされた命令の実行
時におけるメモリアクセスアドレスを予測するアドレス
予測手段と、前記プリフェッチ対象選択手段によってプ
リフェッチ処理の対象とされた命令に対応するプリフェ
ッチ命令の命令列中への挿入位置を決定するプリフェッ
チ命令挿入位置決定手段と、前記アドレス予測手段によ
って予測されたメモリアクセスアドレスをオペランドに
有するプリフェッチ命令を、前記プリフェッチ命令挿入
位置決定手段によって決定された挿入位置に、挿入する
プリフェッチ命令挿入手段と、を具備する演算処理装置
が提供される。
【0020】また、本発明の第2の面によれば、好まし
くは、前記プリフェッチ対象選択手段は、命令アドレス
ごとにキャッシュミスが発生する回数を計測するカウン
タを備え、該カウンタの値が一定値を超えた場合に、キ
ャッシュミス情報を処理するハンドラを起動して、該ハ
ンドラによってプリフェッチ処理の対象とすべき命令を
選択する。
【0021】また、本発明の第3の面によれば、好まし
くは、前記プリフェッチ命令挿入位置決定手段は、過去
に実行が完了した命令列について命令アドレス及び実行
完了時刻を保持するテーブルを備え、該テーブルの情報
に基づいてプリフェッチ命令の命令列中への挿入位置を
決定する。
【0022】また、本発明の第4の面によれば、前記プ
リフェッチ対象選択手段、前記プリフェッチ命令挿入位
置決定手段、前記アドレス予測手段及び前記プリフェッ
チ命令挿入手段をキャッシュメモリ内に備えるようにし
てもよい。
【0023】また、本発明の第5の面によれば、複数の
実行命令流が制御可能な演算処理装置の場合、前記キャ
ッシュミス情報を処理するハンドラが独立した命令流と
して主命令流とは独立に実行される。
【0024】
【発明の実施の形態】以下、添付図面を参照して本発明
の実施形態について説明する。
【0025】図1は、本発明によりプリフェッチ命令の
挿入処理を行う演算処理装置の動作の概要を説明するた
めの図である。この図1は、本発明で関係のある部分の
みについて示している。命令フェッチ部および命令デコ
ーダ部をまとめ、命令の実行を制御する部分とし、この
部分を制御部と呼ぶことにする。本発明の対象となる演
算処理装置では、制御部から次に実行すべき命令を指示
する命令アドレスが指定され、命令列が格納されている
メモリ(またはキャッシュメモリ)から、命令が読み出
され、制御部に入力される。その後、命令は、単一ある
いは複数の演算部において実行される。メモリから読み
出される命令の並びのことを、本発明では「命令ストリ
ーム(命令流)」と呼ぶ。
【0026】図1の制御部は、指定された命令アドレス
にプリフェッチ命令を挿入する。実行時、プログラムそ
れ自体はメインメモリに格納されており、これを直接修
正することは行われない。指定された命令アドレスにプ
リフェッチ命令を挿入して実行する方法の一例において
は、命令フェッチユニット(図1では、制御部内に含ま
れる)が、フェッチする命令アドレスと、挿入する命令
アドレスとを比較し、それらが一致すれば、メインメモ
リから取得した命令ストリーム中にプリフェッチ命令を
割り込ませ、その後、そのプリフェッチ命令を演算部が
実行する。
【0027】本発明による演算処理装置では、キャッシ
ュミスが発生する命令アドレス(ロード/ストア命令、
メモリアクセスを伴う演算命令など)が検出される。検
出された命令アドレスに対して、実際にデータプリフェ
ッチを行うかどうかを決定するために、様々なアルゴリ
ズムを適用することが考えられる。そして、プリフェッ
チを行う場合には、システムにおけるキャッシュミスペ
ナルティを考慮して、これに応じたプリフェッチ命令挿
入位置(命令アドレス)が指定される。さらに、プリフ
ェッチ対象とするデータアドレスについては、現在まで
にすでに提案されている様々なデータアドレス予測方式
が適用され得る。かくして、プログラムに対して再コン
パイルを行ったりせず、また、実行時環境に依存せず、
動的で効果的なプリフェッチを行うことができる。
【0028】図2は、本発明による演算処理装置の一構
成例を示す図である。図2に示される実施形態では、メ
インメモリ10に対して、命令キャッシュ12及びデー
タキャッシュ14が設けられている。命令フェッチユニ
ット20は、プログラムカウンタ(PC)24の値(フ
ェッチされるべき命令が格納されているアドレス)に基
づいて命令キャッシュ12から命令をフェッチしデコー
ダ30に送出する。デコーダ30にてデコードされた命
令は、分岐命令処理ユニット32、算術命令処理ユニッ
ト34又はロード/ストア命令処理ユニット36におい
て処理される。
【0029】本実施形態における命令フェッチユニット
20の内部には、プリフェッチ命令の挿入アドレスを指
定する複数のレジスタ(プリフェッチ命令挿入アドレス
レジスタ)22a〜22dが装備されている。命令フェ
ッチユニット20は、命令フェッチ時にプログラムカウ
ンタ(PC)24の値とプリフェッチ命令挿入アドレス
レジスタ22a〜22dの値とを、比較器(コンパレー
タ)26a〜26dにおいて並列に比較する。そして、
もし一致していれば、デコーダ30に命令を投入するた
めの命令キュー28の所定位置に、プリフェッチ命令が
割り込み挿入される。
【0030】データキャッシュミスを起こす命令のうち
プリフェッチ処理の対象とすべき命令を選択するに際し
ては、キャッシュミスが発生した命令アドレスを記録
し、統計的に処理することで、プリフェッチ処理により
充分な効果が得られる命令アドレスを選択することがで
きるようにしておくことが望ましい。
【0031】本実施形態においては、キャッシュミスが
発生する命令アドレスの統計データを効率的に取得する
ために、キャッシュミスの発生を計測するカウンタが装
備される。すなわち、図2におけるレジスタファイル4
0中のイベントカウンタ42がそのカウンタである。イ
ベントカウンタ42が、指定された回数だけカウントす
ると、演算処理装置内部であらかじめ指定されたハンド
ラが実行される。このような機構を用意することで、キ
ャッシュミスが発生するたびに検出機能が起動されると
いうオーバヘッドを避けつつ、ソフトウェアによる柔軟
なキャッシュミス情報の処理を行うことができる。
【0032】起動されたハンドラは、図3に示されるよ
うな、命令アドレスごとにキャッシュミスが発生した回
数を記憶するテーブルに基づいて、プリフェッチ処理を
行うべきか否かを判定する。なお、このテーブルは、メ
インメモリ上に設けられている。
【0033】最適なプリフェッチ距離を判断するため
に、例えば、1命令あたりの実行サイクル数(Cycle Pe
r Instruction,CPI)を仮定し、対象となるシステ
ム構成におけるキャッシュミスペナルティを考慮して、
適切なプリフェッチ距離を算出することができる。
【0034】しかし、この場合、実行時において対象シ
ステム(対象プログラム)のCPIを知ることは一般に
難しく、また、それがプリフェッチ対象としている命令
付近の実行状況を反映しているとは必ずしも言えない。
【0035】そこで、過去に実行が完了した命令の実行
履歴を、ある固定された命令数だけ保持しておくテーブ
ルを演算処理装置に備えることが好ましい。この場合、
プリフェッチ命令を挿入する際、このテーブルを参照す
ることで、CPIを仮定するよりも、精度良い挿入アド
レスを知ることができる。これにより、プリフェッチに
よる悪影響を最小限に抑えることができる。
【0036】図2に示される実行履歴テーブル50は、
命令実行履歴を保持するテーブルであって、上述のハン
ドラが、プリフェッチ処理の対象とされた命令に対応す
るプリフェッチ命令の命令列中への挿入位置を決定する
際に参照するものである。この実行履歴テーブル50の
構成例が図4に示される。この図に示されるように、テ
ーブル内の各エントリは、命令アドレスと実行命令完了
時の時刻(クロック単位)とで構成される。このテーブ
ルは、複数のエントリからなり、最近実行完了した命令
から数十命令程度以前の完了情報を保持することができ
るものである。
【0037】キャッシュミスイベント発生時に起動され
るハンドラは、プリフェッチ命令を挿入する場合、実行
履歴テーブル50を参照して、挿入位置を決定し、プリ
フェッチ命令挿入アドレスレジスタ22a〜22dのい
ずれかにセットする。なお、このハンドラは、レジスタ
22a〜22dに対して、一般レジスタと同様にアクセ
スすることができる。このように、かかるハンドラは、
プリフェッチ命令を挿入する際、実行履歴テーブル50
にアクセスすることで、プリフェッチ命令を挿入する位
置を精度良く決定することができる。なお、この場合、
実行履歴テーブルにアクセスするための命令を追加する
か、あるいは、このテーブルをメモリマップする等が必
要となる。
【0038】データプリフェッチ対象となるメモリアド
レス、すなわちプリフェッチ命令のオペランドの決定に
は、図2中のアドレス予測ユニット60が使用される。
上述のハンドラは、このユニットに対して、予めプリフ
ェッチ処理が行われるべき命令(ロード命令)の命令ア
ドレスを送信する。なお、アドレス予測ユニット60
は、すでに一般的に知られているアドレス予測技術を実
装したものである。例えば、特開平4-206917号公報、M.
H. Lipasti, et al. “Value Locality and LoadValue
Prediction” in ASPLOS-VII, 1996、等に開示された技
術が利用可能である。
【0039】アドレス予測ユニット60の内部には、ア
ドレス予測テーブルが用意されている。このテーブルの
各エントリは、ロード命令アドレス(インデックス)、
前回及び前々回にロード対象とされたメモリアドレスが
保持されている。このアドレス予測ユニット60に対し
て、ロード命令アドレスを送信すると、このユニット
は、(1) アドレス予測テーブル内に当該アドレスが存在
するか、インデックスとの比較を行い、(2) もしあれ
ば、前回及び前々回のメモリアドレスの差分(ストライ
ド)から次回アクセスされるアドレスを予測する。
【0040】以下、実際に簡単なサンプルプログラムを
用いてプリフェッチ命令を挿入するシーケンスを例示す
る。そのサンプルプログラムを図5に示す。このプログ
ラムは、あるプログラム全体から、配列の指定範囲内に
ついてループ演算処理を行う部分のみを切り出したもの
である。ここでは、特定のアーキテクチャの命令ではな
く、擬似命令を用いて記述している。
【0041】プログラム中、符号70で示されるロード
命令(ld)がキャッシュミスを多数発生するロード命
令である。なお、このロード命令は、レジスタr6に格
納された値とレジスタr7に格納された値とを加算して
得られる値でアドレッシングされるメモリの内容をレジ
スタr1へロードするものである。以下、そのシーケン
スを示す。
【0042】(1)プログラム実行中、符号70で示さ
れるロード命令の実行時にキャッシュミスが発生する。
このとき、イベントカウンタ42(図2)がカウントア
ップされるが、そのカウンタが溢れた場合にはハンドラ
が起動される。
【0043】(2)起動されたハンドラは、前述した図
3に示されるテーブルに基づいて、この命令アドレスで
キャッシュミスが多数発生していてプリフェッチ処理を
行うべき状況に至っているか否かを判定する。
【0044】(3)プリフェッチ処理を行う場合、ハン
ドラは、実行履歴テーブル50(図4)を参照する。こ
のサンプルプログラムの場合、実行履歴テーブル50の
内容は、図6に示されるようになっている。なお、図6
は、実行履歴テーブル50とともに、対応する命令スト
リームをも示している。本システムにおいて、キャッシ
ュミスペナルティが0x60(16進表示)プロセッサ
サイクルであった場合、このテーブルから2ループ前の
ロード命令の前後にプリフェッチ命令を挿入すれば良い
ことがわかる。
【0045】(4)ハンドラは、命令フェッチユニット
20内のプリフェッチ命令挿入アドレスを指定するため
のレジスタ22a〜22dの一つにロード命令の命令ア
ドレス(0x00010030)をセットし、同時に、
アドレス予測ユニット60に対してオペランド(メモリ
アドレス)の生成を指示する。また、何ループ先の予測
アドレスを取得したいか(この例の場合、2)も指示す
る。
【0046】(5)アドレス予測ユニット60は、当該
命令アドレスがユニット内のアドレス予測テーブルに存
在すれば、当該エントリの前回及び前々回のメモリアド
レスの差分を求める。この例の場合、1ループ実行され
るたびにadd命令でレジスタr7に32が加算されて
いることからわかるように、メモリアドレスの差分は3
2バイトとなる。
【0047】(6)アドレス予測ユニット60は、32
(バイト)×2(ループ)先のデータをプリフェッチの
対象メモリアドレスとして、命令フェッチユニット20
に送信する。
【0048】なお、上記(3)におけるキャッシュミス
ペナルティ(0x60サイクル)は、システム構成が変
わった場合に変更されるものである。以後、命令フェッ
チユニット20は、再度当該ロード命令前後の実行にさ
しかかった場合、そのアドレスに対するプリフェッチ命
令を繰り返し挿入する。このとき、アドレス予測ユニッ
ト60は、その都度プリフェッチ対象となるメモリアド
レスの生成を行う。
【0049】上述した実施形態においては、演算処理装
置における命令フェッチユニット20(すなわち、図1
における制御部)においてプリフェッチ命令の挿入が行
われているが、プリフェッチ命令の挿入をキャッシュメ
モリで行うこともできる。多くの演算処理装置において
は、命令ワードを格納するための専用キャッシュメモリ
(命令キャッシュ)あるいは、データとともに命令ワー
ドを格納する共有キャッシュメモリが装備されている。
このキャッシュメモリ装置内部に、上述したプリフェッ
チ命令挿入装置を持たせ、制御部からの命令取得要求が
あったときにプリフェッチ命令を挿入したものを返すよ
うにすることができる。
【0050】このようにキャッシュメモリにプリフェッ
チ挿入機能を持たせることにより、演算処理装置の内部
(制御部、演算部)に何ら修正を加えることなく、機能
を追加することが可能となる。
【0051】ところで、制御部が単一の命令ストリーム
の制御しか行えない場合(スーパスカラプロセッサ等)
においては、ソフトウェアハンドラを実行するときに、
一旦、現在実行中のプログラムの実行を中断し、その実
行コンテキストを退避した後に当該ハンドラの実行を開
始する。また、ハンドラの実行後は、退避した実行コン
テキストを復帰させてプログラムの実行を再開する。ハ
ンドラの起動に際しては、以上のようなオーバヘッドが
生じる。
【0052】一方、SMT(Simultaneous Multi-Threa
ding)あるいはCMP(on Chip Multi Processor)の
ように、独立した複数の命令流を同時に制御することが
できるようなアーキテクチャの場合には、ハンドラを主
命令流とは並列に実行することで、上述したハンドラの
実行に伴うオーバヘッドを削減することができる。
【0053】また、上記SMT等のアーキテクチャを採
用する場合、複数の命令制御部が備えられる。しかし、
プロセッサ動作中においては必ずしも全ての命令制御部
が稼動しているわけではない。そこで、命令制御部がア
イドリングしている場合に、上記ハンドラの実行を行う
ようにすることで、実行オーバヘッドを削減しつつ、演
算処理装置(プロセッサ)の稼働率を向上させることが
できる。
【0054】図7は、SMT(Simultaneous Multi-Thr
eading)アーキテクチャを採用するシステムに本発明を
適用した例について、その基本的な構成を示す図であ
る。図中、DCはデコーダ、ALUは算術論理ユニッ
ト、REGはレジスタである。また、SUはスケジュー
リングユニットである。また、FPAは浮動小数点加算
器、FPMは浮動小数点乗算器、FPDは浮動小数点割
算器、LD/STはロードストアユニットである。
【0055】命令フェッチユニット120は、図2に関
して述べたと同様に、プリフェッチ命令挿入アドレスを
格納するレジスタおよび比較器を備えている。また、各
スレッドを制御するためのシーケンサ121a、121
b及び121cは、それぞれ独立したレジスタを備えて
いる。なお、符号128a、128b及び128cは、
命令キューを示す。
【0056】かかる構成において、キャッシュミスイベ
ントカウンタ(図示せず)がオーバフローした際に、そ
のイベントが割り込みとして通知される場合、その割り
込みは、ある特定のシーケンサ(例えば、121c)に
のみ通知される。かくして、キャッシュミス情報を処理
するためのハンドラは、ある特定のシーケンサにて実行
されることとなる。
【0057】主命令流は、その他のシーケンサを用いて
実行されるので、ハンドラの実行に際して主命令流の実
行は妨げられない。また、この図の場合、シーケンサ毎
にレジスタ等の実行コンテキスト(レジスタ)が保持さ
れているので、ハンドラの起動・終了時に退避・復帰処
理のオーバヘッドを伴うことがない。
【0058】以上、本発明を特にその好ましい実施の形
態を参照して詳細に説明した。本発明の容易な理解のた
め、本発明の具体的な形態を以下に付記する。
【0059】(付記1) 予めメインメモリからキャッ
シュメモリへデータを転送するように指示するプリフェ
ッチ命令を動的に命令列中に挿入して実行する演算処理
装置であって、キャッシュミスを起こす命令のうちプリ
フェッチ処理の対象とすべき命令を選択するプリフェッ
チ対象選択手段と、前記プリフェッチ対象選択手段によ
ってプリフェッチ処理の対象とされた命令の実行時にお
けるメモリアクセスアドレスを予測するアドレス予測手
段と、前記プリフェッチ対象選択手段によってプリフェ
ッチ処理の対象とされた命令に対応するプリフェッチ命
令の命令列中への挿入位置を決定するプリフェッチ命令
挿入位置決定手段と、前記アドレス予測手段によって予
測されたメモリアクセスアドレスをオペランドに有する
プリフェッチ命令を、前記プリフェッチ命令挿入位置決
定手段によって決定された挿入位置に、挿入するプリフ
ェッチ命令挿入手段と、を具備する演算処理装置。
【0060】(付記2) 前記プリフェッチ対象選択手
段は、命令アドレスごとにキャッシュミスが発生する回
数を計測するカウンタを備え、該カウンタの値が一定値
を超えた場合に、キャッシュミス情報を処理するハンド
ラを起動して、該ハンドラによってプリフェッチ処理の
対象とすべき命令を選択する、付記1に記載の演算処理
装置。
【0061】(付記3) 前記プリフェッチ命令挿入位
置決定手段は、過去に実行が完了した命令列について命
令アドレス及び実行完了時刻を保持するテーブルを備
え、該テーブルの情報に基づいてプリフェッチ命令の命
令列中への挿入位置を決定する、付記1又は付記2に記
載の演算処理装置。
【0062】(付記4) 前記プリフェッチ対象選択手
段、前記プリフェッチ命令挿入位置決定手段、前記アド
レス予測手段及び前記プリフェッチ命令挿入手段をキャ
ッシュメモリ内に備える、付記1に記載の演算処理装
置。
【0063】(付記5) 複数の実行命令流が制御可能
であり、前記キャッシュミス情報を処理するハンドラが
独立した命令流として主命令流とは独立に実行される、
付記3に記載の演算処理装置。
【0064】(付記6) 予めメインメモリからキャッ
シュメモリへデータを転送するように指示するプリフェ
ッチ命令を動的に命令列中に挿入して実行する演算処理
方法であって、(a) キャッシュミスを起こす命令のうち
プリフェッチ処理の対象とすべき命令を選択するステッ
プと、(b) ステップ(a)によってプリフェッチ処理の対
象とされた命令の実行時におけるメモリアクセスアドレ
スを予測するステップと、(c) ステップ(a)によってプ
リフェッチ処理の対象とされた命令に対応するプリフェ
ッチ命令の命令列中への挿入位置を決定するステップ
と、(d) ステップ(b)によって予測されたメモリアクセ
スアドレスをオペランドに有するプリフェッチ命令を、
ステップ(c)によって決定された挿入位置に、挿入する
ステップと、を具備する演算処理方法。
【0065】(付記7) ステップ(a)は、命令アドレ
スごとにキャッシュミスが発生する回数を計測し、該回
数が一定値を超えた場合に、キャッシュミス情報を処理
するハンドラを起動して、該ハンドラによってプリフェ
ッチ処理の対象とすべき命令を選択する、付記6に記載
の演算処理方法。
【0066】(付記8) ステップ(c)は、過去に実行
が完了した命令列について命令アドレス及び実行完了時
刻を保持するテーブルを備え、該テーブルの情報に基づ
いてプリフェッチ命令の命令列中への挿入位置を決定す
る、付記6又は付記7に記載の演算処理方法。
【0067】(付記9) 複数の実行命令流を制御可能
であり、前記キャッシュミス情報を処理するハンドラを
独立した命令流として主命令流とは独立に実行させるス
テップを更に具備する、付記8に記載の演算処理方法。
【0068】
【発明の効果】以上説明したように、本発明によれば、
キャッシュメモリを備えた演算処理装置において、実行
時情報に基づいてプリフェッチ命令を命令ストリーム中
に挿入することにより、従来のプリフェッチ方式に伴う
キャッシュ汚染等の問題を最小限に抑制しつつ効率的に
プリフェッチを実行することが可能となる。
【図面の簡単な説明】
【図1】本発明によりプリフェッチ命令の挿入処理を行
う演算処理装置の動作の概要を説明するための図であ
る。
【図2】本発明による演算処理装置の一構成例を示す図
である。
【図3】命令アドレスごとにキャッシュミスが発生した
回数を記憶するテーブルの構成を示す図である。
【図4】実行履歴テーブルの構成を示す図である。
【図5】サンプルプログラムを示す図である。
【図6】サンプルプログラムを実行するときの実行履歴
テーブルの内容を命令ストリームとともに示す図であ
る。
【図7】SMTアーキテクチャを採用するシステムに本
発明を適用した例について、その基本的な構成を示す図
である。
【符号の説明】
10…メインメモリ 12…命令キャッシュ 14…データキャッシュ 20…命令フェッチユニット 22a〜22d…プリフェッチ命令挿入アドレスレジス
タ 24…プログラムカウンタ(PC) 26a〜26d…比較器(コンパレータ) 28…命令キュー 30…デコーダ 32…分岐命令処理ユニット 34…算術命令処理ユニット 36…ロード/ストア命令処理ユニット 40…レジスタファイル 42…イベントカウンタ 50…実行履歴テーブル 60…アドレス予測ユニット 120…命令フェッチユニット 121a,121b,121c…シーケンサ 128a,128b,128c…命令キュー
フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 9/32 310 G06F 9/32 310Z 9/38 310 9/38 310X (72)発明者 佐藤 充 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 Fターム(参考) 5B005 JJ13 MM01 NN22 VV04 5B013 AA01 AA05 AA20 5B033 AA01 AA04 BE00 CA11 DB06

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 予めメインメモリからキャッシュメモリ
    へデータを転送するように指示するプリフェッチ命令を
    動的に命令列中に挿入して実行する演算処理装置であっ
    て、 キャッシュミスを起こす命令のうちプリフェッチ処理の
    対象とすべき命令を選択するプリフェッチ対象選択手段
    と、 前記プリフェッチ対象選択手段によってプリフェッチ処
    理の対象とされた命令の実行時におけるメモリアクセス
    アドレスを予測するアドレス予測手段と、 前記プリフェッチ対象選択手段によってプリフェッチ処
    理の対象とされた命令に対応するプリフェッチ命令の命
    令列中への挿入位置を決定するプリフェッチ命令挿入位
    置決定手段と、 前記アドレス予測手段によって予測されたメモリアクセ
    スアドレスをオペランドに有するプリフェッチ命令を、
    前記プリフェッチ命令挿入位置決定手段によって決定さ
    れた挿入位置に、挿入するプリフェッチ命令挿入手段
    と、 を具備する演算処理装置。
  2. 【請求項2】 前記プリフェッチ対象選択手段は、命令
    アドレスごとにキャッシュミスが発生する回数を計測す
    るカウンタを備え、該カウンタの値が一定値を超えた場
    合に、キャッシュミス情報を処理するハンドラを起動し
    て、該ハンドラによってプリフェッチ処理の対象とすべ
    き命令を選択する、請求項1に記載の演算処理装置。
  3. 【請求項3】 前記プリフェッチ命令挿入位置決定手段
    は、過去に実行が完了した命令列について命令アドレス
    及び実行完了時刻を保持するテーブルを備え、該テーブ
    ルの情報に基づいてプリフェッチ命令の命令列中への挿
    入位置を決定する、請求項1又は請求項2に記載の演算
    処理装置。
  4. 【請求項4】 前記プリフェッチ対象選択手段、前記プ
    リフェッチ命令挿入位置決定手段、前記アドレス予測手
    段及び前記プリフェッチ命令挿入手段をキャッシュメモ
    リ内に備える、請求項1に記載の演算処理装置。
  5. 【請求項5】 複数の実行命令流が制御可能であり、前
    記キャッシュミス情報を処理するハンドラが独立した命
    令流として主命令流とは独立に実行される、請求項3に
    記載の演算処理装置。
JP2002020244A 2002-01-29 2002-01-29 演算処理装置 Expired - Fee Related JP4030314B2 (ja)

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)

* Cited by examiner, † Cited by third party
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

Cited By (15)

* Cited by examiner, † Cited by third party
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