JP2007226641A - 情報処理装置、キャッシュ制御方法及びプログラム - Google Patents

情報処理装置、キャッシュ制御方法及びプログラム Download PDF

Info

Publication number
JP2007226641A
JP2007226641A JP2006048564A JP2006048564A JP2007226641A JP 2007226641 A JP2007226641 A JP 2007226641A JP 2006048564 A JP2006048564 A JP 2006048564A JP 2006048564 A JP2006048564 A JP 2006048564A JP 2007226641 A JP2007226641 A JP 2007226641A
Authority
JP
Japan
Prior art keywords
reply
load instruction
data
refill
cache entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006048564A
Other languages
English (en)
Other versions
JP2007226641A5 (ja
JP5040121B2 (ja
Inventor
Takashi Kojima
貴司 小島
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2006048564A priority Critical patent/JP5040121B2/ja
Publication of JP2007226641A publication Critical patent/JP2007226641A/ja
Publication of JP2007226641A5 publication Critical patent/JP2007226641A5/ja
Application granted granted Critical
Publication of JP5040121B2 publication Critical patent/JP5040121B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory

Landscapes

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

Abstract

【課題】 キャッシュミスした先行アクセスについてのリフィル実行中に、先行アクセスと同一のアドレスについて後続アクセスがなされた場合、当該後続アクセスについて、リフィルが完了後、再度アクセスするという処理がなされていた。これにより、後続アクセスに対するリプライが遅延するという問題があった。
【解決手段】 上記課題を解決するため、本発明の情報処理装置は、先行ロード命令に対するリプライデータを、当該先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令に対しても返還するリプライ部を有することを特徴とする。
【選択図】 図1

Description

本発明は、キャッシュを有する情報処理装置に関し、キャッシュミスによるキャッシュのリフィル実行中のキャッシュステータス過渡状態に発行された後続のロード命令のレイテンシを低減する情報処理装置に関する。
従来、キャッシュメモリを有する情報処理装置において、先行するキャッシュアクセスがミスヒットしてリフィルを実行している際における、後続のキャッシュアクセスに遅延が生じるという問題があった。
特許文献1には、アドレスが連続する2つ以上のキャッシュアクセスにおいて、後続アクセスのレイテンシを低減する技術が開示されている。当該技術においては、先行アクセスがキャッシュミスしてキャッシュのリフィルを実行する際に、リフィルデータの転送順序を切替制御することで、後続アクセスのレイテンシを低減している。
特開平11−249959号公報
上記特許文献1のような従来の技術によると、キャッシュミスした先行アクセスについてのリフィルを実行中に、先行アクセスと同一のアドレスについて後続アクセスがなされた場合のレイテンシを低減できないという問題がある。
従来、先行アクセスに対するリフィル実行中のキャッシュエントリに、先行アクセスと同一アドレスに対する後続アクセスがあった場合、先行アクセスのリフィルが完了後に再度後続のアクセスをさせるという処理を実行していた。
このため、後続アクセスに対するリプライが遅延してしまうことが問題となっていた。
本発明の情報処理装置は、先行ロード命令に対するリプライデータを、当該先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令に対しても返還するリプライ部を有することを特徴とする。
本発明は、先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令に対して、当該先行ロード命令に対するメインメモリからのリプライデータを、後続ロード命令に対しても返還するという構成を採用する。
このような構成を採用するため、後続ロード命令を再発行する必要がなくなるので、後続ロード命令のレイテンシを低減することができるという効果が得られる。
本願発明を実施するための最良の実施形態について説明する。
(第1の実施形態)
図1を参照すると、第1の実施形態における情報処理装置1は、キャッシュ制御部10、キャッシュ部20、リプライ部30、メインメモリ40及び命令受信部50を含む。
キャッシュ部20は、メインメモリ40に格納されているデータの一部を格納している小容量のメモリである。CPU等からアクセスする場合、キャッシュ部20の方が、メインメモリ40よりも高速でアクセスすることができる。キャッシュ部20は、データを記憶する複数のエントリを有している。
キャッシュ制御部10は、ロード命令がキャッシュヒットしたか否か、若しくはロード命令がリフィル実行中のキャッシュエントリにアクセスしたか否かを判定する。
リプライ部30は、キャッシュにアクセスしたロード命令について、当該命令発行元(CPU等)へのリプライデータの返還を制御する。
命令受信部50は、CPU等から発行された命令を受信する。
図2を参照し、キャッシュ制御部10、キャッシュ部20及びリプライ部30の詳細な構成を説明する。
キャッシュ制御部10は、ヒット判定部100、ヒット制御部101、ミス判定部102、ミス制御部103、リフィル判定部104、リフィル制御部105を含む。
キャッシュ部20は、複数のエントリ21を含む。各エントリ21は、エントリ毎の固有のエントリ番号により管理される。各エントリ21は、有効フラグ200、リフィルフラグ201、リフィルカウンタ202、アドレス格納部203及びデータ格納部204を含む。有効フラグ200は、エントリ21が有効なデータを格納していることを示すフラグである。当該フラグがONである場合には、エントリ21が有効なデータを格納していることを示し、OFFの場合はエントリ21が有効なデータを格納していないことを示す。リフィルフラグ201は、エントリ21がリフィルを実行中であることを示すフラグである。当該フラグがONである場合には、当該エントリ21がリフィルを実行中であることを示し、OFFである場合は当該エントリ21はリフィルを実行中ではないことを示す。リフィルカウンタ202は、エントリ21がリフィルを実行中に、当該エントリ21にアクセスしたロード命令の数をカウントする。リフィルカウンタ202が保持する値は、0(ゼロ)若しくは0(ゼロ)より大きい正の整数となる。データ格納部204は、メインメモリ40に格納されているデータのコピーを格納する。アドレス格納部203は、データ格納部204に格納されているデータの、メインメモリ上でのアドレスを格納する。
リプライ部30は、リプライ格納部300、リプライ制御部301及びリプライ多重化部302を含む。
命令受信部50は、ロード命令を受信すると、当該命令が要求するデータのアドレスを抽出し、信号線1001を介して、ヒット判定部100、ミス判定部102及びリフィル判定部104に当該アドレスを送信する。また、命令受信部50は、信号線1001を介して、ヒット判定部100、ミス判定部102及びリフィル判定部104にリプライ識別情報3014を送信する。
ここで、リプライ識別情報3014について説明する。リプライ部30は、ロード命令に対してメインメモリ40やエントリ21からのリプライデータを命令発行元に返還する必要がある。複数のロード命令が発行されている場合、リプライ部30はそれぞれのロード命令について、対応するリプライデータを返還する必要がある。そのため、それぞれのロード命令とメインメモリ40やエントリ21からのリプライデータを対応付ける情報が必要となり、この情報がリプライ識別情報3014である。リプライ部30は、このリプライ識別情報3014に基づいて、ロード命令の発行元に対して対応するリプライデータを返還する。
ヒット判定部100、ミス判定部102及びリフィル判定部104は、それぞれ信号線1001を介して、ロード命令が要求するデータのアドレスを、命令受信部50から受け取る。その上で、ヒット判定部100、ミス判定部102及びリフィル判定部104は、複数のエントリ21のうち、アドレス格納部203にロード命令が要求するデータのアドレスと同一のアドレスを格納しているエントリ21の有無を判断する。
同一のアドレスを格納しているエントリ21が無い場合、ミス判定部102はキャッシュミスと判断し、ミス制御部103に通知する。このとき、ミス判定部102は、命令受信部50から送信されたリプライ識別情報3014をミス制御部103に対して送信する。キャッシュミスの場合、ヒット判定部100及びリフィル判定部104は、動作を終了する。
同一のアドレスを格納しているエントリ21が有る場合であって、有効フラグ200がONであり、かつ、リフィルフラグ201がOFFの場合、ヒット判定部100はキャッシュヒットと判断し、ヒット制御部101に通知する。このとき、ヒット判定部100は、命令受信部50から送信されたリプライ識別情報3014を、ヒット制御部101に送信する。キャッシュヒットの場合、ミス判定部102とリフィル判定部104は動作を終了する。
同一のアドレスを格納しているエントリ21が有る場合であって、リフィルフラグ201がONの場合、リフィル判定部104は、当該エントリ21はリフィル実行中であると判断し(リフィルマッチ)、リフィル制御部105に通知する。このとき、リフィル判定部104は、命令受信部50から送信されたリプライ識別情報3014を、リフィル制御部105に送信する。リフィルマッチと判断された場合、ヒット判定部100及びミス判定部102は、動作を終了する。
ミス判定部102がキャッシュミスと判断した場合、ミス制御部103は、複数のエントリ21のうち、リフィルを実行すべきエントリ21を決める。エントリ21を決定後、ミス制御部103は、信号線1004を介してリフィルを実行すべきと決定されたエントリ21の有効フラグ200をOFFにし、リフィルフラグ201をONにする。その後、ミス制御部103は、信号線1004を介して当該エントリ21のアドレス格納部203に、キャッシュミスしたロード命令が要求するデータのアドレスを書込む。ミス制御部103は、信号線1003を介してメインメモリ40に対してロード命令が要求するデータのリプライ要求をする。このとき、ミス制御部103は、リプライ識別情報3014をリプライ要求と共にメインメモリ40に送信する。メインメモリ40は、当該要求に対するデータを、信号線1006を介してリプライ多重化部302に送信する。このとき、メインメモリ40からのリプライデータには、ミス制御部103から送信されたリプライ識別情報3014が付加されている。また、ミス制御部103は、リフィルを実行すべきエントリ21を決定したら、当該エントリ21のエントリ番号を、メインメモリ40に対してリプライ要求と共に送信する。メインメモリ40は、リプライデータに当該エントリ番号が付加して、信号線1006からリプライデータをリプライ多重化部302に対して送信する。
ここで、ミス制御部103がリフィルを実行すべきエントリ21を決定する場合、一般的なキャッシュのリプレースメントアルゴリズムによりエントリ21を決定すればよい。例えば、有効フラグ200がOFFであり、有効なデータを格納しておらず、かつ、リフィルフラグ201もOFFであり、リフィルを実行中でないエントリ21をリフィル対象とすればよい。また、エントリ21がアクセスされる頻度に基づいて優先度を付加し、優先度の低いエントリ21からリフィルを実行してもよい。
ミス制御部103は、信号線1005を介して、リプライ識別情報3014をリプライ制御部301に送信する。
ヒット判定部100がキャッシュヒットと判断した場合、ヒット制御部101は、信号線1007を介して、リプライ識別情報3014をリプライ制御部301に送信する。また、ヒット制御部101は、信号線1008を介してキャッシュヒットしたエントリ21にアクセスする。ヒット制御部101は、当該エントリ21のデータ格納部204から、格納されているデータを、リプライ部30のリプライ格納部300に対して信号線1009を介して送信する。このとき、ヒット制御部101は、データ格納部204に格納されているデータに、リプライ識別情報3014を付加して、リプライ格納部300に送信する。
リフィル判定部104がリフィルマッチと判断した場合、リフィル制御部105は、信号線1010を介してリフィル実行中のエントリ21にアクセスし、リフィルカウンタ202が保持する値を1だけインクリメントし、有効フラグ200をOFFにする。また、リフィル制御部105は、信号線1010を介してデータ格納部204にリプライ識別情報3014を書込む。リフィル実行中のエントリ21なので、データ格納部204に新たなデータを書込んでも問題はない。このリフィル実行中のエントリ21に、複数のロード命令がアクセスした場合、リフィル制御部105は、それぞれのロード命令のリプライ識別情報3014を書込む。つまり、リフィル実行中のエントリ21に複数のロード命令がアクセスした場合は、データ格納部204に複数のリプライ識別情報3014が書込まれることになる。なお、データ格納部204の記憶容量は無限ではないので、新たなリプライ識別情報3014が書込めない場合も想定される。この場合、リプライ制御部105は、データ格納部204からリプライ識別情報3014が読み出されるまで、命令受信部50に対して、一時命令の受信を待機させる。更に、リフィル制御部105は、信号線1012を介して、リプライ識別情報3014をリプライ制御部301に送信する。なお、リフィル判定部104によりリフィルマッチと判断されても、リフィル制御部105はメインメモリ40に対してリプライデータの要求はしない。
リプライ多重化部302は、信号線1006を介してメインメモリ40からリプライデータを受け取ると、当該リプライデータに付加されたエントリ番号を参照する。リプライ多重化部302は、当該エントリ番号に該当するエントリ21のリフィルカウンタ202が保持している値を、信号線1015を介して参照する。リプライ多重化部302は、この値を一時保持しておく。
リフィルカウンタ202の値が0(ゼロ)ではない場合には、リプライ多重化部302は、信号線1015を介して、メインメモリ40からのリプライデータに付加されているエントリ番号のエントリ21におけるデータ格納部204にアクセスする。その後、リプライ多重化部302は、信号線1015を介して、データ格納部204に書き込まれたリプライ識別情報3014を取得する。データ格納部204に複数のリプライ識別情報3014が格納されている場合、リプライ多重化部302は、それら複数のリプライ識別情報3014を取得する。
リプライ識別情報3014を取得後、リプライ多重化部302は、信号線1006を介してメインメモリ40から取得したリプライデータを、データ格納部204へ書き込む。書き込む際には、データ格納部204に書き込まれているリプライ識別情報3014は、全て、リプライデータにより上書きされる。データ格納部204をリプライデータにより上書きしている間、命令受信部50は、当該エントリ21への後続ロード命令のアクセスを待機させる。リプライ多重化部302は、有効フラグ200をONにし、リフィルフラグ201をOFFにして、リフィルカウンタ202の値を0(ゼロ)にリセットする。これにより、エントリ21のリフィル動作が完了する。
リプライ多重化部302は、更に、リプライデータの多重化を実行する。信号線1006から受け取ったメインメモリ40からのリプライデータを、リフィルカウンタ202が保持する値分だけ多重化する。その際に、リプライ多重化部302は、多重化したそれぞれのデータについて、多重化したデータに含まれるリプライ識別情報3014を、データ格納部204から取得したリプライ識別情報3014により上書きする。このように、多重化したリプライデータに含まれるリプライ識別情報3014を上書きすることにより、リフィル実行中のエントリ21にアクセスしたロード命令に対して適切にリプライを返すことが可能となる。このように、メインメモリ40からのリプライデータを多重化する構成を採用することにより、先行のロード命令に対するメインメモリ40からのリプライを受けた時に、後続の同一アドレスのロード命令即ちリフィルマッチしたロード命令に対して多重化したリプライデータを返還することが可能となる。よって、後続のロード命令においてメインメモリ40に対してリプライデータを要求する必要がなくなり、メモリインターフェースの占有率を低減することができる。また、後続のロード命令のレイテンシを短縮することも可能となる。
リプライ多重化部302は、メインメモリ40から受け取ったリプライデータ及び多重化したデータを、信号線1013を介してリプライ格納部300に送信する。なお、リプライ多重化部302は、メインメモリ40から受け取ったリプライデータ及び多重化したデータを送信する際、かかるデータに付加されているエントリ番号を取り除く。
リフィルカウンタ202が保持する値が0(ゼロ)である場合、リプライ多重化部302は、信号線1015を介して、メインメモリ40からのリプライデータに付加されているエントリ番号のエントリ21にアクセスし、メインメモリ40から取得したリプライデータを、データ格納部204へ書き込む。データ格納部204へリプライデータを書き込み中は、命令受信部50は、当該エントリ21への後続ロード命令のアクセスを待機させる。また、リプライ多重化部302は、有効フラグ200をONにし、リフィルフラグ201をOFFにする。その後、リプライ多重化部302は、信号線1006を介してメインメモリ40から受け取ったリプライデータを、リプライ格納部300へ送信する。なお、リプライ多重化部302は、メインメモリ40から受け取ったリプライデータを送信する際、かかるデータに付加されているエントリ番号を取り除く。
図3を参照すると、リプライ格納部300は、ヒットリプライ格納部3001、多重化リプライ格納部3002及びメモリリプライ格納部3003を有する。
ヒットリプライ格納部3001は、信号線1009を介して受信した、キャッシュヒットの場合のリプライデータを格納する。
多重化リプライ格納部3002は、信号線1013を介してリプライ多重化部302から受信した、多重化されたリプライデータを格納する。
メモリリプライ格納部3003は、信号線1013を介してリプライ多重化部302から受信した、メインメモリ40からのリプライデータを格納する。
ヒットリプライ格納部3001、多重化リプライ格納部3002及びメモリリプライ格納部3003は、それぞれ複数のエントリを有しており、複数のリプライデータを格納することが可能である。なお、ヒットリプライ格納部3001、多重化リプライ格納部3002及びメモリリプライ格納部3003は、ロード命令発行元に対して、データを格納した順番に依存せず任意の順番で格納したデータを返還することが可能である。
図4を参照すると、リプライ制御部301は、リプライ情報管理部3010、リプライ発行部3011及びリプライ種別判断部3012を有する。
リプライ種別判断部3012は、信号線1005、1007、1012それぞれの信号線を介して、リプライ識別情報3014を受け取る。
リプライ種別判断部3012は、信号線1005、1007、1012のうち、いずれの信号線からリプライ識別情報3014を受信したかにより、リプライ種別3013を判断する。ロード命令がキャッシュヒットし、信号線1007を介してリプライ識別情報3014を受信した場合、リプライ種別判断部3012は、リプライ種別3013はキャッシュヒットによるヒットリプライと判断し、リプライ情報管理部3010にリプライ識別情報3014と共に格納する。ロード命令がキャッシュミスし、信号線1005を介してリプライ識別情報3014を受信した場合、リプライ種別判断部3012は、リプライ種別3013はキャッシュミスによるメインメモリ40からのメモリリプライと判断し、リプライ情報管理部3010にリプライ識別情報3014と共に格納する。ロード命令がリフィルマッチし、信号線1012を介してリプライ識別情報3014を受信した場合、リプライ種別判断部3012は、リプライ種別3013はリフィルマッチによる多重化されたリフィルマッチリプライと判断し、リプライ情報管理部3010にリプライ識別情報3014と共に格納する。なお、リプライ情報管理部3010は、リプライ種別3013とリプライ識別情報3014を格納するエントリを複数有している。
リプライ発行部3011は、リプライ格納部300に対して、格納しているリプライデータを命令発行元へ発行するように指示する。リプライ発行部3011は、リプライ情報管理部3010に格納されているリプライ種別3013を参照する。リプライ発行部3011は、リプライ種別3013に基づいてヒットリプライ格納部3001、多重化リプライ格納部3002、メモリリプライ格納部3003のいずれかにアクセスする。リプライ発行部3011は、リプライ種別3013がヒットリプライならばヒットリプライ格納部3001に、メモリリプライならばメモリリプライ格納部3003に、リフィルマッチリプライならば多重化リプライ格納部3002にアクセスする。
リプライ発行部3011は、上記の手順でいずれかの格納部にアクセスする。リプライ発行部3011は、参照したリプライ種別3013と共にリプライ情報管理部3010のエントリに格納されたリプライ識別情報3014を含むリプライデータが、いずれかの格納部に存在するか否かを確認する。リプライデータが存在する場合、リプライ発行部3011は、ヒットリプライ格納部3001、多重化リプライ格納部3002又はメモリリプライ格納部3003のいずれかから、当該リプライデータを命令発行元へ返還する。このとき、リプライ識別情報3014をリプライデータから削除して命令発行元へ返還する。リプライデータの発行指示を出した後、リプライ発行部30は、リプライ情報管理部3010からリプライ種別3013とリプライ識別情報3014を削除する。
リプライ制御部301を上記のような構成とすることで、ヒットリプライ、メモリリプライ若しくは多重化されたリプライの発行を選択制御することが可能となる。このような構成とすることで、例えばリフィルマッチしたロード命令に対するリプライデータを多重化している際に、他のエントリ21に対するロード命令がキャッシュヒットした場合に、リプライ制御部301による制御により、ヒットリプライの発行を待機させ、多重化したリプライデータを先に発行することが可能となる。このような制御により、リフィルマッチしたロード命令のレイテンシをより効果的に低減できるという効果が得られる。
なお、リフィル判定部104によりリフィルマッチと判定された後、リフィル制御部105によりエントリ21のリフィルカウンタ202のインクリメントが実行される前に、メインメモリ40からのリプライデータがリプライ多重化部302に送信される場合が考えられる。この場合、リフィルカウンタ202の値が正しく反映されていないので、リプライ多重化部302は、リフィルマッチしたロード命令に対してリプライデータを多重化できない。
これを防止するため、本実施形態では、以下のように構成する。
リフィル判定部104は、リフィルマッチと判定後、信号線1011を介してリプライ多重化部302に対してリフィルマッチが発生したことを通知する。また、リプライ制御部105は、信号線1010を介してリフィルカウンタ202をインクリメントすると共に、信号線1016を介してリプライ多重化部302に対して、リフィルカウンタ202をインクリメントしたことを通知する。リプライ多重化部302は、信号線1011により通知を受けた後、信号線1016により通知を受けるまでは、メインメモリ40から受信したリプライデータを多重化せず待機する。
このような構成を採用することで、リフィルマッチしたロード命令と、メインメモリ40からのリプライデータの多重化のすれ違いを効果的に防止でき、リフィルマッチしたロード命令に対して適切に多重化したリプライデータを返信することが可能になるという効果が得られる。
次に、図5のフローチャートを参照して、本実施形態の動作について説明する。
命令受信部50が、ロード命令を受信する(S1)。
命令を受信すると、キャッシュ制御部10はキャッシュヒット、キャッシュミス、リフィルマッチのいずれに該当するかを判定する(S2)。
まず、キャッシュ制御部10によりキャッシュミスと判断された場合の動作について説明する。
キャッシュミスの場合、ミス制御部103は、リフィルを実行するエントリ21を決定し、当該エントリ21の有効フラグ200をOFFにする(S5)。
また、ミス制御部103は、当該エントリ21のリフィルフラグ201をONにする(S6)。
ミス制御部103は、リフィルを実行するエントリ21のアドレス格納部203に、キャッシュミスしたロード命令が要求するデータのアドレスを書込む(S7)。
ミス制御部103は、メインメモリ40に対してロード命令が要求するデータのリプライ要求をする(S8)。
メインメモリ40は、リプライ多重化部302に対して、ミス制御部103からの要求に対するリプライデータを返信する(S9)。
リプライ多重化部302は、メインメモリ40からリプライデータを受け取ると、リプライデータに付加されたエントリ番号を参照して、該当するエントリ21にアクセスする。その後、リプライ多重化部302は、当該エントリ21のリフィルカウンタ202が保持する値を参照し、値が0(ゼロ)か否かを判断する(S10)。
リフィルカウンタ202が保持する値が0(ゼロ)でない場合、リプライ多重化部302は、メインメモリ40から受信したリプライデータに付加されたエントリ番号のエントリ21におけるデータ格納部204からリプライ識別情報3014を取得する(S11)。
リプライ識別情報3014を取得後、リプライ多重化部302は、データ格納部204に対して、メインメモリ40から受信したリプライデータを書込む(S12)。
リプライ多重化部302は、メインメモリ40から受信したリプライデータに付加されたエントリ番号に該当するエントリ21にアクセスする。その後、リプライ多重化部302は、当該エントリ21の有効フラグ200をONにし(S13)、リフィルフラグ201をOFFにし(S14)、リフィルカウンタ202をリセットする(S15)。
リプライ多重化部302は、リフィルカウンタ202が保持していた値分だけ、メインメモリ40からのリプライデータを多重化する(S16)。多重化する際に、リプライ多重化部302は、リプライデータにデータ格納部204から取得したリプライ識別情報3014を付加する。
リプライ多重化部302は、メインメモリ40から受信したリプライデータ及び多重化したリプライデータを、リプライ格納部300に送信する。その後、リプライ制御部301が、リプライ格納部300に格納された各リプライデータを、命令発行元に対してリプライする(S17)。
リフィルカウンタ202が保持する値が0(ゼロ)の場合、リプライ多重化部302は、メインメモリ40から受信したリプライデータに付加されたエントリ番号のエントリ21におけるデータ格納部204にメインメモリ40から受信したリプライデータを書込む(S18)。
リプライ多重化部302は、メインメモリ40から受信したリプライデータに付加されたエントリ番号に該当するエントリ21にアクセスする。その後、リプライ多重化部302は、当該エントリ21の有効フラグ200をONにし(S19)、リフィルフラグ201をOFFにする(S20)。
リプライ多重化部302は、メインメモリ40から受信したリプライデータを、リプライ格納部300に送信する。その後、リプライ制御部301が、リプライ格納部300に格納されたリプライデータを、命令発行元に対して返還する(S21)。
次に、ステップS2において、キャッシュヒットと判定された場合の動作について説明する。
キャッシュヒットと判定された場合、ヒット制御部101は、キャッシュヒットしたエントリ21にアクセスする。ヒット制御部101は、当該エントリ21のデータ格納部204に格納されているデータを、リプライ格納部300に送信する(S3)。
リプライ制御部301が、リプライ格納部300に格納されたキャッシュヒットによるヒットリプライを、命令発行元に対して返還する(S4)。
次に、ステップS2において、リフィルマッチと判断された場合の動作について説明する。
リフィル制御部105は、リフィル実行中のエントリ21にアクセスし、リフィルカウンタ202が保持する値を1だけインクリメントする(S22)。
リフィル制御部105は、リフィル実行中のエントリ21にアクセスし、有効フラグ200をOFFにする(S23)。
リフィル制御部105は、リフィル実行中のエントリ21にアクセスし、データ格納部204にリプライ識別情報3014を書き込む(S24)。
リフィル実行中のエントリ21にアクセスしたロード命令(リフィルマッチしたロード命令)は、メインメモリ40に対してリプライデータを要求せずに、リプライ多重化部302により多重化されたデータが返信されるのを待つ。
なお、上述の動作において、ロード命令がステップS2でキャッシュミスと判定され、キャッシュミス時の動作を実行中に、当該ロード命令の後続ロード命令がステップS2でリフィルマッチと判定される場合や、キャッシュヒットと判定される場合等を想定している。即ち、図5のフローチャートは、複数のロード命令が処理を、1つのフローチャートにより表しているものである。
(第1の実施形態による効果)
このように本発明は、先行のロード命令のリプライデータを受信したときに、当該先行ロード命令と同一アドレスに対する後続のロード命令に対して、先行ロード命令に対するリプライデータを多重化して返還する構成となっている。このような構成を採用することにより、後続のロード命令のレイテンシを短縮することができるという効果が得られる。また、後続ロード命令において、メインメモリ40に対してリプライデータの要求を出さないので、メモリインターフェースの占有率を低減できるという効果も得られる。
(第2の実施形態)
次に図6を参照して、本発明の第2の実施形態について説明する。
なお、特に図示していない構成については、第1の実施形態と同様である。
図6を参照すると、本発明の第2の実施形態におけるキャッシュ部20が有する複数のエントリ21のデータ格納部204は、リフィルカウンタ領域2041とリプライ識別情報領域2042とを有する。
リフィルカウンタ領域2041は、エントリ21がリフィルを実行中に、当該エントリ21にアクセスしたロード命令の数を保持する。
リプライ識別情報領域2042は、リフィル判定部104がリフィルマッチと判断した場合、リフィル制御部105により信号線1010を介して書込まれたリプライ識別情報3014を格納する。
第2の実施形態においては、図5のステップS10でリプライ多重化部302は、リフィルカウンタ領域2041にアクセスして、リフィルカウンタ領域2041の値が0(ゼロ)か否かを判定する。その後、リプライ多重化部302は、リフィルカウンタ領域2041の値が0(ゼロ)でない場合、当該値の分だけ、メインメモリ40から受信したリプライデータを多重化する。
(第2の実施形態による効果)
本実施形態の構成を採用することにより、第1の実施形態におけるリフィルカウンタ202を、エントリ21に設ける必要がなくなり、かつ、リプライ多重化部302によるリプライデータの多重化が可能となる。よって、キャッシュ部20のHW量を削減しつつ、後続のロード命令レイテンシを低減することができるという効果が得られる。
本発明の実施形態における情報処理装置を示すブロック図である。 本発明の実施形態における情報処理装置の構成を、より詳細に示したブロック図である。 リプライ格納部の構成を示すブロック図である。 リプライ制御部の構成を示すブロック図である。 本発明の動作を示すフローチャートである。 本発明の第二の実施形態におけるエントリの構成を示す図である。
符号の説明
1 情報処理装置
10 キャッシュ制御部
20 キャッシュ部
21 エントリ
30 リプライ部
40 メインメモリ
50 命令受信部
100 ヒット判定部
101 ヒット制御部
102 ミス判定部
103 ミス制御部
104 リフィル判定部
105 リフィル制御部
200 有効フラグ
201 リフィルフラグ
202 リフィルカウンタ
203 アドレス格納部
204 データ格納部
2041 リフィルカウンタ領域
2042 リプライ識別情報領域
300 リプライ格納部
301 リプライ制御部
302 リプライ多重化部
3001 ヒットリプライ格納部
3002 多重化リプライ格納部
3003 メモリリプライ格納部
3010 リプライ情報管理部
3011 リプライ発行部
3012 リプライ種別判断部
3013 リプライ種別
3014 リプライ識別情報

Claims (20)

  1. 先行ロード命令に対するリプライデータを、当該先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令に対しても返還するリプライ部を有することを特徴とする情報処理装置。
  2. メインメモリが保持するデータを記憶するキャッシュエントリと、
    前記キャッシュエントリがリフィル実行中か否かを判定するキャッシュ制御部と、
    先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令がアクセスした前記キャッシュエントリが、前記キャッシュ制御部によりリフィル実行中と判定された場合、前記先行ロード命令に対するリプライデータを前記後続ロード命令に対しても返還するリプライ部とを有することを特徴とする情報処理装置。
  3. 前記キャッシュエントリは、当該キャッシュエントリがリフィルを実行中であることを示すリフィルフラグを有し、
    前記キャッシュ制御部は、当該リフィルフラグに基づいて前記キャッシュエントリがリフィル実行中であることを判定することを特徴とする請求項2記載の情報処理装置。
  4. 前記キャッシュ制御部は、前記先行ロード命令がキャッシュミスし、前記キャッシュエントリのリフィルを実行したときに、前記リフィルフラグをオンにすることを特徴とする請求項3記載の情報処理装置。
  5. 前記キャッシュエントリは、前記メインメモリが保持するデータの一部を格納するデータ格納部を有し、
    前記キャッシュ制御部は、前記キャッシュエントリがリフィル実行中の場合、当該キャッシュエントリにアクセスした前記後続ロード命令を識別するためのリプライ識別情報を前記データ格納部に書き込むことを特徴とする請求項2乃至4いずれか1項記載の情報処理装置。
  6. 前記リプライ部は、前記先行ロード命令に対するリプライデータを多重化し、前記後続ロード命令に対して多重化したリプライデータを返還するリプライ多重化部を有することを特徴とする請求項1乃至5いずれか1項記載の情報処理装置。
  7. 前記キャッシュエントリは、リフィル実行中の当該キャッシュエントリにアクセスした前記後続ロード命令の数をカウントするリフィルカウンタを更に有し、
    前記リプライ多重化部は、前記リフィルカウンタが保持する数だけ、前記先行ロード命令に対するリプライデータを多重化することを特徴とする請求項6記載の情報処理装置。
  8. 前記リプライ多重化部は、前記先行ロード命令に対するリプライデータを受信したときに、前記データ格納部に書込まれたリプライ識別情報を取得し、多重化したリプライデータに当該リプライ識別情報を付加することを特徴とする請求項6又は7いずれか1項記載の情報処理装置。
  9. ロード命令がアクセスするキャッシュエントリについて、当該キャッシュエントリがリフィル実行中であることを判定するリフィル判定ステップと、
    先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令がアクセスした前記キャッシュエントリが、リフィル実行中と判定された場合、前記先行ロード命令に対するリプライデータを前記後続ロード命令に対しても返還するリプライステップとを有することを特徴とするキャッシュ制御方法。
  10. 前記リフィル判定ステップは、
    前記キャッシュエントリが有するキャッシュエントリがリフィル実行中であることを示すリフィルフラグに基づいて、リフィル実行中であることを判定するステップであることを特徴とする請求項9記載のキャッシュ制御方法。
  11. 前記リフィル判定ステップは、
    前記キャッシュエントリがリフィル実行中と判定された場合、メインメモリが保持するデータを記憶する前記キャッシュエントリのデータ格納部に、当該キャッシュエントリにアクセスした前記後続ロード命令を識別するためのリプライ識別情報を書込むステップを含むことを特徴とする請求項9又は10いずれか1項記載のキャッシュ制御方法。
  12. 前記リプライステップは、
    前記先行ロード命令に対するリプライデータを多重化し、前記ロード命令に対して多重化したリプライを返すステップであることを特徴とする請求項9乃至11いずれか1項記載のキャッシュ制御方法。
  13. 前記リプライステップは、
    リフィル実行中のキャッシュエントリにアクセスしたロード命令の数をカウントするリフィルカウンタが保持する数だけ、前記先行ロード命令に対するリプライデータを多重化するステップを含むことを特徴とする請求項12記載のキャッシュ制御方法。
  14. 前記リプライステップは、
    前記先行ロード命令に対するリプライデータを受信したときに、前記データ格納部に書込まれたリプライ識別情報を取得し、多重化したリプライデータに当該リプライ識別情報を付加するステップを含むことを特徴とする請求項12又は13いずれか1項記載のキャッシュ制御方法。
  15. コンピュータに、
    ロード命令がアクセスするキャッシュエントリについて、当該キャッシュエントリがリフィル実行中であることを判定するリフィル判定処理と、
    先行ロード命令と同一アドレスのリプライデータを要求する後続ロード命令がアクセスした前記キャッシュエントリが、リフィル実行中と判定された場合、前記先行ロード命令に対するリプライデータを前記後続ロード命令に対しても返還するリプライ処理とを実行させることを特徴とするプログラム。
  16. 前記リフィル判定処理は、
    前記キャッシュエントリが有するキャッシュエントリがリフィル実行中であることを示すリフィルフラグに基づいて、リフィル実行中であることを判定する処理であることを特徴とする請求項15記載のプログラム。
  17. 前記リフィル判定処理は、
    前記キャッシュエントリがリフィル実行中と判定された場合、メインメモリが保持するデータを記憶する前記キャッシュエントリのデータ格納部に、当該キャッシュエントリにアクセスした前記後続ロード命令を識別するためのリプライ識別情報を書込む処理を含むことを特徴とする請求項15又は16いずれか1項記載のプログラム。
  18. 前記リプライ処理は、
    前記先行ロード命令に対するリプライデータを多重化し、前記ロード命令に対して多重化したリプライを返す処理であることを特徴とする請求項15乃至17いずれか1項記載のプログラム。
  19. 前記リプライ処理は、
    リフィル実行中のキャッシュエントリにアクセスした前記先行ロード命令に後続するロード命令の数をカウントするリフィルカウンタが保持する数だけ、前記先行ロード命令に対するリプライデータを多重化する処理を含むことを特徴とする請求項18記載のプログラム。
  20. 前記リプライ処理は、
    前記先行ロード命令に対するリプライデータを受信したときに、前記データ格納部に書込まれたリプライ識別情報を取得し、多重化したリプライデータに当該リプライ識別情報を付加する処理を含むことを特徴とする請求項18又は19いずれか1項記載のプログラム。
JP2006048564A 2006-02-24 2006-02-24 情報処理装置、キャッシュ制御方法及びプログラム Expired - Fee Related JP5040121B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006048564A JP5040121B2 (ja) 2006-02-24 2006-02-24 情報処理装置、キャッシュ制御方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006048564A JP5040121B2 (ja) 2006-02-24 2006-02-24 情報処理装置、キャッシュ制御方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2007226641A true JP2007226641A (ja) 2007-09-06
JP2007226641A5 JP2007226641A5 (ja) 2007-10-18
JP5040121B2 JP5040121B2 (ja) 2012-10-03

Family

ID=38548391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006048564A Expired - Fee Related JP5040121B2 (ja) 2006-02-24 2006-02-24 情報処理装置、キャッシュ制御方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5040121B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286990A (ja) * 2006-04-19 2007-11-01 Nec Corp キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
JP2009211495A (ja) * 2008-03-05 2009-09-17 Nec Corp キャッシュ制御装置
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
JP2011034239A (ja) * 2009-07-30 2011-02-17 Nec Corp 情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラム
JP2011123608A (ja) * 2009-12-09 2011-06-23 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP2012118738A (ja) * 2010-11-30 2012-06-21 Fuji Xerox Co Ltd 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54151331A (en) * 1978-05-19 1979-11-28 Nec Corp Data processor
JPH01307849A (ja) * 1988-06-07 1989-12-12 Fujitsu Ltd データアクセス装置
JPH09218823A (ja) * 1996-02-08 1997-08-19 Hitachi Ltd キャッシュメモリ制御装置
JPH10116228A (ja) * 1996-09-12 1998-05-06 Internatl Business Mach Corp <Ibm> 情報処理システム用の中央処理ユニット、単一のキャッシュ・ラインに対する複数のキャッシュ・ミスを処理するための方法、及び情報処理システム
JPH10247162A (ja) * 1997-03-05 1998-09-14 Tokai Univ 電子計算機システム
JPH11249959A (ja) * 1998-03-02 1999-09-17 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法および装置
JP2000250810A (ja) * 1999-02-26 2000-09-14 Internatl Business Mach Corp <Ibm> ロード命令を実行する方法、プロセッサ、およびシステム
JP2001051899A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd キャッシュメモリ装置
JP2002236614A (ja) * 2001-02-09 2002-08-23 Nec Corp キャッシュ制御方法及びキャッシュ制御回路

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54151331A (en) * 1978-05-19 1979-11-28 Nec Corp Data processor
JPH01307849A (ja) * 1988-06-07 1989-12-12 Fujitsu Ltd データアクセス装置
JPH09218823A (ja) * 1996-02-08 1997-08-19 Hitachi Ltd キャッシュメモリ制御装置
JPH10116228A (ja) * 1996-09-12 1998-05-06 Internatl Business Mach Corp <Ibm> 情報処理システム用の中央処理ユニット、単一のキャッシュ・ラインに対する複数のキャッシュ・ミスを処理するための方法、及び情報処理システム
JPH10247162A (ja) * 1997-03-05 1998-09-14 Tokai Univ 電子計算機システム
JPH11249959A (ja) * 1998-03-02 1999-09-17 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法および装置
JP2000250810A (ja) * 1999-02-26 2000-09-14 Internatl Business Mach Corp <Ibm> ロード命令を実行する方法、プロセッサ、およびシステム
JP2001051899A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd キャッシュメモリ装置
JP2002236614A (ja) * 2001-02-09 2002-08-23 Nec Corp キャッシュ制御方法及びキャッシュ制御回路

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007286990A (ja) * 2006-04-19 2007-11-01 Nec Corp キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
JP2009211495A (ja) * 2008-03-05 2009-09-17 Nec Corp キャッシュ制御装置
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
JP2011034239A (ja) * 2009-07-30 2011-02-17 Nec Corp 情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラム
JP2011123608A (ja) * 2009-12-09 2011-06-23 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP2012118738A (ja) * 2010-11-30 2012-06-21 Fuji Xerox Co Ltd 印刷文書処理システム、キャッシュ装置、データ処理装置及びプログラム

Also Published As

Publication number Publication date
JP5040121B2 (ja) 2012-10-03

Similar Documents

Publication Publication Date Title
JP4687729B2 (ja) キャッシュメモリ及びベクトル処理装置並びにベクトルデータ整列方法
US20100325365A1 (en) Sectored cache replacement algorithm for reducing memory writebacks
US20070226422A1 (en) Multi-master system and data transfer system
US20130282987A1 (en) Write-Only Dataless State for Maintaining Cache Coherency
US20110173400A1 (en) Buffer memory device, memory system, and data transfer method
JP2015232879A (ja) データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応
JP5040121B2 (ja) 情報処理装置、キャッシュ制御方法及びプログラム
US20080244189A1 (en) Method, Apparatus, System and Program Product Supporting Directory-Assisted Speculative Snoop Probe With Concurrent Memory Access
US10079916B2 (en) Register files for I/O packet compression
TW505862B (en) Write buffer with burst capability
JP2009176179A (ja) キャッシュコヒーレンシ制御方法
US20100306421A1 (en) Dma transfer device
US8924652B2 (en) Simultaneous eviction and cleaning operations in a cache
KR20090100222A (ko) 정보 처리 장치, 메모리 제어 방법 및 메모리 제어 장치
JP2010146084A (ja) キャッシュメモリ制御部を備えるデータ処理装置
US20090262739A1 (en) Network device of processing packets efficiently and method thereof
JP2011008674A (ja) 二重化情報処理システム及び同期化方法
JP6319473B1 (ja) 情報処理装置
JP2008026970A (ja) ストレージ装置
JP4924970B2 (ja) データ処理システム
US9116814B1 (en) Use of cache to reduce memory bandwidth pressure with processing pipeline
EP1895419B1 (en) Information processing system, information processing board, and method of updating cache tag and snoop tag
US20150254187A1 (en) Storage device, information processing apparatus, and cache control program
US6757793B1 (en) Reducing probe traffic in multiprocessor systems using a victim record table
JP2012128656A (ja) ベクトル演算処理装置、ベクトル演算処理方法およびベクトル演算処理プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070816

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20080613

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090116

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20090512

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120508

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: 20120612

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120625

R150 Certificate of patent or registration of utility model

Ref document number: 5040121

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150720

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees