JP2002163150A - プロセッサ - Google Patents
プロセッサInfo
- Publication number
- JP2002163150A JP2002163150A JP2000361282A JP2000361282A JP2002163150A JP 2002163150 A JP2002163150 A JP 2002163150A JP 2000361282 A JP2000361282 A JP 2000361282A JP 2000361282 A JP2000361282 A JP 2000361282A JP 2002163150 A JP2002163150 A JP 2002163150A
- Authority
- JP
- Japan
- Prior art keywords
- configuration
- performance
- processor
- register
- change
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 プロセッサのハードウェアコンフィグレーシ
ョンを、プログラムに応じて動的に変更する。 【解決手段】 データキャッシュメモリのキャッシュヒ
ット回数を、レジスタ390に格納していく。また、デ
ータキャッシュメモリに格納したキャッシュラインに再
度アクセスした回数を、論理回路350で算出する。論
理回路313は、これらキャッシュヒット回数(レジス
タ390)とライン再アクセス回数(論理回路350)
とに基づいて、キャッシュラインのラインサイズを変更
し、レジスタ301に格納する。データキャッシュコン
トロール330は、レジスタ301に格納されているラ
インサイズに基づいて、データキャッシュメモリを制御
する。
ョンを、プログラムに応じて動的に変更する。 【解決手段】 データキャッシュメモリのキャッシュヒ
ット回数を、レジスタ390に格納していく。また、デ
ータキャッシュメモリに格納したキャッシュラインに再
度アクセスした回数を、論理回路350で算出する。論
理回路313は、これらキャッシュヒット回数(レジス
タ390)とライン再アクセス回数(論理回路350)
とに基づいて、キャッシュラインのラインサイズを変更
し、レジスタ301に格納する。データキャッシュコン
トロール330は、レジスタ301に格納されているラ
インサイズに基づいて、データキャッシュメモリを制御
する。
Description
【0001】
【発明の属する技術分野】本発明はプロセッサに関し、
特に、ハードウェアコンフィグレーションを動的に変更
するプロセッサに関する。
特に、ハードウェアコンフィグレーションを動的に変更
するプロセッサに関する。
【0002】
【従来の技術】通常、プロセッサのハードウェア構成を
決定する際には、ハードウェアのパイプライン構造を表
現したシミュレータを作成し、そのシュミレータの上
で、典型的と見倣されるプログラムを実行して、ベンチ
マークテストを行っていた。すなわち、典型的なプログ
ラムを代表的なコンパイラを使って実行し、性能評価を
行った上で、ハードウェア構成を最適化していた。そし
て、分岐予測のアルゴリズムやキャッシュメモリのライ
ンサイズなど、ハードウェア構成、マイクロアーキテク
チャの基本パラメータとなるものは、固定された上でプ
ロセッサのチップとして出荷されていた。
決定する際には、ハードウェアのパイプライン構造を表
現したシミュレータを作成し、そのシュミレータの上
で、典型的と見倣されるプログラムを実行して、ベンチ
マークテストを行っていた。すなわち、典型的なプログ
ラムを代表的なコンパイラを使って実行し、性能評価を
行った上で、ハードウェア構成を最適化していた。そし
て、分岐予測のアルゴリズムやキャッシュメモリのライ
ンサイズなど、ハードウェア構成、マイクロアーキテク
チャの基本パラメータとなるものは、固定された上でプ
ロセッサのチップとして出荷されていた。
【0003】従って、従来技術ではハードウェアの設計
パラメータは設計段階での性能評価結果を反映して固定
されており、ユーザの実使用状態ではプログラムの実行
結果を観測しながらコンフィグレーションを動的に最適
化するということは行わなかった。
パラメータは設計段階での性能評価結果を反映して固定
されており、ユーザの実使用状態ではプログラムの実行
結果を観測しながらコンフィグレーションを動的に最適
化するということは行わなかった。
【0004】従来からプロセッサのパフォーマンスを実
機上で測定する目的のパフォーマンスカウンタが知られ
ている。このパフォーマンスカウンタは、プロセッサの
イベントによってその内容がインクリメントされ、パフ
ォーマンスカウンタの内容がオーバーフローを起こした
ときに例外を発生することで、イベントの発生状況をプ
ログラムに通知する。これによって、プロセッサとして
は、プログラムに応じたパフォーマンスデータの取得が
可能になる。しかしながら、これはあくまでもソフトウ
ェア開発において、このプロセッサに対するフトウェア
の最適化を目的とするものであって、パフォーマンスカ
ウンタの出力に対応した動的なハードウェアコンフィグ
レーションの変更を行うことはできない。
機上で測定する目的のパフォーマンスカウンタが知られ
ている。このパフォーマンスカウンタは、プロセッサの
イベントによってその内容がインクリメントされ、パフ
ォーマンスカウンタの内容がオーバーフローを起こした
ときに例外を発生することで、イベントの発生状況をプ
ログラムに通知する。これによって、プロセッサとして
は、プログラムに応じたパフォーマンスデータの取得が
可能になる。しかしながら、これはあくまでもソフトウ
ェア開発において、このプロセッサに対するフトウェア
の最適化を目的とするものであって、パフォーマンスカ
ウンタの出力に対応した動的なハードウェアコンフィグ
レーションの変更を行うことはできない。
【0005】ハードウェアのコンフィグレーションにつ
いては、従来からコンフィグレーション・レジスタをプ
ロセッサの制御レジスタに設ける手法が知られている。
これはキャッシュのラインサイズなど、プロセッサのコ
ンフィグレーションを記録、設定するために設けられ
る。これは、様々な従来のキャッシュラインサイズ固定
のプロセッサにおいて、固定値が記録されていたり、ま
たは二次キャッシュサイズのようにプロセッサのブート
時に設定し、その後は変更しないという使い方をするも
のが常である。
いては、従来からコンフィグレーション・レジスタをプ
ロセッサの制御レジスタに設ける手法が知られている。
これはキャッシュのラインサイズなど、プロセッサのコ
ンフィグレーションを記録、設定するために設けられ
る。これは、様々な従来のキャッシュラインサイズ固定
のプロセッサにおいて、固定値が記録されていたり、ま
たは二次キャッシュサイズのようにプロセッサのブート
時に設定し、その後は変更しないという使い方をするも
のが常である。
【0006】一方、プログラム実行中にコンフィグレー
ション・レジスタの更新を認めるプロセッサも従来存在
はしていた。しかし、それは、ソフトウェアが、ある処
理ルーチンになると、コンフィグレーションを書き換え
るというものであって、ハードウェアがパフォーマンス
測定の結果に対応してコンフィグレーションを変更する
というものではなかった。従って、このようなプロセッ
サでは、動的なコンフィグレーション変更を、ユーザが
作成したソフトウェアの命令に応じて、行うことができ
た。つまり、コンフィグレーションの変更をプロセッサ
に施すことを許しても、実行するプログラムの内容に応
じた動的なコンフィグレーション変更をプロセッサが行
うというものではなかった。
ション・レジスタの更新を認めるプロセッサも従来存在
はしていた。しかし、それは、ソフトウェアが、ある処
理ルーチンになると、コンフィグレーションを書き換え
るというものであって、ハードウェアがパフォーマンス
測定の結果に対応してコンフィグレーションを変更する
というものではなかった。従って、このようなプロセッ
サでは、動的なコンフィグレーション変更を、ユーザが
作成したソフトウェアの命令に応じて、行うことができ
た。つまり、コンフィグレーションの変更をプロセッサ
に施すことを許しても、実行するプログラムの内容に応
じた動的なコンフィグレーション変更をプロセッサが行
うというものではなかった。
【0007】図13に従来のプロセッサの構成例を示
す。図13に示すプロセッサにおいては、パフォーマン
ス測定のためのレジスタ140、150が設けられてお
り、CP0バスを通じてこれらレジスタ140、150
の内容をプログラムで読み出しのみ可能である。但し、
この図13に示すプロセッサにおいては、パフォーマン
ス測定結果に応じてコンフィグレーションを変更しな
い。
す。図13に示すプロセッサにおいては、パフォーマン
ス測定のためのレジスタ140、150が設けられてお
り、CP0バスを通じてこれらレジスタ140、150
の内容をプログラムで読み出しのみ可能である。但し、
この図13に示すプロセッサにおいては、パフォーマン
ス測定結果に応じてコンフィグレーションを変更しな
い。
【0008】すなわち、図13の例では、データキャッ
シュタグ170の出力とTLB(translation lookasid
e buffer)160の出力とを、アドレス比較器180で
比較する。このアドレス比較器180の比較結果が一致
している場合に、データキャッシュヒットのイベント
が、インクリメンタ140に入力される。一方、load/s
tore命令終了のイベントが、インクリメンタ150に入
力される。これにより、レジスタ110、120の内容
がインクリメントされて、レジスタ110、120にイ
ベントの数が保持される。レジスタ110、120の内
容は、プログラマがプログラムを用いて読み出すことが
可能である。すなわち、データキャッシュのヒットした
回数や、load/store命令の終了した回数を、レジスタ1
10、120の格納する値から、知ることができる。こ
のため、プログラマは、このレジスタ110、120の
内容に基づいて、ハードウェアに対してどのくらい最適
化されているかを判断し、プログラム開発の参考にす
る。
シュタグ170の出力とTLB(translation lookasid
e buffer)160の出力とを、アドレス比較器180で
比較する。このアドレス比較器180の比較結果が一致
している場合に、データキャッシュヒットのイベント
が、インクリメンタ140に入力される。一方、load/s
tore命令終了のイベントが、インクリメンタ150に入
力される。これにより、レジスタ110、120の内容
がインクリメントされて、レジスタ110、120にイ
ベントの数が保持される。レジスタ110、120の内
容は、プログラマがプログラムを用いて読み出すことが
可能である。すなわち、データキャッシュのヒットした
回数や、load/store命令の終了した回数を、レジスタ1
10、120の格納する値から、知ることができる。こ
のため、プログラマは、このレジスタ110、120の
内容に基づいて、ハードウェアに対してどのくらい最適
化されているかを判断し、プログラム開発の参考にす
る。
【0009】図14は、従来の別のプロセッサ構成例を
示す。図14に示すプロセッサにおいては、キャッシュ
メモリのラインサイズが、レジスタ230によって可変
になっている。すなわち、レジスタ230は、レジスタ
間転送命令によってレジスタファイル210に格納され
ている汎用レジスタとの間でデータのやり取りが可能で
あり、レジスタ230の中身はプログラムにより書き替
えることができる。レジスタ230は、データキャッシ
ュコントロール290に接続されており、このデータキ
ャッシュコントロール290は、レジスタ230の内容
に応じてデータキャッシュタグ270に対して行う制御
を変更する。この図14の例では、プログラマーのプロ
グラミングにより、レジスタ230の格納する値を変更
して、ハードウェアのコンフィグレーションを変えるこ
とができるが、その変更はデータキャッシュメモリのパ
フォーマンスを反映していない。すなわち、パフォーマ
ンス測定の結果を、ハードウェアのコンフィグレーショ
ンに反映するものではない。
示す。図14に示すプロセッサにおいては、キャッシュ
メモリのラインサイズが、レジスタ230によって可変
になっている。すなわち、レジスタ230は、レジスタ
間転送命令によってレジスタファイル210に格納され
ている汎用レジスタとの間でデータのやり取りが可能で
あり、レジスタ230の中身はプログラムにより書き替
えることができる。レジスタ230は、データキャッシ
ュコントロール290に接続されており、このデータキ
ャッシュコントロール290は、レジスタ230の内容
に応じてデータキャッシュタグ270に対して行う制御
を変更する。この図14の例では、プログラマーのプロ
グラミングにより、レジスタ230の格納する値を変更
して、ハードウェアのコンフィグレーションを変えるこ
とができるが、その変更はデータキャッシュメモリのパ
フォーマンスを反映していない。すなわち、パフォーマ
ンス測定の結果を、ハードウェアのコンフィグレーショ
ンに反映するものではない。
【0010】
【発明が解決しようとする課題】上述したところからわ
かるように、従来のプロセッサにおいては、ユーザが実
際にあるプログラムを実行させた場合、ハードウェアは
個々のプログラムに対して最適化の余地が残ってしまっ
ている。これは、あくまでもハードウェア設計時に性能
評価に用いたプログラムに対する最適値が、ハードウェ
アコンフィグレーションの設計値として用いられてお
り、このため、この設計値がすべてのプログラムに対し
て平均的な処理速度を実現するための平均的な構成にな
るためである。特に、性能評価に使わなかったプログラ
ムで、使用したプログラムとは振る舞いが大きく違うプ
ログラムに対しては、かえって性能を落とすような構成
になってしまっていることもあり得る。特に、これは既
存のバイナリ・プログラムについて言える。それは、既
存のバイナリ・プログラムは、古い世代のハードウェア
構成を有するプロセッサについて、最適化されたソフト
ウェアであるからである。
かるように、従来のプロセッサにおいては、ユーザが実
際にあるプログラムを実行させた場合、ハードウェアは
個々のプログラムに対して最適化の余地が残ってしまっ
ている。これは、あくまでもハードウェア設計時に性能
評価に用いたプログラムに対する最適値が、ハードウェ
アコンフィグレーションの設計値として用いられてお
り、このため、この設計値がすべてのプログラムに対し
て平均的な処理速度を実現するための平均的な構成にな
るためである。特に、性能評価に使わなかったプログラ
ムで、使用したプログラムとは振る舞いが大きく違うプ
ログラムに対しては、かえって性能を落とすような構成
になってしまっていることもあり得る。特に、これは既
存のバイナリ・プログラムについて言える。それは、既
存のバイナリ・プログラムは、古い世代のハードウェア
構成を有するプロセッサについて、最適化されたソフト
ウェアであるからである。
【0011】このように、従来の技術の問題点は、プロ
セッサのハードウェアが、個々の実行プログラムに対し
て最適なコンフィグレーションをとれないことにある。
セッサのハードウェアが、個々の実行プログラムに対し
て最適なコンフィグレーションをとれないことにある。
【0012】そこで本発明は、前記課題に鑑みてなされ
たものであり、個々の実行プログラムに対してハードウ
ェアコンフィグレーションを動的に変更することのでき
る、プロセッサを提供することを目的とする。
たものであり、個々の実行プログラムに対してハードウ
ェアコンフィグレーションを動的に変更することのでき
る、プロセッサを提供することを目的とする。
【0013】
【課題を解決するための手段】上記課題を解決するた
め、本発明に係るプログラムは、各種の処理を行うモジ
ュールと、前記モジュールが各種の処理を行う際のパフ
ォーマンスを測定する、パフォーマンス測定手段と、前
記パフォーマンス測定手段により測定された測定結果に
基づいて、前記モジュール及び/又は当該プロセッサの
コンフィグレーションを変更するか否かを判断し、その
判断結果に応じてそのコンフィグレーションを変更す
る、コンフィグレーション変更手段と、を備えることを
特徴とする。
め、本発明に係るプログラムは、各種の処理を行うモジ
ュールと、前記モジュールが各種の処理を行う際のパフ
ォーマンスを測定する、パフォーマンス測定手段と、前
記パフォーマンス測定手段により測定された測定結果に
基づいて、前記モジュール及び/又は当該プロセッサの
コンフィグレーションを変更するか否かを判断し、その
判断結果に応じてそのコンフィグレーションを変更す
る、コンフィグレーション変更手段と、を備えることを
特徴とする。
【0014】また、本発明に係るプロセッサは、当該プ
ロセッサが行う各種の処理のパフォーマンスを測定す
る、パフォーマンス測定手段と、前記パフォーマンス測
定手段により測定された測定結果に基づいて、各種の処
理を行うモジュール及び/又は当該プロセッサのコンフ
ィグレーションを変更するか否かを判断し、その判断結
果に応じてそのコンフィグレーションを変更する、コン
フィグレーション変更手段と、を備えることを特徴とす
る。
ロセッサが行う各種の処理のパフォーマンスを測定す
る、パフォーマンス測定手段と、前記パフォーマンス測
定手段により測定された測定結果に基づいて、各種の処
理を行うモジュール及び/又は当該プロセッサのコンフ
ィグレーションを変更するか否かを判断し、その判断結
果に応じてそのコンフィグレーションを変更する、コン
フィグレーション変更手段と、を備えることを特徴とす
る。
【0015】
【発明の実施の形態】本発明に係るプロセッサは、ソフ
トウェアを実行するハードウェアにパフォーマンス測定
機能を設け、測定されたパフォーマンスに応じてハード
ウェアコンフィグレーションを変更することにより、ユ
ーザが実際に実行する個別のプログラムに対して、適切
なハードウェアコンフィグレーションを提供しようとす
るものである。そして、これにより、実質的なプロセッ
サの性能向上を図ろうとするものである。以下に具体的
な実施の形態をいくつか示す。
トウェアを実行するハードウェアにパフォーマンス測定
機能を設け、測定されたパフォーマンスに応じてハード
ウェアコンフィグレーションを変更することにより、ユ
ーザが実際に実行する個別のプログラムに対して、適切
なハードウェアコンフィグレーションを提供しようとす
るものである。そして、これにより、実質的なプロセッ
サの性能向上を図ろうとするものである。以下に具体的
な実施の形態をいくつか示す。
【0016】〔第1実施形態〕本発明の第1実施形態に
係るプロセッサは、実際にユーザがプログラムを実行し
た際のパフォーマンスの測定結果に応じて、ハードウェ
アコンフィグレーションとして、データキャッシュメモ
リのラインサイズを動的に変更するようにしたものであ
る。より詳しくを、以下に説明する。
係るプロセッサは、実際にユーザがプログラムを実行し
た際のパフォーマンスの測定結果に応じて、ハードウェ
アコンフィグレーションとして、データキャッシュメモ
リのラインサイズを動的に変更するようにしたものであ
る。より詳しくを、以下に説明する。
【0017】図1は、本発明の第1実施形態に係るプロ
セッサのハードウェア構成における主要部の一例を示す
ブロック図である。
セッサのハードウェア構成における主要部の一例を示す
ブロック図である。
【0018】この図1に示すように、本実施形態に係る
プロセッサは、レジスタ301、310、311、31
2、316、370、390と、レジスタファイル32
0と、データキャッシュコントロール330と、論理回
路313、350と、データキャッシュタグ340と、
TLB314と、アドレス比較器315と、カウンタ3
60、380とを、備えている。
プロセッサは、レジスタ301、310、311、31
2、316、370、390と、レジスタファイル32
0と、データキャッシュコントロール330と、論理回
路313、350と、データキャッシュタグ340と、
TLB314と、アドレス比較器315と、カウンタ3
60、380とを、備えている。
【0019】レジスタ301は、データキャッシュメモ
リのラインサイズを格納するレジスタである。レジスタ
310は、レジスタ間データ転送命令によって、レジス
タファイル320に格納されている汎用レジスタとの間
でデータ転送可能である。従って、レジスタ301の内
容は、プログラムによって任意に読み書き可能に構成さ
れている。また、レジスタ301は、データキャッシュ
コントロール330に接続されている。このデータキャ
ッシュコントロール330は、データキャッシュメモリ
を制御する回路である。本実施形態においては、特に、
データキャッシュミスに伴うデータキャッシュフィルの
際に、レジスタ301の内容に基づいて、リフィルサイ
ズを決定する。すなわち、データキャッシュミスが発生
して、データキャッシュメモリに格納されているデータ
を置き換える際に、そのラインサイズを、レジスタ30
1が保持する値に基づいて決定する。
リのラインサイズを格納するレジスタである。レジスタ
310は、レジスタ間データ転送命令によって、レジス
タファイル320に格納されている汎用レジスタとの間
でデータ転送可能である。従って、レジスタ301の内
容は、プログラムによって任意に読み書き可能に構成さ
れている。また、レジスタ301は、データキャッシュ
コントロール330に接続されている。このデータキャ
ッシュコントロール330は、データキャッシュメモリ
を制御する回路である。本実施形態においては、特に、
データキャッシュミスに伴うデータキャッシュフィルの
際に、レジスタ301の内容に基づいて、リフィルサイ
ズを決定する。すなわち、データキャッシュミスが発生
して、データキャッシュメモリに格納されているデータ
を置き換える際に、そのラインサイズを、レジスタ30
1が保持する値に基づいて決定する。
【0020】データキャッシュタグ340は、データキ
ャッシュメモリのエントリごとに、validビット3
41、dirtyビット342、物理アドレス・ページ
フレーム・ナンバー544などの属性ビットを備えてい
る。Validビット341は、そのエントリが有効で
あるか、無効であるかを示すビットである。dirty
ビット342は、データキャッシュメモリに格納されて
いるそのエントリに対して書き込みを行った結果、メイ
ンメモリに格納された値よりも新しい値を持っているか
否かを示すビットである。
ャッシュメモリのエントリごとに、validビット3
41、dirtyビット342、物理アドレス・ページ
フレーム・ナンバー544などの属性ビットを備えてい
る。Validビット341は、そのエントリが有効で
あるか、無効であるかを示すビットである。dirty
ビット342は、データキャッシュメモリに格納されて
いるそのエントリに対して書き込みを行った結果、メイ
ンメモリに格納された値よりも新しい値を持っているか
否かを示すビットである。
【0021】このデータキャッシュタグ340のエント
リの数は、データキャッシュメモリのラインサイズを、
このプロセッサが許容する最も小さいサイズにした場合
における、データキャッシュメモリのエントリ数と同じ
である。したがって、データキャッシュメモリのライン
サイズが、このプロセッサが許容する最も小さいライン
サイズより大きい場合には、データキャッシュタグ34
0には、使用していないエントリが存在することにな
る。
リの数は、データキャッシュメモリのラインサイズを、
このプロセッサが許容する最も小さいサイズにした場合
における、データキャッシュメモリのエントリ数と同じ
である。したがって、データキャッシュメモリのライン
サイズが、このプロセッサが許容する最も小さいライン
サイズより大きい場合には、データキャッシュタグ34
0には、使用していないエントリが存在することにな
る。
【0022】物理アドレス・ページフレーム・ナンバー
344は、データキャッシュメモリに格納されているペ
ージのページアドレスを保持している。したがって、こ
の物理アドレス・ページフレーム・ナンバー344を参
照することにより、データキャッシュメモリに格納され
ているページの物理アドレスがわかるようになってい
る。
344は、データキャッシュメモリに格納されているペ
ージのページアドレスを保持している。したがって、こ
の物理アドレス・ページフレーム・ナンバー344を参
照することにより、データキャッシュメモリに格納され
ているページの物理アドレスがわかるようになってい
る。
【0023】また、データキャッシュタグ340は、各
エントリ毎に、1ビット以上のヒストリーフィールド3
43を持つ。このヒストリーフィールド343は、デー
タキャッシュラインのリフィル時に、そのキャッシュラ
インに該当するエントリのものがクリアされ、そのキャ
ッシュラインがアクセスされるとセットされる。なお、
ヒストリーフィールド343が複数のビットで構成され
ている場合には、該当するキャッシュラインのエントリ
のヒストリーフィールド343は、インクリメントされ
ることになる。このヒストリーフィールド343は、デ
ータキャッシュラインが置き換えられる時に読み出さ
れ、論理回路350に送られる。
エントリ毎に、1ビット以上のヒストリーフィールド3
43を持つ。このヒストリーフィールド343は、デー
タキャッシュラインのリフィル時に、そのキャッシュラ
インに該当するエントリのものがクリアされ、そのキャ
ッシュラインがアクセスされるとセットされる。なお、
ヒストリーフィールド343が複数のビットで構成され
ている場合には、該当するキャッシュラインのエントリ
のヒストリーフィールド343は、インクリメントされ
ることになる。このヒストリーフィールド343は、デ
ータキャッシュラインが置き換えられる時に読み出さ
れ、論理回路350に送られる。
【0024】論理論理350は、データキャッシュタグ
340から送信されるヒストリーフィールド343の情
報に基づいて、エントリに拘わらず同一キャッシュライ
ンに再度アクセスした回数の総和を算出して保持してお
く。すなわち、論理回路350は、同一のキャッシュラ
インに再度アクセスした回数を、ライン再アクセス回数
として保持しておく。
340から送信されるヒストリーフィールド343の情
報に基づいて、エントリに拘わらず同一キャッシュライ
ンに再度アクセスした回数の総和を算出して保持してお
く。すなわち、論理回路350は、同一のキャッシュラ
インに再度アクセスした回数を、ライン再アクセス回数
として保持しておく。
【0025】TLB(Translation Lookaside Buffer)
314は、仮想アドレスを物理アドレスに変換するため
のバッファである。TLB314で求められた物理アド
レスは、アドレス比較器315に入力される。
314は、仮想アドレスを物理アドレスに変換するため
のバッファである。TLB314で求められた物理アド
レスは、アドレス比較器315に入力される。
【0026】アドレス比較器315には、データキャッ
シュタグ340の出力も入力され、物理アドレスとデー
タキャッシュタグ340に格納されているアドレスとが
一致するかどうかを判断する。そして、両者が一致する
場合には、アドレス比較器315は、データキャッシュ
ヒット信号を出力する。
シュタグ340の出力も入力され、物理アドレスとデー
タキャッシュタグ340に格納されているアドレスとが
一致するかどうかを判断する。そして、両者が一致する
場合には、アドレス比較器315は、データキャッシュ
ヒット信号を出力する。
【0027】カウンタ360は、データキャッシュメモ
リへのアクセス数をカウントする。すなわち、カウンタ
360には、Load/Store命令終了の信号と、レジスタ3
70の出力信号とが、入力されている。Load/Store命令
終了の信号は、このプロセッサ内でLoad命令又はStore
命令が終了した場合に入力される信号である。このLoad
/Store命令終了の信号がカウンタ360に入力される
と、カウンタ360はレジスタ370の内容に1を加え
た上で、再びレジスタ370に格納する。つまり、カウ
ンタ360は、データキャッシュメモリへのLoad/Store
命令が終了するとレジスタ370の値をインクリメント
する。レジスタ370は、このカウントの結果をデータ
キャッシュメモリへのアクセス回数として保持する。
リへのアクセス数をカウントする。すなわち、カウンタ
360には、Load/Store命令終了の信号と、レジスタ3
70の出力信号とが、入力されている。Load/Store命令
終了の信号は、このプロセッサ内でLoad命令又はStore
命令が終了した場合に入力される信号である。このLoad
/Store命令終了の信号がカウンタ360に入力される
と、カウンタ360はレジスタ370の内容に1を加え
た上で、再びレジスタ370に格納する。つまり、カウ
ンタ360は、データキャッシュメモリへのLoad/Store
命令が終了するとレジスタ370の値をインクリメント
する。レジスタ370は、このカウントの結果をデータ
キャッシュメモリへのアクセス回数として保持する。
【0028】カウンタ380は、キャッシュメモリのヒ
ット数をカウントする。すなわち、カウンタ380に
は、AND回路385の出力信号が入力される。AND
回路385は、アドレス比較器315の出力するデータ
キャッシュヒット信号と、Load/Store命令終了の信号と
のAND演算をした結果を出力する。また、カウンタ3
80には、レジスタ390の出力信号も入力されてい
る。したがって、このカウンタ380は、データキャッ
シュメモリがヒットした場合に、その命令が終了した時
点で、レジスタ390の内容に1を加え、再びレジスタ
390に格納する。レジスタ390は、このカウントの
結果をキャッシュヒット回数として保持する。
ット数をカウントする。すなわち、カウンタ380に
は、AND回路385の出力信号が入力される。AND
回路385は、アドレス比較器315の出力するデータ
キャッシュヒット信号と、Load/Store命令終了の信号と
のAND演算をした結果を出力する。また、カウンタ3
80には、レジスタ390の出力信号も入力されてい
る。したがって、このカウンタ380は、データキャッ
シュメモリがヒットした場合に、その命令が終了した時
点で、レジスタ390の内容に1を加え、再びレジスタ
390に格納する。レジスタ390は、このカウントの
結果をキャッシュヒット回数として保持する。
【0029】レジスタ310は、データキャッシュメモ
リへのアクセス数の閾値を格納している。すなわち、レ
ジスタ370の値が、レジスタ310の値に達した場
合、論理回路350に格納されているライン再アクセス
回数と、レジスタ390に格納されているキャッシュヒ
ット回数とが、比較評価される。レジスタ310の内容
は、ユーザがプログラムで任意に読み書き可能である。
リへのアクセス数の閾値を格納している。すなわち、レ
ジスタ370の値が、レジスタ310の値に達した場
合、論理回路350に格納されているライン再アクセス
回数と、レジスタ390に格納されているキャッシュヒ
ット回数とが、比較評価される。レジスタ310の内容
は、ユーザがプログラムで任意に読み書き可能である。
【0030】レジスタ311は、キャッシュメモリのヒ
ット回数の閾値を格納している。レジスタ312は、ラ
イン再アクセス回数の閾値を格納している。これらレジ
スタ311、312の役割は、次に述べる。なお、これ
らレジスタ311、312の内容は、ユーザがプログラ
ムを用いて任意に読み書き可能である。
ット回数の閾値を格納している。レジスタ312は、ラ
イン再アクセス回数の閾値を格納している。これらレジ
スタ311、312の役割は、次に述べる。なお、これ
らレジスタ311、312の内容は、ユーザがプログラ
ムを用いて任意に読み書き可能である。
【0031】論理回路313は、キャッシュメモリのラ
インサイズを決定する。すなわち、論理回路313は、
論理回路350と、レジスタ370、390、310、
311、312に接続されている。この論理回路313
では、レジスタ370に格納されているアクセス回数
が、レジスタ310の閾値に達したら論理回路350、
レジスタ390の値を、比較評価する。つまり、レジス
タ370が格納しているキャッシュメモリへのアクセス
回数が、レジスタ310が格納している閾値に達した場
合に、論理回路313は動作する。
インサイズを決定する。すなわち、論理回路313は、
論理回路350と、レジスタ370、390、310、
311、312に接続されている。この論理回路313
では、レジスタ370に格納されているアクセス回数
が、レジスタ310の閾値に達したら論理回路350、
レジスタ390の値を、比較評価する。つまり、レジス
タ370が格納しているキャッシュメモリへのアクセス
回数が、レジスタ310が格納している閾値に達した場
合に、論理回路313は動作する。
【0032】具体的には、キャッシュヒット回数(レジ
スタ390)が閾値(レジスタ311)よりも小さく、
ライン再アクセス回数(論理回路350)が閾値(レジ
スタ312)よりも大きい場合には、同一ラインへのア
クセス回数が多いのにも拘わらずキャッシュヒット率が
小さいのはラインサイズが小さ過ぎると判断できる。こ
のため、論理回路313は、ラインサイズを大きくする
ようにレジスタ301の内容を更新する。
スタ390)が閾値(レジスタ311)よりも小さく、
ライン再アクセス回数(論理回路350)が閾値(レジ
スタ312)よりも大きい場合には、同一ラインへのア
クセス回数が多いのにも拘わらずキャッシュヒット率が
小さいのはラインサイズが小さ過ぎると判断できる。こ
のため、論理回路313は、ラインサイズを大きくする
ようにレジスタ301の内容を更新する。
【0033】一方、キャッシュヒット回数(レジスタ3
90)が閾値(レジスタ311)よりも大きく、ライン
再アクセス回数(論理回路350)が閾値(レジスタ3
12)よりも小さい場合、使用しないデータまでリフィ
ルしていると判断できる。このため、論理回路313
は、ラインサイズを小さくするようにレジスタ301の
内容を更新する。
90)が閾値(レジスタ311)よりも大きく、ライン
再アクセス回数(論理回路350)が閾値(レジスタ3
12)よりも小さい場合、使用しないデータまでリフィ
ルしていると判断できる。このため、論理回路313
は、ラインサイズを小さくするようにレジスタ301の
内容を更新する。
【0034】また、本実施形態に係るプロセッサにおい
ては、レジスタ316を備えている。レジスタ316
は、このような自動的にコンフィグレーション(この例
ではキャッシュメモリのラインサイズ)を最適化する機
能のオン/オフを設定するためのレジスタである。例え
ばユーザが、レジスタ316を1に設定することによ
り、上述した動的なキャッシュメモリのラインサイズの
変更をオンにすることができ、レジスタ316を0に設
定することにより、動的なキャッシュメモリのラインサ
イズの変更をオフにすることができる。つまり、レジス
タ316の内容は、ユーザがプログラムを用いて、任意
に読み書き可能である。但し、図2に示すように、レジ
スタ316の代わりに、外部ピンに391を設け、この
外部ピンをユーザが操作することにより、この自動コン
フィグレーション機能をオン/オフするようにしてもよ
い。
ては、レジスタ316を備えている。レジスタ316
は、このような自動的にコンフィグレーション(この例
ではキャッシュメモリのラインサイズ)を最適化する機
能のオン/オフを設定するためのレジスタである。例え
ばユーザが、レジスタ316を1に設定することによ
り、上述した動的なキャッシュメモリのラインサイズの
変更をオンにすることができ、レジスタ316を0に設
定することにより、動的なキャッシュメモリのラインサ
イズの変更をオフにすることができる。つまり、レジス
タ316の内容は、ユーザがプログラムを用いて、任意
に読み書き可能である。但し、図2に示すように、レジ
スタ316の代わりに、外部ピンに391を設け、この
外部ピンをユーザが操作することにより、この自動コン
フィグレーション機能をオン/オフするようにしてもよ
い。
【0035】以上のように、本実施形態に係るプロセッ
サによれば、データキャッシュメモリのラインサイズと
いうコンフィグレーションを、パフォーマンス測定結果
に応じて動的に変更することとした。このため、実際に
ユーザが実行するプログラムに適したラインサイズの設
定が可能になる。
サによれば、データキャッシュメモリのラインサイズと
いうコンフィグレーションを、パフォーマンス測定結果
に応じて動的に変更することとした。このため、実際に
ユーザが実行するプログラムに適したラインサイズの設
定が可能になる。
【0036】このようなパフォーマンス測定とコンフィ
グレーションの変更は、上述したところから明らかなよ
うに、プロセッサーのブート後、複数回可能である。そ
れゆえ、ソフトウェアの局所的な傾向に合うようにプロ
セッサが、随時、キャッシュメモリのラインサイズを変
更していくことが可能である。
グレーションの変更は、上述したところから明らかなよ
うに、プロセッサーのブート後、複数回可能である。そ
れゆえ、ソフトウェアの局所的な傾向に合うようにプロ
セッサが、随時、キャッシュメモリのラインサイズを変
更していくことが可能である。
【0037】具体的には、キャッシュヒット回数をレジ
スタ390に格納し、ライン再アクセス回数を論理回路
350で算出し、その時点のラインサイズにおけるパフ
ォーマンスを測定する。そして、この測定結果であるレ
ジスタ390及び論理回路350の内容に基づいて、所
定のパフォーマンスが発揮されているかどうかを論理回
路313で判断し、所定のパフォーマンスが発揮されて
いない場合には、ラインサイズを動的に変更することと
した。このため、ユーザが実際に実行しているプログラ
ムに可能な限り適応したラインサイズに、動的に変更し
ていくことができる。
スタ390に格納し、ライン再アクセス回数を論理回路
350で算出し、その時点のラインサイズにおけるパフ
ォーマンスを測定する。そして、この測定結果であるレ
ジスタ390及び論理回路350の内容に基づいて、所
定のパフォーマンスが発揮されているかどうかを論理回
路313で判断し、所定のパフォーマンスが発揮されて
いない場合には、ラインサイズを動的に変更することと
した。このため、ユーザが実際に実行しているプログラ
ムに可能な限り適応したラインサイズに、動的に変更し
ていくことができる。
【0038】また、本実施形態においては、図3に示す
ように、カウンタ317、319と、レジスタ318、
320、322と、論理回路321を追加して、CPI
(Cycle Per Instruction)をプロセッサのパフォーマ
ンスの指標を使って、コンフィグレーション(この例で
はキャッシュメモリのラインサイズ)を変化させるよう
にしてもよい。すなわち、カウンタ317は、クロック
数をカウントし、レジスタ318に格納する。カウンタ
319は、実行を完了した命令数をカウントし、レジス
タ320に格納する。レジスタ322には、CPIの閾
値が格納されている。このレジスタ322に格納されて
いる内容は、ユーザがプログラムを用いて任意に読み書
き可能である。論理回路321は、レジスタ318の値
が所定の値に達した際に、レジスタ318、320の格
納する値を用いて、CPIを算出する。そして、その算
出結果と、閾値(レジスタ322)とを比較して、算出
結果が閾値よりも悪い場合には、レジスタ301の内容
を変更することにより、ラインサイズを変更する。
ように、カウンタ317、319と、レジスタ318、
320、322と、論理回路321を追加して、CPI
(Cycle Per Instruction)をプロセッサのパフォーマ
ンスの指標を使って、コンフィグレーション(この例で
はキャッシュメモリのラインサイズ)を変化させるよう
にしてもよい。すなわち、カウンタ317は、クロック
数をカウントし、レジスタ318に格納する。カウンタ
319は、実行を完了した命令数をカウントし、レジス
タ320に格納する。レジスタ322には、CPIの閾
値が格納されている。このレジスタ322に格納されて
いる内容は、ユーザがプログラムを用いて任意に読み書
き可能である。論理回路321は、レジスタ318の値
が所定の値に達した際に、レジスタ318、320の格
納する値を用いて、CPIを算出する。そして、その算
出結果と、閾値(レジスタ322)とを比較して、算出
結果が閾値よりも悪い場合には、レジスタ301の内容
を変更することにより、ラインサイズを変更する。
【0039】〔第2実施形態〕本発明の第2実施形態
は、パフォーマンス測定結果に基づいて動的に変更され
るコンフィグレーションが、分岐予測結果に対するキャ
ッシュメモリへのプリフェッチアルゴリズムの場合であ
る。
は、パフォーマンス測定結果に基づいて動的に変更され
るコンフィグレーションが、分岐予測結果に対するキャ
ッシュメモリへのプリフェッチアルゴリズムの場合であ
る。
【0040】分岐予測機構によって予測された命令フェ
ッチアドレスが命令キャッシュミスを起こしたとき、分
岐命令の結果の確定を待ってから命令キャッシュメモリ
のリフィルをするか、待たずにリフィルをするかという
のは、プロセッサの性能に比較的大きな影響を与える設
計パラメータである。分岐命令の結果確定を待たない投
機的なリフィルにより、リフィルのレイテンシを隠蔽で
きれば性能向上への寄与は大きい。一方で、予測ミスが
あった場合の性能へのペナルティは非常に大きい。これ
は、キャッシュメモリのリフィルは長いレイテンシを要
するからであり、また、特に投機的なリフィルは、必要
なキャッシュラインをキャッシュメモリから追い出して
しまうことになることが、あるためである。このように
効果とペナルティ双方が大きい機構はプログラムの挙動
を知った上で、導入するのか、又は、導入しないのか
を、決めることが望まれる。
ッチアドレスが命令キャッシュミスを起こしたとき、分
岐命令の結果の確定を待ってから命令キャッシュメモリ
のリフィルをするか、待たずにリフィルをするかという
のは、プロセッサの性能に比較的大きな影響を与える設
計パラメータである。分岐命令の結果確定を待たない投
機的なリフィルにより、リフィルのレイテンシを隠蔽で
きれば性能向上への寄与は大きい。一方で、予測ミスが
あった場合の性能へのペナルティは非常に大きい。これ
は、キャッシュメモリのリフィルは長いレイテンシを要
するからであり、また、特に投機的なリフィルは、必要
なキャッシュラインをキャッシュメモリから追い出して
しまうことになることが、あるためである。このように
効果とペナルティ双方が大きい機構はプログラムの挙動
を知った上で、導入するのか、又は、導入しないのか
を、決めることが望まれる。
【0041】図4は、本実施形態に係るプロセッサのハ
ードウェア構成における主要部のブロック図である。こ
の図4に示すように、本実施形態に係るプロセッサは、
レジスタ401、410、411、460、480と、
カウンタ470、490と、論理回路412と、レジス
タファイル420と、分岐予測部450と、命令フェッ
チコントロール430と、命令キャッシュメモリ440
とを、備えている。
ードウェア構成における主要部のブロック図である。こ
の図4に示すように、本実施形態に係るプロセッサは、
レジスタ401、410、411、460、480と、
カウンタ470、490と、論理回路412と、レジス
タファイル420と、分岐予測部450と、命令フェッ
チコントロール430と、命令キャッシュメモリ440
とを、備えている。
【0042】レジスタ401には、分岐予測先の命令が
命令キャッシュミスをした時に、分岐命令の確定を待た
ずに命令キャッシュリフィルをするかしないかを示す設
定情報が、格納されている。このレジスタ401は、レ
ジスタファイル420と接続されており、レジスタ間転
送命令で読み書き可能に構成されている。同時にレジス
タ401は、命令フェッチコントロール430と接続さ
れている。命令フェッチコントロール430は、命令キ
ャッシュメモリ440の制御や、命令キャッシュメモリ
440がミスした時の外部バスとのやりとりや、分岐予
測部450の制御を司る。命令フェッチコントロール4
30は、分岐予測部450によって予測された分岐先が
命令キャッシュメモリ440に無かった場合に、その分
岐命令の確定を待たずして命令キャッシュメモリ440
にリフィルするかどうかを、レジスタ401の設定内容
によって決定する。
命令キャッシュミスをした時に、分岐命令の確定を待た
ずに命令キャッシュリフィルをするかしないかを示す設
定情報が、格納されている。このレジスタ401は、レ
ジスタファイル420と接続されており、レジスタ間転
送命令で読み書き可能に構成されている。同時にレジス
タ401は、命令フェッチコントロール430と接続さ
れている。命令フェッチコントロール430は、命令キ
ャッシュメモリ440の制御や、命令キャッシュメモリ
440がミスした時の外部バスとのやりとりや、分岐予
測部450の制御を司る。命令フェッチコントロール4
30は、分岐予測部450によって予測された分岐先が
命令キャッシュメモリ440に無かった場合に、その分
岐命令の確定を待たずして命令キャッシュメモリ440
にリフィルするかどうかを、レジスタ401の設定内容
によって決定する。
【0043】分岐予測部450は、フェッチした分岐命
令の分岐が成立するかどうかを予測し、分岐成立予測信
号を出力する。本実施形態においては、分岐予測部45
0がフェッチした分岐命令の分岐が成立すると予測した
場合、分岐成立予測信号を1にし、分岐が成立しないと
予測した場合、分岐成立予測信号を0にする。この分岐
成立予測信号は、EXNOR回路451に入力される。
このEXNOR回路451には、分岐成立信号も入力さ
れる。この分岐成立信号は、その分岐命令を実行した結
果、実際に分岐が成立した場合に1となり、分岐が成立
しなかった場合に0となる信号である。したがって、こ
のEXNOR回路451の出力は、分岐予測部450の
予測が当たった場合は1となり、はずれた場合は0とな
る。このEXNOR回路451の出力は、AND回路4
52に入力される。AND回路452には、分岐命令終
了信号も入力されている。このため、AND回路452
の出力は、分岐予測部450の予測が当たり、その分岐
命令の実行が終了した際に1となり、カウンタ490に
入力される。
令の分岐が成立するかどうかを予測し、分岐成立予測信
号を出力する。本実施形態においては、分岐予測部45
0がフェッチした分岐命令の分岐が成立すると予測した
場合、分岐成立予測信号を1にし、分岐が成立しないと
予測した場合、分岐成立予測信号を0にする。この分岐
成立予測信号は、EXNOR回路451に入力される。
このEXNOR回路451には、分岐成立信号も入力さ
れる。この分岐成立信号は、その分岐命令を実行した結
果、実際に分岐が成立した場合に1となり、分岐が成立
しなかった場合に0となる信号である。したがって、こ
のEXNOR回路451の出力は、分岐予測部450の
予測が当たった場合は1となり、はずれた場合は0とな
る。このEXNOR回路451の出力は、AND回路4
52に入力される。AND回路452には、分岐命令終
了信号も入力されている。このため、AND回路452
の出力は、分岐予測部450の予測が当たり、その分岐
命令の実行が終了した際に1となり、カウンタ490に
入力される。
【0044】レジスタ460は、分岐命令の完了数を格
納している。カウンタ470は、分岐命令の完了のたび
に、レジスタ460の中身をインクリメントする。ま
た、レジスタ480は、分岐予測部450による分岐予
測が当たった回数を格納している。カウンタ490は、
分岐予測が当たるたびに、レジスタ480の中身をイン
クリメントする。レジスタ460、480は、レジスタ
間転送命令でレジスタファイル420との間でデータ転
送できる。すなわち、レジスタ460、480は、ユー
ザがプログラムによって読み書き可能である。
納している。カウンタ470は、分岐命令の完了のたび
に、レジスタ460の中身をインクリメントする。ま
た、レジスタ480は、分岐予測部450による分岐予
測が当たった回数を格納している。カウンタ490は、
分岐予測が当たるたびに、レジスタ480の中身をイン
クリメントする。レジスタ460、480は、レジスタ
間転送命令でレジスタファイル420との間でデータ転
送できる。すなわち、レジスタ460、480は、ユー
ザがプログラムによって読み書き可能である。
【0045】レジスタ410は、分岐命令の完了数の閾
値を格納している。レジスタ411は、分岐予測が当た
った回数の閾値を格納している。これらレジスタ41
0、411も、ユーザがプログラムによって読み書き可
能である。
値を格納している。レジスタ411は、分岐予測が当た
った回数の閾値を格納している。これらレジスタ41
0、411も、ユーザがプログラムによって読み書き可
能である。
【0046】レジスタ460、480、410、411
は、命令キャッシュメモリ440のプリフェッチアルゴ
リズムを決定する論理回路412に接続されている。論
理回路412では、レジスタ460の格納する分岐命令
の完了数が、閾値レジスタ410の格納する閾値に達し
た場合、レジスタ480の格納する分岐予測当たり回数
を評価する。
は、命令キャッシュメモリ440のプリフェッチアルゴ
リズムを決定する論理回路412に接続されている。論
理回路412では、レジスタ460の格納する分岐命令
の完了数が、閾値レジスタ410の格納する閾値に達し
た場合、レジスタ480の格納する分岐予測当たり回数
を評価する。
【0047】すなわち、レジスタ480の格納する分岐
予測当たり回数が、レジスタ411の格納する閾値に達
していた場合、分岐予測は、命令キャッシュミスによる
投機的なリフィルの持つ性能ペナルティを補って余りあ
るほど精度が高いと判断される。そこで、論理回路41
2は、レジスタ401をセットして、分岐予測によって
予測された分岐ターゲットが命令キャッシュミスを起こ
していた場合に、分岐命令の結果が確定する前に命令キ
ャッシュミスをリフィルするようにする。逆に、レジス
タ480の格納する分岐予測当たり回数を評価したとき
に、レジスタ480の格納する値が、レジスタ411の
格納する閾値に達していなかった場合、論理回路412
は、分岐予測の精度は不十分と判定して、レジスタ40
1を投機的な命令キャッシュリフィルを行わないように
セットする。
予測当たり回数が、レジスタ411の格納する閾値に達
していた場合、分岐予測は、命令キャッシュミスによる
投機的なリフィルの持つ性能ペナルティを補って余りあ
るほど精度が高いと判断される。そこで、論理回路41
2は、レジスタ401をセットして、分岐予測によって
予測された分岐ターゲットが命令キャッシュミスを起こ
していた場合に、分岐命令の結果が確定する前に命令キ
ャッシュミスをリフィルするようにする。逆に、レジス
タ480の格納する分岐予測当たり回数を評価したとき
に、レジスタ480の格納する値が、レジスタ411の
格納する閾値に達していなかった場合、論理回路412
は、分岐予測の精度は不十分と判定して、レジスタ40
1を投機的な命令キャッシュリフィルを行わないように
セットする。
【0048】ここで、本実施形態に係るプロセッサで
は、上述した第1実施形態と異なって、レジスタでなく
外部ピンに413によって、このような自動的コンフィ
グレーションの最適化する機能を、オン/オフすること
ができる。もちろん、この外部ピン413を、図5に示
すように、ソフトウェアで読み書き可能なレジスタ49
1に置き換えることもできるのは言うまでもない。
は、上述した第1実施形態と異なって、レジスタでなく
外部ピンに413によって、このような自動的コンフィ
グレーションの最適化する機能を、オン/オフすること
ができる。もちろん、この外部ピン413を、図5に示
すように、ソフトウェアで読み書き可能なレジスタ49
1に置き換えることもできるのは言うまでもない。
【0049】以上のように、本実施形態に係るプロセッ
サによれば、分岐予測によって予測された分岐ターゲッ
トが、命令キャッシュミスを起こしていた場合に、分岐
命令の結果が確定する前に命令キャッシュミスをリフィ
ルするか否かという、プログラムの性質によって効果も
副作用も大きいコンフィグレーションの変更を、ユーザ
が実際に実行するプログラムに基づいて決定することと
した。このため、分岐命令の結果が確定する前に命令キ
ャッシュミスをリフィルするか否かというコンフィグレ
ーションを、可能な限り最適に設定することが可能にな
る。
サによれば、分岐予測によって予測された分岐ターゲッ
トが、命令キャッシュミスを起こしていた場合に、分岐
命令の結果が確定する前に命令キャッシュミスをリフィ
ルするか否かという、プログラムの性質によって効果も
副作用も大きいコンフィグレーションの変更を、ユーザ
が実際に実行するプログラムに基づいて決定することと
した。このため、分岐命令の結果が確定する前に命令キ
ャッシュミスをリフィルするか否かというコンフィグレ
ーションを、可能な限り最適に設定することが可能にな
る。
【0050】また、本実施形態においては、図6に示す
ように、カウンタ414、416と、レジスタ415、
417、419と、論理回路418とを追加して、CP
I(Cycle Per Instruction)をプロセッサのパフォー
マンスの指標を使って、コンフィグレーション(この例
では投機的な命令キャッシュリフィル有無)を変化させ
るようにしてもよい。すなわち、カウンタ414は、ク
ロック数をカウントし、レジスタ415に格納する。カ
ウンタ416は、実行を完了した命令数をカウントし、
レジスタ417に格納する。レジスタ419には、CP
Iの閾値が格納されている。このレジスタ419に格納
されている内容は、ユーザがプログラムを用いて任意に
読み書き可能である。論理回路418は、レジスタ41
4の値が所定の値に達した際に、レジスタ415、41
7の格納する値を用いて、CPIを算出する。そして、
その算出結果と、閾値(レジスタ419)とを比較し
て、算出結果が閾値よりも悪い場合には、レジスタ40
1の内容を変更することにより、投機的な命令キャッシ
ュリフィルを行うかどうかの設定を変更する。
ように、カウンタ414、416と、レジスタ415、
417、419と、論理回路418とを追加して、CP
I(Cycle Per Instruction)をプロセッサのパフォー
マンスの指標を使って、コンフィグレーション(この例
では投機的な命令キャッシュリフィル有無)を変化させ
るようにしてもよい。すなわち、カウンタ414は、ク
ロック数をカウントし、レジスタ415に格納する。カ
ウンタ416は、実行を完了した命令数をカウントし、
レジスタ417に格納する。レジスタ419には、CP
Iの閾値が格納されている。このレジスタ419に格納
されている内容は、ユーザがプログラムを用いて任意に
読み書き可能である。論理回路418は、レジスタ41
4の値が所定の値に達した際に、レジスタ415、41
7の格納する値を用いて、CPIを算出する。そして、
その算出結果と、閾値(レジスタ419)とを比較し
て、算出結果が閾値よりも悪い場合には、レジスタ40
1の内容を変更することにより、投機的な命令キャッシ
ュリフィルを行うかどうかの設定を変更する。
【0051】〔第3実施形態〕本発明の第3実施形態
は、動的に変更されるコンフィグレーションが、キャッ
シュメモリにおけるストアのアルゴリズムの場合であ
る。
は、動的に変更されるコンフィグレーションが、キャッ
シュメモリにおけるストアのアルゴリズムの場合であ
る。
【0052】ストアのアルゴリズムとして、ライト・ア
ロケートとノー・ライト・アロケートが知られている。
ライト・アロケートとは、ストア命令がデータキャッシ
ュミスを起こした場合、キャッシュメモリがリフィルさ
れ、ストアデータは少なくともデータキャッシュメモリ
に送られるというものである。一方、ノー・ライト・ア
ロケートはストア命令がデータキャッシュミスを起こし
た場合、キャッシュメモリはリフィルされず、ストアデ
ータは外部メモリにのみに送られる。従って、キャッシ
ュメモリの中身は更新されず、外部メモリのみが更新さ
れる。
ロケートとノー・ライト・アロケートが知られている。
ライト・アロケートとは、ストア命令がデータキャッシ
ュミスを起こした場合、キャッシュメモリがリフィルさ
れ、ストアデータは少なくともデータキャッシュメモリ
に送られるというものである。一方、ノー・ライト・ア
ロケートはストア命令がデータキャッシュミスを起こし
た場合、キャッシュメモリはリフィルされず、ストアデ
ータは外部メモリにのみに送られる。従って、キャッシ
ュメモリの中身は更新されず、外部メモリのみが更新さ
れる。
【0053】この動作から分かるように、ライト・アロ
ケートはストアデータがよく再利用されるプログラムで
性能向上に効果があり、ノー・ライト・アロケートはス
トアデータが再利用されないプログラムで性能向上に効
果がある。逆に、ストアデータが再利用されないプログ
ラムにライト・アロケートを用いると、再利用されない
データのリフィルに対してバスアクセスというコストを
払った挙げ句、キャッシュメモリの中身を再利用されな
いデータで置き換えてしまうということになりキャッシ
ュメモリのヒット率を落とすことになる。一方、ストア
データがよく再利用されるプログラムでノー・ライト・
アロケートを用いると、ストアミスがプリフェッチを兼
ねていることに等しいライト・アロケートに比べて性能
が低くなる。このように、実際に実行されるプログラム
の性質によって、ライト・アロケートにするか、ノー・
ライト・アロケートにするかを決定することは、プロセ
ッサの性能向上のため、重要である。
ケートはストアデータがよく再利用されるプログラムで
性能向上に効果があり、ノー・ライト・アロケートはス
トアデータが再利用されないプログラムで性能向上に効
果がある。逆に、ストアデータが再利用されないプログ
ラムにライト・アロケートを用いると、再利用されない
データのリフィルに対してバスアクセスというコストを
払った挙げ句、キャッシュメモリの中身を再利用されな
いデータで置き換えてしまうということになりキャッシ
ュメモリのヒット率を落とすことになる。一方、ストア
データがよく再利用されるプログラムでノー・ライト・
アロケートを用いると、ストアミスがプリフェッチを兼
ねていることに等しいライト・アロケートに比べて性能
が低くなる。このように、実際に実行されるプログラム
の性質によって、ライト・アロケートにするか、ノー・
ライト・アロケートにするかを決定することは、プロセ
ッサの性能向上のため、重要である。
【0054】以上をふまえた上で、本実施形態に係るプ
ロセッサを図7に基づいて説明する。図7は、本実施形
態に係るプロセッサのハードウェア構成における主要部
を示すブロック図である。
ロセッサを図7に基づいて説明する。図7は、本実施形
態に係るプロセッサのハードウェア構成における主要部
を示すブロック図である。
【0055】この図7に示すように、本実施形態に係る
プロセッサは、レジスタ501、511、512、51
3、515、517と、カウンタ514、516、56
0と、レジスタファイル520と、データキャッシュコ
ントロール530と、データキャッシュタグ540と、
ストアミスアドレスバッファ518と、アドレス比較器
519と、論理回路510、550とを、備えている。
プロセッサは、レジスタ501、511、512、51
3、515、517と、カウンタ514、516、56
0と、レジスタファイル520と、データキャッシュコ
ントロール530と、データキャッシュタグ540と、
ストアミスアドレスバッファ518と、アドレス比較器
519と、論理回路510、550とを、備えている。
【0056】レジスタ501は、ストアのアルゴリズム
を、ライト・アロケートにするか、又は、ノー・ライト
・アロケートにするかを、切り替えるための設定情報が
格納されている。レジスタ501は、ユーザがプログラ
ムによってレジスタファイル520との間でデータの読
み書きが可能である。
を、ライト・アロケートにするか、又は、ノー・ライト
・アロケートにするかを、切り替えるための設定情報が
格納されている。レジスタ501は、ユーザがプログラ
ムによってレジスタファイル520との間でデータの読
み書きが可能である。
【0057】データキャッシュコントロール530は、
レジスタ501に格納されている設定情報に基づいて、
キャッシュメモリをライト・アロケート、又は、ノー・
ライト・アロケートのアルゴリズムにより制御する。
レジスタ501に格納されている設定情報に基づいて、
キャッシュメモリをライト・アロケート、又は、ノー・
ライト・アロケートのアルゴリズムにより制御する。
【0058】データキャッシュタグ540は、キャッシ
ュライン毎に、validビット541、dirtyビ
ット542、アクセス履歴のヒストリーフィールド54
3、物理アドレス・ページフレーム・ナンバー544、
sビット545を、有している。つまり、上述した第1
実施形態と比べて、sビット545が追加されている。
ュライン毎に、validビット541、dirtyビ
ット542、アクセス履歴のヒストリーフィールド54
3、物理アドレス・ページフレーム・ナンバー544、
sビット545を、有している。つまり、上述した第1
実施形態と比べて、sビット545が追加されている。
【0059】データキャッシュミスが起こると、リフィ
ルの際にデータキャッシュタグ540が更新される。そ
の際、リフィルがストアミスを起因として行われた場
合、sビット545がセットされる。また、データキャ
ッシュタグ540のヒストリーフィールド543は、そ
のキャッシュラインへのアクセスの回数、又は、アクセ
ス回数に相当する情報を保持し、その内容を随時更新す
る。
ルの際にデータキャッシュタグ540が更新される。そ
の際、リフィルがストアミスを起因として行われた場
合、sビット545がセットされる。また、データキャ
ッシュタグ540のヒストリーフィールド543は、そ
のキャッシュラインへのアクセスの回数、又は、アクセ
ス回数に相当する情報を保持し、その内容を随時更新す
る。
【0060】また、ストアミスアドレスバッファ518
は、ストアミスが起こるたびにその物理アドレスを記録
する。ストアミスした物理アドレスは、ストアミスアド
レスバッファ518に順次格納されていき、このストア
ミスアドレスバッファ518がフルになったら、最も古
いストアミスアドレスから順に消去されていく。
は、ストアミスが起こるたびにその物理アドレスを記録
する。ストアミスした物理アドレスは、ストアミスアド
レスバッファ518に順次格納されていき、このストア
ミスアドレスバッファ518がフルになったら、最も古
いストアミスアドレスから順に消去されていく。
【0061】プロセッサがライト・アロケートで動作し
ている場合、ストアミスはキャッシュラインを更新する
ので、データキャッシュタグ540のsビット545を
立ててリフィルする。このストアミスに起因してリフィ
ルされたキャッシュラインに、後続のロード/ストア命
令がアクセスすると、データキャッシュタグ540のヒ
ストリーフィールド540に、そのアクセス回数が記録
されていく。そのラインが別のミスによって置換される
場合、そのキャッシュラインのsビット545と、ヒス
トリーフィールド543とは、データキャッシュタグ5
40から論理回路550に送信される。
ている場合、ストアミスはキャッシュラインを更新する
ので、データキャッシュタグ540のsビット545を
立ててリフィルする。このストアミスに起因してリフィ
ルされたキャッシュラインに、後続のロード/ストア命
令がアクセスすると、データキャッシュタグ540のヒ
ストリーフィールド540に、そのアクセス回数が記録
されていく。そのラインが別のミスによって置換される
場合、そのキャッシュラインのsビット545と、ヒス
トリーフィールド543とは、データキャッシュタグ5
40から論理回路550に送信される。
【0062】論理回路550では、『ストアミスを起因
としてリフィルされたキャッシュライン』への再アクセ
ス回数の総和が、論理回路550自身が持つレジスタの
内容と、データキャッシュタグ540から受信したsビ
ット545とヒストリーフィールド543の内容から、
算出される。
としてリフィルされたキャッシュライン』への再アクセ
ス回数の総和が、論理回路550自身が持つレジスタの
内容と、データキャッシュタグ540から受信したsビ
ット545とヒストリーフィールド543の内容から、
算出される。
【0063】一方、データキャッシュタグ540から出
力されたリフィルされるキャッシュラインのsビット5
45は、キャッシュミスのイベント信号とともに、AN
D回路555に入力される。したがって、AND回路5
55の出力が1である場合には、「今回置換されるキャ
ッシュラインが、もともとストアミスのためにリフィル
された」こと意味する。そのようなライン置換の総和
を、カウンタ560とレジスタ570によって求め、レ
ジスタ570に保持しておく。
力されたリフィルされるキャッシュラインのsビット5
45は、キャッシュミスのイベント信号とともに、AN
D回路555に入力される。したがって、AND回路5
55の出力が1である場合には、「今回置換されるキャ
ッシュラインが、もともとストアミスのためにリフィル
された」こと意味する。そのようなライン置換の総和
を、カウンタ560とレジスタ570によって求め、レ
ジスタ570に保持しておく。
【0064】ストアミスでリフィルされたキャッシュラ
インが置換された回数の閾値は、レジスタ580に格納
しておく。また、ストアミスを起因としてリフィルされ
たキャッシュラインへの再アクセスの総和の閾値は、レ
ジスタ590に保持しておく。レジスタ570の格納す
る値(ストアミスでリフィルされたキャッシュラインが
置換された回数)が、レジスタ580の格納する閾値に
達すると、論理回路510でコンフィグレーションを変
更するかどうかの判定がなされる。すなわち、論理回路
510において、論理回路550が保持するストアミス
を起因としてリフィルされたキャッシュライン』への再
アクセス回数の総和と、レジスタ590が保持する閾値
とが、比較される。論理回路550の値が、レジスタ5
90の閾値以上であった場合、ストアでリフィルされた
ラインには十分な数の再アクセスがあったということで
あるから、論理回路510はレジスタ501の設定情報
をそのままにし、今後も変わらずライト・アロケートで
プロセッサが動作するようにする。逆に、論理回路55
0の値が、レジスタ590の閾値未満であった場合、論
理510はレジスタ501の設定情報を変更し、今後は
ノー・ライト・アロケートでプロセッサが動作するよう
にする。
インが置換された回数の閾値は、レジスタ580に格納
しておく。また、ストアミスを起因としてリフィルされ
たキャッシュラインへの再アクセスの総和の閾値は、レ
ジスタ590に保持しておく。レジスタ570の格納す
る値(ストアミスでリフィルされたキャッシュラインが
置換された回数)が、レジスタ580の格納する閾値に
達すると、論理回路510でコンフィグレーションを変
更するかどうかの判定がなされる。すなわち、論理回路
510において、論理回路550が保持するストアミス
を起因としてリフィルされたキャッシュライン』への再
アクセス回数の総和と、レジスタ590が保持する閾値
とが、比較される。論理回路550の値が、レジスタ5
90の閾値以上であった場合、ストアでリフィルされた
ラインには十分な数の再アクセスがあったということで
あるから、論理回路510はレジスタ501の設定情報
をそのままにし、今後も変わらずライト・アロケートで
プロセッサが動作するようにする。逆に、論理回路55
0の値が、レジスタ590の閾値未満であった場合、論
理510はレジスタ501の設定情報を変更し、今後は
ノー・ライト・アロケートでプロセッサが動作するよう
にする。
【0065】これに対して、プロセッサがノー・ライト
・アロケートで動作している場合、ストアミスはキャッ
シュラインを更新しないため、ストアミスアドレスバッ
ファ518を用いて、そのパフォーマンスを測定する。
すなわち、ストアミスアドレスバッファ518に保持さ
れている過去のストアミスアドレスと、パイプラインで
発生するロード/ストアミスとなったミスアドレスと
を、アドレス比較器519で比較する。両者が一致して
いた場合には、ストアミスを起こしたキャッシュライン
が、再びアクセスされたことになる。アドレス比較器5
19は、両者が一致した場合には、一致信号をカウンタ
514に出力し、カウンタ514はこの一致信号の回数
をカウントする。すなわち、一致信号が入力されたカウ
ンタ514は、レジスタ515の格納する値をインクリ
メントし、レジスタ515はその値を保持する。このレ
ジスタ515の保持する値は、ストアミスを起こしたキ
ャッシュラインヘの再アクセス回数である。
・アロケートで動作している場合、ストアミスはキャッ
シュラインを更新しないため、ストアミスアドレスバッ
ファ518を用いて、そのパフォーマンスを測定する。
すなわち、ストアミスアドレスバッファ518に保持さ
れている過去のストアミスアドレスと、パイプラインで
発生するロード/ストアミスとなったミスアドレスと
を、アドレス比較器519で比較する。両者が一致して
いた場合には、ストアミスを起こしたキャッシュライン
が、再びアクセスされたことになる。アドレス比較器5
19は、両者が一致した場合には、一致信号をカウンタ
514に出力し、カウンタ514はこの一致信号の回数
をカウントする。すなわち、一致信号が入力されたカウ
ンタ514は、レジスタ515の格納する値をインクリ
メントし、レジスタ515はその値を保持する。このレ
ジスタ515の保持する値は、ストアミスを起こしたキ
ャッシュラインヘの再アクセス回数である。
【0066】一方、ストアミスが起こると、カウンタ5
16は、レジスタ517の格納する値をインクリメント
する。したがって、レジスタ517は、ストアミスの回
数を保持することになる。ストアミスと同じキャッシュ
ラインヘのアクセスの回数の閾値はレジスタ512に保
持しておき、ストアミスの回数の閾値はレジスタ513
に保持しておく。
16は、レジスタ517の格納する値をインクリメント
する。したがって、レジスタ517は、ストアミスの回
数を保持することになる。ストアミスと同じキャッシュ
ラインヘのアクセスの回数の閾値はレジスタ512に保
持しておき、ストアミスの回数の閾値はレジスタ513
に保持しておく。
【0067】レジスタ517の格納する値が、レジスタ
513の格納する閾値に達すると、論理回路510によ
って、レジスタ512、515が比較される。レジスタ
515の格納する値(ストアミスを起こしたキャッシュ
ラインへの再アクセス回数)が、レジスタ512の格納
する閾値に達していなかった場合、それはミスを起こし
たストアのキャッシュラインヘの再アクセスが少ないと
いうことを意味する。このため、論理回路510はレジ
スタ501の設定情報を変更せずに、そのままノー・ラ
イト・アロケートでプロセッサが動作するようにする。
逆に、レジスタ515の格納する値が、レジスタ512
の格納する閾値に達していた場合、それはストアミスを
起こしたキャッシュラインへの再アクセスが多いことを
意味する。このため、論理回路510は、レジスタ50
1の設定情報を変更し、レジスタ501の設定情報をラ
イト・アロケートに変更し、今後はプロセッサがライト
・アロケートで動作するようにする。
513の格納する閾値に達すると、論理回路510によ
って、レジスタ512、515が比較される。レジスタ
515の格納する値(ストアミスを起こしたキャッシュ
ラインへの再アクセス回数)が、レジスタ512の格納
する閾値に達していなかった場合、それはミスを起こし
たストアのキャッシュラインヘの再アクセスが少ないと
いうことを意味する。このため、論理回路510はレジ
スタ501の設定情報を変更せずに、そのままノー・ラ
イト・アロケートでプロセッサが動作するようにする。
逆に、レジスタ515の格納する値が、レジスタ512
の格納する閾値に達していた場合、それはストアミスを
起こしたキャッシュラインへの再アクセスが多いことを
意味する。このため、論理回路510は、レジスタ50
1の設定情報を変更し、レジスタ501の設定情報をラ
イト・アロケートに変更し、今後はプロセッサがライト
・アロケートで動作するようにする。
【0068】ここで、本実施形態に係るプロセッサは、
上述した第1実施形態と同様に、レジスタ511の設定
情報を変更することにより、この自動的コンフィグレー
ションの最適化する機能を、オン/オフすることができ
るようになっている。レジスタ511の設定情報は、ユ
ーザがプログラムを用いて、任意に読み書き可能に構成
されている。もちろん、このレジスタ511を、図8に
示すように、ユーザが手動で切り替え可能な外部ピン4
91に置き換えることもできるのは言うまでもない。
上述した第1実施形態と同様に、レジスタ511の設定
情報を変更することにより、この自動的コンフィグレー
ションの最適化する機能を、オン/オフすることができ
るようになっている。レジスタ511の設定情報は、ユ
ーザがプログラムを用いて、任意に読み書き可能に構成
されている。もちろん、このレジスタ511を、図8に
示すように、ユーザが手動で切り替え可能な外部ピン4
91に置き換えることもできるのは言うまでもない。
【0069】以上のように、本実施形態に係るプロセッ
サによれば、キャッシュメモリのストアアルゴリズムと
して、ライト・アロケートを用いるか、ノー・ライト・
アロケートを用いるかを、ユーザが実際に実行したプロ
グラムのパフォーマンス測定結果に基づいて変更決定す
ることとした。このため、ユーザが実際に実行するプロ
グラムに適した方のストアアルゴリズムを採用すること
ができ、かつこれを動的に変更することができる。
サによれば、キャッシュメモリのストアアルゴリズムと
して、ライト・アロケートを用いるか、ノー・ライト・
アロケートを用いるかを、ユーザが実際に実行したプロ
グラムのパフォーマンス測定結果に基づいて変更決定す
ることとした。このため、ユーザが実際に実行するプロ
グラムに適した方のストアアルゴリズムを採用すること
ができ、かつこれを動的に変更することができる。
【0070】また、本実施形態においては、図9に示す
ように、カウンタ521、513と、レジスタ520、
522、525と、論理回路524を追加して、CPI
(Cycle Per Instruction)をプロセッサのパフォーマ
ンスの指標を使って、コンフィグレーション(この例で
はストアアルゴリズムとしてライト・アロケートを用い
るか、又は、ノー・ライト・アロケートを用いるか)を
変化させるようにしてもよい。すなわち、カウンタ52
0は、クロック数をカウントし、レジスタ521に格納
する。カウンタ522は、実行を完了した命令数をカウ
ントし、レジスタ523に格納する。レジスタ525に
は、CPIの閾値が格納されている。このレジスタ52
5に格納されている内容は、ユーザがプログラムを用い
て任意に読み書き可能である。論理回路524は、レジ
スタ521の値が所定の値に達した際に、レジスタ52
1、523の格納する値を用いて、CPIを算出する。
そして、その算出結果と、閾値(レジスタ525)とを
比較して、算出結果が閾値よりも悪い場合には、レジス
タ501の設定情報の内容を変更することにより、スト
アアルゴリズムとして、ライト・アロケートを用いる
か、ノー・ライト・アロケートを用いるのかを、切り替
える。
ように、カウンタ521、513と、レジスタ520、
522、525と、論理回路524を追加して、CPI
(Cycle Per Instruction)をプロセッサのパフォーマ
ンスの指標を使って、コンフィグレーション(この例で
はストアアルゴリズムとしてライト・アロケートを用い
るか、又は、ノー・ライト・アロケートを用いるか)を
変化させるようにしてもよい。すなわち、カウンタ52
0は、クロック数をカウントし、レジスタ521に格納
する。カウンタ522は、実行を完了した命令数をカウ
ントし、レジスタ523に格納する。レジスタ525に
は、CPIの閾値が格納されている。このレジスタ52
5に格納されている内容は、ユーザがプログラムを用い
て任意に読み書き可能である。論理回路524は、レジ
スタ521の値が所定の値に達した際に、レジスタ52
1、523の格納する値を用いて、CPIを算出する。
そして、その算出結果と、閾値(レジスタ525)とを
比較して、算出結果が閾値よりも悪い場合には、レジス
タ501の設定情報の内容を変更することにより、スト
アアルゴリズムとして、ライト・アロケートを用いる
か、ノー・ライト・アロケートを用いるのかを、切り替
える。
【0071】〔第4実施形態〕上述した各実施形態で述
べたように、プロセッサが動的にパフォーマンスを測定
し、その測定性能に応じて自らのコンフィグレーション
を動的に随時変更していくことが可能で、この考え方は
様々なコンフィグレーションに関して適用可能である。
従って、以上説明してきたことはあくまでも発明の具体
的な実装を示す例でしかなく、本発明の主旨を保ったま
ま様々な実現が考えられることは言うまでもない。
べたように、プロセッサが動的にパフォーマンスを測定
し、その測定性能に応じて自らのコンフィグレーション
を動的に随時変更していくことが可能で、この考え方は
様々なコンフィグレーションに関して適用可能である。
従って、以上説明してきたことはあくまでも発明の具体
的な実装を示す例でしかなく、本発明の主旨を保ったま
ま様々な実現が考えられることは言うまでもない。
【0072】例えば、プロセッサの外部バスのアービト
レーションの方式をコンフィグレーションとして、CP
Iを評価性能に設定して、命令キャッシュリフィルのた
めのバスリードとデータキャッシュリフィルのためのバ
スリードの優先順位を動的に決定することが可能であ
る。
レーションの方式をコンフィグレーションとして、CP
Iを評価性能に設定して、命令キャッシュリフィルのた
めのバスリードとデータキャッシュリフィルのためのバ
スリードの優先順位を動的に決定することが可能であ
る。
【0073】また、プロセッサが、システムクロックを
カウントするカウンタと、ある着眼する命令群の終了数
をカウントするカウンタとを、有する場合を考えること
ができる。これらのカウンタの値を組み合わせること
で、ある着眼する命令群の平均実行時間が計算できる。
特定命令群の平均実行時間をサンプリングする期間を定
めるクロックカウンタを用いれば、ある期間内のある着
眼する命令群のパフォーマンスを求めることができる。
それは、サンプリングする期間を定めるクロックカウン
タがその閾値に達したときのある着眼する命令群の終了
数を取り出すことによって可能になる。
カウントするカウンタと、ある着眼する命令群の終了数
をカウントするカウンタとを、有する場合を考えること
ができる。これらのカウンタの値を組み合わせること
で、ある着眼する命令群の平均実行時間が計算できる。
特定命令群の平均実行時間をサンプリングする期間を定
めるクロックカウンタを用いれば、ある期間内のある着
眼する命令群のパフォーマンスを求めることができる。
それは、サンプリングする期間を定めるクロックカウン
タがその閾値に達したときのある着眼する命令群の終了
数を取り出すことによって可能になる。
【0074】もちろん、時間によるサンプリングでな
く、上で説明してきたようなある特定イベントの発生頻
度に着眼する手法もあり得る。
く、上で説明してきたようなある特定イベントの発生頻
度に着眼する手法もあり得る。
【0075】このように様々な測定の組合わせをコンフ
ィグレーション変更のためのデータとすることが可能で
ある。
ィグレーション変更のためのデータとすることが可能で
ある。
【0076】また、コンフィグレーションの変更の仕方
について、いくつかの応用例が考えられる。この応用例
の一例を図10に示す。この図10は、この応用例にお
けるプロセッサのハードウェア構成における主要部の一
例を示すブロック図である。
について、いくつかの応用例が考えられる。この応用例
の一例を図10に示す。この図10は、この応用例にお
けるプロセッサのハードウェア構成における主要部の一
例を示すブロック図である。
【0077】この図10に示すように、プロセッサに、
レジスタ630を追加して、以前のコンフィグレーショ
ンを格納しておく。更に、プロセッサに、レジスタ67
0を追加して、プロセッサまたはモジュールの性能に換
算可能なイベントのカウント数のうち、以前の値を格納
しておく。
レジスタ630を追加して、以前のコンフィグレーショ
ンを格納しておく。更に、プロセッサに、レジスタ67
0を追加して、プロセッサまたはモジュールの性能に換
算可能なイベントのカウント数のうち、以前の値を格納
しておく。
【0078】この図10の例では、レジスタ640に時
間に換算可能なイベント(例えば、クロック信号のクロ
ック数)のカウント結果を格納していく。レジスタ64
0の値が、その閾値を格納するレジスタ660の中身に
達すると、性能に換算可能なイベントのカウント数のう
ち現在のもの(レジスタ650の格納する値)、以前の
もの(レジスタ670の格納する値)と、現在のコンフ
ィグレーション(レジスタ610の格納する設定情報)
と以前のコンフィグレーション(レジスタ630の格納
する設定情報)とに基づいて、次のコンフィグレーショ
ンを論理回路680で決定し、レジスタ601に格納す
る。この論理回路680のアルゴリズムとしては、以下
の通りである。
間に換算可能なイベント(例えば、クロック信号のクロ
ック数)のカウント結果を格納していく。レジスタ64
0の値が、その閾値を格納するレジスタ660の中身に
達すると、性能に換算可能なイベントのカウント数のう
ち現在のもの(レジスタ650の格納する値)、以前の
もの(レジスタ670の格納する値)と、現在のコンフ
ィグレーション(レジスタ610の格納する設定情報)
と以前のコンフィグレーション(レジスタ630の格納
する設定情報)とに基づいて、次のコンフィグレーショ
ンを論理回路680で決定し、レジスタ601に格納す
る。この論理回路680のアルゴリズムとしては、以下
の通りである。
【0079】レジスタ650、670の比較によって、
以前のパフォーマンスと現在のパフォーマンスの比較が
できるから、以前から現在へのコンフィグレーション変
更のために性能が低下したかどうかが分かる。性能低下
があった場合、現在のコンフィグレーションは以前のコ
ンフィグレーションよりもプログラムに適していないこ
とが分かる。よって、次は、論理回路680は、コンフ
ィグレーションを以前のコンフィグレーション(レジス
タ630の格納する設定情報)に戻す。コンフィグレー
ション変更時には、レジスタ650の格納する値がレジ
スタ670にコピーされ、レジスタ610の格納する値
がレジスタ630にコピーされることは言うまでもな
い。このように、次のコンフィグレーションを前のコン
フィグレーション(レジスタ630)に戻すというアル
ゴリズムの場合、論理回路680は、コンフィグレーシ
ョンを元に戻した後は、リセットするまで二度とコンフ
ィグレーション変更を許さないという応用例も可能であ
る。
以前のパフォーマンスと現在のパフォーマンスの比較が
できるから、以前から現在へのコンフィグレーション変
更のために性能が低下したかどうかが分かる。性能低下
があった場合、現在のコンフィグレーションは以前のコ
ンフィグレーションよりもプログラムに適していないこ
とが分かる。よって、次は、論理回路680は、コンフ
ィグレーションを以前のコンフィグレーション(レジス
タ630の格納する設定情報)に戻す。コンフィグレー
ション変更時には、レジスタ650の格納する値がレジ
スタ670にコピーされ、レジスタ610の格納する値
がレジスタ630にコピーされることは言うまでもな
い。このように、次のコンフィグレーションを前のコン
フィグレーション(レジスタ630)に戻すというアル
ゴリズムの場合、論理回路680は、コンフィグレーシ
ョンを元に戻した後は、リセットするまで二度とコンフ
ィグレーション変更を許さないという応用例も可能であ
る。
【0080】もちろん、ひとつのコンフィグレーション
について、3つ以上の選択肢がある場合は、論理回路6
80のアルゴリズムを変更して、次のコンフィグレーシ
ョンは前のコンフィグレーション(レジスタ630)で
も今のコンフィグレーション(レジスタ610)でもな
い第3のコンフィグレーションを選ぶようにする、とい
う考え、方が可能である。このように、コンフィグレー
ション変更について、様々な手法が考えられる。
について、3つ以上の選択肢がある場合は、論理回路6
80のアルゴリズムを変更して、次のコンフィグレーシ
ョンは前のコンフィグレーション(レジスタ630)で
も今のコンフィグレーション(レジスタ610)でもな
い第3のコンフィグレーションを選ぶようにする、とい
う考え、方が可能である。このように、コンフィグレー
ション変更について、様々な手法が考えられる。
【0081】〔第5実施形態〕上述した実施形態におい
ては、コンフィグレーション変更のために費やす性能ペ
ナルティ(サイクル)を特に意識しないで議論してき
た。変更するコンフィグレーションによっては、変更の
ために費やす時間的ロスが性能ペナルティ上無視できな
い場合もある。例えば、あるコンフィグレーションの変
更に伴ってデータキャッシュメモリをフラッシュしなけ
ればならない場合である。データキャッシュメモリのフ
ラッシュのために必要なサイクル数、つまり、時間的ロ
スは、プロセッサによっても異なるが、数千サイクル以
上になる場合もある。このような場合、コンフィグレー
ションの変更は、コンフィグレーション変更に必要なコ
スト、すなわち性能に対する影響にとりわけ注意しなけ
ればならない。
ては、コンフィグレーション変更のために費やす性能ペ
ナルティ(サイクル)を特に意識しないで議論してき
た。変更するコンフィグレーションによっては、変更の
ために費やす時間的ロスが性能ペナルティ上無視できな
い場合もある。例えば、あるコンフィグレーションの変
更に伴ってデータキャッシュメモリをフラッシュしなけ
ればならない場合である。データキャッシュメモリのフ
ラッシュのために必要なサイクル数、つまり、時間的ロ
スは、プロセッサによっても異なるが、数千サイクル以
上になる場合もある。このような場合、コンフィグレー
ションの変更は、コンフィグレーション変更に必要なコ
スト、すなわち性能に対する影響にとりわけ注意しなけ
ればならない。
【0082】図11は、図3に示すプロセッサに、コン
フィグレーション変更コストを測定するためのカウンタ
機構を追加したものである。すなわち、カウンタ717
は、データキャッシュタグ340がdirtyビットを
0から1に変更したした回数をカウントする。レジスタ
718は、このカウンタ717がカウントした回数を保
持する。レジスタ719は、データキャッシュタグ34
0がdirtyビットを0から1に変更したした回数の
閾値を保持する。このレジスタ718の保持する値は、
ユーザがプログラムを用いて、任意に読み書き可能に構
成されている。
フィグレーション変更コストを測定するためのカウンタ
機構を追加したものである。すなわち、カウンタ717
は、データキャッシュタグ340がdirtyビットを
0から1に変更したした回数をカウントする。レジスタ
718は、このカウンタ717がカウントした回数を保
持する。レジスタ719は、データキャッシュタグ34
0がdirtyビットを0から1に変更したした回数の
閾値を保持する。このレジスタ718の保持する値は、
ユーザがプログラムを用いて、任意に読み書き可能に構
成されている。
【0083】コピーバック方式のキャッシュメモリにお
けるラインサイズの変更の性能上のコストは、データキ
ャッシュメモリの中に残るダーティーラインをライトバ
ックすることに費やすサイクル数である。
けるラインサイズの変更の性能上のコストは、データキ
ャッシュメモリの中に残るダーティーラインをライトバ
ックすることに費やすサイクル数である。
【0084】ここで、ストア命令(メモリへの書き込み
命令)が起こったとき、メインメモリは更新せず、キャ
ッシュメモリのみを更新する方式をコピーバック方式と
いう。この際、ストア命令の対象になったキャッシュラ
インは、メインメモリと異なる(最新の)データを保持し
ていて、メインメモリとの内容の一貫性(data consiste
ncy)がとれていない。このようなキャッシュラインをダ
ーティーラインという。キャッシュミスが発生して、ダ
ーティーラインを置き換えてリフィルする時には、リフ
ィルする前にダーティーラインをキャッシュメモリから
読んで、その内容をメインメモリに反映しなければなら
ない。これをダーティーライトバックという。ダーティ
ーライトバックは、バスオペレーションであるから一般
に多くのサイクル数を費やす。実際のライトバックが、
何サイクルを必要とするかは、キャッシュメモリとバス
の間に設けるライトバッファの大きさや、バスの混み具
合いに依存する。更に、それがプロセッサ本体のパイプ
ラインをどの程度インターロックするかは、キャッシュ
メモリの状態に対応するパイプラインの仕様に依存す
る。
命令)が起こったとき、メインメモリは更新せず、キャ
ッシュメモリのみを更新する方式をコピーバック方式と
いう。この際、ストア命令の対象になったキャッシュラ
インは、メインメモリと異なる(最新の)データを保持し
ていて、メインメモリとの内容の一貫性(data consiste
ncy)がとれていない。このようなキャッシュラインをダ
ーティーラインという。キャッシュミスが発生して、ダ
ーティーラインを置き換えてリフィルする時には、リフ
ィルする前にダーティーラインをキャッシュメモリから
読んで、その内容をメインメモリに反映しなければなら
ない。これをダーティーライトバックという。ダーティ
ーライトバックは、バスオペレーションであるから一般
に多くのサイクル数を費やす。実際のライトバックが、
何サイクルを必要とするかは、キャッシュメモリとバス
の間に設けるライトバッファの大きさや、バスの混み具
合いに依存する。更に、それがプロセッサ本体のパイプ
ラインをどの程度インターロックするかは、キャッシュ
メモリの状態に対応するパイプラインの仕様に依存す
る。
【0085】本実施形態では、キャッシュメモリのライ
ンサイズを変更する際に、キャッシュメモリにその時点
で存在するダーティーラインを全てライトバックしてお
くこととする。無論、そうでない仕様のプロセッサもあ
り得るが、シンプルさの観点から、ダーティーラインの
すべてをライトバックする方が一般的である。
ンサイズを変更する際に、キャッシュメモリにその時点
で存在するダーティーラインを全てライトバックしてお
くこととする。無論、そうでない仕様のプロセッサもあ
り得るが、シンプルさの観点から、ダーティーラインの
すべてをライトバックする方が一般的である。
【0086】すると、ライトバッファの段数やパイプラ
インの制御の仕様が決まっていれば、プロセッサのライ
ンサイズ変更の実コストは、キャッシュメモリ中にどれ
くらいの数のダーティーラインが存在するかによって決
まる。ここでは、バスの状態とパイプラインの状態とは
予測できないため、そこにコストの不確定要素がある
が、平均的な状態を想定することで近似することとす
る。
インの制御の仕様が決まっていれば、プロセッサのライ
ンサイズ変更の実コストは、キャッシュメモリ中にどれ
くらいの数のダーティーラインが存在するかによって決
まる。ここでは、バスの状態とパイプラインの状態とは
予測できないため、そこにコストの不確定要素がある
が、平均的な状態を想定することで近似することとす
る。
【0087】従って、本実施形態に係るプロセッサにお
いては、キャッシュメモリがいくつのダーティーライン
を持っているかを検出するために、カウンタ717を設
けている。すなわち、カウンタ717は、データキャッ
シュタグ340のdirtyビット342を0から1に
セットした回数をカウントする。このカウントした値
は、レジスタ718に保持しておく。
いては、キャッシュメモリがいくつのダーティーライン
を持っているかを検出するために、カウンタ717を設
けている。すなわち、カウンタ717は、データキャッ
シュタグ340のdirtyビット342を0から1に
セットした回数をカウントする。このカウントした値
は、レジスタ718に保持しておく。
【0088】ダーティーラインの本数の閾値をレジスタ
719に格納しておき、レジスタ718の保持する値
が、レジスタ719の保持する閾値よりも小さい場合、
論理回路313は、コンフィグレーションの変更を行
う。すなわち、論理回路313は、ダーティーライトバ
ックに費やす時間が短いと判断できる場合に、レジスタ
301の設定情報を変更し、ラインサイズの変更を実行
する。
719に格納しておき、レジスタ718の保持する値
が、レジスタ719の保持する閾値よりも小さい場合、
論理回路313は、コンフィグレーションの変更を行
う。すなわち、論理回路313は、ダーティーライトバ
ックに費やす時間が短いと判断できる場合に、レジスタ
301の設定情報を変更し、ラインサイズの変更を実行
する。
【0089】このようにすることにより、論理回路31
3は、コンフィグレーションの変更に要する時間的ロス
をも考慮した上で、ラインサイズを変更すべきかどうか
を、決定することができるようになる。
3は、コンフィグレーションの変更に要する時間的ロス
をも考慮した上で、ラインサイズを変更すべきかどうか
を、決定することができるようになる。
【0090】一方、古い世代のバイナリを新しいハード
ウェアで実行する場合、古いバイナリ中の複数の命令を
新しいハードウェアがサポートする1つの命令で置換す
ることが可能な場合がある。それは、例えば、メモリか
らバイト(8-bit)を取り出してレジスタファイル32
0に格納したい場合、古いバイナリでは、「メモリヘの
ワード(32-bit)アクセス命令+シフト命令」として実
現されていたものを、新しいハードウェアが「メモリヘ
のバイトアクセス(アライメントとり付き)命令」1つ
で実行できる場合である。このような場合は、プロセッ
サ上で古いバイナリ上の複数の命令を新しい命令で置換
してしまえば、置換後の実行性能は向上するが、通常、
このような置換は複雑な操作を伴うので、置換操作自体
に実行サイクルを割くことになる。この場合も、その時
間的ロスを加味して、置換操作を行うかどうかを決定す
ることが重要である。この例では、置換操作に費やすサ
イクル数が、コンフィグレーション変更の時間的ロスに
なる。また、コンフィグレーションを変更するかどうか
を判断するために測定すべき対象としては、ある置換可
能な命令列の出現頻度やCPIが考えられる。
ウェアで実行する場合、古いバイナリ中の複数の命令を
新しいハードウェアがサポートする1つの命令で置換す
ることが可能な場合がある。それは、例えば、メモリか
らバイト(8-bit)を取り出してレジスタファイル32
0に格納したい場合、古いバイナリでは、「メモリヘの
ワード(32-bit)アクセス命令+シフト命令」として実
現されていたものを、新しいハードウェアが「メモリヘ
のバイトアクセス(アライメントとり付き)命令」1つ
で実行できる場合である。このような場合は、プロセッ
サ上で古いバイナリ上の複数の命令を新しい命令で置換
してしまえば、置換後の実行性能は向上するが、通常、
このような置換は複雑な操作を伴うので、置換操作自体
に実行サイクルを割くことになる。この場合も、その時
間的ロスを加味して、置換操作を行うかどうかを決定す
ることが重要である。この例では、置換操作に費やすサ
イクル数が、コンフィグレーション変更の時間的ロスに
なる。また、コンフィグレーションを変更するかどうか
を判断するために測定すべき対象としては、ある置換可
能な命令列の出現頻度やCPIが考えられる。
【0091】〔第6実施形態〕プロセッサは、通常、い
くつかの動作モードを有している。それは例えば、ユー
ザモード、カーネルモードなどである。ユーザモードで
はユーザプログラムを実行し、カーネルモードでは例外
ベクタなどの基本プログラムを実行するというように、
各モードで実行するプログラムが暗黙的に決まってい
る。
くつかの動作モードを有している。それは例えば、ユー
ザモード、カーネルモードなどである。ユーザモードで
はユーザプログラムを実行し、カーネルモードでは例外
ベクタなどの基本プログラムを実行するというように、
各モードで実行するプログラムが暗黙的に決まってい
る。
【0092】このため、プログラムに最適なハードウェ
アコンフィグレーションは、モードによって大きく異な
る。このことから、パフォーマンスの測定を各モード毎
に行い、更にはハードウェアコンフィグレーションの変
更をモード毎に行うことが考えられる。それによって、
よりきめ細かい、ハードウェアコンフィグレーションの
効果的な変更が可能になる。さらに応用例としては、ユ
ーザモードでのみパフォーマンスの測定とハードウェア
コンフィグレーションの変更とを行い、カーネルモード
では行わないような手法も考えられる。
アコンフィグレーションは、モードによって大きく異な
る。このことから、パフォーマンスの測定を各モード毎
に行い、更にはハードウェアコンフィグレーションの変
更をモード毎に行うことが考えられる。それによって、
よりきめ細かい、ハードウェアコンフィグレーションの
効果的な変更が可能になる。さらに応用例としては、ユ
ーザモードでのみパフォーマンスの測定とハードウェア
コンフィグレーションの変更とを行い、カーネルモード
では行わないような手法も考えられる。
【0093】また、同じ考え方を命令のメモリ領域につ
いて適用することができる。すなわち、メモリは、キャ
ッシュ領域とアンキャッシュ領域とに区分することがで
きる。キャッシュ領域は、格納されているデータがキャ
ッシュメモリに格納され得る領域であり、アンキャッシ
ュ領域は、格納されているデータがキャッシュメモリに
格納されない領域である。したがって、例えば、アンキ
ャッシュ領域に格納されている命令シークエンスと、キ
ャッシュ領域に格納されている命令シークエンスとで
は、当然その振る舞いが異なるであろう。この前提の
下、命令シークエンスをその格納されているメモリ領域
の属性によって分類し、その分類ごとに、パフォーマン
スの測定とハードウェアコンフィグレーションの変更と
を動的に行うようにすることが考えられる。
いて適用することができる。すなわち、メモリは、キャ
ッシュ領域とアンキャッシュ領域とに区分することがで
きる。キャッシュ領域は、格納されているデータがキャ
ッシュメモリに格納され得る領域であり、アンキャッシ
ュ領域は、格納されているデータがキャッシュメモリに
格納されない領域である。したがって、例えば、アンキ
ャッシュ領域に格納されている命令シークエンスと、キ
ャッシュ領域に格納されている命令シークエンスとで
は、当然その振る舞いが異なるであろう。この前提の
下、命令シークエンスをその格納されているメモリ領域
の属性によって分類し、その分類ごとに、パフォーマン
スの測定とハードウェアコンフィグレーションの変更と
を動的に行うようにすることが考えられる。
【0094】〔第7実施形態〕本発明の第7実施形態
は、コンフィグレーションの設定に関する選択肢が3つ
以上ある場合に、第1の選択肢から第2の選択肢にコン
フィグレーションを変更した後、変更前よりもプロセッ
サのパフォーマンスが悪化した際には、第3の選択肢に
コンフィグレーションを変更するものである。
は、コンフィグレーションの設定に関する選択肢が3つ
以上ある場合に、第1の選択肢から第2の選択肢にコン
フィグレーションを変更した後、変更前よりもプロセッ
サのパフォーマンスが悪化した際には、第3の選択肢に
コンフィグレーションを変更するものである。
【0095】図12は、本実施形態に係るプロセッサの
ハードウェア構成を示すブロック図である。この図12
に示すように、本実施形態に係るプロセッサにおいて
は、上述した第1実施形態(図1参照)のプロセッサ
に、レジスタ817、818、819を追加している。
ハードウェア構成を示すブロック図である。この図12
に示すように、本実施形態に係るプロセッサにおいて
は、上述した第1実施形態(図1参照)のプロセッサ
に、レジスタ817、818、819を追加している。
【0096】レジスタ817は、コンフィグレーション
変更以前のキャッシュヒット回数を格納する。レジスタ
818は、 コンフィグレーション変更以前の 「リフィ
ルラインへの再アクセス数の合計」を格納する。レジス
タ819は、コンフィグレーション変更以前のラインサ
イズを格納する。
変更以前のキャッシュヒット回数を格納する。レジスタ
818は、 コンフィグレーション変更以前の 「リフィ
ルラインへの再アクセス数の合計」を格納する。レジス
タ819は、コンフィグレーション変更以前のラインサ
イズを格納する。
【0097】すなわち、レジスタ817は、論理回路3
13がコンフィグレーションを変更する時に、レジス3
90の保持する値がコピーされる。レジスタ818は、
論理回路313が、コンフィグレーションを変更する時
に、論理回路350の出力が格納される。レジスタ81
9は、論理回路313がコンフィグレーションを変更す
る時に、レジスタ301の格納するラインサイズがコピ
ーされる。
13がコンフィグレーションを変更する時に、レジス3
90の保持する値がコピーされる。レジスタ818は、
論理回路313が、コンフィグレーションを変更する時
に、論理回路350の出力が格納される。レジスタ81
9は、論理回路313がコンフィグレーションを変更す
る時に、レジスタ301の格納するラインサイズがコピ
ーされる。
【0098】これにより、これによりレジスタ817
は、コンフィグレーション変更以前のキャッシュヒット
回数を格納し、レジスタ818は、コンフィグレーショ
ン変更以前の「リフィルラインへの再アクセス回数」を
格納し、レジスタ819は、コンフィグレーション変更
以前のラインサイズを格納することになる。
は、コンフィグレーション変更以前のキャッシュヒット
回数を格納し、レジスタ818は、コンフィグレーショ
ン変更以前の「リフィルラインへの再アクセス回数」を
格納し、レジスタ819は、コンフィグレーション変更
以前のラインサイズを格納することになる。
【0099】論理回路313は、コンフィグレーション
変更時に、ラインサイズを増やす方向に変えたか、減ら
す方向に変えたかを記憶しておく。本実施形態において
は、ラインサイズとして選択され得る値の選択肢が、3
つ以上存在しているが、その選択肢はいくつあってもよ
い。
変更時に、ラインサイズを増やす方向に変えたか、減ら
す方向に変えたかを記憶しておく。本実施形態において
は、ラインサイズとして選択され得る値の選択肢が、3
つ以上存在しているが、その選択肢はいくつあってもよ
い。
【0100】本実施形態に係るプロセッサは、上述した
第1実施形態と同様のアルゴリズムで動作する。但し、
論理回路313が、2回目以降のラインサイズの最適化
のための性能評価を行ったときの動作が異なる。
第1実施形態と同様のアルゴリズムで動作する。但し、
論理回路313が、2回目以降のラインサイズの最適化
のための性能評価を行ったときの動作が異なる。
【0101】すなわち、前回の変化がラインサイズを大
きくする方向(論理回路313で記憶しておく)だった場
合、レジスタ818の格納する値と、論理回路350の
出力する値とを、比較する。レジスタ818の格納する
値の方が小さかった場合には、ラインサイズを大きくし
過ぎたために「リフィルラインへの再アクセス数」が減
少したと考えられるため、レジスタ301とレジスタ8
19との中間の値を、新たにレジスタ301にセットす
る。
きくする方向(論理回路313で記憶しておく)だった場
合、レジスタ818の格納する値と、論理回路350の
出力する値とを、比較する。レジスタ818の格納する
値の方が小さかった場合には、ラインサイズを大きくし
過ぎたために「リフィルラインへの再アクセス数」が減
少したと考えられるため、レジスタ301とレジスタ8
19との中間の値を、新たにレジスタ301にセットす
る。
【0102】前回の変化がラインサイズを小さくする方
向(論理313で記憶しておく)だった場合、レジスタ8
17の格納する値と、レジスタ390の格納する値と
を、比較する。レジスタ817の格納する値の方が小さ
かった場合、ラインサイズを小さくし過ぎたためにキャ
ッシュヒット率が減少したと考えられるから、レジスタ
301とレジスタ819の中間の値を、新たにレジスタ
801にセットする。
向(論理313で記憶しておく)だった場合、レジスタ8
17の格納する値と、レジスタ390の格納する値と
を、比較する。レジスタ817の格納する値の方が小さ
かった場合、ラインサイズを小さくし過ぎたためにキャ
ッシュヒット率が減少したと考えられるから、レジスタ
301とレジスタ819の中間の値を、新たにレジスタ
801にセットする。
【0103】以上のように、本実施形態に係るプロセッ
サによれば、前回のキャッシュメモリのラインサイズを
レジスタ819に保持しておき、ラインサイズ変更後の
パフォーマンスがラインサイズ変更前のパフォーマンス
より悪化していた場合には、前回のラインサイズと今回
のラインサイズの中間の値を、新たなラインサイズに設
定することとした。つまり、前回のラインサイズが第1
の選択肢であり、今回のラインサイズが第2の選択肢で
あり、第2の選択肢のパフォーマンスの方が、第1の選
択肢のパフォーマンスより悪い場合には、第3の選択肢
としてその中間値を採用することとした。このため、ユ
ーザが実行しているプログラムに対する可能な限り最適
なラインサイズを、短い時間で特定することができるよ
うになる。
サによれば、前回のキャッシュメモリのラインサイズを
レジスタ819に保持しておき、ラインサイズ変更後の
パフォーマンスがラインサイズ変更前のパフォーマンス
より悪化していた場合には、前回のラインサイズと今回
のラインサイズの中間の値を、新たなラインサイズに設
定することとした。つまり、前回のラインサイズが第1
の選択肢であり、今回のラインサイズが第2の選択肢で
あり、第2の選択肢のパフォーマンスの方が、第1の選
択肢のパフォーマンスより悪い場合には、第3の選択肢
としてその中間値を採用することとした。このため、ユ
ーザが実行しているプログラムに対する可能な限り最適
なラインサイズを、短い時間で特定することができるよ
うになる。
【0104】なお、本発明は上記実施形態に限定されず
種々に変形可能である。例えば、上述した実施形態にお
いては、パフォーマンスを測定したり、コンフィグレー
ションを変更するモジュールが、キャッシュメモリモジ
ュールや、分岐予測モジュールである場合を例に説明し
たが、これに限るものではない。また、あるモジュール
のパフォーマンスを測定した結果に基づいて、パフォー
マンスを測定したモジュールと別のモジュールのコンフ
ィグレーションを変更したり、プロセッサそのもののコ
ンフィグレーションを変更してもよい。さらに、上述し
た実施形態においては、プロセッサのパフォーマンスを
CPIに基づいて判断することとしたが、その判断指標
はCPIに限るものではない。
種々に変形可能である。例えば、上述した実施形態にお
いては、パフォーマンスを測定したり、コンフィグレー
ションを変更するモジュールが、キャッシュメモリモジ
ュールや、分岐予測モジュールである場合を例に説明し
たが、これに限るものではない。また、あるモジュール
のパフォーマンスを測定した結果に基づいて、パフォー
マンスを測定したモジュールと別のモジュールのコンフ
ィグレーションを変更したり、プロセッサそのもののコ
ンフィグレーションを変更してもよい。さらに、上述し
た実施形態においては、プロセッサのパフォーマンスを
CPIに基づいて判断することとしたが、その判断指標
はCPIに限るものではない。
【0105】
【発明の効果】以上説明したように、本発明によれば、
各種の処理を行うモジュールやプロセッサそのもののパ
フォーマンスを測定し、その測定結果に基づいて、モジ
ュールやプロセッサのコンフィグレーションを変更する
こととしたので、ユーザが実際に実行するプログラムに
適したコンフィグレーションを設定することができるよ
うになる。
各種の処理を行うモジュールやプロセッサそのもののパ
フォーマンスを測定し、その測定結果に基づいて、モジ
ュールやプロセッサのコンフィグレーションを変更する
こととしたので、ユーザが実際に実行するプログラムに
適したコンフィグレーションを設定することができるよ
うになる。
【図1】本発明の第1実施形態に係るプロセッサの主要
部をブロックで示す図。
部をブロックで示す図。
【図2】本発明の第1実施形態に係るプロセッサの変形
例を示す図。
例を示す図。
【図3】本発明の第1実施形態に係るプロセッサのさら
に別の変形例を示す図。
に別の変形例を示す図。
【図4】本発明の第2実施形態に係るプロセッサの主要
部をブロックで示す図。
部をブロックで示す図。
【図5】本発明の第2実施形態に係るプロセッサの変形
例を示す図。
例を示す図。
【図6】本発明の第2実施形態に係るプロセッサのさら
に別の変形例を示す図。
に別の変形例を示す図。
【図7】本発明の第3実施形態に係るプロセッサの主要
部をブロックで示す図。
部をブロックで示す図。
【図8】本発明の第3実施形態に係るプロセッサの変形
例を示す図。
例を示す図。
【図9】本発明の第3実施形態に係るプロセッサのさら
に別の変形例を示す図。
に別の変形例を示す図。
【図10】本発明の第4実施形態に係るプロセッサの主
要部をブロックで示す図。
要部をブロックで示す図。
【図11】本発明の第5実施形態に係るプロセッサの主
要部をブロックで示す図。
要部をブロックで示す図。
【図12】本発明の第7実施形態に係るプロセッサの主
要部をブロックで示す図。
要部をブロックで示す図。
【図13】従来のプロセッサの一例を示す図。
【図14】従来の別のプロセッサの一例を示す図。
301、310、311、312、316、370、3
90 レジスタ 313、350 論理回路 314 TLB 315 アドレス比較器 320 レジスタファイル 330 データキャッシュコントロール 340 データキャッシュタグ 360、380 カウンタ
90 レジスタ 313、350 論理回路 314 TLB 315 アドレス比較器 320 レジスタファイル 330 データキャッシュコントロール 340 データキャッシュタグ 360、380 カウンタ
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 9/38 330 G06F 9/38 330A 380 380C 11/34 11/34 S Fターム(参考) 5B005 JJ13 KK12 MM02 MM03 NN23 QQ06 VV02 VV24 5B013 BB01 EE09 5B042 GA15 GA33 HH20 JJ41 MC24 MC25 MC28 NN38
Claims (24)
- 【請求項1】各種の処理を行うモジュールと、 前記モジュールが各種の処理を行う際のパフォーマンス
を測定する、パフォーマンス測定手段と、 前記パフォーマンス測定手段により測定された測定結果
に基づいて、前記モジュール及び/又は当該プロセッサ
のコンフィグレーションを変更するか否かを判断し、そ
の判断結果に応じてそのコンフィグレーションを変更す
る、コンフィグレーション変更手段と、 を備えることを特徴とするプロセッサ。 - 【請求項2】当該プロセッサが行う各種の処理のパフォ
ーマンスを測定する、パフォーマンス測定手段と、 前記パフォーマンス測定手段により測定された測定結果
に基づいて、各種の処理を行うモジュール及び/又は当
該プロセッサのコンフィグレーションを変更するか否か
を判断し、その判断結果に応じてそのコンフィグレーシ
ョンを変更する、コンフィグレーション変更手段と、 を備えることを特徴とするプロセッサ。 - 【請求項3】前記コンフィグレーション変更手段がコン
フィグレーションを変更するために費やす性能ペナルテ
ィを測定する手段、前記コンフィグレーション変更手段
がコンフィグレーションを変更するために費やす性能ペ
ナルティを算出するのに必要な事項を測定する手段、又
は、予め測定若しくは計算された前記コンフィグレーシ
ョン変更手段がコンフィグレーションを変更するために
費やす性能ペナルティを記憶する手段を、さらに備える
ことを特徴とする請求項1又は請求項2に記載のプロセ
ッサ。 - 【請求項4】前記コンフィグレーション変更手段は、前
記パフォーマンス測定手段により測定された測定結果
と、コンフィグレーションを変更するために費やす性能
ペナルティとの双方に基づいて、前記モジュール及び/
又は当該プロセッサのコンフィグレーションを変更する
か否かを判断する、ことを特徴とする請求項1乃至請求
項3のいずれかに記載のプロセッサ。 - 【請求項5】所定の時間が経過したことを検出する、時
間検出手段と、 前記所定の時間に実行された命令数を測定する、実行命
令数測定手段と、 を備えるとともに、 前記コンフィグレーション変更手段は、前記所定の時間
と前記実行命令数測定手段の測定結果とに基づいて、前
記モジュール及び/又は当該プロセッサのコンフィグレ
ーションを変更するか否かを判断する、 ことを特徴とする請求項1乃至請求項4のいずれかに記
載のプロセッサ。 - 【請求項6】前記時間検出手段は、各種の処理の同期を
とるためのクロック信号のクロック数をカウントする第
1カウンタで構成され、 前記実行命令数測定手段は、各命令の実行が終了した場
合に出力される命令終了信号をカウントする第2カウン
タで構成されている、 ことを特徴とする請求項5に記載のプロセッサ。 - 【請求項7】前記コンフィグレーション変更手段におけ
るコンフィグレーションの変更は、当該プロセッサを起
動した後に、1又は複数回行われることを特徴とする請
求項1乃至請求項6のいずれかに記載のプロセッサ。 - 【請求項8】コンフィグレーションを変更する前に前記
パフォーマンス測定手段が測定したパフォーマンスの測
定結果を保持する、変更前パフォーマンス測定結果保持
手段と、 コンフィグレーションを変更した後の前記パフォーマン
ス測定手段が測定したパフォーマンスの測定結果と、前
記変更前パフォーマンス測定結果保持手段が保持するパ
フォーマンスの測定結果とを、比較する、比較手段と、 をさらに備えるとともに、 前記コンフィグレーション変更手段は、コンフィグレー
ションを変更する前よりも、コンフィグレーションを変
更した後の方が、パフォーマンスの測定結果が悪い場合
には、コンフィグレーションの設定を変更前のものに戻
す、ことを特徴とする請求項1乃至請求項7のいずれか
に記載のプロセッサ。 - 【請求項9】前記コンフィグレーション変更手段が、変
更前のコンフィグレーションに戻した場合には、それ以
降、コンフィグレーションの変更を行わない、ことを特
徴とする請求項8に記載のプロセッサ。 - 【請求項10】コンフィグレーションを変更する前に前
記パフォーマンス測定手段が測定したパフォーマンスの
測定結果を保持する、変更前パフォーマンス測定結果保
持手段と、 コンフィグレーションを変更した後の前記パフォーマン
ス測定手段が測定したパフォーマンスの測定結果と、前
記変更前パフォーマンス測定結果保持手段が保持するパ
フォーマンスの測定結果とを、比較する、比較手段と、 をさらに備えるとともに、 前記コンフィグレーション変更手段は、コンフィグレー
ションを変更する前よりも、コンフィグレーションを変
更した後の方が、パフォーマンスの測定結果が悪い場合
には、コンフィグレーションを変更前と変更後のいずれ
とも異なる設定に変更する、ことを特徴とする請求項1
乃至請求項7のいずれかに記載のプロセッサ。 - 【請求項11】前記コンフィグレーション変更手段によ
るコンフィグレーションの変更を、行うか否かをユーザ
が切り替えるための、切替手段を、 さらに備えることを特徴とする請求項1乃至請求項10
のいずれかに記載のプロセッサ。 - 【請求項12】前記切替手段は、ユーザが手動で切替可
能な外部ピンである、ことを特徴とする請求項11に記
載のプロセッサ。 - 【請求項13】前記切替手段は、ユーザがソフトウェア
で書き替え可能なレジスタである、ことを特徴とする請
求項11に記載のプロセッサ。 - 【請求項14】前記パフォーマンス測定手段は、メモリ
を複数の領域に区分し、命令が格納されているメモリの
領域毎に、独立に、パフォーマンスを測定する、ことを
特徴とする請求項1乃至請求項13のいずれかに記載の
プロセッサ。 - 【請求項15】前記コンフィグレーション変更手段は、
コンフィグレーションの変更を、前記メモリの領域毎
に、独立して行う、ことを特徴とする請求項14に記載
のプロセッサ。 - 【請求項16】複数の動作モードを有するとともに、 前記パフォーマンス測定手段は、前記動作モード毎に独
立に、パフォーマンスを測定することを特徴とする請求
項1乃至請求項13のいずれかに記載のプロセッサ。 - 【請求項17】前記コンフィグレーション変更手段は、
コンフィグレーションの変更を、前記動作モード毎に、
独立して行う、ことを特徴とする請求項16に記載のプ
ロセッサ。 - 【請求項18】前記コンフィグレーションとは、キャッ
シュメモリのラインサイズである、ことを特徴とする請
求項1乃至請求項17のいずれかに記載のプロセッサ。 - 【請求項19】前記モジュールのパフォーマンスとは、
前記キャッシュメモリのヒット率又はミス率である、こ
とを特徴とする請求項18に記載のプロセッサ。 - 【請求項20】フェッチした分岐命令がどちらに分岐す
るかを予測し、実行されるとして予測した命令をターゲ
ット命令とする、分岐予測部を、さらに備えるととも
に、 前記コンフィグレーションとは、前記ターゲット命令を
フェッチする際にキャッシュミスを起こした場合に、そ
の分岐命令の実行結果が確定する前に前記ターゲット命
令を外部メモリからフェッチするか否かの設定である、
ことを特徴とする請求項1乃至請求項17のいずれかに
記載のプロセッサ。 - 【請求項21】前記モジュールのパフォーマンスとは、
前記分岐予測部における分岐予測のヒット率である、こ
とを特徴とする請求項19に記載のプロセッサ。 - 【請求項22】前記コンフィグレーションとは、データ
キャッシュメモリのストアアルゴリズムである、ことを
特徴とする請求項1乃至請求項17のいずれかに記載の
プロセッサ。 - 【請求項23】前記モジュールのパフォーマンスとは、
ストアミスでリフィルされたキャッシュラインの再利用
率である、ことを特徴とする請求項22に記載のプロセ
ッサ。 - 【請求項24】当該プロセッサのパフォーマンスとは、
1命令を実行するのに要する平均クロック数である、こ
とを特徴とする請求項18乃至請求項23のいずれかに
記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000361282A JP2002163150A (ja) | 2000-11-28 | 2000-11-28 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000361282A JP2002163150A (ja) | 2000-11-28 | 2000-11-28 | プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002163150A true JP2002163150A (ja) | 2002-06-07 |
Family
ID=18832738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000361282A Withdrawn JP2002163150A (ja) | 2000-11-28 | 2000-11-28 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2002163150A (ja) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003007155A1 (fr) * | 2001-07-12 | 2003-01-23 | Ip Flex Inc. | Dispositif a circuit integre |
JP2005249735A (ja) * | 2004-03-08 | 2005-09-15 | Advantest Corp | パターン発生器、及び試験装置 |
WO2005103886A1 (ja) | 2004-04-21 | 2005-11-03 | Fujitsu Limited | 分岐予測装置、その方法、及びプロセサ |
JP2007087372A (ja) * | 2005-08-23 | 2007-04-05 | Canon Inc | メモリ装置、およびメモリ制御方法 |
KR100723475B1 (ko) | 2004-03-30 | 2007-05-31 | 삼성전자주식회사 | 캐쉬 메모리 시스템과 버스의 버스 레이턴시 변화에 따라캐쉬 메모리의 라인 사이즈를 변경하는 방법 |
JP2007172623A (ja) * | 2005-12-22 | 2007-07-05 | Arm Ltd | 集積回路内の可変サイズキャッシュメモリのサポート |
CN100339826C (zh) * | 2004-06-24 | 2007-09-26 | 富士通株式会社 | 处理器和半导体器件 |
JP2010033317A (ja) * | 2008-07-29 | 2010-02-12 | Toshiba Corp | キャッシュシステム |
US8094160B2 (en) | 2006-09-04 | 2012-01-10 | Fujitsu Limited | Moving-picture processing apparatus and pre-fetch control method |
JP5347019B2 (ja) * | 2009-04-10 | 2013-11-20 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路 |
WO2015034082A1 (ja) * | 2013-09-06 | 2015-03-12 | 株式会社 東芝 | メモリ制御回路およびキャッシュメモリ |
JP2015532496A (ja) * | 2012-10-18 | 2015-11-09 | ゼットティーイー コーポレーションZte Corporation | キャッシュのキャッシュライン長を調整する方法及び装置 |
JP2015210574A (ja) * | 2014-04-24 | 2015-11-24 | 富士通株式会社 | 情報処理装置,処理方法及び処理プログラム |
US11321245B2 (en) | 2016-04-27 | 2022-05-03 | Advanced Micro Devices, Inc. | Selecting cache aging policy for prefetches based on cache test regions |
JP7468218B2 (ja) | 2020-07-22 | 2024-04-16 | 富士通株式会社 | 半導体装置およびキャッシュの制御方法 |
JP7553478B2 (ja) | 2019-05-24 | 2024-09-18 | テキサス インスツルメンツ インコーポレイテッド | 書き込みミスエントリのドレインをサポートする犠牲キャッシュ |
-
2000
- 2000-11-28 JP JP2000361282A patent/JP2002163150A/ja not_active Withdrawn
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6868017B2 (en) | 2001-07-12 | 2005-03-15 | Ip Flex Inc. | Integrated circuit device |
WO2003007155A1 (fr) * | 2001-07-12 | 2003-01-23 | Ip Flex Inc. | Dispositif a circuit integre |
JP2005249735A (ja) * | 2004-03-08 | 2005-09-15 | Advantest Corp | パターン発生器、及び試験装置 |
JP4486383B2 (ja) * | 2004-03-08 | 2010-06-23 | 株式会社アドバンテスト | パターン発生器、及び試験装置 |
KR100723475B1 (ko) | 2004-03-30 | 2007-05-31 | 삼성전자주식회사 | 캐쉬 메모리 시스템과 버스의 버스 레이턴시 변화에 따라캐쉬 메모리의 라인 사이즈를 변경하는 방법 |
US7827393B2 (en) | 2004-04-21 | 2010-11-02 | Fujitsu Limited | Branch prediction apparatus, its method and processor |
WO2005103886A1 (ja) | 2004-04-21 | 2005-11-03 | Fujitsu Limited | 分岐予測装置、その方法、及びプロセサ |
CN100339826C (zh) * | 2004-06-24 | 2007-09-26 | 富士通株式会社 | 处理器和半导体器件 |
JP2007087372A (ja) * | 2005-08-23 | 2007-04-05 | Canon Inc | メモリ装置、およびメモリ制御方法 |
JP2007172623A (ja) * | 2005-12-22 | 2007-07-05 | Arm Ltd | 集積回路内の可変サイズキャッシュメモリのサポート |
US8094160B2 (en) | 2006-09-04 | 2012-01-10 | Fujitsu Limited | Moving-picture processing apparatus and pre-fetch control method |
JP2010033317A (ja) * | 2008-07-29 | 2010-02-12 | Toshiba Corp | キャッシュシステム |
US8312221B2 (en) | 2008-07-29 | 2012-11-13 | Kabushiki Kaisha Toshiba | Cache system, cache system control method, and information processing apparatus |
JP5347019B2 (ja) * | 2009-04-10 | 2013-11-20 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリ制御方法、プログラムおよび集積回路 |
JP2015532496A (ja) * | 2012-10-18 | 2015-11-09 | ゼットティーイー コーポレーションZte Corporation | キャッシュのキャッシュライン長を調整する方法及び装置 |
WO2015034082A1 (ja) * | 2013-09-06 | 2015-03-12 | 株式会社 東芝 | メモリ制御回路およびキャッシュメモリ |
JP2015052940A (ja) * | 2013-09-06 | 2015-03-19 | 株式会社東芝 | メモリ制御回路およびキャッシュメモリ |
US9786342B2 (en) | 2013-09-06 | 2017-10-10 | Kabushiki Kaisha Toshiba | Memory control circuit and cache memory |
JP2015210574A (ja) * | 2014-04-24 | 2015-11-24 | 富士通株式会社 | 情報処理装置,処理方法及び処理プログラム |
US11321245B2 (en) | 2016-04-27 | 2022-05-03 | Advanced Micro Devices, Inc. | Selecting cache aging policy for prefetches based on cache test regions |
JP7553478B2 (ja) | 2019-05-24 | 2024-09-18 | テキサス インスツルメンツ インコーポレイテッド | 書き込みミスエントリのドレインをサポートする犠牲キャッシュ |
JP7468218B2 (ja) | 2020-07-22 | 2024-04-16 | 富士通株式会社 | 半導体装置およびキャッシュの制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
US6157993A (en) | Prefetching data using profile of cache misses from earlier code executions | |
US6351796B1 (en) | Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache | |
US5943687A (en) | Penalty-based cache storage and replacement techniques | |
US5553255A (en) | Data processor with programmable levels of speculative instruction fetching and method of operation | |
KR100973951B1 (ko) | 오정렬 메모리 액세스 예측 | |
US7647518B2 (en) | Replay reduction for power saving | |
US8131951B2 (en) | Utilization of a store buffer for error recovery on a store allocation cache miss | |
JP3494484B2 (ja) | 命令処理装置 | |
EP0950222B1 (en) | Prefetch management in cache memory | |
JP2002163150A (ja) | プロセッサ | |
US7526609B2 (en) | Runtime register allocator | |
JPH10232827A (ja) | 先取りキャッシュ書戻しの方法と装置 | |
GB2577050A (en) | Allocation filter for prediction storage structure | |
US20070288694A1 (en) | Data processing system, processor and method of data processing having controllable store gather windows | |
JP2003519832A (ja) | アントレーニングを備えるストア−ロード転送プレディクタ | |
US6651162B1 (en) | Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache | |
US20210011729A1 (en) | Managing Commit Order for an External Instruction Relative to Queued Instructions | |
JP2007304663A (ja) | プロセッサ及びそのデータ処理方法 | |
JP3862959B2 (ja) | マイクロプロセッサのロード/ストア命令制御回路、およびロード/ストア命令制御方法 | |
US20080141002A1 (en) | Instruction pipeline monitoring device and method thereof | |
US20100146212A1 (en) | Accessing a cache memory with reduced power consumption | |
US7062607B2 (en) | Filtering basic instruction segments in a processor front-end for power conservation | |
US6742102B2 (en) | Microprocessor and cache controlling method | |
US7376797B2 (en) | Cache memory system and method using reference bits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080205 |