JP2004348175A - プリフェッチ命令制御方法、プリフェッチ命令制御装置、およびキャッシュメモリ制御装置 - Google Patents
プリフェッチ命令制御方法、プリフェッチ命令制御装置、およびキャッシュメモリ制御装置 Download PDFInfo
- Publication number
- JP2004348175A JP2004348175A JP2003136387A JP2003136387A JP2004348175A JP 2004348175 A JP2004348175 A JP 2004348175A JP 2003136387 A JP2003136387 A JP 2003136387A JP 2003136387 A JP2003136387 A JP 2003136387A JP 2004348175 A JP2004348175 A JP 2004348175A
- Authority
- JP
- Japan
- Prior art keywords
- prefetch instruction
- cost
- time
- protocol
- instruction
- 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
- 238000000034 method Methods 0.000 title claims description 25
- 238000011156 evaluation Methods 0.000 claims description 23
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 16
- 230000014759 maintenance of location Effects 0.000 description 4
- 101000605019 Lachesana tarabaevi M-zodatoxin-Lt1a Proteins 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 101100194362 Schizosaccharomyces pombe (strain 972 / ATCC 24843) res1 gene Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【解決手段】プロトコルスロット生成部50は、CPU12からプリフェッチデータの利用予定時刻が指定されたプリフェッチ命令を受け取った場合は、利用予定時刻にもとづいてプロトコルスロットを生成して、スケジュールリスト記憶部56に登録し、通常のアクセス命令を受け取った場合は、プロトコルスロットを通常プロトコルキュー記憶部58に登録する。コスト評価部52は、プリフェッチ命令の発行コストをプリフェッチデータのキャッシュ滞留時間にもとづいて評価し、通常のアクセス命令の発行コストをリソースの占有コストにより評価する。プロトコル発行部54は、これらの発行コストの評価結果にもとづき、プリフェッチ命令を発行するか、通常のアクセス命令を発行するかを決定する。
【選択図】 図5
Description
【発明の属する技術分野】
この発明はキャッシュ制御技術、とくにプリフェッチ命令を制御する方法と装置、ならびにキャッシュメモリ制御装置に関する。
【0002】
【従来の技術】
コンピュータのプロセッサによるI/OやDRAMなどの主記憶の参照には局所性がある。この局所性を利用して、頻繁に参照される主記憶のデータを高速で小容量の内部メモリであるキャッシュメモリにコピーし、主記憶へのアクセスをこのキャッシュメモリに対して行うことによって、メモリアクセスにかかるレーテンシーを短縮することができる。プロセッサの処理性能の向上が進められる中、プロセッサに高速にデータを供給する上でキャッシュメモリの重要性は高まっている。
【0003】
キャッシュがヒットした場合、プロセッサはキャッシュメモリのアクセス速度で必要なデータを得ることができるが、キャッシュミスの場合、プロセッサは主記憶からキャッシュメモリにデータが転送される間、プログラムの実行を停止しなければならない。キャッシュミスは、キャッシュの容量が十分でないため、キャッシュしたデータが追い出されることや、アクセスしたいデータが初期参照であるため、キャッシュメモリ内に主記憶のデータのコピーが存在していないために起こる。前者の問題は、キャッシュメモリの容量を大きくすることで回避できるが、キャッシュメモリの容量を大きくすると高価になり、大容量化は困難である。後者の問題に対しては、将来使用されることが予想されるデータを実行に先だってあらかじめキャッシュメモリへ転送しておくプリフェッチと呼ばれる方法がある。
【0004】
【発明が解決しようとする課題】
プリフェッチはメモリアクセス時間をさらに短縮するために有効な手段であるが、投機的なプリフェッチによりかえってキャッシュメモリの効率が下がることもある。キャッシュメモリの容量が小さい場合にプリフェッチを多用すると、プリフェッチしたデータにより既にキャッシュされていたデータがキャッシュアウトされてしまうからである。プリフェッチ命令をどのような状況でいつ発行するのがよいのか、はっきりとした指針がないため、プリフェッチ命令の利用できるプロセッサは多いものの、プリフェッチ命令はあまり有効に使用されていないのが現状である。
【0005】
本発明はこうした課題に鑑みてなされたものであり、その目的は、効率的なメモリアクセスが可能なプリフェッチ命令制御方法と装置、ならびにキャッシュメモリ制御装置を提供することにある。
【0006】
【課題を解決するための手段】
本発明のある態様はプリフェッチ命令制御方法に関する。この方法は、データのプリフェッチ命令に、そのデータの利用時刻に関する情報を付加し、前記利用時刻に関する情報をもとに前記プリフェッチ命令の発行タイミングをスケジュールする。プリフェッチデータの利用時刻に関する情報には、そのデータの利用開始時点や利用終了時点を相対時間または絶対時間で指定した情報が含まれる。発行タイミングとは、プリフェッチ命令が外部リソースに対する実プロトコルとして実行に移されるタイミングをいう。発行タイミングのスケジュールとは、プリフェッチ命令の発行時刻を調整したり、複数のプリフェッチ命令の間で発行順序を調整することなどである。また、プリフェッチ命令と、通常のロード命令やストア命令などのアクセス命令との間で発行タイミングを調整してもよい。
【0007】
本発明の別の態様はプリフェッチ命令制御装置に関する。この装置は、データの利用時刻に関する情報が付加された、外部リソースに対するプリフェッチ命令を記憶する記憶部と、記憶された前記プリフェッチ命令を発行した場合に、前記利用時刻に到達するまでプリフェッチされたデータがキャッシュに滞留することによるコストを評価するコスト評価部と、前記コスト評価部による評価結果にもとづいて、記憶された前記プリフェッチ命令を前記外部リソースに対して発行するタイミングを調整する発行部とを含む。
【0008】
前記コスト評価部は、前記プリフェッチ命令の発行コストと、前記外部リソースのアクセスリクエストのキューに格納された通常のアクセス命令の発行コストを比較し、前記発行部は、前記コスト評価部による比較結果にもとづいて、現時刻で前記プリフェッチ命令と前記通常のアクセス命令のいずれを発行するかを決定してもよい。前記コスト評価部は、前記発行部による命令の発行の度に、発行コストを再計算し、発行コストを現時刻における値に更新してもよい。
【0009】
プリフェッチ命令の発行コストの評価の際、プリフェッチ命令の発行により外部リソースのアクセスリクエストのキューに格納された通常のアクセス命令の発行が遅延するコストや、データの利用時刻までにプリフェッチが間に合わなくなるリスクを合わせて評価してもよい。
【0010】
本発明のさらに別の態様はキャッシュメモリ制御装置に関する。この装置は、外部リソースから取得したデータをキャッシュしてプロセッサに供給するキャッシュメモリと、前記プロセッサから前記外部リソースに対するアクセスプロトコルを受け取り、アクセスプロトコルをスケジュールして前記外部リソースのリクエストキューに設定するスケジューラと、前記リクエストキューから前記アクセスプロトコルを読み出し、前記外部リソースにアクセスして前記キャッシュメモリにデータを供給する外部リソースコントローラとを含み、前記スケジューラは、前述のプリフェッチ命令制御装置である。
【0011】
前記スケジューラは、前記プリフェッチ命令の発行後に、前記利用時刻に関する情報に含まれるプリフェッチデータの利用開始時刻および利用終了時刻にもとづき、利用開始から終了までの間、前記キャッシュメモリにおけるプリフェッチデータのキャッシュをロックしてもよい。
【0012】
本発明のさらに別の態様はコンピュータプログラムに関する。このプログラムは、ソースコードを解析して中間コードに変換するステップと、前記中間コードにもとづいて、キャッシュメモリへプリフェッチすべきデータを決定し、そのデータに対するアクセス命令を元の実行順序位置よりも前の位置にプリフェッチ命令として挿入し、そのプリフェッチ命令にデータの利用時刻に関する情報を付加するステップと、前記プリフェッチ命令を含む前記中間コードを最適化してオブジェクトコードを生成するステップとをコンピュータに実行させる。
【0013】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【0014】
【発明の実施の形態】
図1は、実施の形態に係るプロセッサシステムの構成図である。このプロセッサシステムは、プロセッサモジュール10と、ブリッジモジュール20と、I/Oモジュール30と、メモリモジュール40とを含む。プロセッサモジュール10は内部バス32に、I/Oモジュール30はI/Oバス34に、メモリモジュール40はメモリバス36にそれぞれ接続されている。ブリッジモジュール20は、内部バス32とI/Oバス34をブリッジして、プロセッサモジュール10によるI/Oモジュール30に対するデータの読み書きを制御する。また、ブリッジモジュール20は、内部バス32とメモリバス36をブリッジして、プロセッサモジュール10によるメモリモジュール40に対するデータの読み書きを制御する。
【0015】
プロセッサモジュール10は、CPU12と、キャッシュメモリ14と、キャッシュコントローラ16を含む。CPU12がI/OやDRAMなどのリソースIDとデータのアドレスを指定してロード命令、ストア命令、プリフェッチ命令などのアクセスプロトコルを発行すると、ブリッジモジュール20のスケジューラ22はアクセスプロトコルのスロットをバッファメモリ24に登録する。スケジューラ22は、各リソースのアクセスの待ち時間やアクセス速度などのスタティックなリソース情報と、登録されたアクセスプロトコルの待ち状態などのダイナミックな情報を管理し、これらの情報にもとづいて、アクセスプロトコルの発行タイミングをスケジュールして、各リソースのリクエストキューにアクセスプロトコルを設定する。
【0016】
I/Oコントローラ26およびメモリコントローラ28は、それぞれのリクエストキューに設定されたアクセスプロトコルを読み出し、それぞれI/Oモジュール30およびメモリモジュール40にアクセスして指定されたアドレスのデータを読み出す。読み出されたデータは内部バス32を介してプロセッサモジュール10のキャッシュコントローラ16に供給され、キャッシュコントローラ16は、そのデータをキャッシュメモリ14にキャッシュするとともに、CPU12にそのデータを提供する。以降、CPU12が同じアドレスのデータをアクセスすると、キャッシュコントローラ16がキャッシュメモリ14からキャッシュされたデータをCPU12に供給する。キャッシュミスの場合は、ブリッジモジュール20を経由して前述のようにデータが読み出される。
【0017】
プロセッサモジュール10およびブリッジモジュール20は、本発明のキャッシュメモリ制御装置の一例であり、ブリッジモジュール20のスケジューラ22およびバッファメモリ24は、本発明のプリフェッチ制御装置の一例である。
【0018】
CPU12は、メモリモジュール40にロードされたコンパイラを実行して、プログラムのソースコードをコンパイルし、オブジェクトコードを生成する。このオブジェクトコードの生成過程で、プリフェッチ命令が挿入される。
【0019】
図2は、プログラムのコンパイル手順を説明するフローチャートである。コンパイラは、プログラムのソースコードを解析して中間コードに変換する(S10)。次にコンパイラは、中間コードにもとづいてロード命令によりアクセスされるデータの内、プリフェッチすべきものを決定し、そのデータのアドレスを算出する(S12)。次に、コンパイラは、そのロード命令の実行順序位置よりも前の位置に、そのデータのアドレスを引数として指定したプリフェッチ命令を挿入し、そのデータが実際に利用される時刻がプリフェッチ命令の挿入位置から何ステップ先であるかを示した利用時刻指定情報をプリフェッチ命令のもう一つの引数として付加する(S14)。コンパイラは、こうして利用時刻指定情報付きのプリフェッチ命令(以下、拡張プリフェッチ命令と呼ぶ)が挿入された中間コードを最適化し(S16)、オブジェクトコードを生成する(S18)。なお、拡張プリフェッチ命令は、コンパイラによらずに、注意深くチューニングされたアセンブラプログラムによって挿入されてもよい。
【0020】
図3(a)〜(d)は、図2のコンパイル手順により拡張プリフェッチ命令が挿入されたプログラムの例を説明する図である。プログラム60には、ロード命令(LD)、ストア命令(ST)、拡張プリフェッチ命令(PreFetch)などのアクセスプロトコルが含まれる。図3(a)の例では、ロード命令64、66で利用されるデータyyy−0、yyy−1を含むデータエリアyyyをあらかじめキャッシュするための拡張プリフェッチ命令62aが、ロード命令64の実行順序位置よりもnステップ前に挿入されている。
【0021】
拡張プリフェッチ命令62aの引数には、プリフェッチすべきデータエリアyyyと、利用開始時刻nが指定される。利用開始時刻nにより、拡張プリフェッチ命令62aの挿入位置から数えてnステップ先でデータエリアyyyへのアクセスが始まることを知ることができる。しかし(n+1)ステップ以降に、データエリアyyyへのアクセスがあるかどうかは不明である。一般に、配列データの場合にはデータエリアyyy内の連続したデータが一度にアクセスされるため、(n+1)ステップ以降にもデータエリアyyy内のデータが利用される可能性がある。したがって、この拡張プリフェッチ命令62aの利用開始時刻nから判断できることは、斜線で示したように、nステップ先以降にデータエリアyyyへのアクセスがあるということだけである。
【0022】
図3(b)の例では、拡張プリフェッチ命令62bの引数に、利用時刻指定情報として、プリフェッチされるデータエリアyyyの利用開始時刻nと利用終了時刻mが指定される。データエリアyyyは、拡張プリフェッチ命令62bの挿入位置から数えてnステップ後のロード命令64で初めてアクセスされ、mステップ後のストア命令68で最後にアクセスされる。すなわち、斜線で示した区間でのみデータエリアyyyがアクセスされる。このようにデータエリアyyyの利用開始時刻nと利用終了時刻mの両方を指定することにより、データエリアyyyのキャッシュをロックすべき期間を明確にすることができる。
【0023】
図3(c)の例では、拡張プリフェッチ命令62cの引数に、プリフェッチされるデータエリアyyyの利用開始時刻nと優先度cが指定される。この優先度cは、複数のプリフェッチ命令が登録されている場合に、どのプリフェッチ命令を先に発行するかを決めるために利用される。また優先度cは、プリフェッチしたデータがキャッシュアウトされるときに、どのキャッシュデータを先にキャッシュアウトするかを決めるためにも利用される。
【0024】
図3(d)の例では、拡張プリフェッチ命令62dの引数に、プリフェッチされるデータyyyの利用時刻指定情報として、既に述べた利用開始時刻nと利用終了時刻mが指定され、さらに優先度cも指定される。
【0025】
図4は、拡張プリフェッチ命令の発行によりキャッシュメモリ14のキャッシュがロックされる様子を説明する図である。ここでは、図3(d)の拡張プリフェッチ命令62dを例に説明する。CPU12によりプログラム60が実行され、プログラムカウンタPCが同図の位置まで到達すると、プリフェッチ命令62dが発行される。CPU12は、プリフェッチ命令の引数に指定されたデータエリアyyy、利用開始時刻n、利用終了時刻m、優先度c、およびプログラムカウンタPCの値pcを用いて、スケジューラ22にジャスト・イン・タイムプロトコルLoadtoCache(yyy,pc,n,m,c)を発行する。
【0026】
CPU12が発行したジャスト・イン・タイムプロトコルを受け取ったスケジューラ22は、キャッシュコントローラ16に対して、現在のプログラムカウンタPCの値pcから数えて(pc+m)ステップ先までデータエリアyyyのキャッシュをロックする予約指示を行う。スケジューラ22は、アクセス対象のDRAMやI/Oなどのリソースのレーテンシーやバンド幅などの静的な特性と、リソースのリクエストキューの動的な状態をもとに、プリフェッチ命令62dの発行タイミングをスケジュールして、リソースのリクエストプロトコルキューに実プロトコルを設定する。スケジューラ22は、実プロトコルが発行された時点で、データエリアyyyのキャッシュのロックを開始する指示をキャッシュコントローラ16に与える。キャッシュコントローラ16は、ロックの開始指示を受け取った時点から予約指示により指定されたロック終了時点までの期間、データエリアyyyのキャッシュをロックする。
【0027】
図5は、図1で説明したブリッジモジュール20を機能面から見た構成図である。プロトコルスロット生成部50、コスト評価部52、およびプロトコル発行部54は、図1のスケジューラ22に実現される機能構成であり、スケジュールリスト記憶部56および通常プロトコルキュー記憶部58は、図1のバッファメモリ24に実現される機能構成である。
【0028】
プロトコルスロット生成部50は、CPU12からアクセスプロトコルを受け取る。アクセスプロトコルには、拡張プリフェッチ命令にもとづいたジャスト・イン・タイムプロトコルと、通常のロード命令やストア命令にもとづいた通常アクセスプロトコルとがある。
【0029】
図6は、プロトコルスロット生成部50によるプロトコルスロットの生成手順を説明するフローチャートである。まず、プロトコルスロット生成部50は、CPU12から受け取ったアクセスプロトコルがジャスト・イン・タイムプロトコルかどうかを識別し(S20)、ジャスト・イン・タイムプロトコルであれば(S20のY)、拡張プリフェッチ命令においてプログラムカウンタPCの値pcからnステップ後と指定されていた利用時刻をスケジューラ22におけるカウンタの単位時間に補正する(S22)。次に、このジャスト・イン・タイムプロトコルによるアクセスでリソースが占有される時間を示したプロトコルスロットを生成する(S24)。生成されたプロトコルスロットは、スケジュールリスト記憶部56に格納されたジャスト・イン・タイムプロトコルのスケジュールリスト70に登録される(S26)。
【0030】
ステップS20において、CPU12から受け取ったアクセスプロトコルがジャスト・イン・タイムプロトコルでなければ(S20のN)、プロトコルスロット生成部50は、そのアクセスプロトコルを通常プロトコルとして処理し、リソース占有時間を示したプロトコルスロットを生成する(S28)。生成されたプロトコルスロットは、通常プロトコルキュー記憶部58に格納された通常プロトコルキュー90に挿入される(S30)。
【0031】
図7は、図5のスケジュールリスト記憶部56に格納されるジャスト・イン・タイムプロトコルのスケジュールリスト70を説明する図である。スケジューラ22のカウンタの単位時間に補正された時間を縦軸にとり、現時刻stにおけるスケジュールリスト70のプロトコルスロットの登録状態が図示されている。スケジュールリスト70は、スケジューラ22のカウンタの最小単位時間で区切られており、斜線で示すように、現時刻stに対して、2単位時間後、4単位時間後、8単位時間後にジャスト・イン・タイムプロトコルのスロット72a、74、76が格納されている。これは、これらのプロトコルスロット72a、74、76によりプリフェッチされたデータの利用時刻が(st+2)、(st+4)、(st+8)であることを示している。もっとも、この図は、理解のために、各プロトコルスロットで指定された利用開始時刻に合わせて、プロトコルスロットの格納位置を模式的に示したものであり、実装上は、プロトコルスロットは、利用時刻sctiと優先度ciの組をインデックスとしてスケジュールリスト70に登録され、利用時刻sctiの早い順にソートされて同図のようにポインタでつないだリスト構造を形成する。
【0032】
ジャスト・イン・タイムプロトコルを一般にjtp(sct,rfrom,ptfrom,rto,ptto,c)と表記する。ここで第1引数sctは利用時刻、第6引数cは優先度である。第2引数rfromはデータの転送元のリソース、第4引数rtoはデータの転送先のリソースである。第3引数ptfrom、第5引数pttoはそれぞれデータの転送元、転送先のリソースの占有時間である。リソースの占有時間は、そのリソースのデータ転送速度やレーテンシーなどで決まる。たとえば、リソースとしてDRAM、I/O、キャッシュメモリなどがあり、I/Oからキャッシュメモリへのデータ転送や、逆にキャッシュメモリからI/Oへのデータ転送をこの記述形式で表現することができる。
【0033】
図7の例では、アクセス対象として4つのリソースr1〜r4があり、ジャスト・イン・タイムプロトコルjtpiは転送元リソースr3、転送先リソースr1をそれぞれ占有時間pt3、pt1で占有して、データの転送を行うアクセスプロトコルであり、jtpi(scti,r3,pt3,r1,pt1,ci)と書ける。ジャスト・イン・タイムプロトコルjtpiのプロトコルスロット72aのデータ構造72bは、同図のように、第1リソースr1の占有時間pt1、第3リソースr3の占有時間pt3を指定したものである。
【0034】
ここで、4つのリソースr1〜r4の内、第1リソースr1、第2リソースr2はスケジューラ22のカウンタの最小時間単位で占有時間が計数されるが、第3リソースr3の占有時間は、2倍の長さの時間単位で、第4リソースr4の占有時間は、4倍の長さの時間単位で計数される。これは、リソースによってアクセス占有時間の最小単位が異なるからである。以下、説明の簡単のため、リソースごとのアクセス占有時間の最小単位にかかわらず、スケジューラ22のカウンタの最小単位で占有時間を表現する。たとえば、ジャスト・イン・タイムプロトコルjtpiでは、第3リソースr3が第3リソースr3のアクセス占有時間の最小単位で1単位時間だけ占有されるが、これは、スケジューラ22のカウンタの最小単位では、3単位時間に相当する。そこで、便宜上、第3リソースr3の占有時間pt3をスケジューラ22のカウンタの最小単位で表現して、3単位時間とする。したがって、ジャスト・イン・タイムプロトコルjtpiはjtpi(scti,r3,3,r1,2,ci)と書ける。ここで、転送先のリソースr1の占有開始時刻は、転送元のリソースr3の占有開始時刻よりも1単位だけ遅れているが、これは、転送元のリソースr3のアクセスが始まって1単位時間経過後でないと、転送先のリソースr1へのデータ転送が始まらないことを意味する。
【0035】
図8は、図5の通常プロトコルキュー記憶部58に格納される通常プロトコルキュー90を説明する図である。通常プロトコルは、データのアクセスに先立ってあらかじめCPU12から発行されるジャスト・イン・タイムプロトコルとは違い、データの実際のアクセスのタイミングでCPU12から発行される。そこで、プロトコルスロット生成部50は、通常プロトコルのスロットを、基本的には、通常プロトコルキュー90の末尾にCPU12から送られてきた順序で次々に挿入する。もっとも、プロトコルスロット生成部50は、通常プロトコルキュー90に登録されたプロトコルスロットをリソースの空き時間が生じないように順序を入れ替えて、最適化したり、優先度にもとづいて順序を変えることもできる。
【0036】
通常プロトコルは一般にnp(rfrom,ptfrom,rto,ptto,c)と記述することができる。引数の定義は、ジャスト・イン・タイムプロトコルと同じである。第5引数の優先度cはオプションであり、使用しない場合もある。優先度cの利用方法はジャスト・イン・タイムプロトコルの場合と同じである。図5の例では、現時刻stにおいて、第i番目から第(i+3)番目までの通常プロトコルnpi、npi+1、npi+2、およびnpi+3のスロットが通常プロトコルキュー90に登録されている。第i番目から第(i+3)番目までの通常プロトコルはそれぞれnpi(r1,6,r2,6,ci)、npi+1(r3,3,r4,6,ci+1)、npi+2(r2,2,r3,3,ci+2)、npi+3(r4,6,r3,3,ci+3)と書ける。通常プロトコルキュー90の先頭にある出力スロットにある通常プロトコルが順次取り出され、発行される。
【0037】
図5の機能構成図を再び参照する。コスト評価部52は、通常プロトコルキュー90で待ち状態にある通常プロトコルの発行コストと、スケジュールリスト70に登録されたジャスト・イン・タイムプロトコルの発行コストとを評価し、これらの発行コストを比較する。プロトコル発行部54は、発行コストの小さい方のプロトコルを発行する。発行されたプロトコルは、リソースIDにもとづいて、I/Oに対する命令であれば、I/Oコントローラ26に、DRAMなどのメインメモリに対する命令であれば、メモリコントローラ28に送られて実行される。
【0038】
図9は、コスト評価部52によるアクセスプロトコルの発行コストの評価手順を示すフローチャートである。図10は、スケジュールリスト70と通常プロトコルキュー90のプロトコルスロットの登録状態を説明する図である。これらの図を参照して説明する。
【0039】
コスト評価部52は、通常プロトコル発行コストNpを算出する(S40)。通常プロトコル発行コストNpは、一般には、通常プロトコルキュー90の出力スロットにある通常プロトコルnpと現時刻stの関数であるが、ここでは、次式のように、出力スロットにある通常プロトコルnpが発行された場合に、時刻tにおいて転送元リソースrfromが占有されることによるコストRCfrom(t)と転送先リソースrtoが占有されることによるRCto(t)の線形和で与えられるとする。
Np=np_cost_func(np,st)=RCfrom(st)+RCto(st+α)
ここで定数αは、転送元リソースの占有開始時刻と転送先リソースの占有開始時刻の時間差である。
【0040】
図10の通常プロトコルキュー90の例では、出力スロットに通常プロトコルnp1が存在する。現時刻stでこの通常プロトコルnp1が発行されたとすると、現時刻stで転送元リソースr3へのアクセスが始まり、3単位時間だけ転送元リソースr3が占有される。このときの占有コストはRC3(st)で与えられる。一方、転送先リソースr2へのアクセスは2単位時間だけ遅れて始まり、1単位時間だけ転送先リソースr2が占有される。このときの占有コストはRC2(st+2)で与えられる。したがって、通常プロトコル発行コストNpはNp=RC3(t)+RC2(t+2)により算出される。
【0041】
次に、コスト評価部52は、ジャスト・イン・タイムプロトコルの発行コストjtpcostを算出する(S42)。コスト評価部52は、スケジュールリスト70内に登録されているすべてのプロトコルスロットについて、発行コストjtpcostの評価を行う。もっとも、現時刻stに最も近い利用時刻sctをもつプロトコルスロットや、優先度cの最も高いプロトコルスロットについてのみ発行コストjtpcostを評価してもよく、利用時刻sctの近い順や優先度cの高い順に上位いくつかのプロトコルスロットについて発行コストjtpcostを評価してもよい。図10の例では、スケジュールリスト70には、2つのジャスト・イン・タイムプロトコルjtp1(sct1,r1,pt1,r2,pt2,c1)およびjtp2(sct2,r2,pt2,r4,pt4,c2)のスロットが登録されており、コスト評価部52は、それぞれのプロトコルスロットについて個別に発行コストjtpcost1およびjtpcost2を算出する。
【0042】
ジャスト・イン・タイムプロトコルの発行コストjtpcostは、いくつかのコスト要因を組み合わせて評価される。第1のコスト要因は、通常プロトコル発行遅延コストLCである。これは、ジャスト・イン・タイムプロトコルを発行した場合に、通常プロトコルキュー90で待ち状態にある通常プロトコルの発行が遅延することによる単位時間当たりのコストである。この通常プロトコル発行遅延コストLCは、一般には、通常プロトコルキュー90に格納されているすべての通常プロトコルの関数であるが、ここでは、通常プロトコルnpiごとに計算される遅延コストLC(npi)の線形和で与えられるとする。図10の例では、現時刻stにおいて5つの通常プロトコルnp1〜np5が通常プロトコルキュー90で待ち状態にあるから、通常プロトコル発行遅延コストLCは、次式で与えられる。
LC=LCfunc(np1,np2,np3,np4,np5)=LC(np1)+LC(np2)+LC(np3)+LC(np4)+LC(np5)
ここで、遅延コストLC(npi)は、通常プロトコルnpiの発行が1単位時間だけ遅延した場合に生じるコストである。
【0043】
通常プロトコルnpiに優先度ciが指定されている場合には、遅延コストをLC(npi,ci)と表し、通常プロトコルnpiごとの優先度ciを反映した値にしてもよい。たとえば、優先度ciの高い通常プロトコルnpiについては、遅延コストLC(npi,ci)を大きく評価する。
【0044】
図10の例で、第1のジャスト・イン・タイムプロトコルjtp1(sct1,r1,pt1,r2,pt2,c1)を発行した場合、このプロトコルのスロット82に示されるように、転送先リソースr2が現時刻stから5単位時間だけ占有されるため、通常プロトコルキュー90の出力スロットにある通常プロトコルnp1によるリソースr2の占有時間と重なりが生じる。そのため、ジャスト・イン・タイムプロトコルjtp1を実行するためには、通常プロトコルキュー90の出力スロット86を同図のようにltc1時間、すなわち3単位時間だけ後方にシフトさせなければならない。出力スロット86にある通常プロトコルnp1が3単位時間分遅延することにより、通常プロトコルキュー90で待ち状態にあるその他の通常プロトコルnp2〜np5についても全体として3単位時間分遅延することになる。したがって、全体として、ジャスト・イン・タイムプロトコルjtp1の発行により、通常プロトコル発行遅延コストLCに出力スロット86の遅延時間ltc1を乗じた値LC×ltc1のコストが発生することになる。
【0045】
第2のジャスト・イン・タイムプロトコルjtp2を発行した場合についても同様に、このプロトコルのスロット84と通常プロトコルキュー90内のプロトコルスロットによるリソースの占有時間の競合関係により、遅延時間ltc2を求めることができる。一般に、ジャスト・イン・タイムプロトコルjtpiの発行による通常プロトコル発行遅延コストは、LC×ltciにより算出される。
【0046】
ジャスト・イン・タイムプロトコルの発行コストjtpcostの第2のコスト要因は、プリフェッチデータのキャッシュ滞留コストCacheRCである。これは、ジャスト・イン・タイムプロトコルを発行した場合に、プリフェッチされたデータがキャッシュメモリ14に滞留することによる単位時間当たりのコストである。ジャスト・イン・タイムプロトコルjtpiによりプリフェッチされるデータの利用時刻sctiから現時刻stを差し引いた値cti=(scti−st)は、現時刻stでジャスト・イン・タイムプロトコルjtpiを発行した場合に、プリフェッチされたデータがキャッシュメモリ14に滞留する時間を示している。したがって、単位時間当たりのキャッシュ滞留コストCacheRCに滞留時間cti=(scti−st)を乗じた値CacheRC×(scti−st)が、現時刻stでのジャスト・イン・タイムプロトコルjtpiの発行によるキャッシュ滞留コストを与える。
【0047】
第3のコスト要因は、ジャスト・イン・タイムプロトコルjtpiの発行が遅れることにより、アクセスしたいデータが利用時刻までにプリフェッチされないことによるリスクであり、ジャスト・イン・タイムプロトコルjtpi、現時刻stの関数として、Time_Limit_Func(jtpi,st)で与えられる。一例として、このリスクを次式のように定義する。
Time_Limit_Func(jtpi,st)
={scti−st<max(ptfrom,ptto)+aのとき、Time_Limit;それ以外のとき、0}
【0048】
プリフェッチしたデータのキャッシュ滞留時間(scti−st)が、プリフェッチのために転送元リソースrfromおよび転送先リソースrtoが占有される時間ptfromおよびpttoのいずれか大きい方の値max(ptfrom,ptto)よりも小さい場合、利用時刻sctiまでにデータのプリフェッチを完了することができない。そこで、max(ptfrom,ptto)に余裕をもたせる意味で定数aを加えた値と、キャッシュ滞留時間(scti−st)とを比較して、キャッシュ滞留時間(scti−st)の方が小さくなった場合には、正の定数Time_Limitをリスクの値とし、キャッシュ滞留時間(scti−st)の方が大きい間は、リスクの値を0とする。
【0049】
現時刻stにおけるジャスト・イン・タイムプロトコルjtpiの発行コストjtpcostiは、以上の3つのコスト要因にもとづいて次のように算出される。
jtpcosti=jtp_cost_func(st,jtpi)
=LC×ltci+(scti−st)×CacheRC−Time_Limit_Func(jtpi,st)
【0050】
第3項Time_Limit_Func(jtpi,st)は、プリフェッチが間に合わなくなる状況が近づくと、正の値をとり、第1項LC×ltciと第2項(scti−st)×CacheRCの和から差し引かれるので、jtpcostiの値を全体として下げるように作用する。したがって、ジャスト・イン・タイムプロトコルが守れなくなりそうな状況では、ジャスト・イン・タイムプロトコルを実行することによるコストと、ジャスト・イン・タイムプロトコルを実行しないことによるリスクの間でバランスが取られる。
【0051】
図9に戻り、プロトコル発行部54は、現時刻stにおいて、ジャスト・イン・タイムプロトコルの発行コストjtpcostが通常プロトコル発行コストNpよりも小さい場合(S44のY)、ジャスト・イン・タイムプロトコルを発行し(S46)、そうでない場合(S44のN)、通常プロトコルを発行する(S48)。いずれかのプロトコルが発行されると、ステップS40に戻り、以降、その時点での新たなコスト計算がなされ、各時点でのコスト評価にもとづいて適切なプロトコルが選択されて発行される。
【0052】
図10の例では、スケジュールリスト70に登録されている第1のジャスト・イン・タイムプロトコルjtp1の発行コストjtpcost1、第2のジャスト・イン・タイムプロトコルjtp2の発行コストjtpcost2、通常プロトコルキュー90の出力スロットにある通常プロトコルnp1の発行コストNpのうち、コストが最小であるプロトコルがプロトコル発行部54により発行される。ここで、ジャスト・イン・タイムプロトコルの発行コストは各時刻で再計算しなければならないことに注意する。なぜなら、各時刻において、通常プロトコルキュー90内のプロトコルの待ち状態が異なり、それにより、発行コストの第1項LC×ltciの値が変わるからである。また、第1、第2のジャスト・イン・タイムプロトコルjtp1、jtp2の発行コストjtpcost1、jtpcost2の大小関係についても、同じ理由で各時刻において変化する可能性があり、現時刻stに近い利用時刻sctをもつジャスト・イン・タイムプロトコルの方が、発行コストが小さいとは限らない。
【0053】
なお、ジャスト・イン・タイムプロトコルの発行コストjtpcostiは、3つのコスト要因の一部を用いて評価してもよい。たとえば、キャッシュ滞留コストのみで、次式のように評価してもよい。
jtpcosti=(scti−st)×CacheRC
また、これにプリフェッチが間に合わないリスクを組み合わせて、次式のように評価してもよい。
jtpcosti=(scti−st)×CacheRC−Time_Limit_Func(jtpi,st)
これらの場合、通常プロトコルキュー90のプロトコルスロットの状態とは無関係にジャスト・イン・タイムプロトコルの発行コストを評価できるため、コスト計算が簡単である。
【0054】
以上説明したように、実施の形態によれば、プリフェッチ命令にプリフェッチデータの利用予定時刻を指定することにより、プリフェッチデータがキャッシュに滞留する時間を予想することができ、キャッシュ滞留コストを評価してプリフェッチ命令の発行タイミングを決めることが可能となる。また、リソース占有時間の競合関係に配慮してコスト評価を行うことで、他のアクセス命令の実行とのバランスをとりながら、プリフェッチ命令を発行することができる。これにより、プリフェッチ命令が無駄なく計画的に実行され、キャッシュの利用効率が向上する。
【0055】
以上、本発明を実施の形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0056】
そのような変形例を説明する。上記の説明では、拡張プリフェッチ命令において、プリフェッチデータの利用開始時点や利用終了時点を拡張プリフェッチ命令の挿入位置から数えた相対的なステップ数で指定したが、絶対的な時間でプリフェッチデータの利用開始時刻および利用終了時刻を指定してもよい。
【0057】
また、上記の説明では、ジャスト・イン・タイムプロトコルと通常プロトコルの両方の発行コストを求めて、発行コストの比較によりどちらのアクセスプロトコルを発行するかを決めたが、ジャスト・イン・タイムプロトコルのみの発行コストを求めて、その発行コストが所定の値以下であれば、ジャスト・イン・タイムプロトコルを発行することにしてもよい。
【0058】
【発明の効果】
本発明によれば、キャッシュによるメモリアクセスのさらなる効率化を図ることができる。
【図面の簡単な説明】
【図1】実施の形態に係るプロセッサシステムの構成図である。
【図2】実施の形態に係るプログラムのコンパイル手順を説明するフローチャートである。
【図3】図3(a)〜(d)は、図2のコンパイル手順により拡張プリフェッチ命令が挿入されたプログラムの例を説明する図である。
【図4】拡張プリフェッチ命令の発行により図1のキャッシュメモリのキャッシュがロックされる様子を説明する図である。
【図5】図1のブリッジモジュールを機能面から見た構成図である。
【図6】図5のプロトコルスロット生成部によるプロトコルスロットの生成手順を説明するフローチャートである。
【図7】図5のスケジュールリスト記憶部に格納されるジャスト・イン・タイムプロトコルのスケジュールリストを説明する図である。
【図8】図5の通常プロトコルキュー記憶部に格納される通常プロトコルキューを説明する図である。
【図9】図5のコスト評価部によるアクセスプロトコルの発行コストの評価手順を示すフローチャートである。
【図10】スケジュールリストと通常プロトコルキューのプロトコルスロットの登録状態を説明する図である。
【符号の説明】
10 プロセッサモジュール、 12 CPU、 14 キャッシュメモリ、16 キャッシュコントローラ、 20 ブリッジモジュール、 22 スケジューラ、 24 バッファメモリ、 26 I/Oコントローラ、 28 メモリコントローラ、 30 I/Oモジュール、 32 内部バス、 34 I/Oバス、 36 メモリバス、 40 メモリモジュール、 50 プロトコルスロット生成部、 52 コスト評価部、 54 プロトコル発行部、 56スケジュールリスト記憶部、 58 通常プロトコルキュー記憶部、 70 スケジュールリスト、 90 通常プロトコルキュー。
Claims (12)
- データのプリフェッチ命令に、そのデータの利用時刻に関する情報を付加し、前記利用時刻に関する情報をもとに前記プリフェッチ命令の発行タイミングをスケジュールすることを特徴とするプリフェッチ命令制御方法。
- 前記プリフェッチ命令を発行した場合にプリフェッチされたデータがキャッシュに滞留する時間をもとに、前記プリフェッチ命令の発行コストを計算し、前記発行コストにもとづいて前記プリフェッチ命令の前記発行タイミングをスケジュールすることを特徴とする請求項1に記載のプリフェッチ命令制御方法。
- データの通常のアクセス命令を発行した場合にアクセスされたリソースが占有される時間をもとに、前記通常のアクセス命令の発行コストを計算し、前記プリフェッチ命令の発行コストと前記通常のアクセス命令の発行コストを比較して、前記プリフェッチ命令と前記通常のアクセス命令のいずれを発行するかを決定することを特徴とする請求項2に記載のプリフェッチ命令制御方法。
- データの利用時刻に関する情報が付加された、外部リソースに対するプリフェッチ命令を記憶する記憶部と、
記憶された前記プリフェッチ命令を発行した場合に、前記利用時刻に到達するまでプリフェッチされたデータがキャッシュに滞留することによるコストを評価するコスト評価部と、
前記コスト評価部による評価結果にもとづいて、記憶された前記プリフェッチ命令を前記外部リソースに対して発行するタイミングを調整する発行部とを含むことを特徴とするプリフェッチ命令制御装置。 - 前記コスト評価部は、前記プリフェッチ命令の発行コストと、前記外部リソースのアクセスリクエストのキューに格納された通常のアクセス命令の発行コストを比較し、前記発行部は、前記コスト評価部による比較結果にもとづいて、現時刻で前記プリフェッチ命令と前記通常のアクセス命令のいずれを発行するかを決定することを特徴とする請求項4に記載のプリフェッチ命令制御装置。
- 前記コスト評価部は、前記プリフェッチ命令の発行により前記外部リソースのアクセスリクエストのキューに格納された前記通常のアクセス命令の発行が遅延することによるコストを、前記プリフェッチ命令の発行コストの評価に含めることを特徴とする請求項4または5に記載のプリフェッチ命令制御装置。
- 前記コスト評価部は、現時刻から前記利用時刻までの時間間隔をもとにしたプリフェッチの時間制限によるリスクを、前記プリフェッチ命令の発行コストの評価に含めることを特徴とする請求項4から6のいずれかに記載のプリフェッチ命令制御装置。
- 外部リソースから取得したデータをキャッシュしてプロセッサに供給するキャッシュメモリと、
前記プロセッサから前記外部リソースに対するアクセスプロトコルを受け取り、アクセスプロトコルをスケジュールして前記外部リソースのリクエストキューに設定するスケジューラと、
前記リクエストキューから前記アクセスプロトコルを読み出し、前記外部リソースにアクセスして前記キャッシュメモリにデータを供給する外部リソースコントローラとを含み、
前記スケジューラは、
前記プロセッサから送られた、データの利用時刻に関する情報が付加されたプリフェッチ命令を記憶する記憶部と、
記憶された前記プリフェッチ命令を発行した場合に、前記利用時刻に到達するまでプリフェッチされたデータが前記キャッシュメモリに滞留することによるコストを評価するコスト評価部と、
前記コスト評価部による評価結果にもとづいて、記憶された前記プリフェッチ命令を前記外部リソースに対して発行するタイミングを調整して、前記リクエストキューに設定する発行部とを含むことを特徴とするキャッシュメモリ制御装置。 - 前記スケジューラは、前記プリフェッチ命令の発行後に、前記利用時刻に関する情報にもとづき、前記キャッシュメモリにおけるプリフェッチデータのキャッシュをロックすることを特徴とする請求項8に記載のキャッシュメモリ制御装置。
- ソースコードを解析して中間コードに変換するステップと、
前記中間コードにもとづいて、キャッシュメモリへプリフェッチすべきデータを決定し、そのデータに対するアクセス命令を元の実行順序位置よりも前の位置にプリフェッチ命令として挿入し、そのプリフェッチ命令にデータの利用時刻に関する情報を付加するステップと、
前記プリフェッチ命令を含む前記中間コードを最適化してオブジェクトコードを生成するステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。 - 前記利用時刻に関する情報は、プリフェッチ命令の挿入位置に対する相対的な位置で示される、プリフェッチデータの利用開始時点に関する情報を含むことを特徴とする請求項10に記載のコンピュータプログラム。
- 前記利用時刻に関する情報は、プリフェッチ命令の挿入位置に対する相対的な位置で示される、プリフェッチデータの利用終了時点に関する情報をさらに含むことを特徴とする請求項11に記載のコンピュータプログラム。
Priority Applications (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003136387A JP3973597B2 (ja) | 2003-05-14 | 2003-05-14 | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 |
KR1020057020888A KR100752005B1 (ko) | 2003-05-14 | 2004-04-22 | 사전 추출 명령 제어 방법, 사전 추출 명령 제어 장치 및캐시 메모리 제어 장치 |
EP04728933A EP1623327B1 (en) | 2003-05-14 | 2004-04-22 | Control of prefetch command for data extended with specification of the utilization time of the data |
AT04728933T ATE515734T1 (de) | 2003-05-14 | 2004-04-22 | Steuerung von prefetch befehlen erweitet um die spezifikation der verwendungdauer der daten |
CN2004800126818A CN1849580B (zh) | 2003-05-14 | 2004-04-22 | 预取命令控制方法、预取命令控制装置以及高速缓冲存储器控制装置 |
PCT/JP2004/005777 WO2004102392A2 (en) | 2003-05-14 | 2004-04-22 | Control of prefetch command for data extended with specification of the utilization time of the data |
US10/836,039 US7451276B2 (en) | 2003-05-14 | 2004-04-29 | Prefetch command control method, prefetch command control apparatus and cache memory control apparatus |
TW093113685A TW200513851A (en) | 2003-05-14 | 2004-05-14 | Prefetch command control method, prefetch command control apparatus and cache memory control apparatus |
US11/671,831 US7716426B2 (en) | 2003-05-14 | 2007-02-06 | Prefetch command control method, prefetch command control apparatus and cache memory control apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003136387A JP3973597B2 (ja) | 2003-05-14 | 2003-05-14 | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004348175A true JP2004348175A (ja) | 2004-12-09 |
JP3973597B2 JP3973597B2 (ja) | 2007-09-12 |
Family
ID=33410741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003136387A Expired - Lifetime JP3973597B2 (ja) | 2003-05-14 | 2003-05-14 | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7451276B2 (ja) |
EP (1) | EP1623327B1 (ja) |
JP (1) | JP3973597B2 (ja) |
KR (1) | KR100752005B1 (ja) |
CN (1) | CN1849580B (ja) |
AT (1) | ATE515734T1 (ja) |
TW (1) | TW200513851A (ja) |
WO (1) | WO2004102392A2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008269450A (ja) * | 2007-04-24 | 2008-11-06 | Fujitsu Ltd | プロセッサ及びプリフェッチ制御方法 |
US7451276B2 (en) * | 2003-05-14 | 2008-11-11 | Sony Computer Entertainment Inc. | Prefetch command control method, prefetch command control apparatus and cache memory control apparatus |
JP2011070666A (ja) * | 2009-09-23 | 2011-04-07 | Samsung Electronics Co Ltd | 電子デバイスの性能改善のための電子デバイスコントローラ |
WO2014030387A1 (ja) * | 2012-08-22 | 2014-02-27 | 三菱電機株式会社 | キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 |
JP2015210718A (ja) * | 2014-04-28 | 2015-11-24 | 富士通株式会社 | 記憶制御装置、ストレージシステム、および記憶制御プログラム |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685126B2 (en) | 2001-08-03 | 2010-03-23 | Isilon Systems, Inc. | System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system |
US7146524B2 (en) | 2001-08-03 | 2006-12-05 | Isilon Systems, Inc. | Systems and methods for providing a distributed file system incorporating a virtual hot spare |
JP4464279B2 (ja) | 2002-11-14 | 2010-05-19 | アイシロン・システムズ・インコーポレーテッド | 分散ファイルシステムにおけるファイルの再ストライピングのためのシステム及び方法 |
US7272609B1 (en) * | 2004-01-12 | 2007-09-18 | Hyperion Solutions Corporation | In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned |
US8055711B2 (en) | 2004-10-29 | 2011-11-08 | Emc Corporation | Non-blocking commit protocol systems and methods |
US8238350B2 (en) | 2004-10-29 | 2012-08-07 | Emc Corporation | Message batching with checkpoints systems and methods |
US8051425B2 (en) | 2004-10-29 | 2011-11-01 | Emc Corporation | Distributed system with asynchronous execution systems and methods |
US7480768B2 (en) * | 2005-09-30 | 2009-01-20 | Intel Corporation | Apparatus, systems and methods to reduce access to shared data storage |
US7788303B2 (en) | 2005-10-21 | 2010-08-31 | Isilon Systems, Inc. | Systems and methods for distributed system scanning |
US7551572B2 (en) | 2005-10-21 | 2009-06-23 | Isilon Systems, Inc. | Systems and methods for providing variable protection |
US7386675B2 (en) * | 2005-10-21 | 2008-06-10 | Isilon Systems, Inc. | Systems and methods for using excitement values to predict future access to resources |
US7797283B2 (en) | 2005-10-21 | 2010-09-14 | Isilon Systems, Inc. | Systems and methods for maintaining distributed data |
US7917474B2 (en) | 2005-10-21 | 2011-03-29 | Isilon Systems, Inc. | Systems and methods for accessing and updating distributed data |
US7848261B2 (en) | 2006-02-17 | 2010-12-07 | Isilon Systems, Inc. | Systems and methods for providing a quiescing protocol |
US7756898B2 (en) | 2006-03-31 | 2010-07-13 | Isilon Systems, Inc. | Systems and methods for notifying listeners of events |
US8539056B2 (en) | 2006-08-02 | 2013-09-17 | Emc Corporation | Systems and methods for configuring multiple network interfaces |
US7882071B2 (en) | 2006-08-18 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7680842B2 (en) | 2006-08-18 | 2010-03-16 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7590652B2 (en) | 2006-08-18 | 2009-09-15 | Isilon Systems, Inc. | Systems and methods of reverse lookup |
US7822932B2 (en) | 2006-08-18 | 2010-10-26 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7752402B2 (en) | 2006-08-18 | 2010-07-06 | Isilon Systems, Inc. | Systems and methods for allowing incremental journaling |
US7899800B2 (en) | 2006-08-18 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US7680836B2 (en) | 2006-08-18 | 2010-03-16 | Isilon Systems, Inc. | Systems and methods for a snapshot of data |
US7953704B2 (en) | 2006-08-18 | 2011-05-31 | Emc Corporation | Systems and methods for a snapshot of data |
US7676691B2 (en) | 2006-08-18 | 2010-03-09 | Isilon Systems, Inc. | Systems and methods for providing nonlinear journaling |
US8286029B2 (en) | 2006-12-21 | 2012-10-09 | Emc Corporation | Systems and methods for managing unavailable storage devices |
US7593938B2 (en) | 2006-12-22 | 2009-09-22 | Isilon Systems, Inc. | Systems and methods of directory entry encodings |
US7509448B2 (en) | 2007-01-05 | 2009-03-24 | Isilon Systems, Inc. | Systems and methods for managing semantic locks |
US8966080B2 (en) | 2007-04-13 | 2015-02-24 | Emc Corporation | Systems and methods of managing resource utilization on a threaded computer system |
US7900015B2 (en) | 2007-04-13 | 2011-03-01 | Isilon Systems, Inc. | Systems and methods of quota accounting |
US7779048B2 (en) | 2007-04-13 | 2010-08-17 | Isilon Systems, Inc. | Systems and methods of providing possible value ranges |
US7882068B2 (en) | 2007-08-21 | 2011-02-01 | Isilon Systems, Inc. | Systems and methods for adaptive copy on write |
US7966289B2 (en) | 2007-08-21 | 2011-06-21 | Emc Corporation | Systems and methods for reading objects in a file system |
US7949692B2 (en) | 2007-08-21 | 2011-05-24 | Emc Corporation | Systems and methods for portals into snapshot data |
US7870345B2 (en) | 2008-03-27 | 2011-01-11 | Isilon Systems, Inc. | Systems and methods for managing stalled storage devices |
US7984324B2 (en) | 2008-03-27 | 2011-07-19 | Emc Corporation | Systems and methods for managing stalled storage devices |
US7949636B2 (en) | 2008-03-27 | 2011-05-24 | Emc Corporation | Systems and methods for a read only mode for a portion of a storage system |
US7953709B2 (en) | 2008-03-27 | 2011-05-31 | Emc Corporation | Systems and methods for a read only mode for a portion of a storage system |
US8239841B2 (en) * | 2008-04-04 | 2012-08-07 | International Business Machines Corporation | Prefetching irregular data references for software controlled caches |
US8146064B2 (en) * | 2008-04-04 | 2012-03-27 | International Business Machines Corporation | Dynamically controlling a prefetching range of a software controlled cache |
US8055849B2 (en) * | 2008-04-04 | 2011-11-08 | International Business Machines Corporation | Reducing cache pollution of a software controlled cache |
US20110004718A1 (en) | 2009-07-02 | 2011-01-06 | Ross John Stenfort | System, method, and computer program product for ordering a plurality of write commands associated with a storage device |
US8719516B2 (en) | 2009-10-21 | 2014-05-06 | Micron Technology, Inc. | Memory having internal processors and methods of controlling memory access |
US9110595B2 (en) | 2012-02-28 | 2015-08-18 | AVG Netherlands B.V. | Systems and methods for enhancing performance of software applications |
GB2506902A (en) | 2012-10-12 | 2014-04-16 | Ibm | Jump position and frame shifting in list based prefetching |
US10313472B2 (en) | 2014-03-19 | 2019-06-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Enabling efficient pre-loading of data for a network client |
JP2015192365A (ja) * | 2014-03-28 | 2015-11-02 | ソニー株式会社 | 通信制御装置、通信制御方法、およびプログラム |
US10891135B2 (en) * | 2019-01-11 | 2021-01-12 | Samsung Electronics Co., Ltd. | Register renaming of a shareable instruction operand cache |
US10950313B1 (en) * | 2019-08-28 | 2021-03-16 | Micron Technology, Inc. | Responding to changes in available power supply |
CN112527697A (zh) * | 2020-05-11 | 2021-03-19 | 大唐半导体科技有限公司 | Cache RAM与Retention RAM数据交换控制器及实现方法 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07120280B2 (ja) * | 1992-02-21 | 1995-12-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アドレス生成モードの切替方法 |
US5835745A (en) * | 1992-11-12 | 1998-11-10 | Sager; David J. | Hardware instruction scheduler for short execution unit latencies |
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
JP3717212B2 (ja) * | 1995-10-27 | 2005-11-16 | 株式会社日立製作所 | 情報処理装置及び情報処理ユニット |
US5854934A (en) * | 1996-08-23 | 1998-12-29 | Hewlett-Packard Company | Optimizing compiler having data cache prefetch spreading |
US6633891B1 (en) * | 1998-11-24 | 2003-10-14 | Oracle International Corporation | Managing replacement of data in a cache on a node based on caches of other nodes |
US6314431B1 (en) * | 1999-09-02 | 2001-11-06 | Hewlett-Packard Company | Method, system, and apparatus to improve instruction pre-fetching on computer systems |
US6675374B2 (en) * | 1999-10-12 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Insertion of prefetch instructions into computer program code |
US6799263B1 (en) * | 1999-10-28 | 2004-09-28 | Hewlett-Packard Development Company, L.P. | Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted |
US6848029B2 (en) * | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
JP2001344153A (ja) | 2000-05-30 | 2001-12-14 | Nec Corp | マルチプロセッサシステムのキャッシュメモリ制御装置 |
WO2002008893A1 (en) | 2000-07-21 | 2002-01-31 | Antevista Gmbh | A microprocessor having an instruction format containing explicit timing information |
US7257810B2 (en) | 2001-11-02 | 2007-08-14 | Sun Microsystems, Inc. | Method and apparatus for inserting prefetch instructions in an optimizing compiler |
US6912612B2 (en) * | 2002-02-25 | 2005-06-28 | Intel Corporation | Shared bypass bus structure |
JP3973597B2 (ja) * | 2003-05-14 | 2007-09-12 | 株式会社ソニー・コンピュータエンタテインメント | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 |
JP4374221B2 (ja) * | 2003-08-29 | 2009-12-02 | パナソニック株式会社 | コンピュータシステムおよび記録媒体 |
JP4934267B2 (ja) * | 2003-10-17 | 2012-05-16 | パナソニック株式会社 | コンパイラ装置 |
US7243195B2 (en) * | 2004-12-02 | 2007-07-10 | International Business Machines Corporation | Software managed cache optimization system and method for multi-processing systems |
US7640420B2 (en) * | 2007-04-02 | 2009-12-29 | Intel Corporation | Pre-fetch apparatus |
-
2003
- 2003-05-14 JP JP2003136387A patent/JP3973597B2/ja not_active Expired - Lifetime
-
2004
- 2004-04-22 KR KR1020057020888A patent/KR100752005B1/ko not_active IP Right Cessation
- 2004-04-22 AT AT04728933T patent/ATE515734T1/de not_active IP Right Cessation
- 2004-04-22 WO PCT/JP2004/005777 patent/WO2004102392A2/en active Application Filing
- 2004-04-22 CN CN2004800126818A patent/CN1849580B/zh not_active Expired - Lifetime
- 2004-04-22 EP EP04728933A patent/EP1623327B1/en not_active Expired - Lifetime
- 2004-04-29 US US10/836,039 patent/US7451276B2/en active Active
- 2004-05-14 TW TW093113685A patent/TW200513851A/zh unknown
-
2007
- 2007-02-06 US US11/671,831 patent/US7716426B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7451276B2 (en) * | 2003-05-14 | 2008-11-11 | Sony Computer Entertainment Inc. | Prefetch command control method, prefetch command control apparatus and cache memory control apparatus |
US7716426B2 (en) | 2003-05-14 | 2010-05-11 | Sony Computer Entertainment Inc. | Prefetch command control method, prefetch command control apparatus and cache memory control apparatus |
JP2008269450A (ja) * | 2007-04-24 | 2008-11-06 | Fujitsu Ltd | プロセッサ及びプリフェッチ制御方法 |
JP2011070666A (ja) * | 2009-09-23 | 2011-04-07 | Samsung Electronics Co Ltd | 電子デバイスの性能改善のための電子デバイスコントローラ |
WO2014030387A1 (ja) * | 2012-08-22 | 2014-02-27 | 三菱電機株式会社 | キャッシュメモリコントローラ及びキャッシュメモリコントロール方法 |
JP2015210718A (ja) * | 2014-04-28 | 2015-11-24 | 富士通株式会社 | 記憶制御装置、ストレージシステム、および記憶制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2004102392A2 (en) | 2004-11-25 |
ATE515734T1 (de) | 2011-07-15 |
US7716426B2 (en) | 2010-05-11 |
EP1623327B1 (en) | 2011-07-06 |
WO2004102392A3 (en) | 2006-03-23 |
CN1849580A (zh) | 2006-10-18 |
EP1623327A2 (en) | 2006-02-08 |
US7451276B2 (en) | 2008-11-11 |
KR20060013384A (ko) | 2006-02-09 |
CN1849580B (zh) | 2010-04-28 |
US20070130428A1 (en) | 2007-06-07 |
TW200513851A (en) | 2005-04-16 |
JP3973597B2 (ja) | 2007-09-12 |
KR100752005B1 (ko) | 2007-08-28 |
US20040230748A1 (en) | 2004-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3973597B2 (ja) | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 | |
US8200905B2 (en) | Effective prefetching with multiple processors and threads | |
US7958316B2 (en) | Dynamic adjustment of prefetch stream priority | |
Gornish et al. | Compiler-directed data prefetching in multiprocessors with memory hierarchies | |
US7861042B2 (en) | Processor acquisition of ownership of access coordinator for shared resource | |
US7627864B2 (en) | Mechanism to optimize speculative parallel threading | |
US20060179239A1 (en) | Data stream prefetching in a microprocessor | |
KR20000005675A (ko) | 정확한캐시감도를가능하게하는캐시구조 | |
US7363450B1 (en) | Method and apparatus for estimating multithreaded processor throughput based on processor cache performance | |
US5784711A (en) | Data cache prefetching under control of instruction cache | |
JPH1040113A (ja) | データ・エレメント事前取り出し方法 | |
US7457931B1 (en) | Method and apparatus for estimating the effect of processor cache memory bus delays on multithreaded processor throughput | |
Mao et al. | Coordinating prefetching and STT-RAM based last-level cache management for multicore systems | |
US6516462B1 (en) | Cache miss saving for speculation load operation | |
Gornish et al. | An Integrated Hardware/Software Data Prefetching Scheme for Shared-Memory Multiprocessors1 | |
JP4030314B2 (ja) | 演算処理装置 | |
VanderWiel et al. | A survey of data prefetching techniques | |
US11474946B2 (en) | Calculator and calculation method | |
JP2006215621A (ja) | Dma制御装置 | |
TWI317065B (en) | Method of accessing cache memory for parallel processing processors | |
Rashid et al. | Cache-aware schedulability analysis of prem compliant tasks | |
WO2003034229A1 (en) | Data prefecthing in a computer system | |
US20230004491A1 (en) | Approach for reducing side effects of computation offload to memory | |
US20240020122A1 (en) | Executing phantom loops in a microprocessor | |
Wagner et al. | Quantification and Localization of Cross-Core Interference for Embedded Multi-Core Control Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070306 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070313 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070529 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070601 |
|
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: 20070612 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070612 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3973597 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100622 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100622 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110622 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110622 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120622 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120622 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130622 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |