JP3969009B2 - ハードウェアプリフェッチシステム - Google Patents

ハードウェアプリフェッチシステム Download PDF

Info

Publication number
JP3969009B2
JP3969009B2 JP2001094532A JP2001094532A JP3969009B2 JP 3969009 B2 JP3969009 B2 JP 3969009B2 JP 2001094532 A JP2001094532 A JP 2001094532A JP 2001094532 A JP2001094532 A JP 2001094532A JP 3969009 B2 JP3969009 B2 JP 3969009B2
Authority
JP
Japan
Prior art keywords
address
data
request
prefetch
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001094532A
Other languages
English (en)
Other versions
JP2002297379A (ja
Inventor
友洋 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2001094532A priority Critical patent/JP3969009B2/ja
Priority to US09/907,608 priority patent/US6636945B2/en
Publication of JP2002297379A publication Critical patent/JP2002297379A/ja
Application granted granted Critical
Publication of JP3969009B2 publication Critical patent/JP3969009B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、高性能コンピュータ・システム用のメモリ・システムに関し、特にキャッシュミスを起こしたデータフェッチにおいて、そのメモリアクセスアドレスのパターンに応じてハードウェアでプリフェッチを行い、メモリアクセス性能を向上させる機構をもった高性能計算機用メモリシステムに関する。
【0002】
【従来の技術】
コンピュータシステムにおいて、プロセッサ処理性能に比較して、メモリ処理性能の向上率が低いため、年々その処理性能差の乖離が激しくなっている。そのため、プロセッサ内にキャッシュメモリを実装し、メモリ処理性能の遅さを隠蔽するのが普通となっている。しかし、キャッシュメモリはデータの時間的・空間的局所性を利用するため、局所性の無いメモリアクセスパターンでは、キャッシュメモリが有効に働かないことがあり、処理性能が極端に悪化する。このような現象は、特に大規模科学技術計算に多く見られる配列データを連続的にアクセスし再利用性が低い場合に見られ、これに対してソフトウェアがメモリからキャッシュメモリへと事前にデータを転送させるプリフェッチ命令を挿入することで性能低下を防いできた。しかしながら、データ配列をリストアクセスする場合や、オブジェクト指向言語で書かれたプログラムでは、メモリアクセスパターンが連続アクセスであったとしてもソフトウェアがプリフェッチ命令を挿入できない場合が多い。一方、従来のハードウェアでプリフェッチを行う方式では、(1)過去にプリフェッチをかけたデータストリームについて後続のプリフェッチをハードウェアが生成する方式や、(2)過去にメモリアクセスをしたアドレスとの差分がある一定範囲の場合にハードウェアでプリフェッチを生成する方式が発明されている。上記(1)に関して、例えば特開平6−28180号公報に記載される。また(2)に関しては、特開平11−167520号公報に記載される。
しかし、(1)に関しては過去にプリフェッチがかかったデータストリームのみがハードウェアでプリフェッチを行う対象となり、ハードウェアでプリフェッチを出すことを特に期待される過去にプリフェッチが全く出ていなかったデータストリームに対して有効に働かない。(2)に関しては、プリフェッチをするアドレス生成において、現在のアクセスアドレスにそのデータストリームのアクセスアドレスのインターバル分を加算して生成しているが、このプリフェッチによってメインメモリからキャッシュメモリへの転送レイテンシを十分に隠せないことがある。
【0003】
【発明が解決しようとする課題】
キャッシュメモリを設けたプロセッサでは、キャッシュメモリの短いアクセスレイテンシを想定して、命令スケジューリングを行うため、キャッシュミスを起こすと処理性能が大幅に低下する。このようなキャッシュミスを起こしたデータフェッチについては、そのメモリアクセスパターンが主に連続アドレスに対するアクセスであることが多い。
そこで、本発明の一つの目的は、キャッシュミスを起こしたロード命令に対し、そのデータ転送列が連続するアドレスである場合にもメモリアクセスレイテンシを短縮して、キャッシュミスによる性能低下を軽減することにある。
本発明のより具体的な目的は、実施例の説明にて明らかにされる。
【0004】
【課題を解決するための手段】
本発明の代表的特徴にしたがうコンピュータシステムの特徴は、ハードウェアでキャッシュミスをしたデータフェッチのメモリアクセスアドレスの履歴を保持し、そのメモリアクセスアドレス履歴に登録されたアドレスに連続するアドレスに対するキャッシュミス・データフェッチが起こった場合に、ソフトウェアが指定するアドレス差分先アドレスに対するデータフェッチ要求をハードウェアで作成し、後続のキャッシュミス・データフェッチの発生に先だってメインメモリからデータフェッチを行うリクエスト生成機構と、リクエスト生成機構による発行されたデータフェッチによってメインメモリから転送されたデータを格納するバッファを有する点にある。これにより、後続のキャッシュミス・データフェッチに対するデータ転送遅延を短縮することができる。
【0005】
【発明の実施の形態】
本発明の実施例のシステム構成図は、図1の通りである。
図1において、プロセッサ内でロード命令やストア命令を処理するロード/ストア・ユニット25から、キャッシュメモリにヒットしなかったロード命令のリクエスト1(キャッシュミスロードリクエストが発行されると、このリクエストに含まれる転送アドレス2はロード履歴表(LDH表)3に登録される。ただし、同じアドレスがすでにロード履歴表3に登録されている場合にはアドレス登録をする必要はない。ロード履歴表3は、m個(mは1以上の整数)のアドレスを保持するmエントリの表であり、登録されているアドレスは最近のm個のキャッシュミスロードリクエストのアドレスである。ロード履歴表3に登録するアドレスに、プリフェッチ命令によるリクエストのアドレスを含めてもよい。また、ロード履歴表3のエントリを新しいアドレス値で上書きする場合に、そのエントリの選択においては、最もアドレス登録が古いエントリもしくは、最もアドレスヒットが最近起こっていないエントリを選択する。
キャッシュミスロードリクエスト1の転送アドレス6は比較器群7にて、ロード履歴表3に登録されているmエントリのアドレス値および、そのアドレス値に+Lバイト(Lは正の実数)加算したアドレス値、−Lバイト加算したアドレス値の3つのアドレス値とそれぞれ比較される。この比較結果において、キャッシュミスロードリクエスト1の転送アドレス6がロード履歴表3に登録されているmエントリのアドレス値の1つと一致した場合には、信号線9によりそのキャッシュミスロードリクエスト1の転送アドレス6をロード履歴表3に登録するのを抑止する。つまり、ロード履歴表3にすでにキャッシュミスロードリクエスト1の転送アドレス6が登録されている場合を検出して同じアドレスをロード履歴表3に登録しないようにする。ただし、この登録抑止は必須事項ではなく、アドレス更新抑止信号線9は無くてもよい。
キャッシュミスロードリクエスト1の転送アドレス8は、プリフェッチ・バッファ(PFB)23に登録されているnエントリ(nは1以上の整数)のアドレス値10と比較器11にて比較される。この比較において、1つ以上のエントリに登録されたアドレス値10がキャッシュミスロードリクエスト1の転送アドレス8と一致した場合には、ヒット信号線12によってプリフェッチ・バッファ(23にヒットしたエントリの番号が伝達される。プリフェッチ・バッファ23はヒットしたエントリのデータをヒット戻りデータ線24を使ってロード/ストア・ユニット25に転送する。キャッシュミスロードリクエスト1はメモリ系20へのリクエスト発行器26においてヒット信号線12がヒットを示している場合には、リクエストの発行が無効化され、ヒット信号線12がヒットしていないことを示している場合にのみリクエストの発行を行うことで、プリフェッチ・バッファ23にヒットした場合に、キャッシュミスロードリクエスト1はメモリ系20まで行かずに、プリフェッチ・バッファ23からデータがロード/ストア・ユニット25に転送され、データ転送遅延時間が短縮される。プリフェッチバッファ23は、アドレス値とLバイトのデータ値を組にして1エントリを構成し、これをnエントリもったものである。プリフェッチ・バッファ23のエントリを新しいアドレス値で上書きする場合に、そのエントリの選択においては、最もアドレス登録が古いエントリもしくは、最もアドレスヒットが最近起こっていないエントリを選択する。
キャッシュミスロードリクエスト1の転送アドレス14から、プリフェッチ・バッファ23に登録を行うLバイトのデータを転送するフェッチリクエスト(ハードウェア・プリフェッチ・リクエスト)19が作成される。このリクエストが要求をする転送アドレスは、キャッシュミスロードリクエスト1の転送アドレス14と同じアドレス、キャッシュミスロードリクエスト1の転送アドレス14にN(Nは1以上の整数)×Lバイトを加算15したアドレス、およびキャッシュミスロードリクエスト1の転送アドレス14にN×Lバイトを減算したアドレスの3つを用意し、選択器18で3つの中から最大1つを選択する。先読み幅レジスタ14にはこのN×Lバイトの値が設定されている。加算および減算は加算器15、減算器16で実行される。また、選択は、比較器群7における比較結果信号線束13によって行われる。比較器群7において、ロード履歴表3に登録されたmエントリのうちの1つのアドレスとの一致を検出した場合、選択器18では、キャッシュミスロードリクエスト1の転送アドレス14と同じアドレスのハードウェア・プリフェッチ・リクエスト19が選択される。
比較器群7において、ロード履歴表3に登録されたmエントリのアドレスに+Lバイトを加算したアドレスのうちの1つとの一致を検出した場合、選択器18では、キャッシュミスロードリクエスト1の転送アドレス14にN×Lバイトを加算したアドレスのハードウェア・プリフェッチ・リクエスト19が選択される。比較器群7において、ロード履歴表(3)に登録されたmエントリのアドレスに−Lバイトを加算したアドレスのうちの1つとの一致を検出した場合、選択器18では、キャッシュミスロードリクエスト1の転送アドレス14にN×Lバイトを減算したアドレスのハードウェア・プリフェッチ・リクエスト19が選択される。また、ハードウェア・プリフェッチ・リクエスト19が発行された場合、そのリクエストによるメモリ系20からの戻りデータを格納するエントリをプリフェッチ・バッファ23に確保するため、ハードウェア・プリフェッチ・リクエスト発行信号28によりプリフェッチ・バッファ23に伝達する。
キャッシュミスロードリクエスト27およびハードウェア・プリフェッチ・リクエスト19によりメモリ系20はロード/ストア・ユニット25もしくはプリフェッチ・バッファ23にデータを転送する。キャッシュミスロードリクエスト27に対しては、プリフェッチ・バッファ23を経由せずに直接ロード/ストア・ユニット25へのデータ転送線21を使ってデータを転送する。一方、ハードウェア・プリフェッチ・リクエスト19に対しては、プリフェッチ・バッファ23へのデータ転送線22を使ってデータを転送し、プリフェッチ・バッファ23の格納エントリにデータを登録する。
ハードウェア・プリフェッチを発行するアドレスの先読み幅は、
加減算15,減算器16の入力である先読み幅レジスタ17で決定される。先読み幅レジスタ17は、プリフェッチ・バッファ23のデータサイズであるLバイトのN倍に設定されている。ここで、Nはソフトウェアで設定する1以上の整数である。
図2はソフトウェアによるNの設定方法の例を示したものである。図2で上から下方向に命令が処理されているとし、[1]、[3],[5],[7],[9]のロード命令はレジスタr1に設定された定数値にそれぞれ0、L、2L、3L、4Lバイトだけ加算したアドレスに対するデータフェッチを行う。この4つのロード命令はキャッシュミスを起こし、図2の太矢印で示しただけメモリからのデータ転送遅延時間がかかるとする。ここで、ソフトウェアが先読み幅レジスタ17にN=2を設定していたとすると、[3]のキャッシュミスロード命令で、[7]のロード命令のロードアドレスに対するハードウェア・プリフェッチ・リクエストが発行される。すると、実際の[7]のロード命令実行時までにメモリからのデータ転送が終わっているため、[7]のロード命令はプリフェッチ・バッファ(23)からデータ転送され、[8]の加算命令がすぐに実行される。ソフトウェアが先読み幅レジスタ(17)にN=1を設定していたとすると、[3]のキャッシュミスロード命令で、[5]のロード命令のロードアドレスに対するハードウェア・プリフェッチ・リクエストが発行されることになり、実際の[5]のロード命令実行時までにメモリからのデータ転送が終わっていないため、[5]のロード命令のデータ転送遅延時間はN=2のときの[7]のロード命令の遅延時間の短縮ほどは縮まらない。一方、先読み幅レジスタ17にN=3が設定されていたとすると、[3]のキャッシュミスロード命令で[9]のロード命令のロードアドレスに対するハードウェア・プリフェッチ・リクエストが発行されることになり、実際の[9]のロード命令実行時までにメモリからのデータ転送が終わっているが、N=2の場合に比べてプリフェッチ・バッファ(23)の占有時間が長くなる。よってソフトウェアではN=2を設定するの。このように、ソフトウェアでは、命令スケジューリングによるロード命令の実行間隔および転送アドレス間隔、そしてメモリからのデータ転送に要する遅延時間の関係をもとにしてハードウェア・プリフェッチによるデータ転送が実際のロード命令実行までに完了するように先読み幅レジスタ17中のNの値を設定する。
図3は、図2で示したプログラムコードに対して、ロード履歴表3とプリフェッチ・バッファ23の状態をN=2として時間軸にそって模式的に示したものである。[1]のロード命令でアドレスr1+0がロード履歴表3に登録される。次に、[3]のロード命令でアドレスr1+Lがロード履歴表3に登録されると共に、[1]のロード命令で登録されたアドレスr1+0に+Lを加算したアドレスとのアドレス比較結果が一致となるので、r1+Lに2×Lを加えたr1+3Lに対するハードウェア・プリフェッチを発行する。r1+3Lに対するハードウェア・プリフェッチにより、プリフェッチ・バッファ(23)にアドレスr1+3Lが登録されると共に、メモリからのデータ転送を待つ。
図3では、メモリ遅延時間の後、命令[5]と[7]の処理の間でデータが到着し、プリフェッチ・バッファ23中に確保されたエントリにデータが格納される。同様にして、[5]のロード命令でアドレスr1+2Lがロード履歴表3に登録されると共に、[3]のロード命令で登録されたアドレスr1+Lに+Lを加算したアドレスとのアドレス比較結果が一致となるので,r1+2Lに2×Lを加えたr1+4Lに対するハードウェア・プリフェッチを発行する。[7]のロード命令の処理も同様にして、r1+3Lのアドレスをアドレス履歴表3に格納し、r1+5Lに対するハードウェア・プリフェッチが発行されるが、さらにアドレスr1+3Lのデータがプリフェッチ・バッファ23中に存在するため、r1+3Lのデータがプリフェッチ・バッファ23からヒットリプライされる。[9]のロード命令の処理も[7]のロード命令と同様に行われ、以下これを繰り返す。
本発明の別の実施例を図4に示す。図4では図1に比べて主に3点の相違がある。まず1点目は、ロード履歴表3に登録されているアドレスとキャッシュミスロードリクエスト1の転送アドレス6との比較において、ロード履歴表3に登録されているアドレスそのものの他に、+2Lバイト加算したアドレスおよび−2Lバイト加算したアドレスとキャッシュミスロードリクエスト1の転送アドレス6とを比較する点である。2点目は、先読み幅レジスタ17とともに、もう一つの先読み幅レジスタ29が用意される点である。このもう一つの先読み幅レジスタ29には、(N+1)×Lバイトの値が設定される。プリフェッチ・バッファ23へのLバイト・フェッチリクエストを2つの先読み幅レジスタ17,29の値の分だけ加減算したアドレスに設定する。ロード履歴表3に登録されているアドレスに+2Lバイト加算したアドレスとキャッシュミスロードリクエスト1の転送アドレス6との比較結果が一致した場合には,加算器15,30により、キャッシュミスロードリクエスト1の転送アドレス14にN×Lバイトと(N+1)×Lバイト加算したアドレスへのハードウェア・プリフェッチ・リクエスト19,34が発行され、2本のハードウェア・プリフェッチ・リクエスト発行信号28,32によりプリフェッチ・バッファ23に2つのデータが登録されるエントリが確保される。ただし、キャッシュミスロードリクエスト1の転送アドレス8がプリフェッチ・バッファ23にヒットした場合ヒット信号線35により選択器18における選択が先読み幅レジスタ17のアドレス値を加減算したアドレスへのリクエストを無効化する。3点目は、メモリ系20からハードウェア・プリフェッチに対するデータ転送を行う際に、データ転送線22で送信されるデータがロード/ストア・ユニット25へ延長されたデータ転送線33によってプロセッサに転送され、プロセッサ内のキャッシュメモリにも登録される点である。
この実施例の上記の3点は、その内の任意の1点もしくは2点もしくは3点すべてを含んだ実施例も可能であり、さらに、上記で1点目として説明した+2Lバイトの加算および−2Lバイトの加算については、+MLバイト(ただしMは1以上の整数)の加算および−MLバイトの加算とした実施例も含まれる。また、同様にして2点目として説明した先読み幅レジスタの本数は二本以上とする実施例も含まれ、M本の先読み幅レジスタをもつ場合には、i番目(ただしiは1以上M以下の整数)の先読み幅レジスタに設定されるアドレス値は、(N−1+i)×Lバイトである。これにあわせて、加算器15,30と減算器16,31の個数もM個となり、ハードウェア・プリフェッチ・リクエスト19,34もM個発行され、ハードウェア・プリフェッチ・リクエスト発行信号線28,32もM本となる。ただし、ヒット信号線(35)がヒットを示した場合には,M個のリクエストの内M番目の先読み幅レジスタの値を加減算したリクエスト以外が無効化される。
図4に示した実施例で図2で示したプログラムコードに対して、ロード履歴表(3)とプリフェッチ・バッファ(23)の状態をN=2として時間軸にそって模式的に示したものが図5である。
【0006】
【発明の効果】
以上に述べた発明によれば、キャッシュミスを起こしたロード命令に対し、そのデータ転送列が連続するアドレスの場合に、そのデータ転送を高速化することができる。すなわち本発明では、キャッシュミスを起こしたロード命令の転送要求アドレス履歴をとることで、連続するアドレスに対するキャッシュミスロードを検出し、後続のアドレスのデータに対するプリフェッチを発行することができる。また、プリフェッチを発行するアドレスの先読み幅をソフトウェアで設定できるため、プリフェッチデータの転送タイミングをデータの利用タイミングに合わせることが可能である。本発明では、ハードウェアが発行したプリフェッチによりメモリ系から転送されたデータは、専用のプリフェッチバッファに格納することが可能であり、これによってプロセッサがもつキャッシュメモリのデータを追い出すことがなく、キャッシュミスロード命令のデータ転送遅延時間を短縮することが可能である。
【図面の簡単な説明】
【図1】本発明の実施例のシステム構成図を示すブロック図である。
【図2】上記実施例のソフトウェアによるデータ先読み幅の設定例を示す概念図である。
【図3】上記実施例のハードウェア・プリフェッチの動作を示す概念図である。
【図4】本発明の別の実施例のシステム構成を示すブロック図である。
【図5】上記実施例のハードウェア・プリフェッチの動作を示す概念図である。
【符号の説明】
1,27:キャッシュミスロードリクエスト信号線
2,6,8,14:キャッシュミスロードリクエストの転送アドレス信号線
3:ロード履歴表
4,5,15,30:加算器
7,11:比較器
9:アドレス更新抑止信号線
10:プリフェッチ・バッファ・アドレス信号線
12,35:プリフェッチ・バッファ・ヒット信号線
13:ロード履歴表ヒット信号線
16,31:減算器
17,29:先読み幅レジスタ
18:選択器
19,34:ハードウェア・プリフェッチ・リクエスト発行線
20:メモリ系
21:キャッシュミスロード・データ転送線
22,33:ハードウェア・プリフェッチ・データ転送線
23:プリフェッチ・バッファ
24:プリフェッチ・バッファ・データ転送線
25:ロード/ストア・ユニット
26:キャッシュミスロードリクエスト発行器
28,32:ハードウェア・プリフェッチ・リクエスト発行信号線。

Claims (3)

  1. プロセッサとキャッシュメモリおよびメインメモリを備えるコンピュータシステムにおけるプリフェッチシステムであって、
    前記キャッシュメモリと前記メインメモリの間にあり、前記プロセッサから発行されたデータ・ロード命令の要求するデータが前記キャッシュメモリになく、前記メインメモリからのデータ転送要求となった場合に、その転送要求先アドレスを少なくとも1つ以上記録し、1つもしくは複数のデータと該データのアドレスを格納するタグとを対にして格納するバッファと、
    前記プロセッサから発行されたデータ転送要求によって前記バッファにのみデータ転送行うリクエストを生成するリクエスト生成手段と、
    前記バッファに記録されたアドレスおよびバッファに記録されたアドレスに定数を加減算したものと転送要求先アドレスとをそれぞれ比較する比較手段と、
    前記比較手段の比較結果が真であった場合に、転送要求先アドレスにソフトウェアが設定した変数を加減算した値を転送要求先アドレスとしてもつデータ転送要求を生成してメインメモリに通知する転送要求手段と
    前記メインメモリには前記リクエストを区別して要求アドレスのデータを転送する機構を備えるとともに、前記メインメモリから転送されたデータの中から前記リクエスト生成手段により生成されたリクエストにより転送されたデータを区別して前記バッファに登録する手段と、
    を有することを特徴とするプリフェッチシステム。
  2. 前記転送要求手段から前記メインメモリに通知するデータ転送要求は転送要求するデータのサイズを含むことを特徴とする請求項1記載のプリフェッチシステム。
  3. 送要求先アドレスに加減算する変数をソフトウェアで設定する手段をもつことを特徴とする請求項1記載のプリフェッチシステム。
JP2001094532A 2001-03-29 2001-03-29 ハードウェアプリフェッチシステム Expired - Fee Related JP3969009B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001094532A JP3969009B2 (ja) 2001-03-29 2001-03-29 ハードウェアプリフェッチシステム
US09/907,608 US6636945B2 (en) 2001-03-29 2001-07-19 Hardware prefetch system based on transfer request address of cache miss load requests

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001094532A JP3969009B2 (ja) 2001-03-29 2001-03-29 ハードウェアプリフェッチシステム

Publications (2)

Publication Number Publication Date
JP2002297379A JP2002297379A (ja) 2002-10-11
JP3969009B2 true JP3969009B2 (ja) 2007-08-29

Family

ID=18948711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001094532A Expired - Fee Related JP3969009B2 (ja) 2001-03-29 2001-03-29 ハードウェアプリフェッチシステム

Country Status (2)

Country Link
US (1) US6636945B2 (ja)
JP (1) JP3969009B2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4341186B2 (ja) 2001-01-22 2009-10-07 株式会社日立製作所 メモリシステム
US8171266B2 (en) * 2001-08-02 2012-05-01 Hewlett-Packard Development Company, L.P. Look-ahead load pre-fetch in a processor
US7191430B2 (en) * 2001-09-24 2007-03-13 Hewlett-Packard Development Company, L.P. Providing instruction execution hints to a processor using break instructions
US6895474B2 (en) * 2002-04-29 2005-05-17 Micron Technology, Inc. Synchronous DRAM with selectable internal prefetch size
US6957306B2 (en) * 2002-09-09 2005-10-18 Broadcom Corporation System and method for controlling prefetching
US20040123081A1 (en) * 2002-12-20 2004-06-24 Allan Knies Mechanism to increase performance of control speculation
US6959374B2 (en) * 2003-01-29 2005-10-25 Sun Microsystems, Inc. System including a memory controller configured to perform pre-fetch operations including dynamic pre-fetch control
US20040154010A1 (en) * 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7055016B2 (en) 2003-04-30 2006-05-30 Sun Microsystems, Inc. Computer system including a memory controller configured to perform pre-fetch operations
US7111126B2 (en) * 2003-09-24 2006-09-19 Arm Limited Apparatus and method for loading data values
KR20060130120A (ko) * 2004-03-24 2006-12-18 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법
US7238218B2 (en) * 2004-04-06 2007-07-03 International Business Machines Corporation Memory prefetch method and system
US7430650B1 (en) * 2004-06-17 2008-09-30 Richard Ross Generating a set of pre-fetch address candidates based on popular sets of address and data offset counters
JP4212521B2 (ja) * 2004-06-30 2009-01-21 株式会社東芝 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム
US7383418B2 (en) * 2004-09-01 2008-06-03 Intel Corporation Method and apparatus for prefetching data to a lower level cache memory
KR100833178B1 (ko) 2005-08-26 2008-05-28 삼성전자주식회사 캐시 메모리에 저장되는 블록개수를 제어할 수 있는 캐시메모리 시스템 및 동작 방법
US20070180193A1 (en) * 2006-01-30 2007-08-02 International Business Machines Corporation History based line install
US7774578B2 (en) * 2006-06-07 2010-08-10 Advanced Micro Devices, Inc. Apparatus and method of prefetching data in response to a cache miss
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
US9798528B2 (en) * 2006-09-13 2017-10-24 International Business Machines Corporation Software solution for cooperative memory-side and processor-side data prefetching
JP5116275B2 (ja) * 2006-09-29 2013-01-09 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US9311085B2 (en) * 2007-12-30 2016-04-12 Intel Corporation Compiler assisted low power and high performance load handling based on load types
JP5417879B2 (ja) * 2009-02-17 2014-02-19 富士通セミコンダクター株式会社 キャッシュ装置
CN102163144A (zh) * 2011-05-05 2011-08-24 浙江大学 嵌入式处理器的硬件数据预取方法
US9348754B2 (en) 2012-10-11 2016-05-24 Soft Machines Inc. Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher
US9424046B2 (en) 2012-10-11 2016-08-23 Soft Machines Inc. Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
US9454486B2 (en) * 2013-07-12 2016-09-27 Apple Inc. Cache pre-fetch merge in pending request buffer
JP6252348B2 (ja) * 2014-05-14 2017-12-27 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP6265041B2 (ja) 2014-05-15 2018-01-24 富士通株式会社 コンパイルプログラム、コンパイル方法およびコンパイル装置
CN104156321B (zh) * 2014-07-23 2017-06-09 华为技术有限公司 一种数据预取的方法以及装置
US20160283390A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Storage cache performance by using compressibility of the data as a criteria for cache insertion
US9934148B2 (en) * 2015-06-23 2018-04-03 Advanced Micro Devices, Inc. Memory module with embedded access metadata
US10866897B2 (en) * 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
US10467141B1 (en) * 2018-06-18 2019-11-05 International Business Machines Corporation Process data caching through iterative feedback
US10671394B2 (en) 2018-10-31 2020-06-02 International Business Machines Corporation Prefetch stream allocation for multithreading systems
JP7140972B2 (ja) * 2018-12-21 2022-09-22 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2022063148A (ja) * 2020-10-09 2022-04-21 株式会社日立製作所 計算機システム及び計算機システム運用管理方法
US11314645B1 (en) * 2020-12-16 2022-04-26 Arm Limited Cache stash relay

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE469402B (sv) * 1991-05-02 1993-06-28 Swedish Inst Of Computer Scien Foerfarande foer att haemta data till ett cache-minne
JP2881049B2 (ja) 1991-07-30 1999-04-12 株式会社日立製作所 プリフェッチバッファ
JPH08263424A (ja) * 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
US6085291A (en) * 1995-11-06 2000-07-04 International Business Machines Corporation System and method for selectively controlling fetching and prefetching of data to a processor
JP3175675B2 (ja) 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6253289B1 (en) * 1998-05-29 2001-06-26 Compaq Computer Corporation Maximizing sequential read streams while minimizing the impact on cache and other applications
TW440761B (en) * 1999-05-06 2001-06-16 Ind Tech Res Inst The cache device and method

Also Published As

Publication number Publication date
US20020144062A1 (en) 2002-10-03
JP2002297379A (ja) 2002-10-11
US6636945B2 (en) 2003-10-21

Similar Documents

Publication Publication Date Title
JP3969009B2 (ja) ハードウェアプリフェッチシステム
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US6185660B1 (en) Pending access queue for providing data to a target register during an intermediate pipeline phase after a computer cache miss
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US4521851A (en) Central processor
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
US5361391A (en) Intelligent cache memory and prefetch method based on CPU data fetching characteristics
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
JP5118199B2 (ja) マルチスレッドおよびマルチコア・システムのためのキャッシュ、および、その方法
JP3016575B2 (ja) 複数キャッシュ・メモリ・アクセス方法
US7246204B2 (en) Pre-fetch control device, data processing apparatus and pre-fetch control method
US5649144A (en) Apparatus, systems and methods for improving data cache hit rates
US5809566A (en) Automatic cache prefetch timing with dynamic trigger migration
JP3549079B2 (ja) キャッシュ制御の命令プリフェッチ方法
EP0097790A2 (en) Apparatus for controlling storage access in a multilevel storage system
JP4574712B2 (ja) 演算処理装置、情報処理装置及び制御方法
JPH06318177A (ja) キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム
JP2005533295A (ja) キャッシュメモリにおける、タグおよびデータアクセスを分断する方法および装置
JP3254019B2 (ja) データ先読み制御装置
JP3498673B2 (ja) 記憶装置
JPH06180672A (ja) 変換索引緩衝機構
JPH09160827A (ja) コールド・キャッシュ命令のプリフェッチ
JPH02239331A (ja) データ処理システム及びその命令実行を促進する方法
JP4341186B2 (ja) メモリシステム
JP2702414B2 (ja) 情報処理システム及びその動作方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060320

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060418

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070515

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070528

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100615

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100615

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110615

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110615

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120615

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120615

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130615

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees