JP2004240811A - Information processor and prefetch method - Google Patents

Information processor and prefetch method Download PDF

Info

Publication number
JP2004240811A
JP2004240811A JP2003030581A JP2003030581A JP2004240811A JP 2004240811 A JP2004240811 A JP 2004240811A JP 2003030581 A JP2003030581 A JP 2003030581A JP 2003030581 A JP2003030581 A JP 2003030581A JP 2004240811 A JP2004240811 A JP 2004240811A
Authority
JP
Japan
Prior art keywords
address
prefetch
request
field
cache memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003030581A
Other languages
Japanese (ja)
Inventor
Toshihisa Kamemaru
敏久 亀丸
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2003030581A priority Critical patent/JP2004240811A/en
Publication of JP2004240811A publication Critical patent/JP2004240811A/en
Pending legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a prefetch control mechanism (prefetch system) which can intermittently specify different attributes to the prescribed regions of a main storage. <P>SOLUTION: A prefetch control mechanism 4 has a request address register 401 to store an address of the main storage, a significant bit string 402a which gives an instruction to prefetch, and an address space table 402 having a high order address string 402b which stores prescribed values. The prefetch control mechanism 4 has functions (a request valid flag register 400, a request address register 401, a comparator 403, and an AND circuit 404) to output a prefetch instruction signal and an address stored in the request address register 401 to a cache memory device, when a part of the address of the request address register 401 and a prescribed value stored in the high order address string 402b agree and the significant bit string 402a gives an instruction to prefetch. <P>COPYRIGHT: (C)2004,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
本発明は、キャッシュメモリのプリフェッチ制御方式及び方法に関する。
【0002】
【従来の技術】
従来のプロセッサを有し、キャッシュメモリ装置、主記憶装置のメモリ階層構造を持つ情報処理装置は、高性能化のためにプリフェッチ機能を持つものがある。高速(アクセスタイムが短い)だが容量のキャッシュメモリに、大容量だが低速(アクセスタイムの長い)主記憶装置からデータをあらかじめフェッチ(持ってくる)することをプリフェッチと呼び、メモリ階層構造を持つ情報処理装置の高速化には有効な手段である(公知の技術としては、多数ある。例えば、特開2001−175533、特開平11−167520)。
【0003】
しかし、プリフェッチには、未来に必要となるであろうデータを予測して持ってくるため、無駄なデータを持ってきてメモリバンド幅(外部メモリの出口のデータ転送能力)を浪費したり、有用なキャッシュデータを無駄なデータが上書きしてしまうなどの弊害がある。この弊害を削減するために、特開2000−148584では、全アドレス空間を3つの空間、「通常空間」、「プリフェッチ空間」、「キャッシュ空間」に分割しており、通常空間をアドレス0x00000000〜0x3fffffffに割り当て、プリフェッチ空間をアドレス0x40000000〜0x7fffffffに割り当て、キャッシュ空間をアドレス0x80000000〜0xffffffffに割り当てている。即ち、アドレスの上位2ビットを参照するだけで、属している空間を判別することができる。
なお、“0x”は16進数であることを示す接頭辞である。
【0004】
「プリフェッチ空間」には、ストリームデータのように、プロセッサにより連続的にアクセスされ、プロセッサが一度しか使用しないデータを配置し、プロセッサからのリード要求によりプリフェッチ機構が動作する。一方、「キャッシュ空間」には空間・時間局所性があり、プロセッサが再利用可能なデータを配置し、外部メモリから取ってきたデータを内部メモリ(キャッシュ)にコピーして、それ以降のプロセッサからのリードで使用する。さらに、「通常空間」は、プリフェッチやキャッシュを利用しないアドレス空間である。
【0005】
先行事例は、このようにアドレス空間に異なった属性を持たせているので、プログラム(命令とデータ)をその特性に応じて最適に割り付ければ、内部メモリを有効に活用して、高性能なシステムとなる。
【0006】
【特許文献1】
特開2001−175533号公報
【特許文献2】
特開平11−167520号公報
【0007】
【発明が解決しようとする課題】
しかしながら、上記の事例は、アドレス空間が単純に3分割されているので、Linuxなどの現状のオペレーティングシステム(OS)では、複数のプログラムやデータ特性に応じて適切ににプリフェッチの可否やキャッシュの可否を制御することは不可能である。
【0008】
また、短い間隔で連続的にデータを処理するプログラムでは、1ブロック先のデータのプリフェッチでは間に合わず性能が十分発揮されないので、数ブロック先のデータまでプリフェッチしてくる必要がある。一方、データの連続性が必ずしも強くない領域では、2ブロック連続アクセスを確認してから始めて次のブロックをプリフェッチするなど慎重な“保守的なプリフェッチ”が必要である。このように、プログラム領域やデータ領域ごとに最適なプリフェッチ方法が異なっている。
【0009】
さらに、膨大なシーケンシャルデータを順番にキャッシュに格納する場合、キャッシュが複数のウェイで構成されていても、そのシーケンシャルデータが、従来から格納されていた使用頻度の高いデータを追出し、キャッシュのミス率を上げる(性能が低下する)という問題も起こる。
本発明は、現状のOSを大きく変更することなく、主記憶装置の所定の領域(例えば、複数のプログラムやOSカーネルルーチンやデータ領域)に対して断続的に異なった属性を持たせるプリフェッチ機能を提供することを目的とする。
また、プリフェッチしてくるブロック数やプリフェッチ起動条件を個別に設定することによって、プリフェッチの効果を大きくし、副作用を小さくすることで、性能をより向上させることを目的とする。
【0010】
【課題を解決するための手段】
この発明に係る情報処理装置は、プロセッサと主記憶装置とキャッシュメモリとを備え、主記憶装置に記憶されたデータをキャッシュメモリへ予め読み込むことを指示するプリフェッチ機能を有する情報処理装置において、
プロセッサから出力される主記憶装置のアドレスを格納するアドレスレジスタと、
プリフェッチを指示する第1プリフェッチフラグと、所定の値を格納する第1アドレスフィールドとを有するアドレス空間テーブルと、
上記アドレスレジスタのアドレスの一部分と、上記第1アドレスフィールドに格納された所定の値とが一致し、上記第1プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力する制御部と
を備えることを特徴とする。
【0011】
【発明の実施の形態】
実施の形態1.
図1は、この発明の実施の形態1である情報処理装置を示す。
図1に示す情報処理装置は、プロセッサ1、キャッシュメモリ装置2、主記憶装置3、プリフェッチ制御機構(プリフェッチ制御装置)4とを備える。また、図1では、プロセッサ1が発行するメモリリクエスト信号線(有効信号とアドレス信号から構成される)11、プロセッサ1とキャッシュメモリ装置2の間でデータのやりとりをするデータ線12、キャッシュメモリ装置2が主記憶装置3へ発行するフェッチ要求線21、キャッシュメモリ装置2と主記憶装置3の間でデータのやりとりをするデータ線31、プリフェッチ制御機構4がキャッシュメモリ装置2にプリフェッチの要求を示すプリフェッチ要求信号線(有効信号とアドレス信号)41、プリフェッチ制御機構4がキャッシュメモリ装置2にキャッシュにバイパスやウェイの指定などの特別な指示を与えるキャッシュ指示信号線42を示している。
【0012】
また、以下の説明では、図1の情報処理装置は、データ線31のデータ転送は、16バイト単位、データ線12のデータ転送は、4バイト単位であることを一例として説明する。データ線31のデータ転送、即ち、キャッシュメモリ装置2と主記憶装置3との間のデータ転送は、ブロックサイズ(キャッシュメモリ装置へのアクセス単位)がアクセスの単位となる。
【0013】
図2は、図1における主要な構成要素であるプリフェッチ制御機構4の詳細を示した図である。
図2において、メモリリクエスト信号線11は、リクエスト有効信号11aとリクエストアドレス信号11bとからなる。
プリフェッチ要求信号線41は、プリフェッチ有効信号41aとプリフェッチアドレス信号41bとからなる。
また、図2では、リクエスト有効フラグレジスタ400、リクエストアドレスレジスタ401、アドレス空間テーブル402、比較器403、AND回路404、次のプリフェッチアドレスを計算する加算器405を示す。
【0014】
リクエスト有効フラグレジスタ400は、リクエスト有効信号11aでセットされる。
リクエストアドレスレジスタ401は、上位アドレスフィールド401a、インデックスフィールド401b、下位アドレスフィールド401cから構成される。
アドレス空間テーブル402は、有効ビット列402a、上位アドレス列402bから構成される。
【0015】
説明の明確化のため、各要素の寸法を仮定する。
リクエストアドレス信号11bを32ビットとする。
リクエストアドレスレジスタ401を32ビット、上位アドレスフィールド401aを8ビット、インデックスフィールド401bを12ビット、下位アドレスフィールド401cを12ビットとする。
アドレス空間テーブル402のエントリ数を4096個、上位アドレス列402bの1エントリのビット数を8ビットとする。
比較器403は8ビット同士の比較をする。
また、図1のキャッシュメモリ装置2に関して、キャッシュのブロックサイズ=16バイト、4ウェイセットアソシアティブ、1ウェイ当たりのエントリ数4096個、合計256Kバイト(=4×4096×16)と仮定する。
【0016】
各ビット数には、次の関係を有するようにビット数を決定している(下記では名称を省略し符号のみで示している)。
11bのビット数=401のビット数=401aのビット数+401bのビット数+401cのビット数。
401aのビット数=402bの1エントリのビット数=403が比較するビット数。
2の(401bのビット数)の乗数(2の12乗)=402のエントリ数。
【0017】
次に、動作例について説明する。
まず、システムとして(情報処理装置において)0x12345000から0x12345FFFまでのアドレス空間をプリフェッチ空間として設定する。この場合、図2のアドレス空間テーブル402の0x345番目のエントリについて、有効ビット列402a=1、上位アドレス列402b=0x12に設定する。設定は、オペレーティングシステムから初期設定時に行っても、アプリケーション実行時に専用ドライバ経由で行っても良い。この設定により0x12345000から0x12345FFFまでのアドレス空間がプリフェッチ空間として設定されたことになる。上記アドレス空間は、プリフェッチ可能な連続した4Kバイトの空間を指定するだけである。実際にプリフェッチするアドレスは、プロセッサから要求がきたアドレスに依存する。
【0018】
次に、図1において、プロセッサ1がメモリリクエスト信号線11経由で0x12345010番地にメモリリクエストを出す場合について説明する。0x12345010番地は、プリフェッチ空間に含まれる。
メモリリクエストを受けたキャッシュメモリ装置2は、該当アドレスを保持していない(キャッシュミス)場合、フェッチ要求線21経由で主記憶装置3に同アドレスのフェッチ要求を出し、主記憶装置3が応答してデータ線31経由でキャッシュメモリ装置2に所望のデータを転送し、キャッシュメモリ装置2がデータ線12経由でプロセッサ1に上記データを転送する。
キャッシュメモリ装置2が該当アドレスをもともと保持している(キャッシュヒット)場合は、キャッシュメモリ装置2はデータ線12経由でデータをプロセッサ1に送る。
【0019】
一方、プロセッサ1がメモリリクエスト信号線11経由で発行したメモリリクエストはプリフェッチ制御機構4にも送信される。プリフェッチ制御機構4は該当アドレスをプリフェッチすべきかを判定し、プリフェッチすべきと判断した場合、プリフェッチ要求信号線41を経由してプリフェッチ要求をキャッシュメモリ装置2に送出する。キャッシュメモリ装置2は、該当アドレスのキャッシュブロック保持の有無(ヒット/ミス)を調べて、ミスなら主記憶装置3からデータを取ってきてキャッシュに格納し、ヒットなら何もしない。
【0020】
次に、図2にて、メモリリクエストを受信したプリフェッチ制御機構4の動作を詳細に示す。メモリリクエスト信号線11経由でメモリリクエストが来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12345010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x12345010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x010)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル402のテーブルを引き(アドレス空間テーブル402の0x345番目のエントリを参照し)、有効ビット列402a出力(有効フラグ)=1と上位アドレス列402b出力(上位アドレス)=0x12が出力される。アドレス空間テーブル402の出力結果の上位アドレスと上位アドレスフィールド401aを比較器403で比較し、どちらも値=0x12なので比較器403出力=1が出力される。
【0021】
比較器403の出力値とリクエスト有効信号11aの値と有効ビット列402a出力値はすべて1なので、AND回路404の出力=1となり、41a(プリフェッチ有効信号)=1となる。また、プリフェッチアドレスもリクエストアドレス信号11bを加算器405に入力し、0x10(キャッシュのブロックサイズ)が加算された値=0x12345020がプリフェッチすべきアドレスとしてプリフェッチアドレス信号41bに出力される。即ち、有効なプリフェッチ要求がプリフェッチ要求信号線41を経由してキャッシュメモリ装置2に伝達される。最後に、プリフェッチ有効信号41aによってリクエスト有効フラグレジスタ400は0にクリアされ(プリフェッチ有効信号41aが入力することによってリクエスト有効フラグレジスタ400はクリアされる)、次のサイクルではプリフェッチ有効信号41aは0になり、プリフェッチ要求は終了する。
【0022】
一方、プリフェッチすべきでないアドレス、例えば、0x00345010がメモリリクエスト信号線11を経由してプリフェッチ制御機構4に入ってきた場合は、上位アドレスフィールド401aにセットされる値が0x00で、アドレス空間テーブル402から読み出される上位アドレス(上位アドレス列402b)が0x12で不一致となり比較器403の出力=0、従って、AND回路404の出力=0となり、プリフェッチが有効とならない。
【0023】
また、プリフェッチすべきでないアドレスの別の例、例えば、0x12344010がメモリリクエスト信号線11を経由してプリフェッチ制御機構4に入ってきた場合は、アドレス空間テーブル402から読み出される有効ビット(有効ビット列402a)=0となり、AND回路404の出力=0となりプリフェッチが有効とならない。
【0024】
以上の例では、4Kバイト毎に4096個所の断続的なアドレス空間をプリフェッチ空間として指定可能である。4Kバイトは下位アドレスのビット数=12ビット、4096個所はインデックスのビット数=12ビットに依存している。これらのビット数を変えることで、指定空間の大きさや数を変えることができる。
また、実現に際してはキャッシュタグと同程度のテーブルを使用すればよくコストの増大や性能の低下はほとんどない。
【0025】
このように、この実施の形態では、プロセッサ1と、主記憶装置3とキャッシュメモリ装置(キャッシュメモリ)2とのメモリ階層構造とを有し、主記憶装置3に記憶されたデータをキャッシュメモリ装置2へ予め読み込むことを指示するプリフェッチ機能(プリフェッチ制御機構4)を有する情報処理装置(及びプリフェッチ方法)の一例を説明した。
プリフェッチ制御機構4は、プロセッサから出力される主記憶装置のアドレスを格納するアドレスレジスタ(リクエストアドレスレジスタ401配置例)と、プリフェッチを指示する第1プリフェッチフラグ(有効ビット列402aは一例)と、所定の値(一例として、主記憶装置3のアドレスの一部分)を格納する第1アドレスフィールド(上位アドレス列402bは一例)とを有するアドレス空間テーブル402を有する(情報処理装置内へ設置する)。
【0026】
また、プリフェッチ制御機構4は、上記アドレスレジスタのアドレスの一部分と、上記第1アドレスフィールドに格納された所定の値(アドレスの一部分)とが一致し、上記第1プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力する制御部を有する。制御部は、図1では、リクエスト有効フラグレジスタ400、リクエストアドレスレジスタ401、比較器403、AND回路404によって実現する場合を一例として示した。
【0027】
また、主記憶装置のアドレスは、上位部分、中位部分、下位部分の三つに分割されて取り扱う例を示した。アドレス空間テーブル402は、上位部分のアドレスと比較する値(主記憶装置のアドレスの上位部分)を上記第1アドレスフィールドへ格納し、上記第1プリフェッチフラグと上記第1アドレスフィールドとを一つのエントリとした、上記中位部分の数のエントリを有することを前提とした。制御部は、上記中位部分を検索キーとしてアドレス空間テーブル402のエントリを検索し、検出したエントリを用いてプリフェッチを指示する。
【0028】
この実施の形態では、プリフェッチの有無をアドレス空間テーブルに格納して、アドレス空間テーブルをアドレスの一部を利用して検索し、プリフェッチの有無の指示を即座に判定できるようにしたので、断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【0029】
実施の形態2.
次に、プリフェッチリクエストを複数ブロック出す機構について図3を用いて説明する。
図3に示すプリフェッチ制御機構4は、図2と同様の機能に加えて、アドレス空間テーブル402がブロック個数フィールド列402cを持ち、回数制御回路406、セレクタ407を有する。他の番号で示した要素は図2と同じである。
ブロック個数フィールド列402cは、プリフェッチを要求するブロック数を指定するフィールドである。1つのブロックは、キャッシュのブロックサイズ(実施の形態1において16バイトと仮定した)に相当する。ブロック数を指定することによって、プリフェッチするサイズ(16バイト×ブロック数)を指定することが可能になる。
【0030】
次に、動作例について説明する。
まず、システムとして0x12345000から0x12345FFFまでのアドレス空間をプリフェッチ空間として設定し、4ブロック(即ち、16×4=64バイト)プリフェッチする要求があることを設定する。
この場合、図3の0x345番目のエントリについて、有効ビット列402a=1、上位アドレス列402b=0x12、ブロック個数フィールド402c=4を設定する。
【0031】
図3にて、メモリリクエストを受信したプリフェッチ制御機構4の動作を詳細に示す。メモリリクエスト信号線11経由でメモリリクエストが来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12345010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x12345010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x010)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル402のテーブルを引き、有効フラグ(0x345番目の有効ビット列402aの値)=1、上位アドレス(0x345番目の上位アドレス列402bの値)=0x12、ブロック個数(0x345番目のブロック個数フィールド列402cの値)=4が出力される。アドレス空間テーブル402の出力結果の上位アドレスと上位アドレスフィールド401aを比較器403で比較し、どちらも値=0x12なので結果=1が出力される。
【0032】
比較器403の出力結果とリクエスト有効信号11aの値とアドレス空間テーブル402の有効ビット出力はすべて1なので、AND回路404の出力=1となり、41a(プリフェッチ有効信号)=1となる。また、プリフェッチアドレスもリクエストアドレス信号11bからセレクタ407を経由して加算器405に入力し、0x10が加算された値=0x12345020がプリフェッチすべきアドレスとしてプリフェッチアドレス信号41bを経由してキャッシュメモリ装置2に伝達される。
【0033】
ここで、アドレス空間テーブル402から出力されたブロック個数=4が回数制御回路406に入力され、複数回のプリフェッチ要求の発行を行う。回数制御回路406は、セレクタ407の入力をリクエストアドレス信号11bから加算器405の出力に切り替えるよう指示を出し、セレクタ407はそのように動作する。つまり、加算器405は値=0x12345020を発行すると、続いて、0x12345030、0x12345040、0x12345050を発行する。即ち、プリフェッチアドレス信号41bを経由してキャッシュメモリ装置2にアドレス=0x12345030、0x12345040、0x12345050のプリフェッチ要求を送る。開始から3サイクル後に回数制御回路406は、リクエスト有効フラグレジスタ400をリセットし、プリフェッチ有効信号は0になる。この様子を図4に示す。
【0034】
図4では、名称を省略し、符号を用いて信号の様子を示している。
リクエストアドレス信号11b、ブロック個数フィールド402c、加算器405において、数値が示してある部分は、示してある数値がそれぞれへ設定されていることを示している。
【0035】
上記例は、ブロック個数フィールド402cのフィールドに値=4を設定したので4ブロックのプリフェッチ要求が発生したが、ブロック個数フィールド402cに1以上の整数値Nを設定すればNブロックのプリフェッチ要求が実現できる。シーケンシャルデータ処理の速いプログラムやメモリアクセスの遅延が大きい場合は、Nを大きくすることによって、より早いタイミングでのプリフェッチ要求が実現されるので淀みなくデータを供給して高い性能を維持できる。
【0036】
このように、この実施の形態では、上記キャッシュメモリは、上記制御部から入力したアドレスの所定サイズ(16バイトを一例として説明した)の記憶領域をプリフェッチすることを前提として、実施の形態1の機能に加え、アドレス空間テーブル402の中位部分の数のエントリそれぞれが、上記所定サイズの倍数の記憶領域をプリフェッチすることを指定するブロック数フィールド(ブロック個数フィールド列402cは一例)を備え、プリフェッチを指示すること(プリフェッチ要求すること)を、上記ブロック数フィールドに指定された倍数(個数)繰り返す例を説明した。
【0037】
この実施の形態では、プリフェッチの方式(先読みブロック数、起動条件)をアドレス空間テーブルに格納することで、先読みブロック数を断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【0038】
実施の形態3.
はっきりとしたシーケンシャル性が保証されないケースもある。このような場合、すべてのメモリリードに対して、無条件に次のブロックをプリフェッチしてくることは、無駄なプリフェッチによるメモリバスの浪費や有効なキャッシュブロックの追出しなど副作用によって性能低下を導くことがある。このような場合、より慎重な(保守的な)方法でプリフェッチを決定することは、無駄なプリフェッチを排除して副作用を軽減する方法として効果的である。
ここでの実施の形態は、そのような機能の実現性を図5により説明する。
図5において、図2と同じ番号のものは同じ機能、目的の要素であるため説明を省略する。図5のプリフェッチ制御機構4は、図2に示した構成要素に加えて、アドレス空間テーブル402に、保守的プリフェッチフラグ列402d、前リクエスト下位アドレス列402eを追加した。さらに、図2に示した構成要素に加えて、ブロックのバイト数を加算する加算器408、比較器409、AND回路410、NOT素子411、OR回路412とを追加している。
【0039】
次に、動作例について説明する。
まず、システムとして0x12345000から0x12345FFFまでのアドレス空間を保守的なプリフェッチ空間として設定する。
保守的なプリフェッチ空間とは、単発のリクエストではプリフェッチ要求を出さず、連続したアドレスのリクエストが2個来た場合に始めてプリフェッチ要求を出すものとする。この場合、図5のアドレス空間テーブル402の0x345番目のエントリについて、有効ビット列402a(有効ビット)=1、上位アドレス列402b(上位アドレス)=0x12に加えて、保守的プリフェッチフラグ列402d(保守的プリフェッチフラグ)=1を設定する。この段階で、前リクエスト下位アドレス列402eは、値が入っていない状態である。プロセッサ1からメモリリクエスト(アドレス=0x12345010)が発行された場合、プリフェッチ制御機構4はプリフェッチ要求を出さない。続いて、プロセッサ1からメモリリクエスト(アドレス=0x12345020)が発行されると、プリフェッチ制御機構4はプリフェッチ要求を出す。このように、2個の連続したアドレスが来ると、プリフェッチ制御機構4はプリフェッチ要求を出す。
【0040】
図5にて、メモリリクエストを受信したプリフェッチ制御機構4の動作の詳細を示す。
メモリリクエスト信号線11経由でメモリリクエスト(アドレス=0x12345010)が来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12345010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x12345010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x010)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル402のテーブルを引き、アドレス空間テーブル402の0x345番目のエントリが参照され、有効ビット列402a(有効フラグ)=1、上位アドレス列402b(上位アドレス)=0x12、保守的プリフェッチフラグ列402d(保守的プリフェッチフラグ)=1が出力される。
【0041】
保守的プリフェッチフラグ(保守的プリフェッチフラグ列402dの出力)が1なのでNOT素子411の出力は0になり、AND回路404の出力は0となる。一方、前リクエスト下位アドレス列402e(前リクエスト下位アドレス)には現在、値が入っていないため無効値となり、加算器408の出力も無効値となり、比較器409の出力は0となり、AND回路410の出力も0となる。AND回路404とAND回路410の両方の出力が0のためOR回路412の出力も0となり、プリフェッチ有効信号41a=0、即ち、プリフェッチ要求は4には伝達されない。最後に、下位アドレスが下位アドレスフィールド401cの値(=0x010)を前リクエスト下位アドレス列402eの0x345番目のエントリに書き込む。
【0042】
次に、メモリリクエスト(アドレス=0x12345020)が来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12345020)が示される。リクエスト有効フラグレジスタ400=1がセットされ、アドレス値=0x12345020がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x020)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル402のテーブルを引き、有効ビット列402a(有効フラグ)=1、上位アドレス列402b(上位アドレス)=0x12、保守的プリフェッチフラグ列402d(保守的プリフェッチフラグ)=1、前リクエスト下位アドレス列402e(前リクエスト下位アドレス)=0x010が出力される。
【0043】
従って、加算器408の出力は0x020となり、比較器409の2つの入力値が0x020で一致し、比較器409の出力=1となる。よって、AND回路410の出力=1となる。これまでと同様に、比較器403の出力=1なのでAND回路404の出力=1となる。従って、OR回路412の出力=1となりプリフェッチ有効信号41a=1となる。また、加算器405の出力=0x12345030となり、プリフェッチアドレス信号41b=0x12345030となる。即ち、有効なプリフェッチ要求がプリフェッチ制御機構4に伝達したことになる。最後に、下位アドレスが下位アドレスフィールド401cの値(=0x020)を前リクエスト下位アドレス列402eの0x345番目のエントリに書き込まれる。
【0044】
このように、この実施の形態では、アドレス空間テーブル402のエントリそれぞれが、さらに、前回上記アドレスレジスタに格納された主記憶装置のアドレスのうち、下位部分のアドレスを記憶する第2アドレスフィールド(前リクエスト下位アドレス列402eは一例)と、上記第2アドレスフィールドのアドレスに基づいてプリフェッチを指定する第2プリフェッチフラグ(保守的プリフェッチフラグ列402dは一例)とを有し、上記第1アドレスフィールド(上位アドレス列402b)に格納された値(上位部分のアドレスと比較する値)と上記アドレスレジスタ(リクエストアドレスレジスタ401)の上位部分とが一致し、かつ、上記第1プリフェッチフラグ(有効ビット列402a)がプリフェッチを指定した場合であって、さらに、上記第2アドレスフィールドに格納された下位部分のアドレスと上記アドレスレジスタの下位部分との差分が所定の範囲内であり、かつ、上記第2プリフェッチフラグがプリフェッチを指定している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリ装置2へ出力すること場合について説明した。
【0045】
この実施の形態では、プリフェッチの方式(保守的なプリフェッチ)をアドレス空間テーブルに格納することで、保守的なプリフェッチを断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【0046】
実施の形態4.
データの時間局所性・空間局所性の極めて低いデータをキャッシュに入れることは、他の有益なデータを追出すことになり返って性能を落とすことが知られている。本発明では、少量のH/W(ハードウェア)追加で断続的なアドレス空間のデータをキャッシュバイパス指定が可能となるので、その実施例を図1,図6にて示す。図6において、図2と同じ番号のものは同じ機能、目的の要素である。図2に示した構成要素に加えて、アドレス空間テーブル402に、キャッシュバイパスフラグ列402f、ウェイ指定フラグ列402g、ウェイ番号列402hを追加した。また、AND回路420、AND回路421を追加した。
【0047】
なお、この実施の形態では、ウェイ指定フラグ列402g、ウェイ番号列402hを用いない。従って、ウェイ指定フラグ列402g、ウェイ番号列402hにない構成であってもよい。
また、プリフェッチ制御機構4の出力信号であるプリフェッチ要求信号線41は、キャッシュバイパス指示信号42a、キャッシュウェイ指定信号42b、キャッシュウェイ番号信号42cから構成される。
【0048】
次に、動作例について説明する。
まず、システムとして0x12345000から0x12345FFFまでのアドレス空間をキャッシュバイパス空間として設定する。キャッシュバイパス空間とは、主記憶装置3から持つてきたデータを、キャッシュメモリ装置2を経由してプロセッサ1へ送るものの、キャッシュメモリ装置2の中には残さないという機能定義のアドレス空間である。つまり、キャッシュメモリ装置2の中では、キャッシュブロックの置き換えが発生せず、局所性の低いデータが局所性の高いデータを置き換えることを防ぐ。
【0049】
本ケースではあらかじめ、図6の0x345番目のエントリのキャッシュバイパスフラグ402f=1、上位アドレス列402b=0x12を設定する。図1のプロセッサ1からメモリリクエスト(アドレス=0x12345010)が発行された場合、プリフェッチ制御機構4は、キャッシュ指示信号線42を経由してキャッシュメモリ装置2にキャッシュバイパスを指示するキャッシュ指示信号を出す。これを受けたキャッシュメモリ装置2は、主記憶装置3からフェッチしてきたデータをプロセッサ1に送出するものの、該当キャッシュブロックのリプレースを行わない。
【0050】
図6にて、メモリリクエストを受信したプリフェッチ制御機構4の動作を詳細に示す。メモリリクエスト信号線11経由でメモリリクエスト(アドレス=0x12345010)が来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12345010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x12345010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x010)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル402のテーブルを引き、アドレス空間テーブル402の0x345番目のエントリを参照して、上位アドレス列402bの出力(上位アドレス)=0x12、キャッシュバイパスフラグ列402fの出力(キャッシュバイパスフラグ)=1が出力される。上位アドレスフィールド401aの出力と上位アドレス列402bの出力が一致するので比較器403の出力=1となり、キャッシュバイパスフラグ列402fの出力=1なのでAND回路420の出力=1となり、キャッシュバイパスを指示するキャッシュバイパス指示信号42aを経由してキャッシュメモリ装置2に伝達される。
【0051】
このように、この実施の形態では、アドレス空間テーブル402のエントリそれぞれは、さらに、プリフェッチを回避することを示すバイパスフラグ(キャッシュバイパスフラグ列402fは一例)を有し、第1アドレスフィールド(上位アドレス列402b)に格納された値(上位部分のアドレス比較する値)とアドレスレジスタ(リクエストアドレスレジスタ401)の上位部分とが一致し、かつ、第1プリフェッチフラグ(有効ビット列402a)がプリフェッチを指定した場合であって、上記バイパスフラグがプリフェッチを回避しない指定の場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとをキャッシュメモリ装置2へ出力する例を説明した。
【0052】
この実施の形態では、キャッシュブロックの制御の方式(キャッシュバイパス)をアドレス空間テーブルに格納することで、キャッシュバイパスを限定したキャッシュ指示を断続的なアドレス空間で可能となった。
【0053】
実施の形態5.
データのシーケンシャル性と極短期的な時間局所性はあるのだが、極めて膨大なデータを取り扱う場合、キャッシュには格納したいのだが、格納してしまうと、他の有用なデータをすべて追出してしまい、返って性能を落してしまう。このような場合、複数のウェイで構成されているキャッシュメモリでは、大規模シーケンシャルデータを特定のキャッシュ・ウェイに限定して格納するようにすることで、他の有用なキャッシュブロックの追出しを制限でき性能低下の副作用を軽減できる。本発明では、少量のH/W追加で断続的なアドレス空間のデータをキャッシュ・ウェイ指定が可能となるので、その実施例を図1,図6にて示す(図6は、実施の形態4で示したものと同じ)。但し、この実施の形態では、キャッシュバイパスフラグ列402fを用いない。従って、キャッシュバイパスフラグ列402fは、アドレス空間テーブル402に設置しない構成であってもよい。
【0054】
次に、動作例について説明する。
まず、システムとして0x12346000から0x12346FFFまでのアドレス空間について、キャッシュブロックをウェイ3だけ格納すると設定する。本キャッシュメモリは、4ウェイ構成でウェイ0からウェイ3まであると想定する。本ケースでは、あらかじめ、図6のアドレス空間テーブル402の0x346番目のエントリについて、有効ビット列402a=1、上位アドレス列402b=0x12に加えて、ウェイ指定フラグ列402g=1、ウェイ番号列402h=3を設定する。図1のプロセッサ1からメモリリクエスト(アドレス=0x12346010)が発行された場合、プリフェッチ制御機構4は、キャッシュ指示信号線42を経由してキャッシュメモリ装置2にキャッシュのウェイを3に限定するキャッシュ指示信号を出す。
【0055】
これを受けたキャッシュメモリ装置2は、主記憶装置3からフェッチしてきたデータを該当リプレース状態の如何にかかわらず、ウェイを主記憶装置3に設定する。通常のキャッシュメモリにおいては、新しいデータが入力され、古いデータを追出す場合、4ウェイの場合なら4個のブロックの一つをLRU(Least Recent Used)方式のアルゴリズムにしたがって選択する。本発明の場合、LRUの結果を無視してウェイを3と決定する機構を追加すればよく、図7に示すような容易な論理変更と微少なH/W追加で実現できる。
【0056】
図6にて、メモリリクエストを受信したプリフェッチ制御機構4の動作を詳細に示す。メモリリクエスト信号線11経由でメモリリクエスト(アドレス=0x12346010)が来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12346010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x12346010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x346、下位アドレスフィールド401c=0x010)。
【0057】
引き続きインデックスフィールド401bの値=0x346でアドレス空間テーブル402のテーブルを引き、アドレス空間テーブル402の0x346番目を参照して有効ビット列402aの出力(有効フラグ)、上位アドレス列402bの出力(上位アドレス)=0x12、ウェイ指定フラグ列402gの出力(ウェイ指定フラグ)=1、ウェイ番号列402hの出力(ウェイ番号)=3が出力される。上位アドレスフィールド401aの出力と上位アドレス列402bの出力が一致するので、比較器403の出力=1となり、ウェイ指定フラグ列402gの出力=1なのでAND回路421の出力=1となり、キャッシュのウェイ3への書き込みを指示するキャッシュウェイ指定信号42b=1、キャッシュウェイ番号信号42c=3がキャッシュメモリ装置2に伝達される。
【0058】
図7により、このキャッシュウェイ指定信号42b=1のとき、追出すウェイはキャッシュウェイ番号信号42cで指定されるウェイ3になる。
図7に示すように、キャッシュメモリ装置2へセレクタ29を追加することによってウェイを選択する機能を実現することができる。セレクタ29は、キャッシュウェイ指定信号42bの値によって追い出すウェイを選択する。
【0059】
このように、この実施の形態では、情報処理装置は、ウェイ番号によって指定される複数のキャッシュメモリから構成される場合のプリフェッチ機能の一例を説明した。
プリフェッチ制御機構4では、アドレス空間テーブル402のエントリそれぞれは、さらに、ウェイ番号を格納するウェイ番号フィールド(ウェイ番号列402hは一例)と、上記ウェイ番号フィールドが有効であることを示すウェイ番号有効フラグ(ウェイ指定フラグ列402gは一例)とを有し、上記第1アドレスフィールド(上位アドレス列402b)に格納された値(上位部分のアドレスと比較する値)と上記アドレスレジスタ(リクエストアドレスレジスタ401)の上位部分とが一致し、かつ、上記第1プリフェッチフラグ(有効ビット列402a)がプリフェッチを指定した場合であって、上記ウェイ番号有効フラグが有効を示している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとをキャッシュメモリ装置2へ出力する例を説明した。
また、キャッシュメモリ装置2は、上記ウェイ番号フィールドで指定されたキャッシュメモリへ、プリフェッチをする機能(一例としてセレクタの追加)を有する例を説明した。
【0060】
この実施の形態では、キャッシュブロックの制御の方式(明示的なウェイ指定)をアドレス空間テーブルに格納することで、キャッシュのウェイを限定したキャッシュ指示を断続的なアドレス空間で可能となった。
【0061】
実施の形態6.
これまでの実施の形態では、アドレスのインデックス部が同一のものは2つ以上アドレス空間を設定することができなかった。例えば、実施の形態1では、0x12345000〜0x12345fffと0x13345000〜0x13345fffを同時に設定することはできない。インデックス0x345が重なるためである。この課題は、図8のように、アドレス空間テーブルを2面持つ方法で解決できる。図8は、図2と同様の機能に加えて、もう一面のアドレス空間テーブル430を備える。アドレス空間テーブル430は、有効ビット列430a、上位アドレス列430bを備える。さらに、図2に比較回路431、AND回路432、AND回路433、OR回路434とが追加されている。
【0062】
次に、動作例について説明する。
まず、システムとして0x12345000から0x12345FFFと0x13345000から0x13345fffまでのアドレス空間をプリフェッチ空間として設定する。この場合、図8のアドレス空間テーブル402の0x345番目のエントリの有効ビット列402a=1、上位アドレス列402b=0x12、アドレス空間テーブル430の0x345番目のエントリの有効ビット列430a=1、上位アドレスフィールド430b=0x12を設定する。
【0063】
図8にて、メモリリクエストを受信したプリフェッチ制御機構4の動作を詳細に示す。メモリリクエスト信号線11経由でメモリリクエスト(アドレス=0x12345010)が来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x12345010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x12345010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x12、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x010)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル402のテーブルを引き、アドレス空間テーブル402の0x345番目のエントリを参照して、有効ビット列402a(有効フラグ)の出力=1、上位アドレス列402b(上位アドレス)の出力=0x12が出力される。
【0064】
アドレス空間テーブル402の結果の上位アドレス列402bと上位アドレスフィールド401aを比較器403で比較し、どちらも値=0x12なので結果=1が出力される。有効ビット列402aの出力(有効ビット)とこの結果よりAND回路432の出力は1となり、OR回路434の出力=1となる。リクエスト有効フラグレジスタ400の出力=1なのでAND回路404の出力=1となり、プリフェッチ有効信号41a=1となり、プリフェッチ有効信号がキャッシュメモリ装置2に伝達される。
【0065】
また、メモリリクエスト信号線11経由でメモリリクエスト(アドレス=0x13345010)が来た場合、リクエスト有効信号11a=1になり、リクエストアドレス信号11bに所望のアドレス(0x13345010)が示される。リクエスト有効フラグレジスタ400が1にセットされ、アドレス値=0x13345010がリクエストアドレスレジスタ401に保持される(上位アドレスフィールド401a=0x13、インデックスフィールド401b=0x345、下位アドレスフィールド401c=0x010)。引き続きインデックスフィールド401bの値=0x345でアドレス空間テーブル430のテーブルを引き、アドレス空間テーブル430の0x345番目を参照して、有効フラグ=1、上位アドレス=0x13が出力される。
【0066】
アドレス空間テーブル430の結果の上位アドレス列430bと上位アドレスフィールド401aを比較回路431で比較し、どちらも値=0x13なので結果=1が出力される。有効ビット列430aの出力(有効ビット)とこの結果よりAND回路433の出力は1となり、OR回路434の出力も1となる。リクエスト有効フラグレジスタ400の出力=1なのでAND回路404の出力=1となり、プリフェッチ有効信号41a=1となり、プリフェッチ有効信号がキャッシュメモリ装置2に伝達される。即ち、アドレス=0x12345010とアドレス=0x13345010の両者に対してプリフェッチ有効信号41aを出力できた。
【0067】
上記の方法は、アドレス空間テーブルを2面持ち、2つの同一インデックスの衝突の問題を回避した。3つの同一インデックスの場合は、上記の方法では解決できないが、このような場合は、確率が極めて小さくなり、性能に与える影響は小さいと考えられる。また、アドレス空間テーブルを3面持つことで、3つの同一インデックスの問題も解決できる。N個のインデックスの衝突の問題はアドレス空間テーブルをN面もてば解決でき、Nは性能とコストのトレードオフで決定すればよい。
【0068】
この実施の形態では、アドレス空間テーブルを複数面持つことで、設定すべきアドレスの衝突を回避し、アドレス空間の指示の自由度をあげることができる。
【0069】
実施の形態7.
上記実施の形態では、リクエストアドレスレジスタ401のアドレス32ビットを、上位アドレスフィールド401aを8ビット、インデックスフィールド401bを12ビット、下位アドレスフィールド401cを12ビットとして説明したが、これらのビット数の分割は一例であり、他のビット数で分割することも可能である。
【0070】
また、実施の形態1から6では明記していないが、アドレス空間テーブル402へ格納するデータそれぞれは、プリフェッチ方式及び方法を実行する前に格納される。情報処理装置は、予め、格納するデータを入力装置から入手し、入手したデータをアドレス空間テーブル402へ格納する。
入力装置は、情報処理装置へデータを入力する機能を有する。例えば、キーボード、マウス等から利用者によってデータが入力される場合、情報処理装置が通信網に接続されている場合、通信網を介してデータが入力される場合、あるいは、記録媒体に記録されたデータを情報処理装置が記録媒体を読み取る装置を介してデータを入力する場合等がある。
【0071】
実施の形態8.
上記実施の形態では、ハードウェアを用いたプリフェッチ方式(情報処理装置)及びプリフェッチ方法を説明したが、これに限られることはない。
プリフェッチ方式は、ハードウェア、ファームウェア、ソフトウェアそれぞれ、あるいは、上記の組合せによって実現することも可能である。
また、上記プリフェッチ方式は、プログラム(プリフェッチプログラム)によって実現することも可能である。
【0072】
プリフェッチプログラムは、プロセッサ1と主記憶装置3とキャッシュメモリ装置2とを備える情報処理装置(計算機)によって実行され、リクエストアドレスレジスタ401に格納された主記憶装置3のアドレスに記憶されたデータをキャッシュメモリ装置2へ予め読み込むことを指示する。
プリフェッチプログラムは、情報処理装置の主記憶装置3に記憶され、キャッシュメモリ装置2(あるいは、同等のメモリ)に読み出され、プロセッサ1によって実行されることになる。
【0073】
上記プリフェッチプログラムは、以下の手順を有する。
(1)プリフェッチ処理を開始する前に、プリフェッチを指示する第1プリフェッチフラグと、上記主記憶装置3のアドレスの一部分を格納する第1アドレスフィールドとを有するアドレス空間テーブル402を設置する手順。
(2)上記アドレス空間テーブルに格納するデータを予め入手し、入手したデータを上記アドレス空間テーブル402へ格納する手順と、
リクエストアドレスレジスタ401へプロセッサから出力されたアドレスを設定する手順。
(3)上記リクエストアドレスレジスタ401のアドレスの一部分と、上記第1アドレスフィールドに格納されたアドレスの一部分とが一致するか否かを判断する手順。
(4)判断した結果一致し、かつ、上記第1プリフェッチフラグがプリフェッチを指示することを判断し、プリフェッチを指示することを決定する手順。
(5)プリフェッチ指示信号とリクエストアドレスレジスタ401へ格納したアドレスとをキャッシュメモリ装置2へ出力する手順。
【0074】
また、上記プリフェッチプログラムは、計算機で読み取り可能な記録媒体に記録することが可能である。記録媒体に記録されたプリフェッチプログラムは、上記と同様にキャッシュメモリ装置2等に読み込まれ(ロードされ)、プロセッサ1によって実行される。
【0075】
【発明の効果】
本発明では、プリフェッチの有無をアドレス空間テーブルに格納して、そのテーブルをアドレスの一部を利用して検索し、プリフェッチの有無の指示を即座に判定できるようにしたので、断続的なアドレス空間に対してプリフェッチ指定が可能となった。
【図面の簡単な説明】
【図1】この発明の実施の形態1〜6を示す情報処理装置全体を表すブロック図である。
【図2】この発明の実施の形態1を示すプリフェッチ制御回路を表すブロック図である。
【図3】この発明の実施の形態2を示すプリフェッチ制御回路を表すブロック図である。
【図4】この発明の実施の形態2を示すプリフェッチ制御回路の動作を表す波形図である。
【図5】この発明の実施の形態3を示すプリフェッチ制御回路を表すブロック図である。
【図6】この発明の実施の形態4と5を示すプリフェッチ制御回路を表すブロック図である。
【図7】この発明の実施の形態5を示すキャッシュメモリ装置のLRU決定回路を表すブロック図である。
【図8】この発明の実施の形態6を示すプリフェッチ制御回路を表すブロック図である。
【符号の説明】
1 プロセッサ、2 キャッシュメモリ装置、3 主記憶装置、4 プリフェッチ制御機構(プリフェッチ制御装置)、11 メモリリクエスト信号線、11a リクエスト有効信号、11b リクエストアドレス信号、12 データ線、21 フェッチ要求線、29 セレクタ、31 データ線、41 プリフェッチ要求信号線、42 キャッシュ指示信号線、400 リクエスト有効フラグレジスタ、401 リクエストアドレスレジスタ、401a 上位アドレスフィールド、401b インデックスフィールド、401c 下位アドレスフィールド、402 アドレス空間テーブル、402a 有効ビット列、402b 上位アドレス列、402c ブロック個数フィールド列、402d 保守的プリフェッチフラグ列、402e 前リクエスト下位アドレス列、402f キャッシュバイパスフラグ列、402g ウェイ指定フラグ列、402h ウェイ番号列、403 比較器、404 AND回路、405 加算器、406 回数制御回路、407 セレクタ、408 加算器、409 比較器、410 AND回路、411 NOT素子、412 OR回路、420 AND回路、421 AND回路、430 アドレス空間テーブル、430a 有効ビット列、430b 上位アドレス列、431 比較回路、432 AND回路、433 AND回路、434 OR回路。
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a cache memory prefetch control method and method.
[0002]
[Prior art]
Some information processing apparatuses having a conventional processor and having a memory hierarchical structure of a cache memory device and a main storage device have a prefetch function for high performance. Prefetching (fetching) data from a high-speed (short access time) but large-capacity cache memory from a large-capacity but low-speed (long access time) main memory is called prefetch, and is information with a memory hierarchical structure. This is an effective means for increasing the speed of the processing apparatus (there are many known techniques, for example, JP-A-2001-175533 and JP-A-11-167520).
[0003]
However, in prefetching, data that will be needed in the future is predicted and brought, so that useless data is brought to waste memory bandwidth (data transfer capability at the exit of the external memory) or to be useful. There is an adverse effect such as useless data overwriting unnecessary cache data. In order to reduce this adverse effect, Japanese Patent Laid-Open No. 2000-148584 divides the entire address space into three spaces, a “normal space”, a “prefetch space”, and a “cache space”, and divides the normal space into addresses 0x00000000 to 0x3ffffffff. , The prefetch space is allocated to addresses 0x40000000 to 0x7ffffffff, and the cache space is allocated to addresses 0x80000000 to 0xffffffffff. That is, it is possible to determine the belonging space only by referring to the upper two bits of the address.
Note that “0x” is a prefix indicating a hexadecimal number.
[0004]
In the "prefetch space", data that is continuously accessed by the processor and is used only once, such as stream data, is arranged, and the prefetch mechanism operates in response to a read request from the processor. On the other hand, the "cache space" has locality in space and time, and the processor arranges reusable data, copies data fetched from external memory to internal memory (cache), Used for lead. Further, the “normal space” is an address space that does not use a prefetch or a cache.
[0005]
In the preceding case, since the address space has different attributes in this way, if programs (instructions and data) are optimally allocated according to their characteristics, the internal memory can be effectively used to achieve high performance. System.
[0006]
[Patent Document 1]
JP 2001-175533 A
[Patent Document 2]
JP-A-11-167520
[0007]
[Problems to be solved by the invention]
However, in the above case, since the address space is simply divided into three parts, in the current operating system (OS) such as Linux, the possibility of prefetching and the possibility of caching are appropriately determined according to a plurality of programs and data characteristics. Is impossible to control.
[0008]
Further, in a program that processes data continuously at short intervals, prefetching data one block ahead cannot be performed in time and performance is not sufficiently exhibited. Therefore, it is necessary to prefetch data several blocks ahead. On the other hand, in an area where the continuity of data is not always strong, careful "conservative prefetch" such as prefetching the next block after confirming continuous access of two blocks is necessary. As described above, the optimal prefetch method differs for each program area and each data area.
[0009]
Furthermore, when storing a large amount of sequential data in the cache in order, even if the cache is composed of a plurality of ways, the sequential data removes the frequently used data that has been stored in the past, and the cache miss rate. (Performance is degraded).
The present invention provides a prefetch function for intermittently giving different attributes to a predetermined area (for example, a plurality of programs, OS kernel routines, and data areas) of a main storage device without largely changing the current OS. The purpose is to provide.
It is another object of the present invention to increase the effect of prefetch by individually setting the number of blocks to be prefetched and the prefetch activation condition, and to further improve the performance by reducing side effects.
[0010]
[Means for Solving the Problems]
An information processing apparatus according to the present invention includes an information processing apparatus including a processor, a main storage device, and a cache memory, and having a prefetch function of instructing to read data stored in the main storage device into the cache memory in advance.
An address register for storing an address of a main storage device output from the processor;
An address space table having a first prefetch flag indicating a prefetch and a first address field storing a predetermined value;
When a part of the address of the address register matches a predetermined value stored in the first address field and the first prefetch flag indicates prefetch, a prefetch instruction signal and the address stored in the address register are used. And a control unit for outputting to the cache memory
It is characterized by having.
[0011]
BEST MODE FOR CARRYING OUT THE INVENTION
Embodiment 1 FIG.
FIG. 1 shows an information processing apparatus according to Embodiment 1 of the present invention.
The information processing apparatus shown in FIG. 1 includes a processor 1, a cache memory device 2, a main storage device 3, and a prefetch control mechanism (prefetch control device) 4. In FIG. 1, a memory request signal line (consisting of a valid signal and an address signal) 11 issued by the processor 1, a data line 12 for exchanging data between the processor 1 and the cache memory device 2, a cache memory device 2, a fetch request line 21 issued to the main storage device 3, a data line 31 for exchanging data between the cache memory device 2 and the main storage device 3, and a prefetch control mechanism 4 indicating a prefetch request to the cache memory device 2. A prefetch request signal line (valid signal and address signal) 41 and a cache instruction signal line 42 for the prefetch control mechanism 4 to give a special instruction to the cache memory device 2 such as designation of a bypass or way to the cache are shown.
[0012]
In the following description, the information processing apparatus in FIG. 1 will be described as an example in which data transfer on the data line 31 is performed in units of 16 bytes and data transfer on the data line 12 is performed in units of 4 bytes. In the data transfer of the data line 31, that is, the data transfer between the cache memory device 2 and the main storage device 3, an access unit is a block size (access unit to the cache memory device).
[0013]
FIG. 2 is a diagram showing details of a prefetch control mechanism 4 which is a main component in FIG.
2, the memory request signal line 11 includes a request valid signal 11a and a request address signal 11b.
The prefetch request signal line 41 includes a prefetch valid signal 41a and a prefetch address signal 41b.
FIG. 2 shows a request valid flag register 400, a request address register 401, an address space table 402, a comparator 403, an AND circuit 404, and an adder 405 for calculating the next prefetch address.
[0014]
The request valid flag register 400 is set by the request valid signal 11a.
The request address register 401 includes an upper address field 401a, an index field 401b, and a lower address field 401c.
The address space table 402 includes a valid bit string 402a and an upper address string 402b.
[0015]
For clarity of explanation, the dimensions of each element are assumed.
The request address signal 11b has 32 bits.
The request address register 401 has 32 bits, the upper address field 401a has 8 bits, the index field 401b has 12 bits, and the lower address field 401c has 12 bits.
Assume that the number of entries in the address space table 402 is 4096, and the number of bits of one entry in the upper address column 402b is 8 bits.
The comparator 403 compares eight bits.
1, it is assumed that the cache block size is 16 bytes, the 4-way set associative, the number of entries per way is 4096, and the total is 256 Kbytes (= 4 × 4096 × 16).
[0016]
The number of bits is determined so as to have the following relationship (the names are omitted below, and are indicated only by symbols).
11b bit number = 401 bit number = 401a bit number + 401b bit number + 401c bit number.
The number of bits to be compared with the number of bits of 401a = the number of bits of one entry of 402b = 403.
A multiplier of 2 (the number of bits of 401b) (2 to the 12th power) = the number of entries of 402.
[0017]
Next, an operation example will be described.
First, as a system (in the information processing apparatus), an address space from 0x12345000 to 0x12345FFF is set as a prefetch space. In this case, for the 0x345th entry of the address space table 402 in FIG. 2, the effective bit string 402a = 1 and the upper address string 402b = 0x12 are set. The setting may be performed at the time of initial setting from the operating system, or may be performed at the time of executing an application via a dedicated driver. With this setting, the address space from 0x12345000 to 0x12345FFF is set as the prefetch space. The above address space merely specifies a continuous 4K byte space that can be prefetched. The actual prefetch address depends on the address requested by the processor.
[0018]
Next, a case where the processor 1 issues a memory request to address 0x12345010 via the memory request signal line 11 in FIG. 1 will be described. Address 0x12345010 is included in the prefetch space.
When the cache memory device 2 that has received the memory request does not hold the address (cache miss), it issues a fetch request of the same address to the main storage device 3 via the fetch request line 21 and the main storage device 3 responds. Desired data is transferred to the cache memory device 2 via the data line 31, and the cache memory device 2 transfers the data to the processor 1 via the data line 12.
When the cache memory device 2 originally holds the corresponding address (cache hit), the cache memory device 2 sends data to the processor 1 via the data line 12.
[0019]
On the other hand, the memory request issued by the processor 1 via the memory request signal line 11 is also transmitted to the prefetch control mechanism 4. The prefetch control mechanism 4 determines whether or not the corresponding address should be prefetched, and sends a prefetch request to the cache memory device 2 via the prefetch request signal line 41 when determining that the address should be prefetched. The cache memory device 2 checks whether or not the corresponding address has a cache block (hit / miss). If the address is a miss, the data is fetched from the main storage device 3 and stored in the cache.
[0020]
Next, FIG. 2 shows in detail the operation of the prefetch control mechanism 4 which has received the memory request. When a memory request comes via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x12345010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x12345010 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x345, lower address field 401c = 0x010). Subsequently, the table of the address space table 402 is subtracted with the value of the index field 401b = 0x345 (refer to the 0x345th entry of the address space table 402), and the valid bit string 402a output (valid flag) = 1 and the upper address string 402b output (higher order) Address) = 0x12 is output. The upper address of the output result of the address space table 402 and the upper address field 401a are compared by the comparator 403. Since both values are 0x12, the output of the comparator 403 = 1 is output.
[0021]
Since the output value of the comparator 403, the value of the request valid signal 11a, and the output value of the valid bit string 402a are all 1, the output of the AND circuit 404 = 1, and the 41a (prefetch valid signal) = 1. The prefetch address also inputs the request address signal 11b to the adder 405, and the value obtained by adding 0x10 (cache block size) = 0x12345020 is output to the prefetch address signal 41b as the address to be prefetched. That is, a valid prefetch request is transmitted to the cache memory device 2 via the prefetch request signal line 41. Finally, the request valid flag register 400 is cleared to 0 by the prefetch valid signal 41a (the request valid flag register 400 is cleared by inputting the prefetch valid signal 41a), and the prefetch valid signal 41a is cleared to 0 in the next cycle. Thus, the prefetch request ends.
[0022]
On the other hand, if an address that should not be prefetched, for example, 0x00345010, enters the prefetch control mechanism 4 via the memory request signal line 11, the value set in the upper address field 401a is 0x00, and the address space table 402 The read upper address (upper address string 402b) is 0x12 and does not match, so that the output of the comparator 403 = 0, and therefore the output of the AND circuit 404 = 0, and the prefetch is not valid.
[0023]
When another example of an address that should not be prefetched, for example, 0x12344010 enters the prefetch control mechanism 4 via the memory request signal line 11, a valid bit (valid bit string 402a) read from the address space table 402. = 0, the output of the AND circuit 404 becomes 0, and the prefetch is not valid.
[0024]
In the above example, 4096 intermittent address spaces can be designated as prefetch spaces every 4 Kbytes. 4K bytes depend on the number of bits of the lower address = 12 bits, and 4096 places depend on the number of bits of the index = 12 bits. By changing the number of these bits, the size and number of the designated space can be changed.
Also, in realizing this, it is sufficient to use a table at the same level as that of the cache tag, and there is almost no increase in cost and no decrease in performance.
[0025]
As described above, this embodiment has the processor 1, the memory hierarchical structure of the main storage device 3, and the cache memory device (cache memory) 2, and stores the data stored in the main storage device 3 in the cache memory device. An example of the information processing apparatus (and the prefetch method) having the prefetch function (prefetch control mechanism 4) for instructing the prefetch to be performed in advance has been described.
The prefetch control mechanism 4 includes an address register (an example of the arrangement of the request address register 401) for storing the address of the main storage device output from the processor, a first prefetch flag for instructing the prefetch (an example of the valid bit string 402a), and a predetermined It has an address space table 402 having a first address field (an upper address column 402b is an example) for storing a value (for example, a part of the address of the main storage device 3) (installed in the information processing apparatus).
[0026]
Further, the prefetch control mechanism 4 determines that the part of the address of the address register matches the predetermined value (part of the address) stored in the first address field, and the first prefetch flag indicates prefetch. And a control unit for outputting a prefetch instruction signal and an address stored in the address register to the cache memory. FIG. 1 shows, as an example, the case where the control unit is realized by the request valid flag register 400, the request address register 401, the comparator 403, and the AND circuit 404.
[0027]
Also, an example has been described in which the address of the main storage device is handled by being divided into three parts, an upper part, a middle part, and a lower part. The address space table 402 stores a value to be compared with the address of the upper part (the upper part of the address of the main storage device) in the first address field, and stores the first prefetch flag and the first address field in one entry. It is assumed that there are entries of the number of the middle part. The control unit searches for an entry in the address space table 402 using the middle part as a search key, and instructs prefetch using the detected entry.
[0028]
In this embodiment, the presence / absence of prefetch is stored in the address space table, the address space table is searched using a part of the address, and the instruction of the presence / absence of prefetch can be immediately determined. Prefetch can be specified for various address spaces.
[0029]
Embodiment 2 FIG.
Next, a mechanism for issuing a plurality of blocks of a prefetch request will be described with reference to FIG.
The prefetch control mechanism 4 shown in FIG. 3 has, in addition to the same functions as in FIG. 2, the address space table 402 has a block number field column 402c, a number control circuit 406, and a selector 407. Elements indicated by other numbers are the same as those in FIG.
The block number field column 402c is a field for specifying the number of blocks for which prefetch is requested. One block corresponds to the block size of the cache (assumed to be 16 bytes in the first embodiment). By specifying the number of blocks, it is possible to specify the prefetch size (16 bytes × the number of blocks).
[0030]
Next, an operation example will be described.
First, the system sets an address space from 0x12345000 to 0x12345FFF as a prefetch space, and sets that there is a request to prefetch 4 blocks (that is, 16 × 4 = 64 bytes).
In this case, for the 0x345th entry in FIG. 3, a valid bit string 402a = 1, an upper address string 402b = 0x12, and a block number field 402c = 4 are set.
[0031]
FIG. 3 shows the operation of the prefetch control mechanism 4 having received the memory request in detail. When a memory request comes via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x12345010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x12345010 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x345, lower address field 401c = 0x010). Subsequently, the table of the address space table 402 is retrieved with the value of the index field 401b = 0x345, the effective flag (the value of the 0x345th effective bit string 402a) = 1, the upper address (the value of the 0x345th upper address string 402b) = 0x12, and the block. The number (the value of the 0x345th block number field column 402c) = 4 is output. The upper address of the output result of the address space table 402 and the upper address field 401a are compared by the comparator 403, and since both values are 0x12, the result = 1 is output.
[0032]
Since the output result of the comparator 403, the value of the request valid signal 11a, and the valid bit output of the address space table 402 are all 1, the output of the AND circuit 404 = 1, and the 41a (prefetch valid signal) = 1. The prefetch address is also input from the request address signal 11b to the adder 405 via the selector 407, and the value obtained by adding 0x10 = 0x12345020 is sent to the cache memory device 2 via the prefetch address signal 41b as the address to be prefetched. Is transmitted.
[0033]
Here, the number of blocks = 4 output from the address space table 402 is input to the number control circuit 406, and the prefetch request is issued a plurality of times. The number-of-times control circuit 406 issues an instruction to switch the input of the selector 407 from the request address signal 11b to the output of the adder 405, and the selector 407 operates as such. That is, after issuing the value = 0x12345020, the adder 405 subsequently issues 0x12345030, 0x12345040, and 0x12345050. That is, the prefetch request of the address = 0x12345030, 0x12345040, and 0x12345050 is sent to the cache memory device 2 via the prefetch address signal 41b. Three cycles after the start, the number control circuit 406 resets the request valid flag register 400, and the prefetch valid signal becomes 0. This is shown in FIG.
[0034]
In FIG. 4, the names are omitted, and the state of the signals is shown using reference numerals.
In the request address signal 11b, the block number field 402c, and the adder 405, a portion indicated by a numerical value indicates that the indicated numerical value is set to each.
[0035]
In the above example, a value of 4 was set in the field of the block number field 402c, so a prefetch request of 4 blocks occurred. However, if an integer value N of 1 or more is set in the block number field 402c, a prefetch request of N blocks is realized. it can. In the case of a program with fast sequential data processing or a large delay in memory access, by increasing N, a prefetch request can be realized at an earlier timing, so that data can be supplied without interruption and high performance can be maintained.
[0036]
As described above, in the present embodiment, the cache memory of the first embodiment is premised on prefetching a storage area of a predetermined size (described as an example of 16 bytes) of an address input from the control unit. In addition to the function, each of the number of entries in the middle part of the address space table 402 has a block number field (a block number field column 402c is an example) for designating prefetching a storage area having a multiple of the predetermined size. (Requesting a prefetch request) is repeated as a multiple (number) specified in the block number field.
[0037]
In this embodiment, the prefetch method (the number of prefetch blocks, the activation condition) is stored in the address space table, so that the number of prefetch blocks can be prefetched for an intermittent address space.
[0038]
Embodiment 3 FIG.
In some cases, clear sequentiality is not guaranteed. In such a case, unconditionally prefetching the next block for every memory read leads to performance degradation due to side effects such as waste of the memory bus due to useless prefetch and eviction of effective cache blocks. There is. In such a case, determining the prefetch by a more careful (conservative) method is effective as a method of eliminating unnecessary prefetch and reducing side effects.
In this embodiment, the feasibility of such a function will be described with reference to FIG.
In FIG. 5, elements having the same numbers as those in FIG. The prefetch control mechanism 4 of FIG. 5 adds a conservative prefetch flag column 402d and a previous request lower address column 402e to the address space table 402 in addition to the components shown in FIG. Further, in addition to the components shown in FIG. 2, an adder 408 for adding the number of bytes of the block, a comparator 409, an AND circuit 410, a NOT element 411, and an OR circuit 412 are added.
[0039]
Next, an operation example will be described.
First, as a system, an address space from 0x12345000 to 0x12345FFF is set as a conservative prefetch space.
The conservative prefetch space means that a single request does not issue a prefetch request, but issues a prefetch request only when two requests with consecutive addresses come. In this case, for the 0x345th entry of the address space table 402 in FIG. 5, in addition to the valid bit string 402a (valid bit) = 1, the upper address string 402b (upper address) = 0x12, the conservative prefetch flag string 402d (conservative Prefetch flag) = 1 is set. At this stage, the previous request lower address column 402e has no value. When a memory request (address = 0x12345010) is issued from the processor 1, the prefetch control mechanism 4 does not issue a prefetch request. Subsequently, when a memory request (address = 0x12345020) is issued from the processor 1, the prefetch control mechanism 4 issues a prefetch request. Thus, when two consecutive addresses arrive, the prefetch control mechanism 4 issues a prefetch request.
[0040]
FIG. 5 shows the details of the operation of the prefetch control mechanism 4 that has received the memory request.
When a memory request (address = 0x12345010) arrives via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x12345010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x12345010 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x345, lower address field 401c = 0x010). Subsequently, the table of the address space table 402 is retrieved with the value of the index field 401b = 0x345, the 0x345th entry of the address space table 402 is referred to, the effective bit string 402a (effective flag) = 1, and the upper address string 402b (upper address) = 0x12, conservative prefetch flag column 402d (conservative prefetch flag) = 1 is output.
[0041]
Since the conservative prefetch flag (output of the conservative prefetch flag column 402d) is 1, the output of the NOT element 411 becomes 0, and the output of the AND circuit 404 becomes 0. On the other hand, since the previous request lower address column 402e (previous request lower address) does not contain a value at present, the value becomes invalid, the output of the adder 408 also becomes invalid, the output of the comparator 409 becomes 0, and the AND circuit 410 Also becomes 0. Since the outputs of both the AND circuit 404 and the AND circuit 410 are 0, the output of the OR circuit 412 is also 0, and the prefetch valid signal 41a = 0, that is, the prefetch request is not transmitted to 4. Finally, the lower address writes the value (= 0x010) of the lower address field 401c into the 0x345th entry of the previous request lower address column 402e.
[0042]
Next, when a memory request (address = 0x12345020) arrives, the request valid signal 11a = 1, and the desired address (0x12345020) is indicated in the request address signal 11b. The request valid flag register 400 = 1 is set, and the address value = 0x12345020 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x345, lower address field 401c = 0x020). Subsequently, the table of the address space table 402 is retrieved with the value of the index field 401b = 0x345, and the effective bit string 402a (effective flag) = 1, the upper address string 402b (upper address) = 0x12, and the conservative prefetch flag string 402d (conservative prefetch flag) ) = 1 and the previous request lower address column 402e (previous request lower address) = 0x010 is output.
[0043]
Therefore, the output of the adder 408 is 0x020, and the two input values of the comparator 409 match at 0x020, and the output of the comparator 409 becomes 1. Therefore, the output of the AND circuit 410 = 1. As before, since the output of the comparator 403 is 1, the output of the AND circuit 404 is 1. Therefore, the output of the OR circuit 412 = 1 and the prefetch valid signal 41a = 1. Further, the output of the adder 405 becomes 0x12345030, and the prefetch address signal 41b becomes 0x12345030. That is, a valid prefetch request is transmitted to the prefetch control mechanism 4. Finally, the lower address writes the value of the lower address field 401c (= 0x020) to the 0x345th entry of the previous request lower address column 402e.
[0044]
As described above, in this embodiment, each entry of the address space table 402 further includes a second address field (previous address) for storing the lower part of the address of the main memory previously stored in the address register. The request lower address column 402e is an example) and a second prefetch flag that specifies prefetching based on the address of the second address field (the conservative prefetch flag column 402d is an example). The value stored in the address string 402b) (the value to be compared with the address of the upper part) matches the upper part of the address register (request address register 401), and the first prefetch flag (valid bit string 402a) If you specify prefetch Further, when the difference between the address of the lower part stored in the second address field and the lower part of the address register is within a predetermined range, and the second prefetch flag specifies prefetch, The case where the prefetch instruction signal and the address stored in the address register are output to the cache memory device 2 has been described.
[0045]
In this embodiment, the prefetch method (conservative prefetch) is stored in the address space table, so that prefetch can be designated for conservative prefetch for an intermittent address space.
[0046]
Embodiment 4 FIG.
It is known that caching data having extremely low temporal locality and spatial locality of data leads to eviction of other useful data, which degrades performance. In the present invention, cache bypass designation of intermittent address space data is enabled by adding a small amount of H / W (hardware), and an embodiment thereof is shown in FIGS. 6, those having the same numbers as those in FIG. 2 have the same functions and the same purpose. In addition to the components shown in FIG. 2, a cache bypass flag column 402f, a way designation flag column 402g, and a way number column 402h are added to the address space table 402. Further, an AND circuit 420 and an AND circuit 421 are added.
[0047]
In this embodiment, the way designation flag column 402g and the way number column 402h are not used. Therefore, a configuration not included in the way designation flag column 402g and the way number column 402h may be employed.
The prefetch request signal line 41, which is an output signal of the prefetch control mechanism 4, includes a cache bypass instruction signal 42a, a cache way designation signal 42b, and a cache way number signal 42c.
[0048]
Next, an operation example will be described.
First, an address space from 0x12345000 to 0x12345FFF is set as a cache bypass space as a system. The cache bypass space is a function-defined address space in which data received from the main storage device 3 is sent to the processor 1 via the cache memory device 2 but is not left in the cache memory device 2. That is, in the cache memory device 2, the replacement of the cache block does not occur, and the data with low locality is prevented from replacing the data with high locality.
[0049]
In this case, the cache bypass flag 402f = 1 and the upper address string 402b = 0x12 of the 0x345th entry in FIG. 6 are set in advance. When a memory request (address = 0x12345010) is issued from the processor 1 of FIG. 1, the prefetch control mechanism 4 issues a cache instruction signal to the cache memory device 2 via the cache instruction signal line 42 to instruct a cache bypass. The cache memory device 2 receiving this sends the data fetched from the main storage device 3 to the processor 1, but does not replace the corresponding cache block.
[0050]
FIG. 6 shows the operation of the prefetch control mechanism 4 having received the memory request in detail. When a memory request (address = 0x12345010) arrives via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x12345010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x12345010 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x345, lower address field 401c = 0x010). Subsequently, the table of the address space table 402 is retrieved with the value of the index field 401b = 0x345, and the output (upper address) of the upper address column 402b = 0x12 and the cache bypass flag column 402f are referred to by referring to the 0x345th entry of the address space table 402. (Cache bypass flag) = 1 is output. Since the output of the upper address field 401a and the output of the upper address column 402b match, the output of the comparator 403 = 1, and the output of the cache bypass flag column 402f = 1, so that the output of the AND circuit 420 = 1, indicating cache bypass. It is transmitted to the cache memory device 2 via the cache bypass instruction signal 42a.
[0051]
As described above, in this embodiment, each entry of the address space table 402 further includes the bypass flag (a cache bypass flag column 402f is an example) indicating that prefetch is to be avoided, and the first address field (upper address). The value stored in the column 402b) (the value to be compared with the address of the upper part) matches the upper part of the address register (request address register 401), and the first prefetch flag (valid bit string 402a) specifies prefetch. In this case, an example has been described in which the prefetch instruction signal and the address stored in the address register are output to the cache memory device 2 when the bypass flag specifies that prefetch is not to be avoided.
[0052]
In this embodiment, by storing the control method of the cache block (cache bypass) in the address space table, it is possible to perform the cache instruction limited to the cache bypass in the intermittent address space.
[0053]
Embodiment 5 FIG.
Although there is sequentiality and short-term time locality of data, when dealing with extremely large amounts of data, I want to store it in the cache, but once it is stored, all other useful data will be expelled, It returns and degrades performance. In such a case, in a cache memory composed of a plurality of ways, large-scale sequential data can be limited to a specific cache way and stored, thereby restricting eviction of other useful cache blocks. The side effects of performance degradation can be reduced. In the present invention, the cache way can be specified for intermittent address space data by adding a small amount of H / W, and an example thereof is shown in FIGS. 1 and 6 (FIG. 6 shows the fourth embodiment). The same as those shown in). However, in this embodiment, the cache bypass flag column 402f is not used. Therefore, the cache bypass flag column 402f may not be provided in the address space table 402.
[0054]
Next, an operation example will be described.
First, for the address space from 0x123346 to 0x12346FFF, the system is set to store only cache blocks in way 3. It is assumed that the present cache memory has a 4-way configuration and has ways 0 to 3. In this case, for the 0x346th entry of the address space table 402 in FIG. 6, in addition to the effective bit string 402a = 1, the upper address string 402b = 0x12, the way designation flag string 402g = 1, the way number string 402h = 3 Set. When a memory request (address = 0x12346010) is issued from the processor 1 of FIG. 1, the prefetch control mechanism 4 sends a cache instruction signal to the cache memory device 2 via the cache instruction signal line 42 to limit the cache way to three. Put out.
[0055]
The cache memory device 2 receiving this sets the way in the main storage device 3 regardless of whether the data fetched from the main storage device 3 is in the replaced state. In a normal cache memory, when new data is input and old data is expelled, one of four blocks is selected according to an LRU (Least Recent Used) algorithm in the case of 4-way. In the case of the present invention, it is only necessary to add a mechanism for deciding the way as 3 ignoring the result of the LRU, and it can be realized by an easy logical change and a small addition of H / W as shown in FIG.
[0056]
FIG. 6 shows the operation of the prefetch control mechanism 4 having received the memory request in detail. When a memory request (address = 0x12346010) arrives via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x12346010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x12346010 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x346, lower address field 401c = 0x010).
[0057]
Subsequently, the table of the address space table 402 is retrieved with the value of the index field 401b = 0x346, and the output of the effective bit string 402a (effective flag) and the output of the upper address string 402b (upper address) = 0x12, output of way designation flag string 402g (way designation flag) = 1, and output of way number string 402h (way number) = 3 are output. Since the output of the upper address field 401a and the output of the upper address string 402b match, the output of the comparator 403 = 1, and the output of the way designation flag string 402g = 1, so that the output of the AND circuit 421 = 1 and the cache way 3 A cache way designation signal 42b = 1 and a cache way number signal 42c = 3 instructing writing to the cache memory device 2 are transmitted to the cache memory device 2.
[0058]
According to FIG. 7, when the cache way designation signal 42b = 1, the way to be removed is the way 3 designated by the cache way number signal 42c.
As shown in FIG. 7, a function of selecting a way can be realized by adding a selector 29 to the cache memory device 2. The selector 29 selects a way to be kicked out according to the value of the cache way designation signal 42b.
[0059]
As described above, in the present embodiment, an example of the prefetch function in the case where the information processing apparatus is configured by a plurality of cache memories specified by way numbers has been described.
In the prefetch control mechanism 4, each entry of the address space table 402 further includes a way number field for storing a way number (a way number column 402h is an example) and a way number valid flag indicating that the way number field is valid. (The way designation flag string 402g is an example), the value stored in the first address field (upper address string 402b) (the value to be compared with the address of the upper part) and the address register (request address register 401). When the first prefetch flag (valid bit string 402a) specifies prefetch and the way number valid flag indicates valid, a prefetch instruction signal and the address Caches the address stored in the register An example was described of outputting to the memory device 2.
Also, an example has been described in which the cache memory device 2 has a function of prefetching a cache memory specified by the way number field (adding a selector as an example).
[0060]
In this embodiment, by storing the cache block control method (explicit way specification) in the address space table, it is possible to specify a cache way in a discontinuous address space.
[0061]
Embodiment 6 FIG.
In the embodiments described above, two or more address spaces cannot be set for addresses having the same index part. For example, in the first embodiment, 0x12345000 to 0x12345fff and 0x13345000 to 0x13345fff cannot be set simultaneously. This is because the index 0x345 overlaps. This problem can be solved by a method having two address space tables as shown in FIG. FIG. 8 is provided with another address space table 430 in addition to the functions similar to those of FIG. The address space table 430 includes a valid bit string 430a and an upper address string 430b. Further, a comparison circuit 431, an AND circuit 432, an AND circuit 433, and an OR circuit 434 are added to FIG.
[0062]
Next, an operation example will be described.
First, as a system, an address space from 0x12345000 to 0x12345FFF and an address space from 0x13345000 to 0x13345fff are set as prefetch spaces. In this case, the effective bit string 402a of the 0x345th entry of the address space table 402 in FIG. 8, the upper address string 402b = 0x12, the effective bit string 430a of the 0x345th entry of the address space table 430 = 1, and the upper address field 430b = Set 0x12.
[0063]
FIG. 8 shows the operation of the prefetch control mechanism 4 having received the memory request in detail. When a memory request (address = 0x12345010) arrives via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x12345010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x12345010 is held in the request address register 401 (upper address field 401a = 0x12, index field 401b = 0x345, lower address field 401c = 0x010). Subsequently, the table of the address space table 402 is retrieved with the value of the index field 401b = 0x345, the output of the valid bit string 402a (valid flag) = 1, and the upper address string 402b (higher order) with reference to the 0x345th entry of the address space table 402. Address = 0x12 is output.
[0064]
The upper address column 402b and the upper address field 401a of the result of the address space table 402 are compared by the comparator 403. Since both values are 0x12, the result = 1 is output. Based on the output (valid bit) of the valid bit string 402a and the result, the output of the AND circuit 432 becomes 1, and the output of the OR circuit 434 becomes 1. Since the output of the request valid flag register 400 = 1, the output of the AND circuit 404 = 1, the prefetch valid signal 41a = 1, and the prefetch valid signal is transmitted to the cache memory device 2.
[0065]
When a memory request (address = 0x13345010) arrives via the memory request signal line 11, the request valid signal 11a = 1, and the desired address (0x13345010) is indicated in the request address signal 11b. The request valid flag register 400 is set to 1, and the address value = 0x13345010 is held in the request address register 401 (upper address field 401a = 0x13, index field 401b = 0x345, lower address field 401c = 0x010). Subsequently, the table of the address space table 430 is looked up with the value of the index field 401b = 0x345, and the valid flag = 1 and the upper address = 0x13 are output with reference to the 0x345th of the address space table 430.
[0066]
The upper address column 430b of the result of the address space table 430 is compared with the upper address field 401a by the comparison circuit 431. Since both values = 0x13, the result = 1 is output. Based on the output (valid bit) of the valid bit string 430a and the result, the output of the AND circuit 433 becomes 1 and the output of the OR circuit 434 also becomes 1. Since the output of the request valid flag register 400 = 1, the output of the AND circuit 404 = 1, the prefetch valid signal 41a = 1, and the prefetch valid signal is transmitted to the cache memory device 2. That is, the prefetch valid signal 41a could be output to both the address = 0x12345010 and the address = 0x13345010.
[0067]
The above method has two address space tables and avoids the problem of collision between two identical indexes. In the case of three identical indices, the above method cannot solve the problem, but in such a case, the probability becomes extremely small, and the influence on the performance is considered to be small. Further, by having three address space tables, the problem of three identical indexes can be solved. The problem of collision of N indices can be solved by using an N-side address space table, and N may be determined by a trade-off between performance and cost.
[0068]
In this embodiment, by having a plurality of address space tables, collision of addresses to be set can be avoided, and the degree of freedom in specifying an address space can be increased.
[0069]
Embodiment 7 FIG.
In the above-described embodiment, the 32-bit address of the request address register 401 is described as 8 bits for the upper address field 401a, 12 bits for the index field 401b, and 12 bits for the lower address field 401c. This is just an example, and division by another number of bits is also possible.
[0070]
Although not specified in the first to sixth embodiments, data stored in the address space table 402 is stored before executing the prefetch method and method. The information processing device obtains data to be stored from the input device in advance, and stores the obtained data in the address space table 402.
The input device has a function of inputting data to the information processing device. For example, when data is input by a user from a keyboard, a mouse, or the like, when the information processing apparatus is connected to a communication network, when data is input through the communication network, or when data is recorded on a recording medium. There is a case where data is input through an apparatus for reading data from a recording medium by an information processing apparatus.
[0071]
Embodiment 8 FIG.
Although the prefetch method (information processing device) and the prefetch method using hardware have been described in the above embodiments, the present invention is not limited to this.
The prefetch method can be realized by hardware, firmware, software, or a combination of the above.
Further, the prefetch method can be realized by a program (prefetch program).
[0072]
The prefetch program is executed by an information processing device (computer) including the processor 1, the main storage device 3, and the cache memory device 2, and caches data stored at an address of the main storage device 3 stored in the request address register 401. It instructs to read into the memory device 2 in advance.
The prefetch program is stored in the main storage device 3 of the information processing device, read out to the cache memory device 2 (or equivalent memory), and executed by the processor 1.
[0073]
The prefetch program has the following procedure.
(1) A procedure for setting an address space table 402 having a first prefetch flag for instructing prefetch and a first address field for storing a part of an address of the main storage device 3 before starting prefetch processing.
(2) obtaining data to be stored in the address space table in advance, and storing the obtained data in the address space table 402;
A procedure for setting an address output from the processor to the request address register 401.
(3) A procedure for determining whether or not a part of the address of the request address register 401 matches a part of the address stored in the first address field.
(4) A procedure for judging that the result of the judgment is that the first prefetch flag indicates a prefetch, and that the first prefetch flag indicates a prefetch.
(5) A procedure for outputting the prefetch instruction signal and the address stored in the request address register 401 to the cache memory device 2.
[0074]
The prefetch program can be recorded on a computer-readable recording medium. The prefetch program recorded on the recording medium is read (loaded) into the cache memory device 2 or the like in the same manner as described above, and is executed by the processor 1.
[0075]
【The invention's effect】
In the present invention, the presence / absence of prefetch is stored in the address space table, and the table is searched using a part of the address so that the instruction of the presence / absence of prefetch can be immediately determined. Can be specified for prefetching.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating an entire information processing apparatus according to Embodiments 1 to 6 of the present invention.
FIG. 2 is a block diagram illustrating a prefetch control circuit according to the first embodiment of the present invention;
FIG. 3 is a block diagram illustrating a prefetch control circuit according to a second embodiment of the present invention;
FIG. 4 is a waveform diagram illustrating an operation of a prefetch control circuit according to a second embodiment of the present invention.
FIG. 5 is a block diagram illustrating a prefetch control circuit according to a third embodiment of the present invention;
FIG. 6 is a block diagram showing a prefetch control circuit according to the fourth and fifth embodiments of the present invention.
FIG. 7 is a block diagram illustrating an LRU determination circuit of a cache memory device according to a fifth embodiment of the present invention.
FIG. 8 is a block diagram illustrating a prefetch control circuit according to a sixth embodiment of the present invention.
[Explanation of symbols]
1 Processor, 2 cache memory device, 3 main storage device, 4 prefetch control mechanism (prefetch control device), 11 memory request signal line, 11a request valid signal, 11b request address signal, 12 data line, 21 fetch request line, 29 selector , 31 data line, 41 prefetch request signal line, 42 cache instruction signal line, 400 request valid flag register, 401 request address register, 401a upper address field, 401b index field, 401c lower address field, 402 address space table, 402a valid bit string , 402b Upper address column, 402c Block number field column, 402d Conservative prefetch flag column, 402e Previous request lower address column, 40 f Cache bypass flag string, 402g way designation flag string, 402h way number string, 403 comparator, 404 AND circuit, 405 adder, 406 number control circuit, 407 selector, 408 adder, 409 comparator, 410 AND circuit, 411 NOT element, 412 OR circuit, 420 AND circuit, 421 AND circuit, 430 address space table, 430a effective bit string, 430b upper address string, 431 comparison circuit, 432 AND circuit, 433 AND circuit, 434 OR circuit.

Claims (8)

プロセッサと主記憶装置とキャッシュメモリとを備え、主記憶装置に記憶されたデータをキャッシュメモリへ予め読み込むことを指示するプリフェッチ機能を有する情報処理装置において、
プロセッサから出力される主記憶装置のアドレスを格納するアドレスレジスタと、
プリフェッチを指示する第1プリフェッチフラグと、所定の値を格納する第1アドレスフィールドとを有するアドレス空間テーブルと、
上記アドレスレジスタのアドレスの一部分と、上記第1アドレスフィールドに格納された所定の値とが一致し、上記第1プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力する制御部と
を備えることを特徴とする情報処理装置。
An information processing apparatus comprising a processor, a main storage device, and a cache memory, the information processing device having a prefetch function of instructing to read data stored in the main storage device into the cache memory in advance.
An address register for storing an address of a main storage device output from the processor;
An address space table having a first prefetch flag indicating a prefetch and a first address field storing a predetermined value;
When a part of the address of the address register matches a predetermined value stored in the first address field and the first prefetch flag indicates prefetch, a prefetch instruction signal and the address stored in the address register are used. And a control unit that outputs the data to the cache memory.
上記主記憶装置のアドレスは、上位部分、中位部分、下位部分の三つに分割されて取り扱われ、
上記アドレス空間テーブルは、上記上位部分のアドレスと比較する値を上記第1アドレスフィールドへ格納し、上記第1プリフェッチフラグと上記第1アドレスフィールドとを一つのエントリとした、上記中位部分の数のエントリを有し、
上記制御部は、上記中位部分を検索キーとして上記アドレス空間テーブルのエントリを検索し、検出したエントリを用いてプリフェッチを指示することを特徴とする請求項1記載の情報処理装置。
The address of the main storage device is handled by being divided into three parts, an upper part, a middle part, and a lower part.
The address space table stores the value to be compared with the address of the upper part in the first address field, and sets the number of the middle part as one entry using the first prefetch flag and the first address field as one entry. Has an entry of
2. The information processing apparatus according to claim 1, wherein the control unit searches an entry of the address space table using the middle part as a search key, and instructs prefetch using the detected entry.
上記キャッシュメモリは、上記制御部から入力したアドレスの所定サイズの記憶領域をプリフェッチし、
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、上記所定サイズの倍数の記憶領域をプリフェッチすることを指定するブロック数フィールドを備え、
上記制御部は、上記検出したエントリを用いて、プリフェッチを指示することを、上記ブロック数フィールドに指定された倍数繰り返すことを特徴とする請求項2記載の情報処理装置。
The cache memory prefetches a storage area of a predetermined size at an address input from the control unit,
Each of the number of entries in the middle part of the address space table further includes a block number field that specifies to prefetch a storage area having a multiple of the predetermined size,
3. The information processing apparatus according to claim 2, wherein the control unit repeats instructing the prefetch using the detected entry by a multiple specified in the block number field.
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、
前回上記アドレスレジスタに格納された主記憶装置のアドレスのうち、下位部分のアドレスを記憶する第2アドレスフィールドと、
上記第2アドレスフィールドのアドレスに基づいてプリフェッチを指定する第2プリフェッチフラグと
を有し、
上記制御部は、上記検出したエントリを用いて、上記第1アドレスフィールドに格納された値と上記アドレスレジスタの上位部分とが一致し、かつ、上記第1プリフェッチフラグがプリフェッチを指定した場合であって、さらに、上記第2アドレスフィールドに格納された下位部分のアドレスと上記アドレスレジスタの下位部分との差分が所定の範囲内であり、かつ、上記第2プリフェッチフラグがプリフェッチを指定している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力することを特徴とする請求項2記載の情報処理装置。
Each of the number of entries in the middle part of the address space table further includes:
A second address field for storing the address of the lower part of the addresses of the main memory previously stored in the address register;
A second prefetch flag that specifies prefetch based on the address of the second address field,
The control unit may use the detected entry to match a value stored in the first address field with a high-order part of the address register and to specify that the first prefetch flag specifies prefetch. Further, the difference between the address of the lower part stored in the second address field and the lower part of the address register is within a predetermined range, and the second prefetch flag specifies prefetch. 3. The information processing apparatus according to claim 2, wherein a prefetch instruction signal and an address stored in the address register are output to the cache memory.
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、
上記プリフェッチを回避することを示すバイパスフラグを備え、
上記制御部は、上記検出したエントリを用いて、上記第1アドレスフィールドに格納された値と上記アドレスレジスタの上位部分とが一致し、かつ、上記第1プリフェッチフラグがプリフェッチを指定した場合であって、上記バイパスフラグがプリフェッチを回避しない指定の場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力することを特徴とする請求項2記載の情報処理装置。
Each of the number of entries in the middle part of the address space table further includes:
A bypass flag indicating that the prefetch is avoided,
The control unit may use the detected entry to match a value stored in the first address field with a high-order part of the address register and to specify that the first prefetch flag specifies prefetch. 3. The information processing apparatus according to claim 2, wherein when the bypass flag specifies that prefetch is not to be avoided, a prefetch instruction signal and an address stored in the address register are output to the cache memory.
上記情報処理装置は、ウェイ番号によって指定される複数のキャッシュメモリから構成され、
上記アドレス空間テーブルの中位部分の数のエントリそれぞれは、さらに、
ウェイ番号を格納するウェイ番号フィールドと、
上記ウェイ番号フィールドが有効であることを示すウェイ番号有効フラグと
を有し、
上記制御部は、上記検出したエントリを用いて、上記第1アドレスフィールドに格納された値と上記アドレスレジスタの上位部分とが一致し、かつ、上記第1プリフェッチフラグがプリフェッチを指定した場合であって、上記ウェイ番号有効フラグが有効を示している場合に、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力し、
上記キャッシュメモリは、上記ウェイ番号フィールドで指定されたキャッシュメモリへ、プリフェッチをすることを特徴とする請求項2記載の情報処理装置。
The information processing device includes a plurality of cache memories specified by way numbers,
Each of the number of entries in the middle part of the address space table further includes:
A way number field for storing a way number;
A way number valid flag indicating that the way number field is valid,
The control unit may use the detected entry to match a value stored in the first address field with a high-order part of the address register and to specify that the first prefetch flag specifies prefetch. Outputting the prefetch instruction signal and the address stored in the address register to the cache memory when the way number valid flag indicates valid;
3. The information processing apparatus according to claim 2, wherein the cache memory performs prefetch to a cache memory specified by the way number field.
上記情報処理装置は、複数のアドレス空間テーブルを備え、
上記制御部は、上記中位部分を検索キーとして複数のアドレス空間テーブルを検索することを特徴とする請求項2記載の情報処理装置。
The information processing device includes a plurality of address space tables,
The information processing apparatus according to claim 2, wherein the control unit searches a plurality of address space tables using the middle part as a search key.
プロセッサと主記憶装置とキャッシュメモリとを備える情報処理装置が、アドレスレジスタに格納された主記憶装置のアドレスに記憶されたデータをキャッシュメモリへ予め読み込むことを指示するプリフェッチ方法において、
上記情報処理装置は、
プリフェッチを指示する第1プリフェッチフラグと、上記主記憶装置のアドレスの一部分を格納する第1アドレスフィールドとを有するアドレス空間テーブルを設置し、
上記アドレスレジスタのアドレスの一部分と、上記第1アドレスフィールドに格納されたアドレスの一部分とが一致するか否かを判断し、
判断した結果一致し、かつ、上記第1プリフェッチフラグがプリフェッチを指示する場合、プリフェッチ指示信号と上記アドレスレジスタへ格納したアドレスとを上記キャッシュメモリへ出力することを特徴とするプリフェッチ方法。
In a prefetch method in which an information processing device including a processor, a main storage device, and a cache memory instructs to previously read data stored at an address of the main storage device stored in an address register into a cache memory,
The information processing device,
An address space table having a first prefetch flag for instructing prefetch and a first address field for storing a part of an address of the main storage device is provided;
Determining whether a part of the address of the address register matches a part of the address stored in the first address field;
A prefetch method comprising: outputting a prefetch instruction signal and an address stored in the address register to the cache memory when the result of the determination is a match and the first prefetch flag indicates prefetch.
JP2003030581A 2003-02-07 2003-02-07 Information processor and prefetch method Pending JP2004240811A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003030581A JP2004240811A (en) 2003-02-07 2003-02-07 Information processor and prefetch method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003030581A JP2004240811A (en) 2003-02-07 2003-02-07 Information processor and prefetch method

