JPH06510611A - コンピュータシステムにおいてデータ処理速度を向上させる方法 - Google Patents

コンピュータシステムにおいてデータ処理速度を向上させる方法

Info

Publication number
JPH06510611A
JPH06510611A JP4509557A JP50955792A JPH06510611A JP H06510611 A JPH06510611 A JP H06510611A JP 4509557 A JP4509557 A JP 4509557A JP 50955792 A JP50955792 A JP 50955792A JP H06510611 A JPH06510611 A JP H06510611A
Authority
JP
Japan
Prior art keywords
cache
address
stream
processor
data
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
JP4509557A
Other languages
English (en)
Inventor
ハゲルステン,エリック
Original Assignee
スウィーディッシュ インスチチュート オブ コンピューター サイエンス
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 スウィーディッシュ インスチチュート オブ コンピューター サイエンス filed Critical スウィーディッシュ インスチチュート オブ コンピューター サイエンス
Publication of JPH06510611A publication Critical patent/JPH06510611A/ja
Pending legal-status Critical Current

Links

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】
コンピュータシステムにおいてデータ処理速度を向上させる方法 本発明は、コンピュータシステムにおいてデータを処理する速度を向上させる方 法に関する。 近年、VLSI(超大規模集積)回路における進歩により、マイクロプロセッサ とメモリ素子との間のアクセスタイムの差が広がっている。メモリ素子は、高速 なマイクロプロセッサと比較すると、比較的低速である。この速度差を狭めるた めに、所謂キャッシュが導入されている。これらのキャッシュは、マイクロプロ セッサとメモリ素子との間に実装されるものである。キャッシュは、チップの形 状をした、比較的小さく高速なメモリ素子である。1つのキャッシュには、例え ば、マイクロプロセッサによって頻繁に用いられるデータを記憶しておく。 キャッシュはそのデータを、キャッシュやマイクロプロセッサと比較すると低速 な、より大きなメモリ素子から取り込む。時として、2つまたは数個のキャッシ ュを、マイクロプロセッサと大きなメモリ素子との間に、階層的に配置すること かある。 キャッシュは、多重プロセッサシステムにおいても、見られることがあり、この 場合、例えば、各マイクロプロセッサか1つのキャッシュに接続されており、各 キャッシュによって、情報を大きなメモリに記憶すると共に、そこから取り出す ことができるようになっている。 この技術を用いた一例は、多重プロセッサシステムであり、この場合1つのプロ グラムの別々の部分を実行するように異なるプロセッサが作動するため、それら が異なるデータをメモリ素子から取り込まなければならない。 プロセッサ力相同の実行を完了して、次のものを開始しようとする時、メモリ素 子内に記憶されているデータで必要なのは断片部分のみである。この状況にある プロセッサは、まずキャッシュに第1のデータ片(piece)を要求する。キ ャッシュがこのデータ片を有していなければ、メモリ素子からそのデータを取り 込んで、キャッシュ内に記憶する。プロセッサがキャッシュ内に記憶されていな いデータを要求するにつれて、キャッシュのデータ量は増加する。このプロセッ サはプログラムの特定の部分のみを実行しているため、このプロセッサによって められるデータは、実行が進むにつれキャッシュ内で見つかることが多くなる。 これは、プロセッサからの以前の要求時に、キャッシュは既にこれらのデータを 取り込んでいるからである。キャッシュから1片のデータを取り込むためのアク セス時間は、プロセッサが大きなメモリから直接1片のデータを取り込むための アクセス時間より、大幅に短い。したがって、メモリとプロセッサとの間のデー タ速度は上昇し、メモリ素子の速度とプロセッサの速度との間の差は縮まり、デ ータ処理速度を向上させることになる。 キャッシュを用いて、メモリ素子のあるアドレスからデータを取り込む時、プロ セッサによって後に要求されるのに先立って、隣接アドレスのデータも同時に取 り込んでおき、そのデータ片を予めキャッシュ内に記憶しておくようにして、更 にメモリ速度を向上させる試みがなされている。他の可能性は、−片が要求され た時にデータブロック全体を取り込むことであろう。プロセッサが1つのブロッ ク内においであるアドレスを要求したのなら、同一ブロックにおいて数箇所のア ドレスを要求する可能性が高いと仮定することができるのなら、ブロック毎にデ ータを記憶することは有利である。しかしながら、これは大量の使用不可能なデ ータが取り込まれることを意味し、このために必要なメモリ容量の増加がキャッ シュに要求されることになり、メモリ速度を低下させてしまう。 本発明は、マイクロプロセッサが要求する前にキャッシュがデータを取り込むが 、前もって取り込んだデータがプロセッサによって要求される確率が、データを 先取りする他の既知のシステムより著しく高いので、キャッシュが小さくてすみ 、そのため非常に高速となる方法を提供するものである。 このように、本発明は、少なくとも1つのマイクロプロセッサと、メモリ素子と 、前記プロセッサに接続された所謂キャッシュを含むコンピュータシステムにお いて、データ処理速度を向上させる方法に関し、前記キャッシュは、前記プロセ ッサが要求した前記メモリ素子内のアドレスからデータを取り込むと共に、前記 プロセッサが要求していない前記メモリ素子のl箇所または数箇所のアドレスか らもデータを取り込むように構成されており、そしてストリーム−検出回路と呼 ばれる回路がキャッシュと相互作用を行ない、前記プロセッサが前記キャッシュ 内において要求するアドレス及びレジスタから、前記キャッシュ内に要求された アドレスがすでにあったか否かを、前記ストリーム−検出回路が監視するように なっておりニストリーム−検出回路は、前記キャッシュ内に前記プロセッサによ って要求された1つまたは数個の一連のアドレス列の検出をさせられるように構 成されており:及び、前記ストリーム−検出回路は、そのような列の検出時に、 前記キャッシュに前記列内の次のアドレスに対応するデータを前記メモリ素子か ら取り込み、前記キャッシュ内にそのアドレスを挿入することを指令するように 構成されていることを特徴とする。 本願にて提出された発明は、異なるコンピュータシステムにおいて、そして個別 のキャッシュ及び階層的に配列されたキャッシュを有するシステムにおいて、一 般的に用いることかできるものである。本発明を、一部本発明の実施例の添付図 面を参照して、以下により詳細に説明する。ここで、−第1図は、コンピュータ 及びメモリ素子に付加されたキャッシュを示す。 −第2図は、所謂ストリーム−オブジェクト(stream−object)回 路を示す。 一第3図は、所謂チェッカーオブジェクト(checker−object)回 路を示す。 一第4図は、ストリーム−検出回路を示す。及び−第5図は、ソフトウェアで実 施した場合の簡略化したストリーム−検出回路の略式仕様である。 第1図は、キャッシュ2を取り付けることができる、コンピュータlを示す。コ ンピュータとメモリ素子3との間に、別のキャッシュ4が存在し、キャッシュ2 と呼ばれる。本発明によれば、ストリーム−検出回路が存在し、コンピュータと キャッシュ2との間に接続されている。これは1streamと命名されている が、インテリジェントストリーム(Intelligent Stream)を 表わす。 ストリーム−検出回路は、所謂ストリーム−オブジェクト回路と、所謂チェッカ ーオブジェクト回路とを含んでいる。 チェッカーオブジェクト回路のタスクは、プロセッサからのトラフィックに、あ るパターン即ち連続アドレス列があるかを検出することである。これを達成する のに、現在のアドレス及び要求されるアドレス間で最も頻繁に現われる間隔のリ スト、例えば(+1、−1、+17)のようなリストを基に、どのアドレスが要 求されるかを予測する。このようなリストが、チェッカーオブジェクト回路を刺 激し、アドレスAに対する要求が与えられた時に、アドレスA+1.A−1,A +17が今後要求されるであろうと予測する。所定のパターンでの予測が所定回 数圧しいことが判明したら、所謂ストリームオブジェクトを生成すると共に起動 する。 チェッカーオブジェクト回路は、チェックすべきアドレス(Caddr)、先に 述べたステップ、及びカウンタ(Ctr)についての情報を含んでいる。Cad drは、チェックまたは保護すべき1つのアドレスを含んでいるが、先取りは発 生しない。Caddr内のアドレスがプロセッサとキャッシュ2との間に現われ た時、ある数値にカウントされたCtrが、アドレスストリームを識別されてい るとして考慮するか否かに対する、しきい値に等しいかをチェックする。Ctr がそのしきい値を越えていなければ、Cddrをステップの間隔だけ増加し、C trを数値1だけ増加する。 ストリーム−オブジェクト回路は、最も古く先取りされたアドレス(Oaddr )、最も新しく取り込んだアドレス(Naddr)、及び次のアドレスを計算す るための関数についての情報を含んでいる。このような関数の例は、先取りした アドレス間の一定な差(S t e p)、例えば+1、−■である。ストリー ム−オブジェクト回路は、プロセッサからの0addrに対する各要求が、先取 りしたアドレスが使用可能であることを示し、更に先取りを促すように、構成さ れている。プロセッサからの0addrに対する要求が、キャッシュ内にない0 addrであった場合(所謂キャッシュミス)、先取りは十分高速には行なわれ ておらず、2箇所以上のアドレスを先取りすることになる。要求がキャッシュ内 にあるアドレスであった場合、先取りは時間内に行なわれたので、更に1つのア ドレスのみが先取りされたことになる。 このように、ストリーム−オブジェクト回路は、データまたはアドレスストリー ムの取り込みを、あるパターン、例えばA+lやA−1のような隣接アドレスに したがって、発生する。このパターンは用途に応じて簡素にまたは複雑にするこ とができる。 しかしながら、データまたはアドレスストリームが存在するか否かを検出するの は、チェッカーオブジェクト回路である。この回路がこれを達成するのは、プロ セッサがキャッシュ内にはなかったアドレスをキャッシュ内に要求した時、1箇 所または数箇所のアドレス、即ち前記の所謂チェッカオブジェクトを選択し、そ れをチェッカーオブジェクト回路が保護または監視するという方法によるもので ある。この選択は、特定のパターンに応じて、最も新しく要求したアドレスから 1加えるまたは1減じるというように、行なわれる。即ちA+1及びA−1を選 択する。チェッカーオブジェクト回路が、ある回数圧しいアドレスの予測に成功 した時、データまたはアドレスストリームが検出されたと考えられる。前記回数 はカウントされ、前もって決められた数値、ここではしきい値と比較される。 本好適実施例では、2箇所または数箇所のアドレスによって、列を構成すること ができる。 特別な実施例では、プロセッサがキャッシュ内のアドレスを要求した時、列が増 加しているのか或いは減少しているのかをストリーム−検出回路が検出するまで 、想定されたアドレス列の高い及び低い順序の双方に対応するデータを、ストリ ーム−検出回路がメモリ素子から取り込むように、ストリーム−検出回路を構成 することができる。 更に別の好適実施例では、先に命名した検出可能な列を、加法的、算術的、幾何 学的、またはその他の論理的構造とすることができる。 更に別の好適実施例では、新しく興味深いパターンを実行時に検出することがで きた場合、それを関数リストに加え、チェッカー検出回路が、近く要求されるア ドレスについて、アドレス予測を行なうために用いるようにする。これの−例は 、要求アドレス間で新たな一定間隔が使われ始める時である。 ここで注意しなければならないのは、ストリーム−検出回路は、以下に与える例 のように比較的簡単に、ノ\−ドウエアで構成することができるが、このストリ ーム−検出回路は、全体的にソフトウェアで構築し、適切な既知のタイプのプロ セッサで処理することもてきるということである。したがって、ここでは特定の ノ\−ドウエアによる実施を示さない。後者の場合、明らかに、ストリーム−検 出回路をプログラムすることは非常に好都合であり、これによって種々の多少複 雑なデータストリームを検出するための1組のソフトウェアが得られる。したが って、例えば、アドレス間のステップが一定なものに限られることなく、異なる 列を検出することができる。 例えば、A+1.A+2、A+4、A+8.、、A+nという列、またはA+l 、A+2、A+3、A+11、A+12、A+13、A+2 L A+22.  、、という列を検出することができる。 本発明は、したがって、特別な構成の列の検出し、検出された列を用いることに よって、プロセッサによって要求されるキャッシュ内のデータの予測を高い確率 で可能とし、こうしてそれらのデータを先取りするということには、全く限定さ れることはない。 適切な時刻にアドレスを先取りすることは、プロセッサによって要求された時に 先取りされたアドレスがちょうどキャッシュに到達することを意味するが、この ために、更に池の実施例では、マイクロプロセッサがメモリ素子からデータが到 着したばかりのキャッシュ内のアドレスを要求するまで、先取りされるデータ量 を増加させる。 次に、キャッシュを用いたストリーム−検出回路の機能のアルゴリズムを示す簡 単な例において、キャッシュが本発明においていかに機能するかについて説明す る。 これは、第1図に例示されており、右側の表に示されているのは、プロセッサと キャッシュ2との間のトラフィック、所謂キャツシュヒツトが起きたか、そして アドレス先取りの動作である。以下の例における簡単なストリーム−検出回路は 、2つのチェッカーオブジェクト回路と、4つのストリーム−オブジェクト回路 とを備えている。間隔5tepは、+1及び−1に設定されている。 この例では、ストリームの発見に対する所謂しきい値は、数値lに設定されてい る。即ち、チェ・yカオブジェクトが、プロセッサによって要求されたキャッシ ュ2内のアドレスと一致したら直ちに、ストリームを発生する。 これらの動作について、[注目するトラフィック」と命名された欄にしたがって 、1行ずつ以下に説明する。 「注目するトラフィック」と命名した欄及び「先取り動作」と命名した欄におい て、rreadJ及びrWriteJが現われる。これは、キャッシュに先取り されるデータは、rread」またはrWriteJモードで先取りされること を意味する。これは、本発明をマイクロプロセッサを用いて実施する時に、大き な意味を持つ。 Read A −キャッシュ内のアドレスAに対するプロセッサからの要求が、 キャッシュ2において失敗となる。即ち、そのアドレスはキャッシュ2にはなか ったのである。キャッシュ2は、次にメモリ素子3からAを取り込む。アドレス 八を、全ての0addrと比較するが、現在アドレスを含んでいないので、一致 することはない。所謂チェッカオブジェクトC(A−1)及びC(A+1)が次 に形成される。WriteB −アドレスBが既にキャッシュ2に存在するので 、これは所謂キャツシュヒツトとなる。アドレスBを全ての0addrと比較す るが、現在アドレスを含んでいない。 Read A+1 − キャッシュ2における失敗のため、キャッシュ2にA+ 1を取り込ませる。アドレスA+1を、2つのチェッカオブジェクトC(A−1 )及びC(A+1)と比較し、その結果A+1と一致した。 Nadd=A+2及び0addr A+2及び5tep=1として、ストリーム を発生する。ストリーム−検出回路5は、キャッシュ2にA+2を先取りさせる 。 read A+2 − キャッシュ2における失敗のため、キャッシュ2にA+ 2を取り込ませた。しかしながら、正確にはこの取り込みは先のステップ、re adA+1で開始されたが、A+2がキャッシュ2に到達する時間がまだない。 A+2を全ての0aadrとを比較し、その結果一致が得られた。これによって 、ストリーム−検出回路は、キャッシュ2に2つのアドレス、即ちA+3および A+4を先取りさせ、先取り準備を拡大させる。0addrをA+3に変更し、 そしてNaddrをA+4に変更する。 write C−要求がキャッシュ2において失敗となる。ストリーム−検出回 路は、キャッシュ2にCを取り込ませる。アドレスCを全ての0addr(A+ 3)と比較するが、一致には全く至らない。アドレスCを2つのチェッカオブジ ェクト(A+ 1及びA+2)とも比較するが、これらも一致しない。2つの新 たなチェッカオブジェクトを、次に発生する、即ちC(C+1)とC(C−1) である。 read D −アドレスDがキャッシュ2内に既に存在していたので、これは キャッシュ2内てヒ・ソトを得る結果となる。アドレスDを全ての0addr( A+3)と比較するか、その結果全く一致は得られない。 read A+3 − これはキャッシュ2においてヒツトを得る結果となる。 このアドレスを全ての0addr (A+3)と比較し、結果として一致が得ら れる。次に、0addrをA+4に、NaddrをA+5に変更する。更に、ス トリーム−検出回路は、read命令A命令A相5て、キヤ・ソシュ2にA+5 を先取りさせる。 read A+I −これはキヤ・ノシュ2(こおし)でヒツトを得る結果とな る。A+1アドレスを全ての0addr (A+4)と比較するが、その結果全 く一致は得られない。他には何も起こらない。 write C−1−これはキヤ・ソシュ2(こおり九で失敗となる。アドレス C−1を全ての0addrと比較するが、その結果一致は全く得られない。C− tを全てのチェッカオブジェクト(A+ L A−1,C+L及びC−1)と比 較し、その結果ヒツトを得る。次に、Naddr=C−2,0addr=C−2 、及び5tep=1としたストリームを生成する。更に、Write命令(C− 2)を用いて、アドレスC−2を先取りする。 read A+4 − これはキャッシュ2においてヒツトを得る結果となる。 アドレスA+4を全ての0addr、即ち(A+4)及び(C−2)と比較し、 C−2で一致を得る結果となる。0addrをA+5に変更し、NaddrをA +6に変更し、モしてread命令(A+6)を用いて、アドレスA+6を先取 りする。 writeC−2−これはキャッシュ2においてヒツトを得る結果となる。アド レスC−2を全ての0addr (A+5及びC−2)と比較し、一致を得る結 果となる。次に、0addrをC−3に、NaddrをC−3に変更する。wr ite命令(C−3)を用いて、アドレスC−3を先取りする。 上述のアルゴリズムは、特にハードウェアでの実施に適したものである。更に、 それはアドレスを所謂第2レベルキヤツシユに先取りするのに、特に適している 。キャツシュヒツトが生じた時、必要な比較はストリームオブジェクト毎に1回 のみである。キャッシュミスが生じた時、即ち要求したものがキャッシュにない 時、ストリームオブジェクト毎及びチェックオブジェクト毎に比較が必要となる 。 第5図は、ソフトウェアで実施した簡単なストリーム−検出回路の略式仕様を示 す。第5図に示されているのは、簡単な場合にソフトウェアが取る構造である。 しかし、当業者は、・ソフトウェアで実施されたより複雑なストリーム−検出回 路に、この構造を用いることを望むかもしれない。第5図は、「簡素化された■ −ストリームの略式仕様」と名付けられている。 以下の記載は、本発明によるストリーム−検出回路のハードウェアによる実施の 一例である。この実施は、ストリーム−オブジェクト回路を示す第2図、チェッ カーオブジェクト回路を示す第3図、並びにチェッカーオブジェクト及びストリ ーム−オブジェクト回路を含むストリーム−検出回路を示す第4図の3つの図に 関して記載される。 第3図及び第4図において、rcontrolJ記号は、実行中にデータの流れ およびデータ経路の方向を決めるロジックを表わしている。 第4図は、ストリーム−検出回路のデータ経路について高レベルな構造を示す。 入力信号rAddress」は、キャッシュからのプロセッサによって要求され たアドレスを含んでおり、−古人力信号rmiss」は、要求されたものがキャ ッシュ内にあるか否かを示している。 「キャッシュ−アレー」ブロックは、数個のチェ・ツカオブジェクトを含んでい ると仮定する。このブロックの目的は、プロセッサからの要求において新しいパ ターンを発見することであり、要求が既にアクティブなストリームには含まれて いないことと組み合わせて、キャッシュ内で失敗が検出された時、renab  I eJ倍信号よってアクティブにされる。 いずれかのパターンによる新しい要求が検出された時、rs、Cr e a t  eJ倍信号LRU−BOXブロックに送る。LRUボックスは、最も長い間イ ンアクティブになっているストリームオブジェクトを選択するタスクを有する。 これを判断するために、各ストリームオブジェクトは、アクティブになる時毎に 、信号を送る(hitOlhitl、hit2、及びh i t 3)。LRU ボックスは、この信号を選択されたストリームオブジェクトに送ることによって 、当該選択されたストリームオブジェクトを起動する(createOlcre atel。 create2及びcreate3)。 そのrc r e a t eJ倍信号よってアクティブにされた、選択された ストリームオブジェクトの初期アドレス値(in i t、addr)は、現在 の要求のアドレスと検出パターンのステップとの合計として計算される。このア ドレスも、「出力バッファ」に先取りのために送られる。パターンのステップも 、ストリームオブジェクトを初期化するために送られる(init、5tep) 。 入力信号raddressJ及びrmiss」は、全てのオブジェクトに送られ 、それらはアクティブなストリームをチェックするのに用いられる。ストリーム オブジェクトは、先取りすべき新しいアドレスを、「出カッくッファ」に送る。 第2図に、ストリーム−オブジェクト回路が示されている。この回路は3つのレ ジスタ、即ち、5tep。 naddr、及びoaddrを含んでいる。これらのレジスタは、create と名付けられた入力信号がアクティブな時に起動され、それによって信号rin itstep」 (初期ステップ)、rinitnaddrJ (初期新アドレ ス)、及びrinitoaddrJ (初期旧アドレス)が各レジスタに書き込 まれる。入力信号5−createがアクティブでない時、oaddrの内容を 、プロセッサによってその瞬間に要求されているアドレスである、raddre ssJ信号と比較する。一致が検出されれば、出力信号rstream−hit Jが生成され、これによッテ既に先取りされたアドレスが、全要求されているこ とを示す。出力信号rprefetch−addrJは、naddrと5tep とを加算することによって形成される。stream−hitがアクティブであ れば、5tepとoaddrとを加算することによって先取りアドレス(pre fetch−addr)を計算する、データ経路がアクティブとなる。Nadd rレジスタも、prefetch−addrを用いて更新される。 rmiss」入力信号がアクティブであれば、新たなnaddrを生成するため に5tepとnaddrを加算するデータ経路は2回アクティブとなり、そして 先取リアドレス(prefetchaddr)が更に形成される。 第3図には、チェッカーオブジェクト回路のアレーを含む、チェッカーオブジェ クト回路が示されている。入力信号は、チェックされるべきアドレス(addr ess)、アクティブ化信号(enable)、及び先に命名した形成信号であ る。 出力信号は、5tep、ストリームを形成するための信号(s、create) 、及び先取りされたアドレスが検出されたことを表わすrhitJ信号である。 第3図は、チェッカーオブジェクト回路のアレーを示しており、各々3一つのレ ジスタ、即ち、caddr (チェックすべきアドレス)、ctr (先に述べ たしきい値に達したか否かをチェックするための数値を含む)、及び5tepを 含んでいる。1つのオブジェクトが、rforall。 ctrJまたはrfifo、repN レジスタのいずれかによって、選択され る。 renab 1 eJ入力信号がアクティブであれば、チェックが行なわれる。 アドレスをチェックする毎に、カウンタfora11.ctrがアレー全体にお いてステップを進める。選択されたオブジェクトのcddrレジスタの内容を、 入来するアドレスと比較する。選択されたオブジェクトのctrの内容を、一定 な数値C−threshold、即ちしきい値と比較する。選択されたオブジェ クトの5tepレジスタの内容を、rstepJ出力信号として出力する。入来 するアドレスと同一の選択されたcaddrと、C−threshold内のし きい値より大きな選択されたctrの内容との組み合わせによって、S。 create出力信号を発生する。入来するアドレスと同一の選択されたcad drと、C− threshold内のしきい値より大きなctrとの組み合わせによって、出 力信号int、inc (内部増分)を発生する。 int、inc信号は、選択されたctr内の数値を増加させると共に、この新 しい数値をctrレジスタに入力する、データ経路をアクティブにする。int 。 inc信号は、選択された5tepを入来するアドレスに加算し、その結果をc addrレジスタに書き込む、データ経路もアクティブにする。 rhttJ出力信号は、caddr (チェックされるアドレス)と入来するア ドレスとの間のアドレスに関して一致を検出したことを報告する。 入力信号createがアクティブの時、fifo。 replの内容でオブジェクトを選択する。こうして選択されたレジスタのca ddrは、入来するアドレスにc−intervalと命名された数値リスト上 の最初の値を加えたものにセットされ、そのctrはlにセットされ、そしてそ の5tepはc−intervalリスト内の最初の値にセットされる。次に、 fifo。 replを増分し、C−1ntervalリスト上の2番目の値について同じ作 業を行なうのに用いられる。この手順は、C−1nternalリスト上の全て の値が用いられる時まで、繰り返される。 第4図には、ストリーム−検出回路が示されており、チェッカーオブジェクト回 路のアレー及び数個のストリーム−オブジェクト回路を備えている。入来するア ドレスは、1つのストリーム−オブジェクト回路及びチェッカーオブジェクト回 路のアレーに送られる。入来するアドレスは、そのアドレスがキャッシュにおい て失敗を生じたかを、報告する。先取りすべきデータのアドレスが、出力信号と して、「出力バッファ」と命名された出力レジスタに報告される。 ストリーム−オブジェクト回路内でヒツトがない、即ち一致が得られず、しかも キャッシュ内でも失敗の場合、チェッカアレーをアクティブにする。アクティブ にされたチェッカアレーがヒツトを生じなければ、新たなチェッカオブジェクト 、即ちチェックすべきアドレスが、チェッカアレーに送られた信号rs、cre ateJによって形成される。 チェッカアレー内のヒツト、即ち当該アドレスが予期されたことは、rhitJ 出カ信号出土信号示される。 rs、CreateJ出力信号は、ヒツトがあったこと、及びストリームを形成 するしきい値も越えたことを報告する。s、create信号は所謂LRU ( 最も前に用いられた)ボックスに送られ、これはCreate信号を、最も長い 間インアクティブであったストリーム−オブジェクト回路に送る。LRUボック スは、最も長い間インアクティブであったストリーム−オブジェクト回路を選択 する。選択されたストリーム−オブジェクト回路は、チェッカアレーからその1 nit、5tep信号を、プロセッサによって現在要求されているアドレスと5 tepの合計から、その1nit、addr及び1nit、oaddrを受け取 る。 ストリーム−オブジェクト回路の起動と同時に、最初のデータ片が先取りされつ つある。あるストリームが検出された時、先取りすべきデータのアドレスが、レ ジスタの出力バッファに送られる。1つのストリームが検出された時、2つ以上 のアドレスを先取りすることができる。 実施は、アドレス数及びプロセッサとキャッシュとの間の転送速度に応じて決め られる。 ストリーム−検出回路は、プロセッサとキャッシュとの間を走るバスに接続され た別個の機能ユニットとして、また代替的に、キャッシュの一体化された部分と して実施することができる。この差は、アドレスを先取りするために発行される ストリーム−検出回路のコマンドの到達光によって決まる。 別個のユニットでは、バスに接続された他のいかなる構成とも同様に、ストリー ム−検出回路がバス上にコマンドを発行する。適切なバスの例は、モトローラ( Motorola)のMbus及びFuturebus+である。 ストリーム−検出回路をキャッシュに一体化すると、キャッシュに至るバス上に 余分なトラフィックを発生しないという利点がある。 上述のキャッシュの実施例は、数種類の応用領域に非常に適している。 1つの領域は、アレーまたはファイルを検索する場合のように、要求が厳格に連 続的な場合である。別の領域は、各要素が数回出現しその後決して再び用いられ ない、大きなアレーを要求するループである。別の領域は、マトリクスの計算の ような科学的計算である。例えば、マトリクス乗算では、3つのストリームが生 成される。第1のマトリクスから読み取り、そして結果をマトリクスに書き込む ことによって、■ステップが数値1のストリームを発生し、一方他のオペランド を読み取ることによって、列数に等しい数値のステップを得ることになる。 別の領域は、ゆっくりと成長する所謂スタックの作成である。 ストリーム−検出回路の使用に最適なのは、起動時、即ち所謂コールドスター)  (cold 5tart)において、またはプロセッサが他のプロセッサに連 結または再接続された直後であろう。 多(の応用をこれまでに述へてきた。しかしながら、本発明は、その背後の基本 的な構想、即ち、データまたはアドレスのストリームを検出し、検出したストリ ームを利用して入来するデータまたはアドレスの要求を予測し、そしてそれらを 先取りすること、から逸脱することなく、前記実施例とは相違するように変更す ることができる。 したがって、本発明は、上述の例示的実施例に限定されると解釈すべきではなく 、むしろ添付の請求の範囲の精神及び範囲内で変更し得るものである。 浄書(内容に変更なし)
【図1】 F19.3 Fig、 4 浄書(内容に変更なし) 1図51 簡略化したll−5TREAの略式仕様5、I4正命令の日付 平成6年5月2 4日6、補正により増加する薩求項の取 決人格証明書及びその訳文各1通 国際調査報告 :::”;::”4”、”ltZ =に=1,17 :mban、、m;+−二 *、m、mシ―jt4=m にm dm 18 +m &−V「を−?7r7’ ;r(v31°“−1swarm rwqLrml−−hPs1m10111t @IsIsMffI1ml+IsLMkmmanwme−−啼―噛1−マgkm −イーーー1−噛−5l撃唐撃唐氏\暑11sw

Claims (1)

  1. 【特許請求の範囲】 1.少なくとも1つのマイクロプロセッサ(1)と、メモリ素子(3)と、前記 プロセッサに接続されている所謂キャッシュ(2、4)とを有するコンピュータ システムにおいて、データ処理速度を向上させる方法であって、前記キャッシュ (2、4)は前記メモリ素子(3)内のアドレスから、前記プロセッサ(1)が 要求するデータを取り込み、それによって前記プロセッサ(1)が要求していな いデータも前記メモリ素子(3)の1箇所または数箇所のアドレスから取り込む ように構成されており、ストリーム−検出回路(5)と呼ばれる回路がキャッシ ュ(2、4)と相互作用を行ない、前記プロセッサ(1)が前記キャッシュ(2 、4)内において要求するアドレス及びレジスタから、前記キャッシュ(2、4 )内に要求されたアドレスが存在していたか否かを、前記ストリーム−検出回路 (5)が感知するようになっており;ストリーム−検出回路(5)は、前記キャ ッシュ(2、4)内に前記プロセッサ(1)によって要求された1つまたは数個 の一連のアドレス列の検出を強要されるように構成されており;及び、前記スト リーム−検出回路は、そのような列の検出時に、前記キャッシュ(2、4)に前 記列内の次のアドレスに対応するデータを前記メモリ素子(3)から取り込み、 前記キャッシュ(2、4)内にそのアドレスを挿入することを指令するように構 成されていることを特徴とする方法。 2.請求項1記載において、前記列は、2つ以上のアドレスで構成されているこ とを特徴とする方法。 3.請求項1または2において、前記列は、加法的、算術的、幾何学的、または その他の論理的構造であることを特徴とする方法。 4.請求項1、2または3において、前記先取りされたデータ量は、前記メモリ 素子(3)からデータを受け取ったばかりの前記キャッシュ(2、4)内のアド レスを、前記マイクロプロセッサ(1)が要求する時まで、増加することを特徴 とする方法。 5.請求項1−4のいずれかにおいて、前記プロセッサ(1)が前記キャッシュ (2、4)内のアドレスを要求する時、前記列が増加しているのか或いは減少し ているのかをストリーム−検出回路(5)が検出する時まで、前記ストリーム− 検出回路(5)は、受け付けたアドレス列の高い及び低い順の両方に対応するデ ータを前記メモリ素子(3)から取り込むことを前記キャッシュ(2、4)に指 令するように、ストリーム−検出回路(5)が構成されていることを特徴とする 方法。
JP4509557A 1991-05-02 1992-04-29 コンピュータシステムにおいてデータ処理速度を向上させる方法 Pending JPH06510611A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9101325-0 1991-05-02
SE9101325A SE469402B (sv) 1991-05-02 1991-05-02 Foerfarande foer att haemta data till ett cache-minne
PCT/SE1992/000282 WO1992020027A1 (en) 1991-05-02 1992-04-29 Method for increasing the speed of data processing in a computer system

Publications (1)

Publication Number Publication Date
JPH06510611A true JPH06510611A (ja) 1994-11-24

Family

ID=20382624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4509557A Pending JPH06510611A (ja) 1991-05-02 1992-04-29 コンピュータシステムにおいてデータ処理速度を向上させる方法

Country Status (8)

Country Link
US (2) US5802566A (ja)
EP (1) EP0582635B1 (ja)
JP (1) JPH06510611A (ja)
KR (1) KR100277818B1 (ja)
AT (1) ATE176534T1 (ja)
DE (1) DE69228380T2 (ja)
SE (1) SE469402B (ja)
WO (1) WO1992020027A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341334B1 (en) 1998-03-24 2002-01-22 Mitsubishi Denki Kabushiki Kaisha Bridge method, bus bridge, and multiprocessor system
JP2005242527A (ja) * 2004-02-25 2005-09-08 Hitachi Ltd プロセッサ、および、プリフェッチ制御方法

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
US5809529A (en) * 1995-08-23 1998-09-15 International Business Machines Corporation Prefetching of committed instructions from a memory to an instruction cache
US5737565A (en) * 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
US5664147A (en) * 1995-08-24 1997-09-02 International Business Machines Corp. System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command
DE19747275A1 (de) * 1997-10-25 1999-04-29 Philips Patentverwaltung Mobilfunkgerät mit einem Steuersignalgenerator
US6430680B1 (en) * 1998-03-31 2002-08-06 International Business Machines Corporation Processor and method of prefetching data based upon a detected stride
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6463509B1 (en) * 1999-01-26 2002-10-08 Motive Power, Inc. Preloading data in a cache memory according to user-specified preload criteria
US6370614B1 (en) 1999-01-26 2002-04-09 Motive Power, Inc. I/O cache with user configurable preload
US6449697B1 (en) 1999-04-23 2002-09-10 International Business Machines Corporation Prestaging data into cache in preparation for data transfer operations
US6622212B1 (en) * 1999-05-24 2003-09-16 Intel Corp. Adaptive prefetch of I/O data blocks
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US6567894B1 (en) 1999-12-08 2003-05-20 International Business Machines Corporation Method and apparatus to prefetch sequential pages in a multi-stream environment
US6628294B1 (en) 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
JP4341186B2 (ja) 2001-01-22 2009-10-07 株式会社日立製作所 メモリシステム
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
US6883066B2 (en) * 2001-09-14 2005-04-19 Seagate Technology Llc Method and system for cache management algorithm selection
US6760818B2 (en) 2002-05-01 2004-07-06 Koninklijke Philips Electronics N.V. Memory region based data pre-fetching
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
EP1610323A1 (en) * 2004-06-22 2005-12-28 Koninklijke Philips Electronics N.V. Defect management on file level
US7418531B2 (en) * 2005-05-04 2008-08-26 Pillar Data Systems, Inc. Quality of service for data storage volumes
US7457923B1 (en) * 2005-05-11 2008-11-25 Sun Microsystems, Inc. Method and structure for correlation-based prefetching
US20060294315A1 (en) * 2005-06-27 2006-12-28 Seagate Technology Llc Object-based pre-fetching Mechanism for disc drives
US8612956B2 (en) * 2007-12-05 2013-12-17 International Business Machines Corporation Efficient object profiling for optimizing object locality
US8918588B2 (en) * 2009-04-07 2014-12-23 International Business Machines Corporation Maintaining a cache of blocks from a plurality of data streams
US8566496B2 (en) * 2010-12-03 2013-10-22 Lsi Corporation Data prefetch in SAS expanders
US10642502B2 (en) 2018-06-29 2020-05-05 Western Digital Technologies, Inc. System and method for prediction of read commands to non-sequential data
US10649776B2 (en) 2018-06-29 2020-05-12 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data
US10642742B2 (en) 2018-08-14 2020-05-05 Texas Instruments Incorporated Prefetch management in a hierarchical cache system
US10896131B2 (en) 2019-01-28 2021-01-19 Western Digital Technologies, Inc. System and method for configuring a storage device based on prediction of host source
US10846226B2 (en) 2019-01-28 2020-11-24 Western Digital Technologies, Inc. System and method for prediction of random read commands in virtualized multi-queue memory systems
US10725781B1 (en) 2019-02-28 2020-07-28 Western Digital Technologies, Inc. System and method for chain prediction of multiple read commands
US10719445B1 (en) 2019-02-28 2020-07-21 Western Digital Technologies, Inc. System and method for scaling a historical pattern matching data structure in a memory device
US11055022B2 (en) 2019-03-25 2021-07-06 Western Digital Technologies, Inc. Storage system and method for early host command fetching in a low queue depth environment
US11010299B2 (en) 2019-05-20 2021-05-18 Western Digital Technologies, Inc. System and method for performing discriminative predictive read
US11416263B1 (en) 2021-02-12 2022-08-16 Western Digital Technologies, Inc. Boosted boot procedure by background re-arrangement of read patterns

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4262332A (en) * 1978-12-28 1981-04-14 International Business Machines Corporation Command pair to improve performance and device independence
US4468730A (en) * 1981-11-27 1984-08-28 Storage Technology Corporation Detection of sequential data stream for improvements in cache data storage
US5093777A (en) * 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
US5233702A (en) * 1989-08-07 1993-08-03 International Business Machines Corporation Cache miss facility with stored sequences for data fetching
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5357618A (en) * 1991-04-15 1994-10-18 International Business Machines Corporation Cache prefetch and bypass using stride registers
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US5367656A (en) * 1992-03-13 1994-11-22 Bull Hn Information Systems Inc. Controlling cache predictive prefetching based on cache hit ratio trend
US5586294A (en) * 1993-03-26 1996-12-17 Digital Equipment Corporation Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US5426764A (en) * 1993-08-24 1995-06-20 Ryan; Charles P. Cache miss prediction apparatus with priority encoder for multiple prediction matches and method therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341334B1 (en) 1998-03-24 2002-01-22 Mitsubishi Denki Kabushiki Kaisha Bridge method, bus bridge, and multiprocessor system
JP2005242527A (ja) * 2004-02-25 2005-09-08 Hitachi Ltd プロセッサ、および、プリフェッチ制御方法
JP4532931B2 (ja) * 2004-02-25 2010-08-25 株式会社日立製作所 プロセッサ、および、プリフェッチ制御方法

Also Published As

Publication number Publication date
US6078996A (en) 2000-06-20
KR100277818B1 (ko) 2001-01-15
DE69228380T2 (de) 1999-08-26
SE9101325L (sv) 1992-11-03
WO1992020027A1 (en) 1992-11-12
SE469402B (sv) 1993-06-28
DE69228380D1 (de) 1999-03-18
EP0582635B1 (en) 1999-02-03
ATE176534T1 (de) 1999-02-15
US5802566A (en) 1998-09-01
EP0582635A1 (en) 1994-02-16
SE9101325D0 (sv) 1991-05-02

Similar Documents

Publication Publication Date Title
JPH06510611A (ja) コンピュータシステムにおいてデータ処理速度を向上させる方法
US5694568A (en) Prefetch system applicable to complex memory access schemes
JP4301520B2 (ja) 不連続なデータ構造を事前取出しする方法
JP3830651B2 (ja) ループとストライドの一方または両方の予測を行うロードターゲットバッファを具現するマイクロプロセッサ回路、システム、および方法
US5758142A (en) Trainable apparatus for predicting instruction outcomes in pipelined processors
EP1031919B1 (en) Method for prefetching structured data
US4980823A (en) Sequential prefetching with deconfirmation
Lai et al. Selective, accurate, and timely self-invalidation using last-touch prediction
US5875472A (en) Address conflict detection system employing address indirection for use in a high-speed multi-processor system
US6216219B1 (en) Microprocessor circuits, systems, and methods implementing a load target buffer with entries relating to prefetch desirability
US8281079B2 (en) Multi-processor system receiving input from a pre-fetch buffer
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
JP2881049B2 (ja) プリフェッチバッファ
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
US20080016330A1 (en) Efficient Multiple-Table Reference Prediction Mechanism
US5930832A (en) Apparatus to guarantee TLB inclusion for store operations
US7120836B1 (en) System and method for increasing cache hit detection performance
US8301844B2 (en) Consistency evaluation of program execution across at least one memory barrier
US7058767B2 (en) Adaptive memory access speculation
US6449698B1 (en) Method and system for bypass prefetch data path
US6823430B2 (en) Directoryless L0 cache for stall reduction
US20050198439A1 (en) Cache memory prefetcher
CN117609110A (zh) 一种缓存方法、高速缓存、电子设备及可读存储介质
US6785796B1 (en) Method and apparatus for software prefetching using non-faulting loads
Rau et al. The effect of instruction fetch strategies upon the performance of pipelined instruction units