JP3973597B2 - プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 - Google Patents

プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 Download PDF

Info

Publication number
JP3973597B2
JP3973597B2 JP2003136387A JP2003136387A JP3973597B2 JP 3973597 B2 JP3973597 B2 JP 3973597B2 JP 2003136387 A JP2003136387 A JP 2003136387A JP 2003136387 A JP2003136387 A JP 2003136387A JP 3973597 B2 JP3973597 B2 JP 3973597B2
Authority
JP
Japan
Prior art keywords
prefetch instruction
time
cost
data
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.)
Expired - Lifetime
Application number
JP2003136387A
Other languages
English (en)
Other versions
JP2004348175A (ja
Inventor
章男 大場
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP2003136387A priority Critical patent/JP3973597B2/ja
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to CN2004800126818A priority patent/CN1849580B/zh
Priority to KR1020057020888A priority patent/KR100752005B1/ko
Priority to EP04728933A priority patent/EP1623327B1/en
Priority to AT04728933T priority patent/ATE515734T1/de
Priority to PCT/JP2004/005777 priority patent/WO2004102392A2/en
Priority to US10/836,039 priority patent/US7451276B2/en
Priority to TW093113685A priority patent/TW200513851A/zh
Publication of JP2004348175A publication Critical patent/JP2004348175A/ja
Priority to US11/671,831 priority patent/US7716426B2/en
Application granted granted Critical
Publication of JP3973597B2 publication Critical patent/JP3973597B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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)

Description

【0001】
【発明の属する技術分野】
この発明はキャッシュ制御技術、とくにプリフェッチ命令を制御する方法と装置、ならびにキャッシュメモリ制御装置に関する。
【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)であることを示している。もっとも、この図は、理解のために、各プロトコルスロットで指定された利用開始時刻に合わせて、プロトコルスロットの格納位置を模式的に示したものであり、実装上は、プロトコルスロットは、利用時刻sctと優先度cの組をインデックスとしてスケジュールリスト70に登録され、利用時刻sctの早い順にソートされて同図のようにポインタでつないだリスト構造を形成する。
【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があり、ジャスト・イン・タイムプロトコルjtpは転送元リソースr3、転送先リソースr1をそれぞれ占有時間pt3、pt1で占有して、データの転送を行うアクセスプロトコルであり、jtp(sct,r3,pt3,r1,pt1,c)と書ける。ジャスト・イン・タイムプロトコルjtpのプロトコルスロット72aのデータ構造72bは、同図のように、第1リソースr1の占有時間pt1、第3リソースr3の占有時間pt3を指定したものである。
【0034】
ここで、4つのリソースr1〜r4の内、第1リソースr1、第2リソースr2はスケジューラ22のカウンタの最小時間単位で占有時間が計数されるが、第3リソースr3の占有時間は、2倍の長さの時間単位で、第4リソースr4の占有時間は、4倍の長さの時間単位で計数される。これは、リソースによってアクセス占有時間の最小単位が異なるからである。以下、説明の簡単のため、リソースごとのアクセス占有時間の最小単位にかかわらず、スケジューラ22のカウンタの最小単位で占有時間を表現する。たとえば、ジャスト・イン・タイムプロトコルjtpでは、第3リソースr3が第3リソースr3のアクセス占有時間の最小単位で1単位時間だけ占有されるが、これは、スケジューラ22のカウンタの最小単位では、3単位時間に相当する。そこで、便宜上、第3リソースr3の占有時間pt3をスケジューラ22のカウンタの最小単位で表現して、3単位時間とする。したがって、ジャスト・イン・タイムプロトコルjtpはjtp(sct,r3,3,r1,2,c)と書ける。ここで、転送先のリソース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)番目までの通常プロトコルnp、npi+1、npi+2、およびnpi+3のスロットが通常プロトコルキュー90に登録されている。第i番目から第(i+3)番目までの通常プロトコルはそれぞれnp(r1,6,r2,6,c)、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が占有される。このときの占有コストはRC(st)で与えられる。一方、転送先リソースr2へのアクセスは2単位時間だけ遅れて始まり、1単位時間だけ転送先リソースr2が占有される。このときの占有コストはRC(st+2)で与えられる。したがって、通常プロトコル発行コストNpはNp=RC(t)+RC(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に格納されているすべての通常プロトコルの関数であるが、ここでは、通常プロトコルnpごとに計算される遅延コストLC(np)の線形和で与えられるとする。図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(np)は、通常プロトコルnpの発行が1単位時間だけ遅延した場合に生じるコストである。
【0043】
通常プロトコルnpに優先度ciが指定されている場合には、遅延コストをLC(np,ci)と表し、通常プロトコルnpごとの優先度ciを反映した値にしてもよい。たとえば、優先度ciの高い通常プロトコルnpについては、遅延コストLC(np,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を求めることができる。一般に、ジャスト・イン・タイムプロトコルjtpの発行による通常プロトコル発行遅延コストは、LC×ltcにより算出される。
【0046】
ジャスト・イン・タイムプロトコルの発行コストjtpcostの第2のコスト要因は、プリフェッチデータのキャッシュ滞留コストCacheRCである。これは、ジャスト・イン・タイムプロトコルを発行した場合に、プリフェッチされたデータがキャッシュメモリ14に滞留することによる単位時間当たりのコストである。ジャスト・イン・タイムプロトコルjtpによりプリフェッチされるデータの利用時刻sctiから現時刻stを差し引いた値ct=(sct−st)は、現時刻stでジャスト・イン・タイムプロトコルjtpを発行した場合に、プリフェッチされたデータがキャッシュメモリ14に滞留する時間を示している。したがって、単位時間当たりのキャッシュ滞留コストCacheRCに滞留時間ct=(sct−st)を乗じた値CacheRC×(sct−st)が、現時刻stでのジャスト・イン・タイムプロトコルjtpの発行によるキャッシュ滞留コストを与える。
【0047】
第3のコスト要因は、ジャスト・イン・タイムプロトコルjtpiの発行が遅れることにより、アクセスしたいデータが利用時刻までにプリフェッチされないことによるリスクであり、ジャスト・イン・タイムプロトコルjtpi、現時刻stの関数として、Time_Limit_Func(jtp,st)で与えられる。一例として、このリスクを次式のように定義する。
Time_Limit_Func(jtp,st)
={sct−st<max(ptfrom,ptto)+aのとき、Time_Limit;それ以外のとき、0}
【0048】
プリフェッチしたデータのキャッシュ滞留時間(sct−st)が、プリフェッチのために転送元リソースrfromおよび転送先リソースrtoが占有される時間ptfromおよびpttoのいずれか大きい方の値max(ptfrom,ptto)よりも小さい場合、利用時刻sctまでにデータのプリフェッチを完了することができない。そこで、max(ptfrom,ptto)に余裕をもたせる意味で定数aを加えた値と、キャッシュ滞留時間(sct−st)とを比較して、キャッシュ滞留時間(sct−st)の方が小さくなった場合には、正の定数Time_Limitをリスクの値とし、キャッシュ滞留時間(sct−st)の方が大きい間は、リスクの値を0とする。
【0049】
現時刻stにおけるジャスト・イン・タイムプロトコルjtpの発行コストjtpcostは、以上の3つのコスト要因にもとづいて次のように算出される。
jtpcost=jtp_cost_func(st,jtp
=LC×ltc+(sct−st)×CacheRC−Time_Limit_Func(jtp,st)
【0050】
第3項Time_Limit_Func(jtp,st)は、プリフェッチが間に合わなくなる状況が近づくと、正の値をとり、第1項LC×ltcと第2項(sct−st)×CacheRCの和から差し引かれるので、jtpcostの値を全体として下げるように作用する。したがって、ジャスト・イン・タイムプロトコルが守れなくなりそうな状況では、ジャスト・イン・タイムプロトコルを実行することによるコストと、ジャスト・イン・タイムプロトコルを実行しないことによるリスクの間でバランスが取られる。
【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×ltcの値が変わるからである。また、第1、第2のジャスト・イン・タイムプロトコルjtp1、jtp2の発行コストjtpcost1、jtpcost2の大小関係についても、同じ理由で各時刻において変化する可能性があり、現時刻stに近い利用時刻sctをもつジャスト・イン・タイムプロトコルの方が、発行コストが小さいとは限らない。
【0053】
なお、ジャスト・イン・タイムプロトコルの発行コストjtpcostは、3つのコスト要因の一部を用いて評価してもよい。たとえば、キャッシュ滞留コストのみで、次式のように評価してもよい。
jtpcost=(sct−st)×CacheRC
また、これにプリフェッチが間に合わないリスクを組み合わせて、次式のように評価してもよい。
jtpcost=(sct−st)×CacheRC−Time_Limit_Func(jtp,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 (13)

  1. データのプリフェッチ命令に、そのデータの利用時刻に関する情報を付加し、前記利用時刻に関する情報をもとに前記プリフェッチ命令の発行タイミングをスケジュールし、
    前記発行タイミングをスケジュールする際に、前記プリフェッチ命令を発行した場合にプリフェッチされたデータがキャッシュに滞留する時間をもとに、前記プリフェッチ命令の発行コストを計算し、前記発行コストにもとづいて前記プリフェッチ命令の前記発行タイミングをスケジュールすることを特徴とするプリフェッチ命令制御方法。
  2. データの通常のアクセス命令を発行した場合にアクセスされたリソースが占有される時間をもとに、前記通常のアクセス命令の発行コストを計算し、前記プリフェッチ命令の発行コストと前記通常のアクセス命令の発行コストを比較して、前記プリフェッチ命令と前記通常のアクセス命令のいずれを発行するかを決定することを特徴とする請求項に記載のプリフェッチ命令制御方法。
  3. データの利用時刻に関する情報が付加された、外部リソースに対するプリフェッチ命令を記憶する記憶部と、
    記憶された前記プリフェッチ命令を発行した場合に、前記利用時刻に到達するまでプリフェッチされたデータがキャッシュに滞留することによるコストを評価するコスト評価部と、
    前記コスト評価部による評価結果にもとづいて、記憶された前記プリフェッチ命令を前記外部リソースに対して発行するタイミングを調整する発行部とを含むことを特徴とするプリフェッチ命令制御装置。
  4. 前記コスト評価部は、前記プリフェッチ命令の発行コストと、前記外部リソースのアクセスリクエストのキューに格納された通常のアクセス命令の発行コストを比較し、前記発行部は、前記コスト評価部による比較結果にもとづいて、現時刻で前記プリフェッチ命令と前記通常のアクセス命令のいずれを発行するかを決定することを特徴とする請求項に記載のプリフェッチ命令制御装置。
  5. 前記コスト評価部は、前記プリフェッチ命令の発行により前記外部リソースのアクセスリクエストのキューに格納された通常のアクセス命令の発行が遅延することによるコストを、前記プリフェッチ命令の発行コストの評価に含めることを特徴とする請求項3または4に記載のプリフェッチ命令制御装置。
  6. 前記コスト評価部は、現時刻から前記利用時刻までの時間間隔をもとにしたプリフェッチの時間制限によるリスクを、前記プリフェッチ命令の発行コストの評価に含めることを特徴とする請求項3から5のいずれかに記載のプリフェッチ命令制御装置。
  7. 外部リソースから取得したデータをキャッシュしてプロセッサに供給するキャッシュメモリと、
    前記プロセッサから前記外部リソースに対するアクセスプロトコルを受け取り、アクセスプロトコルをスケジュールして前記外部リソースのリクエストキューに設定するスケジューラと、
    前記リクエストキューから前記アクセスプロトコルを読み出し、前記外部リソースにアクセスして前記キャッシュメモリにデータを供給する外部リソースコントローラとを含み、
    前記スケジューラは、
    前記プロセッサから送られた、データの利用時刻に関する情報が付加されたプリフェッチ命令を記憶する記憶部と、
    記憶された前記プリフェッチ命令を発行した場合に、前記利用時刻に到達するまでプリフェッチされたデータが前記キャッシュメモリに滞留することによるコストを評価するコスト評価部と、
    前記コスト評価部による評価結果にもとづいて、記憶された前記プリフェッチ命令を前記外部リソースに対して発行するタイミングを調整して、前記リクエストキューに設定する発行部とを含むことを特徴とするキャッシュメモリ制御装置。
  8. 前記スケジューラは、前記プリフェッチ命令の発行後に、前記利用時刻に関する情報にもとづき、前記キャッシュメモリにおけるプリフェッチデータのキャッシュをロックすることを特徴とする請求項に記載のキャッシュメモリ制御装置。
  9. ソースコードを解析して中間コードに変換するステップと、
    前記中間コードにもとづいて、キャッシュメモリへプリフェッチすべきデータを決定し、そのデータに対するアクセス命令を元の実行順序位置よりも前の位置にプリフェッチ命令として挿入し、そのプリフェッチ命令にデータの利用時刻に関する情報を付加するステップと、
    前記プリフェッチ命令を含む前記中間コードを最適化してオブジェクトコードを生成するステップとをコンピュータに実行させ、
    前記利用時刻に関する情報は、前記オブジェクトコードの実行時において、前記プリフェッチ命令を発行した場合にプリフェッチされたデータがキャッシュに滞留する時間をもとに、前記プリフェッチ命令の発行コストを計算し、前記発行コストにもとづいて前記プリフェッチ命令の発行タイミングをスケジュールするために付加されることを特徴とするコンピュータプログラム。
  10. 前記利用時刻に関する情報は、プリフェッチ命令の挿入位置に対する相対的な位置で示される、プリフェッチデータの利用開始時点に関する情報を含むことを特徴とする請求項に記載のコンピュータプログラム。
  11. 前記利用時刻に関する情報は、プリフェッチ命令の挿入位置に対する相対的な位置で示される、プリフェッチデータの利用終了時点に関する情報をさらに含むことを特徴とする請求項10に記載のコンピュータプログラム。
  12. ソースコードを解析して中間コードに変換するステップと、
    前記中間コードにもとづいて、キャッシュメモリへプリフェッチすべきデータを決定し、そのデータに対するアクセス命令を元の実行順序位置よりも前の位置にプリフェッチ命令として挿入し、そのプリフェッチ命令にデータの利用時刻に関する情報を付加するステップと、
    前記プリフェッチ命令を含む前記中間コードを最適化してオブジェクトコードを生成するステップと、を備え、
    前記利用時刻に関する情報は、前記オブジェクトコードの実行時において、前記プリフェッチ命令を発行した場合にプリフェッチされたデータがキャッシュに滞留する時間をもとに、前記プリフェッチ命令の発行コストを計算し、前記発行コストにもとづいて前記プリフェッチ命令の発行タイミングをスケジュールするために付加されることを特徴とするオブジェクトコードの生成方法。
  13. ソースコードを解析して中間コードに変換する中間コード生成部と、
    前記中間コードにもとづいて、キャッシュメモリへプリフェッチすべきデータを決定し、そのデータに対するアクセス命令を元の実行順序位置よりも前の位置にプリフェッチ命令として挿入し、そのプリフェッチ命令にデータの利用時刻に関する情報を付加するプリフェッチ命令挿入部と、
    前記プリフェッチ命令を含む前記中間コードを最適化してオブジェクトコードを生成するオブジェクトコード生成部と、を備え、
    前記利用時刻に関する情報は、前記オブジェクトコードの実行時において、前記プリフェッチ命令を発行した場合にプリフェッチされたデータがキャッシュに滞留する時間をもとに、前記プリフェッチ命令の発行コストを計算し、前記発行コストにもとづいて前記プリフェッチ命令の発行タイミングをスケジュールするために付加されることを特徴とするオブジェクトコードの生成装置。
JP2003136387A 2003-05-14 2003-05-14 プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 Expired - Lifetime JP3973597B2 (ja)

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 JP2004348175A (ja) 2004-12-09
JP3973597B2 true 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)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
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 アイシロン・システムズ・インコーポレーテッド 分散ファイルシステムにおけるファイルの再ストライピングのためのシステム及び方法
JP3973597B2 (ja) * 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
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
JP5076616B2 (ja) * 2007-04-24 2012-11-21 富士通株式会社 プロセッサ及びプリフェッチ制御方法
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
KR20110032606A (ko) * 2009-09-23 2011-03-30 삼성전자주식회사 전자 디바이스의 성능 개선을 위한 전자 디바이스 컨트롤러
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
JP5808495B2 (ja) * 2012-08-22 2015-11-10 三菱電機株式会社 キャッシュメモリコントローラ及びキャッシュメモリコントロール方法
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 ソニー株式会社 通信制御装置、通信制御方法、およびプログラム
JP2015210718A (ja) * 2014-04-28 2015-11-24 富士通株式会社 記憶制御装置、ストレージシステム、および記憶制御プログラム
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)

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

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
JP2004348175A (ja) 2004-12-09
KR20060013384A (ko) 2006-02-09
CN1849580B (zh) 2010-04-28
US20070130428A1 (en) 2007-06-07
TW200513851A (en) 2005-04-16
KR100752005B1 (ko) 2007-08-28
US20040230748A1 (en) 2004-11-18

Similar Documents

Publication Publication Date Title
JP3973597B2 (ja) プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
US7958316B2 (en) Dynamic adjustment of prefetch stream priority
US7380066B2 (en) Store stream prefetching in a microprocessor
Kandemir et al. Dynamic management of scratch-pad memory space
US7350029B2 (en) Data stream prefetching in a microprocessor
US8255631B2 (en) Priority-based prefetch requests scheduling and throttling
US6918111B1 (en) System and method for scheduling instructions to maximize outstanding prefetches and loads
US8200905B2 (en) Effective prefetching with multiple processors and threads
US7627864B2 (en) Mechanism to optimize speculative parallel threading
JP4064924B2 (ja) メモリアクセスを制御する方法及び装置
US6643755B2 (en) Cyclically sequential memory prefetch
WO2007055875A1 (en) Method and apparatus for software scouting regions of a program
US5784711A (en) Data cache prefetching under control of instruction cache
Kallahalla et al. Optimal prefetching and caching for parallel I/O sytems
JP2002251321A (ja) キャッシュメモリシステム装置
US6516462B1 (en) Cache miss saving for speculation load operation
WO2014030387A1 (ja) キャッシュメモリコントローラ及びキャッシュメモリコントロール方法
US20050050534A1 (en) Methods and apparatus to pre-execute instructions on a single thread
JP2008015668A (ja) タスク管理装置
EP1444584A1 (en) Data prefecthing in a computer system
US20240012646A1 (en) System and method of prefetching array segments
US11886881B2 (en) Decoupled access-execute processing and prefetching control
EP0482706A2 (en) Method for intelligent data cache prefetching, and computer for implementing this method
JP2000284968A (ja) コンパイル方法及びコンパイラ装置

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