Publications (1)

Publication Number Publication Date
JP2004240811A true JP2004240811A (en) 2004-08-26

Family

ID=32957428

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003030581A Pending JP2004240811A (en) 2003-02-07 2003-02-07 Information processor and prefetch method

Country Status (1)

Country Link
JP (1) JP2004240811A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100445944C (en) * 2004-12-21 2008-12-24 三菱电机株式会社 Control circuit and its control method
JP2012533811A (en) * 2009-07-20 2012-12-27 フリースケール セミコンダクター インコーポレイテッド Signal processing system and integrated circuit with prefetch module, and method therefor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100445944C (en) * 2004-12-21 2008-12-24 三菱电机株式会社 Control circuit and its control method
JP2012533811A (en) * 2009-07-20 2012-12-27 フリースケール セミコンダクター インコーポレイテッド Signal processing system and integrated circuit with prefetch module, and method therefor

Similar Documents

Publication Publication Date Title
EP0996891B1 (en) Data processing circuit with cache memory
US5623627A (en) Computer memory architecture including a replacement cache
KR100962057B1 (en) Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US20150186293A1 (en) High-performance cache system and method
US7366875B2 (en) Method and apparatus for an efficient multi-path trace cache design
US7089370B2 (en) Apparatus and method for pre-fetching page data using segment table data
JP2881049B2 (en) Prefetch buffer
KR100962058B1 (en) Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US8176255B2 (en) Allocating space in dedicated cache ways
US7136967B2 (en) Multi-level cache having overlapping congruence groups of associativity sets in different cache levels
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
US20080263278A1 (en) Cache reconfiguration based on run-time performance data or software hint
US20100217937A1 (en) Data processing apparatus and method
JP2004038345A (en) Prefetch control device, information processor, and prefetch control process
JP2006120163A (en) Method, system, software and apparatus for reducing power of cache memory
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
JP2014115851A (en) Data processing device and method of controlling the same
US7219197B2 (en) Cache memory, processor and cache control method
KR20080089622A (en) Memory access control apparatus and memory access control method
US20150193348A1 (en) High-performance data cache system and method
JP2004240811A (en) Information processor and prefetch method
JP2008009857A (en) Cache control circuit and processor system
JP2002108705A (en) Method and device for reducing cache contamination
WO2006109421A1 (en) Cache memory
JPH0675853A (en) Cache memory device

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040519

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041026