Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4090497B2 - キャッシュメモリシステム及びその制御方法 - Google Patents
[go: Go Back, main page]

JP4090497B2 - キャッシュメモリシステム及びその制御方法 - Google Patents

キャッシュメモリシステム及びその制御方法 Download PDF

Info

Publication number
JP4090497B2
JP4090497B2 JP2007521091A JP2007521091A JP4090497B2 JP 4090497 B2 JP4090497 B2 JP 4090497B2 JP 2007521091 A JP2007521091 A JP 2007521091A JP 2007521091 A JP2007521091 A JP 2007521091A JP 4090497 B2 JP4090497 B2 JP 4090497B2
Authority
JP
Japan
Prior art keywords
command
address
cache
cache memory
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2007521091A
Other languages
English (en)
Other versions
JPWO2006112111A1 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Application granted granted Critical
Publication of JP4090497B2 publication Critical patent/JP4090497B2/ja
Publication of JPWO2006112111A1 publication Critical patent/JPWO2006112111A1/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0893Caches characterised by their organisation or structure

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)

Description

本発明は、キャッシュメモリシステム及びその制御方法に関し、特にキャッシュメモリシステムのソフトウェアによる制御性を向上する技術に関する。
近年のマイクロプロセッサでは、例えば、SRAM(Static Random Access Memory)等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、もしくはその近傍に配置し、データの一部をキャッシュメモリに記憶することによって、マイクロプロセッサのメモリアクセスを高速化させている。
従来、キャッシュの効率向上(ヒット率向上、キャッシュミスレイテンシ低減)を指向した種々の技術が知られている。そのような技術の一つに、キャッシュミスが発生する前に、近い未来に使用するデータを予めキャッシュにフィルするプリロード(又はプリフェッチ)がある(例えば特許文献1)。この技術を用いて、プリフェッチ命令により指定したアドレスを含むラインをキャッシュにロードすることにより、キャッシュミスの低減を図ることができる。
特開平7−295882号公報
しかしながら、上記従来の技術によれば、メモリへのアクセスの状況をハードウェアによって監視し、ハードウェアによって自律的にキャッシュ操作をしようとすると、正確な予測が困難であるためにかえって無駄な転送が発生することがある。このことは、上記従来の技術に限らず、キャッシュの効率向上を指向した種々の技術において同様である。そのようなハードウェアによる自律的な制御によるキャッシュ効率の限界を打開する一つのアプローチとして、ソフトウェアによる制御を援用することが考えられる。
本発明は、上記の問題に鑑みてなされたものであり、ソフトウェアからの制御を積極的に受け入れて処理を行うための好ましい構成を持ったキャッシュメモリシステムを提供することを目的とする。
上記課題を解決するため、本発明のキャッシュメモリシステムは、プロセッサとメモリとの間に設けられるキャッシュメモリと、前記キャッシュメモリを制御する転送及び属性制御手段とを備え、前記転送及び属性制御手段は、前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、前記アドレスに対する前記コマンドによって示される操作を、前記キャッシュメモリに要求する操作要求部とを備える。
また、前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求してもよい。
この構成によれば、前記予め定められた命令を前記プロセッサに実行させることによって、ソフトウェアから、前記キャッシュデータの転送及び属性操作を要求できるので、ソフトウェアからの制御を積極的に受け入れて処理を行うための好ましい構成を持ったキャッシュメモリシステムが得られる。
また、前記キャッシュメモリは、キャッシュデータの管理単位であるキャッシュエントリに対応付けて、そのキャッシュエントリに保持されるキャッシュデータに対応するメモリアドレスの上位部を示すタグを保持するタグ保持部と、そのキャッシュエントリが有効か否かを示すバリッドフラグと、そのキャッシュエントリに書き込み操作があったか否かを示すダーティフラグと、そのキャッシュエントリがアクセスされた時期を他のどのキャッシュエントリがアクセスされた時期よりも古いとみなすことを示すウィークフラグとを保持するフラグ保持部とを有し、前記転送及び属性制御手段からの要求に応じて、指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへ前記指定されたアドレスに対応するデータをロードし、タグを設定してバリッドフラグをセットするフィル操作、指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへデータをロードすることなくタグを設定してバリッドフラグをセットするタッチ操作、指定されるアドレスにヒットするキャッシュエントリがありかつダーティフラグがセットされている場合に、そのキャッシュエントリのデータをメモリへセーブしてダーティフラグをリセットするライトバック操作、指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのデータをダーティフラグの状態に応じてメモリへセーブすることなくバリッドフラグをリセットする無効化操作、指定されるアドレスにヒットするキャッシュエントリがある場合に、ダーティフラグがセットされていればそのキャッシュエントリのデータをメモリへセーブしてダーティフラグ及びバリッドフラグをリセットし、ダーティフラグがリセットされていればそのキャッシュエントリのバリッドフラグのリセットのみを行うライトバック兼無効化操作、及び指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのウィークフラグをセットする最古化操作の中の一つを実行してもよい。
この構成によれば、前記6種類の操作は、キャッシュのヒット率の向上、不必要なバストランザクションの削減、及びバストランザクションの平準化(時間的分散)に効果があるので、ソフトウェアからの制御を積極的に受け入れて処理を行うことによってキャッシュ効率の向上を図る上で好適である。
また、前記転送及び属性制御手段は、さらに、前記アドレス範囲の先頭及び末尾を、前記キャッシュメモリにおけるキャッシュデータの管理単位であるキャッシュエントリの先頭データを示すように調整するアドレス調整部を有し、前記操作要求部は、前記調整後のアドレス範囲に含まれる複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求してもよい。
この構成によれば、前記アドレス調整部が、前記アドレス範囲の先頭及び末尾を、前記キャッシュエントリの先頭データを示すように調整するので、プログラマやコンパイラはキャッシュメモリのライン境界やラインサイズを管理する必要がなく、キャッシュ管理のための負担が軽減される。
また、前記転送及び属性制御手段は、さらに、複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部と、前記保持された複数のコマンドの中から一つを選択するコマンド選択部とを有し、前記操作要求部は、前記選択されたコマンドに関連するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を逐次要求してもよい。
また、好ましくは、前記コマンド選択部は、前記選択されたコマンドについて全ての要求がなされる前に、他のコマンドを選択し、前記操作要求部は、元のコマンドが再び選択された場合にそのコマンドについてまだ要求していないアドレスに対する操作を逐次要求してもよい。
この構成によれば、前記転送及び属性制御手段は複数のコマンドを保持して処理できるので、例えば前記複数のコマンドが、例えば前記プロセッサがマルチタスク処理を行う場合の各タスクから与えられる場合に好適である。
また、前記転送及び属性制御手段は、さらに、次に予定される要求に関して定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断する実行判断部と、肯定判断がなされると、前記予測アドレスに所定のオフセット値を加算又は減算することによって実効アドレスを生成する実効アドレス生成部とを有し、前記操作要求部は、前記生成された実効アドレスに対する前記操作を要求してもよい。
また、好ましくは、前記転送及び属性制御手段は、さらに、複数のコマンドとそれぞれのコマンドに関係するアドレス範囲とを保持するコマンド保持部を有し、前記実行判断部は、前記保持された各コマンドについて、そのコマンドに対応する予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断し、前記転送及び属性制御手段は、さらに、肯定判断がなされたコマンドの中から一つを選択するコマンド選択部を有し、前記実効アドレス生成部は、前記選択されたコマンドに対応する予測アドレスに所定値を加算又は減算することによって実効アドレスを生成し、前記操作要求部は、前記生成された実効アドレスに対する前記選択されたコマンドによって示される操作を要求してもよい。
この構成によれば、前記特定の命令がプリフェッチ付きの命令である場合に特に好適であり、その命令の操作対象に対してその命令の実行に同期して前記操作の要求がなされるので、キャッシュエントリを効率よく操作することができる。
また、前記転送及び属性制御手段は、さらに、前記キャッシュメモリにおけるキャッシュデータの管理単位である各キャッシュエントリを指定するアドレスを逐次出力するアドレス出力部を有し、前記操作要求部は、前記出力されたアドレスによって指定されるキャッシュエントリを含む一つ以上のキャッシュエントリに対する逐次操作を前記キャッシュメモリに要求し、前記キャッシュメモリは、前記要求に応じて逐次操作を実行してもよい。
ここで、前記逐次操作は、ライトバック操作であってもよい。
この構成によれば、バストランザクションの平準化(時間的分散)に効果があることは明らかである。
また、前記コマンドエントリ部は、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令と同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次ライトバックすることを示すオートクリーナコマンドとを、前記プロセッサから与えられ、前記操作要求部は、各コマンドに応じた操作要求を、予め設定された優先順位に基づいて、前記キャッシュメモリに要求してもよい。
ここで、前記予め設定された優先順位が、前記コマンドの順であってもよい。
この構成によれば、各操作の実行モードに応じた好適な順序で操作を要求することができる。
また、本発明は、このようなキャッシュメモリシステムとして実現することができるだけでなく、そのようなキャッシュメモリシステムが備える特徴的な手段によって実行される処理をステップとするキャッシュメモリシステムの制御方法として実現することもできる。
本発明のキャッシュメモリシステムによれば、前記予め定められた命令をプロセッサに実行させることによって、ソフトウェアから、キャッシュデータの転送及び属性操作を要求できるので、ソフトウェアからの制御を積極的に受け入れて処理を行うための好ましい構成を持ったキャッシュメモリシステムが得られる。
キャッシュ効率の向上を図るために前記操作としてキャッシュ効率の向上に効果がある操作を採用し、ソフトウェアからの積極的な制御下でこれらの操作を行えば、ハードウェアとソフトウェアとの良好な機能分担が可能となり、その結果、自律的な制御によるキャッシュ効率の向上を目指してハードウェアがいたずらに大規模化する事態を回避することもできる。
以下、本発明の実施の形態について、図面を参照しながら説明する。
<全体構成>
図1は、本発明の実施の形態におけるプロセッサ1、メモリ2、キャッシュメモリ3、及びTAC(Transfer and Attribute Controller)4を含むコンピュータシステムの全体構成を示すブロック図である。この実施の形態におけるキャッシュメモリ3及びTAC4が本発明のキャッシュメモリシステムに相当する。
TAC4は、プロセッサ1が予め定められた命令を実行することによってキャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられ、そのコマンドによって示される操作をキャッシュメモリ3に要求する。
キャッシュメモリ3は、プロセッサ1からのメモリアクセスに応じて、従来の一般的なキャッシュメモリが行うようにデータのキャッシングを行う。また、プロセッサ1からのメモリアクセスを処理していないときには、TAC4からの要求に応じて、6種類のキャッシュデータの転送及び属性操作、並びにオートクリーナを実行する。この6種類の操作は動作プリミティブと呼ばれる。動作プリミティブ及びオートクリーナについて、後に詳しく説明する。
本発明のキャッシュメモリシステムのこのような構成は、ハードウェアによる自律的な制御によるキャッシュ効率の限界をソフトウェアの援用によって打開しようとしたときに、ソフトウェアからの制御を積極的に受け入れるために適している。
<キャッシュメモリの構成>
以下、キャッシュメモリ3の具体例として、4ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
図2は、キャッシュメモリ3の構成例を示すブロック図である。同図のように、キャッシュメモリ3は、アドレスレジスタ20、メモリI/F21、デマルチプレクサ22、デコーダ30、4つのウェイ31a〜31d(以下ウェイ0〜3と略す)、4つの比較器32a〜32d、4つのアンド回路33a〜33d、オア回路34、セレクタ35、36、デマルチプレクサ37、制御部38を備える。
デマルチプレクサ22は、制御部38からの制御に応じて、プロセッサ1から与えられるメモリ2へのアクセスアドレスを優先的に選択し、プロセッサ1からのメモリアクセスがないときにTAC4から与えられるアドレスを選択する。
アドレスレジスタ20は、選択されたアクセスアドレスを保持するレジスタである。このアクセスアドレスは32ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、21ビットのタグアドレス、4ビットのセットインデックス(図中のSI)、5ビットのワードインデックス(図中のWI)を含む。ここで、タグアドレスはウェイにマッピングされるメモリ中の領域(そのサイズはセット数×ブロックである)を指す。この領域のサイズは、タグアドレスよりも下位のアドレスビット(A10〜A0)で定まるサイズつまり2kバイトであり、1つのウェイのサイズでもある。セットインデックス(SI)はウェイ0〜3に跨る複数セットの1つを指す。このセット数は、セットインデックスが4ビットなので16セットある。タグアドレスおよびセットインデックスで特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスビットで定まるサイズつまり128バイトである。1ワードを4バイトとすると、1ラインデータは32ワードである。ワードインデックス(WI)は、ラインデータを構成する複数ワード中の1ワードを指す。アドレスレジスタ20中の最下位2ビット(A1、A0)は、ワードアクセス時には無視される。
メモリI/F21は、キャッシュメモリ3からメモリ2へのデータのライトバックや、メモリ2からキャッシュメモリ3へのデータのロード等、キャッシュメモリ3からメモリ2をアクセスするためのI/Fである。
デコーダ30は、セットインデックスの4ビットをデコードし、4つのウェイ0〜3に跨る16セット中の1つを選択する。
4つのウェイ0〜3は、同じ構成を有数する4つのウェイであり、4×2kバイトの容量を有する。各ウェイは、16個のキャッシュエントリを有する。1つのキャッシュエントリは、バリッドフラグV、21ビットのタグ、128バイトのラインデータ、ウィークフラグW、使用フラグU、及びダーティフラグDを有する。
タグは21ビットのタグアドレスのコピーである。ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の128バイトデータのコピーである。
バリッドフラグVは、当該キャッシュエントリのデータが有効か否かを示す。
ウィークフラグWは、プロセッサからのアクセスに関しては、アクセス頻度の低いアクセスか否かを示し、キャッシュメモリにおけるリプレース制御に関しては、そのキャッシュエントリのアクセス順序を強制的に最古とする、つまりそのキャッシュエントリがアクセスされた時期が他のどのキャッシュエントリがアクセスされた時期よりも古いとみなすことを示す。ウィークフラグWによって、他のキャッシュエントリよりも先に追い出してもよい最強のリプレース対象が示される。
使用フラグUは、そのキャッシュエントリにアクセスがあったか否かを示し、LRU方式におけるキャッシュエントリ間のアクセス順序データの代わりに用いられる。より正確には、使用フラグUの1は、アクセスがあったことを、0はないことを意味する。ただし、1つのセット内の4つのウェイの使用フラグが全て1になる場合には、セットするウェイ以外は0にリセットされる。別言すれば、使用フラグUは、アクセスされた時期が古いか新しいか2つの相対的な状態を示す。つまり、使用フラグUが1のキャッシュエントリは、使用フラグが0のキャッシュエントリよりも新しくアクセスされたことを意味する。
ダーティフラグDは、当該キャッシュエントリにプロセッサから書き込みがあったか否か、つまりライン中にキャッシュされたデータが存在するが書き込みによりメモリ中のデータと異なる可能性があるためメモリに書き戻すことが必要か否かを示す。
比較器32aは、アドレスレジスタ20中のタグアドレスと、セットインデックスにより選択されたセットに含まれる4つのタグ中のウェイ0のタグとが一致するか否かを比較する。比較器32b〜32cについても、ウェイ31b〜31dに対応すること以外は同様である。
アンド回路33aは、バリッドフラグと比較器32aの比較結果とが一致するか否かをアンドする。この比較結果をh0とする。比較結果h0が1である場合は、アドレスレジスタ20中のタグアドレスおよびセットインデックスに対応するラインデータが一致すること、つまりウェイ0においてヒットしたことを意味する。比較結果h0が0である場合は、ミスヒットしたことを意味する。アンド回路33b〜33dについても、ウェイ31b〜31dに対応すること以外は同様である。その比較結果h1〜h3は、ウェイ1〜3でヒットしたかミスしたかを意味する。
オア回路34は、比較結果h0〜h3のオアをとる。このオアの結果をhitとする。hitは、キャッシュメモリにヒットしたか否かを示す。
セレクタ35は、選択されたセットにおけるウェイ0〜3のラインデータのうち、ヒットしたウェイのラインデータを選択する。
セレクタ36は、セレクタ35により選択された32ワードのラインデータにうち、ワードインデックスに示される1ワードを選択する。
デマルチプレクサ37は、キャッシュエントリにデータを書き込む際に、ウェイ0〜3の1つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
制御部38は、キャッシュメモリ3の全体の制御を行う。
<使用フラグUの説明>
図3は、制御部38による使用フラグの更新例を示す。同図の上段、中断、下段は、ウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリを示している。4つのキャッシュエントリ右端の1又は0は、それぞれ使用フラグの値である。この4つの使用フラグUをU0〜U3と記す。
同図上段では(U0〜U3)=(1、0、1、0)であるので、ウェイ0、2のキャッシュエントリはアクセスがあったことを、ウェイ1、3のキャッシュエントリはアクセスがないことを意味する。
この状態で、メモリアクセスがセットN内のウェイ1のキャッシュエントリにヒットした場合、同図中段に示すように、(U0〜U3)=(1、1、1、0)に更新される。つまり、実線に示すようにウェイ1の使用フラグU1が0から1に更新される。
さらに、同図中段の状態で、メモリアクセスがセットN内のウェイ3のキャッシュエントリにヒットした場合、同図下断に示すように、(U0〜U3)=(0、0、0、1)に更新される。つまり、実線に示すようにウェイ3の使用フラグU1が0から1に更新される。加えて、破線に示すようにウェイ3以外の使用フラグU0〜U2が1から0に更新される。これにより、ウェイ3のキャシュエントリが、ウェイ0〜2の各キャッシュエントリよりも新しくアクセスされたことを意味することになる。
制御部38は、キャッシュミス時にW=1のキャッシュエントリが存在しなければ、使用フラグに基づいてリプレース対象のキャッシュエントリを決定してリプレースを行う。例えば、制御部38は、図3上段では、ウェイ1とウェイ3の何れかをリプレース対象と決定し、図3中段ではウェイ3をリプレース対象と決定し、図3下段ではウェイ0〜2の何れかをリプレース対象と決定する。
<ウィークフラグWの説明>
図4(a)ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリがリプレースされる様子を示す図である。同図においても、図3と同様にウェイ0〜3に跨るセットNを構成する4つのキャッシュエントリを示している。4つのキャッシュエントリ右端の1又は0は、それぞれ使用フラグの値である。また、データEのみアクセス頻度の低いデータを、データA、B、C、Dはアクセス頻度の高いデータとする。
図4(a)の第1段目の状態で、プロセッサ1がデータEにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、U=0のキャッシュエントリの中からアクセス頻度の高いデータCのキャッシュエントリがアクセス頻度の低いデータEにリプレースされ、第2段目の状態となる。
第2段目の状態で、プロセッサ1がデータCにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、U=0のキャッシュエントリであるアクセス頻度の高いデータDのキャッシュエントリがアクセス頻度の高いデータCにリプレースされ、第3段目の状態となる。
第3段目の状態で、プロセッサ1がデータDにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、アクセス頻度の高いデータAのキャッシュエントリがアクセス頻度の高いデータDにリプレースされ、第4段目の状態となる。
同様に、第4段目でも、使用頻度の低いデータEはリプレース対象として選択されないで、キャッシュメモリに残っている。
第5段目の状態で、使用頻度の低いデータEは最も古い(U=0)であることから、リプレース対象として選択されて、追い出される。
このように、擬似LRU方式において(通常のLRU方式においても)、アクセス頻度の低いデータEによって、4ウェイの場合は最悪4回のキャッシュミスを誘発する場合がある。
図4(b)は、リプレース処理におけるウィークフラグWの役割を示す説明図である。
図4(b)の第1段目の状態(図4(a)の第1段目と同じ)で、プロセッサ1がデータEにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、U=0のキャッシュエントリの中からアクセス頻度の高いデータCのキャッシュエントリがアクセス頻度の低いデータEにリプレースされる。このとき、プロセッサ1は、データEのキャッシュエントリにウィークフラグWを1に設定するものとする。これにより、次のキャッシュミス時にデータEのキャッシュエントリが真っ先に追い出され、第2段目の状態となる。
第2段目の状態で、プロセッサ1がデータCにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、W=1のキャッシュエントリであるアクセス頻度の低いデータEのキャッシュエントリがリプレース対象として選択され、アクセス頻度の高いデータCにリプレースされ、第3段目の状態となる。
このように、ウィークフラグWを設けることにより、アクセス頻度の低いデータによるキャッシュミスの誘発を低減することができる。
<動作プリミティブ>
次に、キャッシュメモリ3が実行する6種類の動作プリミティブについて説明する。動作プリミティブは、TAC4から指定される単一のアドレスに対する次のような操作である。
(1)フィル操作:前記アドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへ前記指定されたアドレスに対応するデータをロードし、タグを設定してバリッドフラグVをセットする。この操作は、キャッシュのヒット率の向上に役立つ。
(2)タッチ操作:前記アドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへデータをロードすることなくタグを設定してバリッドフラグVをセットする。この操作は、キャッシュのヒット率の向上と、不必要なバストランザクションの削減に役立つ。
(3)ライトバック操作:前記アドレスにヒットするキャッシュエントリがありかつダーティフラグDがセットされている場合に、そのキャッシュエントリのデータをメモリへセーブしてダーティフラグDをリセットする。この操作は、バストランザクションの平準化(時間的分散)に役立つ。
(4)無効化操作:前記アドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのデータをダーティフラグに応じてメモリへセーブすることなくバリッドフラグVをリセットする。この操作は、不必要なバストランザクションの削減に役立つ。
(5)ライトバック兼無効化操作:前記アドレスにヒットするキャッシュエントリがある場合に、ダーティフラグDがセットされていればそのキャッシュエントリのデータをメモリへセーブしてダーティフラグD及びバリッドフラグVをリセットし、ダーティフラグDがリセットされていればそのキャッシュエントリのバリッドフラグVのリセットのみを行う。この操作は、バストランザクションの平準化(時間的分散)に役立つ。
(6)最古化操作:前記アドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのウィークフラグWをセットする。この操作は、キャッシュのヒット率の向上に役立つ。
<動作プリミティブ処理>
図5は、キャッシュメモリ3における動作プリミティブ処理の一例を示すフローチャートである。この動作プリミティブ処理は、TAC4から動作プリミティブの指定Iと、操作対象を指定するアドレスAとを与えられると起動され、指定された動作プリミティブを実行する。
制御部38がプロセッサ1からのメモリアクセスを処理中なら、その処理が終了するまで待ち(S101:YES)、そして、プロセッサ1からのメモリアクセスが行われていない期間に、デマルチプレクサ22はTAC4から与えられたアドレスを選択する(S102)。
そのアドレスにヒットするキャッシュエントリがある場合には(S103:YES)、無効化、最古化、ライトバック、及びライトバック兼無効化のみが、そのヒットしたキャッシュエントリを操作対象として実行される(S104)。指定された動作プリミティブがライトバック又はライトバック兼無効化であれば、ダーティフラグDが1ならライトバックし(S105〜S106)、さらに指定された動作プリミティブがライトバック兼無効化であればバリッドフラグVをリセットする(S107〜S108)。また、指定された動作プリミティブが無効化であればバリッドフラグVをリセットし(S110)、最古化であればウィークフラグWをセットする(S109)。
そのアドレスにヒットするキャッシュエントリがない場合には(S103:NO)、フィル及びタッチのみが実行される(S111)。その場合にはまず、リプレース対象となるキャッシュエントリを選択し(S112)、そのキャッシュエントリのダーティフラグDが1ならライトバックし(S113〜S114)、タグアドレスを設定して(S115)、さらに指定された動作プリミティブがフィルであればそのキャッシュエントリへメモリからデータをロードし(S117)、その後、Vフラグをセットする(S118)。
<オートクリーナ>
次に、キャッシュメモリ3が実行するオートクリーナについて説明する。オートクリーナは、TAC4から指定される単一のアドレスに対する次のような操作である。
前記アドレスで示されるセットの各キャッシュエントリ(図2を参照して具体的に言えば、前記アドレスに含まれるセットインデックスSIで指し示されるセットに属する4つのキャッシュエントリ)について、ダーティフラグD及びウィークフラグWが共にセットされていればライトバックする。
この操作は、バストランザクションの平準化(時間的分散)に役立つ。
<オートクリーナ処理>
図6は、キャッシュメモリ3におけるオートクリーナ処理の一例を示すフローチャートである。このオートクリーナ処理は、TAC4からオートクリーナの指定Iと、操作対象を指定するアドレスAとを与えられると起動される。
制御部38がプロセッサ1からのメモリアクセスを処理中なら、その処理が終了するまで待ち(S201:YES)、そして、プロセッサ1からのメモリアクセスが行われていない期間に、デマルチプレクサ22はTAC4から与えられたアドレスを選択する(S202)。
そのアドレスに含まれるセットインデックスで指定されるセットに属する各キャッシュエントリについて、以下を繰り返す(S203〜S207)。
ダーティフラグDが1で、かつウィークフラグWが1なら(S204:YES)、ライトバックしてダーティフラグDをリセットする(S205〜S206)。
<変形例>
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
(1)上記実施の形態では、4ウェイ・セット・アソシエイティブのキャッシュメモリを例に説明したが、ウェイ数は、いくつでもよい。また、上記実施の形態では、セット数が16である例を説明したが、セット数はいくつでもよい。
(2)上記実施の形態では、セット・アソシエイティブのキャッシュメモリを例に説明したが、フル・アソシエイティブ方式やダイレクトマップ方式のキャッシュメモリであってもよい。
(3)上記実施の形態では、ラインをキャッシュデータのリプレース単位であるとして説明したが、ラインを4つに分割した各部分であるサブラインをリプレース単位としてもよい。その場合、各キャッシュエントリは、4つのバリッドフラグおよび4つのダーティフラグをそれぞれ保持する。
図7は、その場合のキャッシュエントリの構成例を示す図である。ラインの1/4をサブラインとする他に、ラインの1/2、1/8、1/16をサブラインとしてもよい。その場合、各キャッシュエントリは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持する。リプレース単位をラインとするかサブラインとするかを、TAC4からの指示に応じて切り替えてもよい。
(4)キャッシュメモリとしてのいくつかの機能(例えばリプレース機能)が制限されるウェイ(インアクティブウェイ)を設けてもよい。各ウェイをそのようなインアクティブウェイとするか、全ての機能が利用可能なアクティブウェイとするかを、TAC4からの指示に応じて切り替えてもよい。
<キャッシュメモリ及びTAC間のインタフェースの一例>
図8は、キャッシュメモリ3とTAC4との間のインタフェース(送受信される信号)の一例を示す図である。この例には、上記の変形例が考慮されている。
32ビットのアドレスは、操作の対象を指定する。要求、要求受理、及び実行完了は、要求の発行に関するハンドシェイクに用いられる。フィル、タッチ、ライトバック、無効化、ライトバック兼無効化、最古化、及びオートクリーナは、要求する操作を指定する。3ビットのアクティブウェイは、ウェイごとにアクティブウェイとするかインアクティブウェイとするかを指定する。リフィル単位は、リプレース単位をラインとするかサブラインとするかを指定する。
<TACの構成>
次に、TACの構成について説明する。
図9は、TAC4の構成例を示すブロック図である。TAC4は、プロセッサ1から与えられるコマンドに応じた操作をキャッシュメモリ3へ要求するために、コマンドエントリ部40、領域コマンド制御部41、命令連動コマンド制御部42、オートクリーナ制御部43、及び操作要求部44を備える。
TAC4がプロセッサ1から与えられるコマンドには、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令に同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次ライトバックすることを示すオートクリーナコマンドとがある。
コマンドエントリ部40は、プロセッサ1が予め定められた命令を実行することによって、コマンドとアドレスとを書き込まれるレジスタ群であり、動作プリミティブレジスタ401、スタートアドレスレジスタ402、サイズレジスタ403、コマンドレジスタ404、及びTACコントロールレジスタ405を備える。これらのレジスタは、例えば予め定められたメモリアドレスに割り当てられるなどして、プロセッサ1から直接アクセスが可能であり、プロセッサ1により書き込まれた内容を保持する。
領域コマンド制御部41は、領域コマンドを最大4つまで保持し、保持されているコマンドに応じた要求を生成する機能ブロックであり、アドレス調整部411、コマンド保持部412、及びコマンド選択部413を備える。
命令連動コマンド制御部42は、命令連動コマンドを最大4つまで保持し、保持されているコマンドに応じた要求を、プロセッサ1が実行する特定の命令と同期して生成する機能ブロックであり、アドレス調整部421、コマンド保持部422、実行判断部423、コマンド選択部424、実効アドレス生成部425を備える。
オートクリーナ制御部43は、オートクリーナ要求を生成する機能ブロックであり、クリーニングアドレス出力部431を備える。
<コマンドエントリ部>
単独コマンドは、動作プリミティブレジスタ401に書き込まれ、保持される。
図10(a)に、動作プリミティブレジスタ401に単独コマンドを書き込む命令の一例を示す。この命令は、通常の転送命令(mov命令)であり、ソースオペランドとしてコマンドを、デスティネーションオペランドとして動作プリミティブレジスタ(PR)401を指定している。
図10(b)に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、操作対象アドレスと動作プリミティブの指定とからなる。
コマンドエントリ部40は、動作プリミティブレジスタ401に保持された単独コマンドに応じた要求を操作要求部44へ出力する。
領域コマンド及び命令連動コマンドは、スタートアドレスレジスタ402、サイズレジスタ403、及びコマンドレジスタ404に書き込まれる。
図11(a)に、スタートアドレスレジスタ(SAR)402にスタートアドレスを書き込む命令の一例を示す。この命令も、図10(a)と同様に通常の転送命令である。スタートアドレスは、コマンドの操作対象の先頭アドレスを示す。
図11(b)に、サイズレジスタ(SR)403にサイズを書き込む命令の一例を示す。この命令も、通常の転送命令である。サイズは、前記操作対象の大きさを示す。サイズの単位は、バイト数であっても、ライン数(キャッシュエントリ数)であってもよく、予め定められた単位であればよい。
図11(c)に、コマンドレジスタ(CR)404にコマンドを書き込む命令の一例を示す。この命令も、通常の転送命令である。
図11(d)に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、操作の要求を特定の命令の実行に連動させるか否か(つまり、コマンドが命令連動コマンドか領域コマンドか)を指定する命令連動フラグと、動作プリミティブの指定と、指定されたアドレス範囲内で操作対象とする複数のアドレスの間隔を示すインクリメント値とからなる。
このインクリメント値を、例えばラインのサイズとすれば、アドレス範囲内の全てのキャッシュデータに順次所望の操作を行うことができる。また、前記特定の命令がポストインクリメント付きのロード・ストア命令である場合に、このインクリメント値をその命令のポストインクリメント値とすれば、その命令の操作対象に順次所望の操作を行うことができる。
コマンドエントリ部40は、スタートアドレスレジスタ402、サイズレジスタ403、及びコマンドレジスタ404に前述した内容が書き込まれると、そのコマンドが領域コマンドなら領域コマンド制御部41へ出力し、命令連動コマンドなら命令連動コマンド制御部42へ出力する。
オートクリーナコマンドは、TACコントロールレジスタ405内の予め定められたビット位置にあってオートクリーナを有効とするか無効とするかを示すオートクリーナフラグの値を更新する。
図12(a)に、オートクリーナフラグを(TACコントロールレジスタ405全体の内容と共に)更新する命令の一例を示す。この命令も、通常の転送命令である。
図12(b)に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、TACコントロールレジスタのフォーマットに対応し、前記ビット位置にオートクリーナフラグの新しい値を含む。
コマンドエントリ部40は、TACコントロールレジスタ405に保持されたオートクリーナフラグの値をオートクリーナ制御部43へ出力する。
<領域コマンド制御部>
領域コマンド制御部41において、アドレス調整部411は、コマンドエントリ部40から領域コマンドに関するアドレス範囲を取得し、その両端をそれぞれキャッシュエントリの先頭データを指すように調整し、コマンド保持部412は、アドレス範囲を調整された後の領域コマンドを最大4つまで保持し、コマンド選択部413は、保持されている領域コマンドの一つ(例えば、最も古くから保持されている一つ)を選択して、選択された領域コマンドに応じた要求を生成し、操作要求部44へ出力する。
<アドレス調整部>
ここで、アドレス調整部411のアドレス調整機能の内容を詳しく説明する。
アドレス調整部411は、まずスタートアドレスレジスタ402に保持されたスタートアドレスとサイズレジスタ403に保持されたサイズとを加算する。加算結果は、アドレス範囲の終了位置を指すエンドアドレスである。サイズは、前述したように、予め定められた単位で表されていればよく、その単位が例えばバイトであればバイトアドレスとして加算し、ラインであればラインアドレスとして加算すればよい。
次に、アドレス調整部411は、スタートアドレス及びエンドアドレスを調整する。
図13は、その調整の内容を説明する概念図である。同図において、スタートアドレスはラインNの先頭以外の任意の位置を指す。スタートアドレスは、次のライン(N+1)の先頭を指すようアラインスタートアドレスaに調整されるか、又はスタートアドレスのデータを含むラインNの先頭を指すようアラインスタートアドレスbに調整される。アラインスタートアドレスが指すラインをスタートラインと呼ぶ。
また、エンドアドレスはラインMの先頭以外の任意の位置を指す。エンドアドレスは、直前のライン(M−1)の先頭を指すようアラインエンドアドレスaに調整されるか、又はエンドアドレスのデータを含むラインMの先頭を指すようアラインエンドアドレスbに調整される。アラインエンドアドレスが指すラインをエンドラインと呼ぶ。
このように、スタートアドレス及びエンドアドレスは、ライン単位で内側アラインされるか又は外側アラインされる。ライン単位の外側アラインの後、さらに、サブライン単位の外側アラインと内側アラインが可能である。
この調整によりプロセッサ1はラインサイズ及びライン境界とは無関係に、任意のスタートアドレスと任意の大きさとを指定することができる。
<コマンド保持部>
コマンド保持部412は、アドレス調整部411からアラインスタートアドレスとアラインエンドアドレスとを取得するとともに、コマンドレジスタ404から動作プリミティブとインクリメント値とを取得して保持する。
図14は、コマンド保持部412の構成を示すブロック図である。コマンド保持部412は、4つのレジスタ4121〜4124から構成され、好ましくは各レジスタの内容を読み出し可能なFIFO(First In First Out)方式のキューであるとしてもよい。各レジスタは、アドレス調整部411から取得されたアラインスタートアドレス及びアラインエンドアドレス、及びコマンドレジスタ404から取得されたインクリメント値及び動作プリミティブを保持する。アラインスタートアドレスは、操作要求部44からの制御に応じて、要求ごとにインクリメント値を加算することによって次々に更新され、カレントアドレスとして用いられる。
<コマンド選択部>
コマンド選択部413は、コマンド保持部412に保持されているコマンドの一つ(例えば最も古い一つ、つまりFIFOキューの先頭)を選択し、そのカレントアドレスと動作プリミティブとを示す一つの要求を生成し、操作要求部44へ出力する。
<領域コマンド制御処理>
図15は、領域コマンド制御部41における領域コマンド制御処理の一例を示すフローチャートである。
コマンドエントリ部40に領域コマンドがエントリされると(S301:YES)、アドレス調整部411はそのコマンドのアドレスを調整して(S302)、コマンド保持部412へアドレス調整後のコマンドを登録する(S303)。このコマンドは、まだコマンドを保持していないレジスタに登録されるか、全てのレジスタがコマンドを保持している場合には、最も古いコマンドを上書きすることによって登録される。なお、カレントアドレスがアラインエンドアドレスを上回った(これは、全ての対象アドレスに対する操作を要求し終えたことを意味する)コマンドに上書きするか、又はそのようなコマンドを予め消去しておいてもよく、また、全てのレジスタがコマンドを保持している場合には、新たなコマンドを登録せずにプロセッサ1に例外を発生させることも考えられる。
コマンドが登録されていれば(S304:YES)、コマンド選択部413は、最も古いコマンドを選択して、そのカレントアドレスと動作プリミティブとを示す要求を操作要求部44へ出力する(S305)。
なお、コマンド選択部413は、最も古いコマンド以外のコマンドを選択してもよい。具体的には、例えば、各コマンドを発行したタスクと、現在プロセッサ1で実行されているカレントタスクとが知られる構成を設けた上で、カレントタスクから与えられたコマンドを、最も古いコマンドよりも優先して選択することが考えられる。
この構成は、例えばプロセッサ1がマルチタスク処理を行う場合に適しており、タスクの切り替えに追従してカレントタスクから与えられたコマンドを優先的に処理できる。しかも、コマンド保持部412は、コマンドごとにカレントアドレスを保持しているから、ひとたび他のコマンドが選択された後で、元のコマンドが選択された場合でも、元のコマンドについてまだ要求していないアドレスに対する操作を要求することができる。
<命令連動コマンド制御部>
命令連動コマンド制御部42において、アドレス調整部421は、コマンドエントリ部40から命令連動コマンドに関するアドレス範囲を取得し、その両端をそれぞれキャッシュエントリの先頭データを指すように調整し、コマンド保持部422は、アドレス範囲を調整された後の命令連動コマンドを最大4つまで保持する。実行判断部423は、保持されている各コマンドについて定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断し、コマンド選択部424は、肯定判断されたコマンドの一つ(例えば、最も古くから保持されている一つ)を選択し、実効アドレス生成部425によって生成される実効アドレスに対する要求を操作要求部44へ出力する。
ここで、アドレス調整部421及びコマンド保持部422は、それぞれアドレス調整部411及びコマンド保持部412と同一であるので、説明を省略する。
<実行判断部>
実行判断部423は、コマンド保持部422に保持されている各コマンドのカレントアドレスを予測アドレスとして用いて、プロセッサ1によってその予測アドレスをオペランドとする特定命令(具体的には、ポストインクリメント付きロード命令、及びポストインクリメント付きストア命令)が実行されたか否かを判断する。このような判断を行うために、例えば、プロセッサ1は、ポストインクリメント付きロード命令、及びポストインクリメント付きストア命令を実行中であることを示す信号Cを実行判断部423に供給し、実行判断部423は、信号Cが供給されている期間に、アドレスバスに現れるアドレスをコマンド保持部422に保持されている各カレントアドレスと比較してもよい。
<コマンド選択部、及び実効アドレス生成部>
コマンド選択部424は、実行判断部423によって肯定判断されたコマンドの一つ(例えば最も古い一つ)を選択する。実効アドレス生成部425は、選択されたコマンドがフィル又はタッチを示す場合、そのコマンドのカレントアドレス(前述した予測アドレス)に、1ライン分のオフセット値を加算することによって、コマンドの操作対象となる実効アドレスを生成する。また、選択されたコマンドがライトバック、無効化、ライトバック兼無効化、又は最古化を示す場合、そのコマンドのカレントアドレスから、1ライン分のオフセット値を減算することによって、コマンドの操作対象となる実効アドレスを生成する。そして、コマンド選択部424は、その実効アドレスと動作プリミティブの指定とを示す一つの要求を生成し、操作要求部44へ出力すると共に、選択されたコマンドに対応するカレントアドレスを、インクリメント値分増加させることによって更新する。
なお、ここではリプレース単位がラインであるとして1ライン分のオフセット値を用いることとしたが、リプレース単位がサブラインである場合には、より小さな(例えば2サブライン分の)オフセット値を用いてもよい。
<命令連動コマンド制御処理>
図16は、命令連動コマンド制御部42における命令連動コマンド制御処理の一例を示すフローチャートである。
コマンドエントリ部40に命令連動コマンドがエントリされると(S401:YES)、アドレス調整部421はそのコマンドのアドレスを調整して(S402)、コマンド保持部422へアドレス調整後のコマンドを登録する(S303)。このコマンドは、領域コマンドの場合と同様、まだコマンドを保持していないレジスタに登録されるか、全てのレジスタがコマンドを保持している場合には、最も古いコマンドを上書きすることによって登録される。なお、カレントアドレスがアラインエンドアドレスを上回った(つまり、アドレス範囲内の全ての対象アドレスに対する要求を発行し終えた)コマンドに上書きするか、又はそのようなコマンドを予め消去しておいてもよく、また、全てのレジスタがコマンドを保持している場合には、新たなコマンドを登録せずにプロセッサ1に例外を発生させることも考えられる。
コマンドが登録されていれば(S404:YES)、実行判断部423は、前記特定命令のオペランドアドレスを各コマンドのカレントアドレスと比較する(S405)。アドレスが一致したコマンドがあれば(S406:YES)、コマンド選択部424は、その中で最も古い一つを選択し(S407)、実効アドレス生成部425は、選択されたコマンドについて実効アドレスを生成して、コマンド選択部424は、その実効アドレスと動作プリミティブとを示す要求を操作要求部44へ出力し、選択されたコマンドに対応するカレントアドレスを、インクリメント値分増加させることによって更新する(S408)。
<オートクリーナ制御部>
オートクリーナ制御部43において、クリーニングアドレス出力部431は、キャッシュメモリ3における各キャッシュエントリを指定するアドレスを逐次出力する。クリーニングアドレス出力部431は、アドレスを保持して出力する単なるレジスタであってもよい。
このクリーニングアドレスには、例えば4ウェイ・セット・アソシエイティブ方式のキャッシュメモリ(図2を参照)においては、各セットを指定するアドレスを用いればよい。そのようなアドレスは、図2の例について具体的に言えば、0x00000000から0x00000780までの0x0080(セットの単位アドレス)おきの16個のアドレスによって代表される。これらのアドレスにはセットインデックスSIの全ての値が含まれるので、全てのセットの指定が可能である。
オートクリーナ制御部43は、TACコントロールレジスタ405からオートクリーナが有効であることを示すフラグ値が取得される間、クリーニングアドレス出力部431から出力されるアドレスに対するオートクリーナ操作の要求を操作要求部44へ出力する。
<オートクリーナ制御処理>
図17は、オートクリーナ制御部43におけるオートクリーナ制御処理の一例を示すフローチャートである。
TACコントロールレジスタ405からオートクリーナが有効であることを示すフラグ値が得られる場合(S501:YES)、オートクリーナ制御部43は、クリーニングアドレス出力部431から出力されるアドレスに対するオートクリーナ操作を操作要求部44へ出力する(S502)。
<操作要求処理>
ここまでの説明から、操作要求部44には、単独コマンドに応じた要求、命令連動コマンドに応じた要求、領域コマンドに応じた要求、及びオートクリーナ操作の要求の最大4つの要求が与えられる可能性がある。操作要求部44は、これらの要求が同時に与えられた場合、予め設定された優先順位に基づいて一つの要求を選択し、選択した要求をキャッシュメモリ3へ転送する。この予め設定された優先順位は、前述したコマンドの順序としてもよい。
また、操作要求部44は、命令連動コマンドに応じた要求、領域コマンドに応じた要求、及びオートクリーナ操作の要求を転送した場合には、その要求の次の操作対象が示されるように、コマンドのカレントアドレス、及びクリーニングアドレスを制御する。
図18は、操作要求部44における操作要求処理の一例を示すフローチャートである。
単独コマンドに応じた要求があれば(S601:YES)、その要求をキャッシュメモリ3に転送する(S602)。単独コマンドに応じた要求を転送した後、操作要求部44は、動作プリミティブレジスタの内容を消去してもよい。
命令連動コマンドに応じた要求があれば(S603:YES)、その要求をキャッシュメモリ3へ転送する(S604)。転送した要求に対応するコマンドのカレントアドレス(コマンド選択部424においてそのコマンドが選択された際にインクリメントされる)がアラインエンドアドレスを上回っている場合には、そのコマンドを消去してもよい。
領域コマンドに応じた要求があれば(S606:YES)、その要求をキャッシュメモリ3へ転送し(S607)、その後、領域コマンド制御部41を介して、その領域コマンドのカレントアドレスを、インクリメント値分増加させることによって更新する(S608)。この更新によって、カレントアドレスがアラインエンドアドレスを上回った場合には、そのコマンドを消去してもよい。
オートクリーナコマンドに応じた要求があれば(S609:YES)、その要求をキャッシュメモリ3へ転送し(S610)、その後、オートクリーナ制御部43を制御して、クリーニングアドレス出力部431から出力されるアドレスを、セットの単位アドレス分増加させる。
<まとめ>
以上説明したように、TAC4は、プロセッサ1が予め定められた命令を実行することによってキャッシュデータの転送及び属性操作に関するコマンドを与えられ、そのコマンドに応じて6種類の動作プリミティブ及びオートクリーナ操作をキャッシュメモリ3に要求し、キャッシュメモリ3は、プロセッサ1からのメモリアクセスに応じて従来の一般的なキャッシングを行う合間に、TAC4からの要求に応じた操作を実行する。
この6種類の動作プリミティブ及びオートクリーナ操作は、キャッシュのヒット率の向上、不必要なバストランザクションの削減、及びバストランザクションの平準化(時間的分散)に効果があり、かつ前記予め定められた命令(例えば、図10、図11、図12を参照)をプロセッサ1に実行させることでソフトウェアから要求できる。従って、キャッシュ効率の向上を図る上でソフトウェアからの積極的な制御下でこれらの操作を行うために、この構成は好適である。
また、そのような特定の命令は、コンパイラによりプログラム中に挿入してもよい。具体的に、コンパイラは、データの生存期間を判断するなどしてデータが最初にアクセスされるプログラム位置を知ってその前にフィル操作を要求するコマンドを挿入し、また、同様にしてそれ以降データに書き込みがなされないプログラム位置を知ってその後に最古化を要求するコマンドを挿入するといったことが考えられる。
キャッシュメモリ3が行う6種類の動作プリミティブ及びオートクリーナ操作の内容を鑑みれば、プロセッサからのメモリアクセスに応じた一般的なキャッシング操作を行う従来のハードウェアに大規模な追加、修正を施すことなく、キャッシュメモリ3を実現できる。
TAC4もまた、プロセッサ1からのコマンド取得、コマンドのキューイングと選択、複数のアドレスに対する要求の逐次発生、及びキャッシュメモリ3への要求の転送管理といった簡明な機能のみを果たす。
ハードウェアをこの程度に簡素化しかつソフトウェアからの制御を受け入れるために好ましい構成とすることによって、ハードウェアとソフトウェアとの良好な機能分担が可能となり、その結果、自律的な制御によるキャッシュ効率の向上を目指してハードウェアがいたずらに大規模化する事態を回避することができる。
本発明は、ソフトウェアからの制御性を向上するキャッシュメモリに利用可能であり、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適用できる。
図1は、本発明の実施の形態に係るプロセッサ、キャッシュメモリ、メモリ、TACを含むコンピュータシステムの全体構成例を示すブロック図である。 図2は、キャッシュメモリの構成例を示すブロック図である。 図3は、使用フラグの更新例を示す図である。 図4(a)はウィークフラグが存在しない場合にキャッシュエントリがリプレースされる様子を示す図であり、図4(b)はリプレース処理におけるウィークフラグWの役割を示す説明図である。 図5は、キャッシュメモリにおける動作プリミティブ処理の一例を示すフローチャートである。 図6は、キャッシュメモリにおけるオートクリーナ処理の一例を示すフローチャートである。 図7は、変形例に係るキャッシュエントリの構成例を示す図である。 図8は、キャッシュメモリとTACとの間のインタフェースの一例を示す図である。 図9は、TACの構成例を示すブロック図である。 図10(a)は、動作プリミティブレジスタにコマンドを書き込む命令の一例を示す図であり、図10(b)は、コマンドの一例を示す図である。 図11(a)は、スタートアドレスレジスタにスタートアドレスを書き込む命令の一例を示す図であり、図11(b)は、サイズレジスタにサイズを書き込む命令の一例を示す図であり、図11(c)は、コマンドレジスタにコマンドを書き込む命令の一例を示す図であり、図11(d)は、コマンドの一例を示す図である。 図12(a)は、TACコントロールレジスタにコマンドを書き込む命令の一例を示す図であり、図12(b)は、コマンドの一例を示す図である。 図13は、アドレス調整の内容を説明する概念図である。 図14は、アドレス保持部の構成を示すブロック図である。 図15は、領域コマンド制御部における領域コマンド制御処理の一例を示すフローチャートである。 図16は、命令連動コマンド制御部における命令連動コマンド制御処理の一例を示すフローチャートである。 図17は、オートクリーナ制御部におけるオートクリーナ制御処理の一例を示すフローチャートである。 図18は、操作要求部における操作要求処理の一例を示すフローチャートである。
符号の説明
1 プロセッサ
2 メモリ
3 キャッシュメモリ
4 TAC
20 アドレスレジスタ
21 メモリI/F
22 デマルチプレクサ
30 デコーダ
31a〜31d ウェイ
32a〜32d 比較器
33a〜33d アンド回路
34 オア回路
35 セレクタ
36 セレクタ
37 デマルチプレクサ
38 制御部
40 コマンドエントリ部
41 領域コマンド制御部
42 命令連動コマンド制御部
43 オートクリーナ制御部
44 操作要求部
401 動作プリミティブレジスタ
402 スタートアドレスレジスタ
403 サイズレジスタ
404 コマンドレジスタ
405 TACコントロールレジスタ
411 アドレス調整部
412 コマンド保持部
413 コマンド選択部
421 アドレス調整部
422 コマンド保持部
423 実行判断部
424 コマンド選択部
425 実効アドレス生成部
431 クリーニングアドレス出力部

Claims (17)

  1. プロセッサとメモリとの間に設けられるキャッシュメモリと、
    前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
    前記キャッシュメモリは、
    前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
    前記転送及び属性制御手段は、
    前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
    前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
    を備え
    前記コマンドエントリ部は、操作の対象となるアドレスの指定方法と操作のタイミングのうち少なくとも一方が異なる複数の種類のコマンドを前記プロセッサから与えられ、
    前記操作要求部は、各コマンドに応じた操作要求を、コマンドの種類によって予め設定された優先順位に基づいて選択し、前記キャッシュメモリに要求する
    とを特徴とするキャッシュメモリシステム。
  2. 前記キャッシュメモリは、キャッシュデータの管理単位であるキャッシュエントリに対応付けて、
    そのキャッシュエントリに保持されるキャッシュデータに対応するメモリアドレスの上位部を示すタグを保持するタグ保持部と、
    そのキャッシュエントリが有効か否かを示すバリッドフラグと、そのキャッシュエントリに書き込み操作があったか否かを示すダーティフラグと、そのキャッシュエントリのアクセス順序を強制的に最古とすることを示すウィークフラグとを保持するフラグ保持部と
    を有し、
    前記転送及び属性制御手段からの要求に応じて、
    指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへ前記指定されたアドレスに対応するデータをロードし、タグを設定してバリッドフラグをセットするフィル操作、
    指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへデータをロードすることなくタグを設定してバリッドフラグをセットするタッチ操作、
    指定されるアドレスにヒットするキャッシュエントリがありかつダーティフラグがセットされている場合に、そのキャッシュエントリのデータをメモリへセーブしてダーティフラグをリセットするライトバック操作、
    指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのデータをダーティフラグの状態に応じてメモリへセーブすることなくバリッドフラグをリセットする無効化操作、
    指定されるアドレスにヒットするキャッシュエントリがある場合に、ダーティフラグがセットされていればそのキャッシュエントリのデータをメモリへセーブしてダーティフラグ及びバリッドフラグをリセットし、ダーティフラグがリセットされていればそのキャッシュエントリのバリッドフラグのリセットのみを行うライトバック兼無効化操作、及び
    指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのウィークフラグをセットする最古化操作
    の中の一つを実行する
    ことを特徴とする請求項1に記載のキャッシュメモリシステム。
  3. 前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、
    前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求する
    ことを特徴とする請求項1または2に記載のキャッシュメモリシステム。
  4. 前記転送及び属性制御手段は、さらに、
    前記アドレス範囲の先頭及び末尾を、前記キャッシュメモリにおけるキャッシュデータの管理単位であるキャッシュエントリの先頭データを示すように調整するアドレス調整部を有し、
    前記操作要求部は、前記調整後のアドレス範囲に含まれる複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求する
    ことを特徴とする請求項3に記載のキャッシュメモリシステム。
  5. 前記転送及び属性制御手段は、さらに、
    複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部と、
    前記保持された複数のコマンドの中から一つを選択するコマンド選択部と
    を有し、
    前記操作要求部は、前記選択されたコマンドに対応するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を逐次要求する
    ことを特徴とする請求項3または4に記載のキャッシュメモリシステム。
  6. プロセッサとメモリとの間に設けられるキャッシュメモリと、
    前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
    前記キャッシュメモリは、
    前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
    前記転送及び属性制御手段は、
    前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
    前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
    を備え、
    前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、
    前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
    前記転送及び属性制御手段は、さらに、
    複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部と、
    前記保持された複数のコマンドの中から一つを選択するコマンド選択部と
    を有し、
    前記操作要求部は、前記選択されたコマンドに対応するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を逐次要求し、
    前記コマンド選択部は、前記選択されたコマンドについて全ての要求がなされる前に、他のコマンドを選択し、
    前記操作要求部は、元のコマンドが再び選択された場合にそのコマンドについてまだ要求していないアドレスに対する操作を逐次要求する
    ことを特徴とするキャッシュメモリシステム。
  7. プロセッサとメモリとの間に設けられるキャッシュメモリと、
    前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及 び属性制御手段とを備え、
    前記キャッシュメモリは、
    前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
    前記転送及び属性制御手段は、
    前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
    前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
    を備え、
    前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、
    前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
    前記転送及び属性制御手段は、さらに、
    次に予定される要求に関して定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断する実行判断部と、
    肯定判断がなされると、前記予測アドレスに所定のオフセット値を加算又は減算することによって実効アドレスを生成する実効アドレス生成部と
    を有し、
    前記操作要求部は、前記生成された実効アドレスに対する前記操作を要求する
    ことを特徴とするキャッシュメモリシステム。
  8. 前記転送及び属性制御手段は、さらに、
    複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部を有し、
    前記実行判断部は、前記保持された各コマンドについて、そのコマンドに対応する予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断し、
    前記転送及び属性制御手段は、さらに、
    肯定判断がなされたコマンドの中から一つを選択するコマンド選択部を有し、
    前記実効アドレス生成部は、前記選択されたコマンドに対応する予測アドレスに所定値を加算又は減算することによって実効アドレスを生成し、
    前記操作要求部は、前記生成された実効アドレスに対する前記選択されたコマンドによって示される操作を要求する
    ことを特徴とする請求項7に記載のキャッシュメモリシステム。
  9. 前記転送及び属性制御手段は、さらに、
    前記キャッシュメモリにおけるキャッシュデータの管理単位である各キャッシュエントリを指定するアドレスを逐次出力するアドレス出力部を有し、
    前記操作要求部は、前記出力されたアドレスによって指定されるキャッシュエントリを含む一つ以上のキャッシュエントリに対する何れかの操作要求を保持する要求保持手段を備え、操作要求を保持している間は自発的に操作要求をし続ける
    ことを特徴とする請求項1に記載のキャッシュメモリシステム。
  10. 前記操作要求部は、前記キャッシュメモリに要求する操作がライトバック操作であり、
    前記キャッシュメモリは、前記要求に応じてライトバック操作を実行する
    ことを特徴とする請求項1または9に記載のキャッシュメモリシステム。
  11. プロセッサとメモリとの間に設けられるキャッシュメモリと、
    前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
    前記キャッシュメモリは、
    前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
    前記転送及び属性制御手段は、
    前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
    前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
    を備え、
    前記コマンドエントリ部は、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令と同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次操作することを示す逐次操作コマンドのうちの少なくとも一つを前記プロセッサから与えられ、
    前記操作要求部は、各コマンドに応じた操作要求を予め設定された優先順位に基づいて選択を行い、前記キャッシュメモリに要求する
    ことを特徴とするキャッシュメモリシステム。
  12. 前記操作要求部は、各コマンドに応じた操作を、前記コマンドの順に優先して、前記キャッシュメモリに要求する
    ことを特徴とする請求項11に記載のキャッシュメモリシステム。
  13. プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
    前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
    前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
    前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
    を含み、
    前記取得ステップでは、前記プロセッサから、操作の対象となるアドレスの指定方法と操作のタイミングのうち少なくとも一方が異なる複数の種類のコマンドを取得し、
    前記操作要求ステップでは、各コマンドに応じた操作要求を、コマンドの種類によって予め設定された優先順位に基づいて選択し、前記キャッシュメモリに要求する
    とを特徴とする制御方法。
  14. 前記コマンドエントリ部は、
    予め定められたメモリアドレスに割り当てられ、前記プロセッサが前記命令を実行することによって、前記コマンドを表すデータを設定されるレジスタを備え、
    前記操作要求部は、前記レジスタに設定されたコマンドによって示される操作を前記キャッシュメモリの制御部に要求する
    ことを特徴とする請求項1に記載のキャッシュメモリシステム。
  15. プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
    前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
    前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性 操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
    前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
    を含み、
    前記取得ステップでは、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を取得し、
    前記操作要求ステップでは、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
    前記制御方法は、さらに、
    複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを、前記転送及び属性制御手段にて保持するコマンド保持ステップと、
    前記保持された複数のコマンドの中から一つを選択するコマンド選択ステップと
    を含み、
    前記操作要求ステップでは、前記選択されたコマンドに対応するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに逐次要求し、
    前記コマンド選択ステップでは、前記選択されたコマンドについて全ての要求がなされる前に、他のコマンドを選択し、
    前記操作要求ステップでは、元のコマンドが再び選択された場合にそのコマンドについてまだ要求していないアドレスに対する操作を逐次要求する
    ことを特徴とする制御方法。
  16. プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
    前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
    前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
    前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
    を含み、
    前記取得ステップでは、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を取得し、
    前記操作要求ステップでは、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
    前記制御方法は、さらに、
    次に予定される要求に関して定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを、前記転送及び属性制御手段にて判断する実行判断ステップと、
    肯定判断がなされると、前記予測アドレスに所定のオフセット値を加算又は減算することによって実効アドレスを生成する実効アドレス生成ステップと
    を含み、
    前記操作要求ステップでは、前記生成された実効アドレスに対する前記操作を要求する
    ことを特徴とする制御方法。
  17. プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
    前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制 御ステップと、
    前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
    前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
    を含み、
    前記取得ステップでは、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令と同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次操作することを示す逐次操作コマンドのうちの少なくとも一つを前記プロセッサから取得し、
    前記操作要求ステップでは、各コマンドに応じた操作要求を予め設定された優先順位に基づいて選択を行い、前記キャッシュメモリに要求する
    ことを特徴とする制御方法。
JP2007521091A 2005-04-08 2006-02-08 キャッシュメモリシステム及びその制御方法 Expired - Lifetime JP4090497B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005112839 2005-04-08
JP2005112839 2005-04-08
PCT/JP2006/302141 WO2006112111A1 (ja) 2005-04-08 2006-02-08 キャッシュメモリシステム及びその制御方法

Publications (2)

Publication Number Publication Date
JP4090497B2 true JP4090497B2 (ja) 2008-05-28
JPWO2006112111A1 JPWO2006112111A1 (ja) 2008-11-27

Family

ID=37114853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007521091A Expired - Lifetime JP4090497B2 (ja) 2005-04-08 2006-02-08 キャッシュメモリシステム及びその制御方法

Country Status (8)

Country Link
US (1) US7953935B2 (ja)
EP (1) EP1868101B1 (ja)
JP (1) JP4090497B2 (ja)
KR (1) KR20070093452A (ja)
CN (1) CN101151600B (ja)
DE (1) DE602006011292D1 (ja)
TW (1) TW200702993A (ja)
WO (1) WO2006112111A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010032435A1 (ja) * 2008-09-17 2010-03-25 パナソニック株式会社 キャッシュメモリ、メモリシステム、データコピー方法及びデータ書き換え方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100818920B1 (ko) * 2006-02-10 2008-04-04 삼성전자주식회사 그래픽 객체의 처리 시 발생된 키 이벤트를 제어하는 장치및 그 방법
EP2511833B1 (en) * 2006-02-17 2020-02-05 Google LLC Encoding and adaptive, scalable accessing of distributed translation models
KR100985517B1 (ko) * 2008-12-04 2010-10-05 주식회사 에이디칩스 캐시메모리 제어방법
JP4768054B2 (ja) 2009-06-23 2011-09-07 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュ制御方法
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
KR101502827B1 (ko) * 2014-03-20 2015-03-17 주식회사 에이디칩스 컴퓨터 시스템에서의 캐시 무효화 방법
KR102128475B1 (ko) * 2014-03-27 2020-07-01 에스케이하이닉스 주식회사 반도체 메모리 장치
US9779025B2 (en) 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
CN105243685B (zh) * 2015-11-17 2018-01-02 上海兆芯集成电路有限公司 数据单元的关联性检查方法以及使用该方法的装置
CN105427368B (zh) * 2015-11-17 2018-03-20 上海兆芯集成电路有限公司 数据单元的关联性检查方法以及使用该方法的装置
US10101925B2 (en) * 2015-12-23 2018-10-16 Toshiba Memory Corporation Data invalidation acceleration through approximation of valid data counts
KR102649657B1 (ko) * 2018-07-17 2024-03-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US11281585B2 (en) 2018-08-30 2022-03-22 Micron Technology, Inc. Forward caching memory systems and methods
CN112840327B (zh) * 2019-02-21 2024-09-24 华为技术有限公司 一种片上系统、访问命令的路由方法及终端
US11086791B2 (en) * 2019-08-29 2021-08-10 Micron Technology, Inc. Methods for supporting mismatched transaction granularities

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5119453A (en) 1974-08-08 1976-02-16 Fujitsu Ltd Patsufua memoriseigyohoshiki
JPS6045855A (ja) 1983-08-22 1985-03-12 Fujitsu Ltd 磁気ディスク装置の順次アクセス検出方法
US5375216A (en) * 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5524225A (en) 1992-12-18 1996-06-04 Advanced Micro Devices Inc. Cache system and method for providing software controlled writeback
JPH0784879A (ja) 1993-09-09 1995-03-31 Toshiba Corp キャッシュメモリ装置
JPH07295882A (ja) 1994-04-22 1995-11-10 Hitachi Ltd 情報処理装置、及び、情報処理システム
US5860110A (en) * 1995-08-22 1999-01-12 Canon Kabushiki Kaisha Conference maintenance method for cache memories in multi-processor system triggered by a predetermined synchronization point and a predetermined condition
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
JPH11272551A (ja) 1998-03-19 1999-10-08 Hitachi Ltd キャッシュメモリのフラッシュ制御方式およびキャッシュメモリ
EP1182566B1 (en) 2000-08-21 2013-05-15 Texas Instruments France Cache operation based on range of addresses
JP2003223360A (ja) 2002-01-29 2003-08-08 Hitachi Ltd キャッシュメモリシステムおよびマイクロプロセッサ
JP4067887B2 (ja) 2002-06-28 2008-03-26 富士通株式会社 プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法
JP2004118305A (ja) 2002-09-24 2004-04-15 Sharp Corp キャッシュメモリ制御装置
US7194587B2 (en) 2003-04-24 2007-03-20 International Business Machines Corp. Localized cache block flush instruction
JP4009304B2 (ja) 2003-09-19 2007-11-14 松下電器産業株式会社 キャッシュメモリおよびキャッシュメモリ制御方法
EP1684180A4 (en) 2003-11-12 2008-10-29 Matsushita Electric Industrial Co Ltd CACHE MEMORY AND CONTROL PROCEDURE THEREFOR
KR100826757B1 (ko) 2003-11-18 2008-04-30 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법
WO2005050455A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
WO2005066796A1 (ja) 2003-12-22 2005-07-21 Matsushita Electric Industrial Co., Ltd. キャッシュメモリ及びその制御方法
JP4521206B2 (ja) * 2004-03-01 2010-08-11 株式会社日立製作所 ネットワークストレージシステム、コマンドコントローラ、及びネットワークストレージシステムにおけるコマンド制御方法
US20070186048A1 (en) 2004-03-24 2007-08-09 Matsushita Electric Industrial Co., Ltd. Cache memory and control method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010032435A1 (ja) * 2008-09-17 2010-03-25 パナソニック株式会社 キャッシュメモリ、メモリシステム、データコピー方法及びデータ書き換え方法

Also Published As

Publication number Publication date
DE602006011292D1 (de) 2010-02-04
US20090100231A1 (en) 2009-04-16
WO2006112111A1 (ja) 2006-10-26
US7953935B2 (en) 2011-05-31
EP1868101A1 (en) 2007-12-19
CN101151600A (zh) 2008-03-26
TW200702993A (en) 2007-01-16
EP1868101B1 (en) 2009-12-23
CN101151600B (zh) 2012-02-22
KR20070093452A (ko) 2007-09-18
EP1868101A4 (en) 2009-01-21
JPWO2006112111A1 (ja) 2008-11-27

Similar Documents

Publication Publication Date Title
JP4090497B2 (ja) キャッシュメモリシステム及びその制御方法
US6202129B1 (en) Shared cache structure for temporal and non-temporal information using indicative bits
US6105111A (en) Method and apparatus for providing a cache management technique
JP4045296B2 (ja) キャッシュメモリ及びその制御方法
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US7415575B1 (en) Shared cache with client-specific replacement policy
US7895399B2 (en) Computer system and control method for controlling processor execution of a prefetech command
US20040049641A1 (en) System and method for controlling prefetching
US20050086435A1 (en) Cache memory controlling apparatus, information processing apparatus and method for control of cache memory
JP5536655B2 (ja) キャッシュメモリ、メモリシステム及びデータコピー方法
US20100217937A1 (en) Data processing apparatus and method
EP2405361A1 (en) Computer system, control method, recording medium and control program
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
JP4008947B2 (ja) キャッシュメモリ及びその制御方法
GB2538055A (en) Data processing apparatus having a cache
US7555610B2 (en) Cache memory and control method thereof
US6446168B1 (en) Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity
KR20050007907A (ko) 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법
US20060288170A1 (en) Caching data
JP5012016B2 (ja) キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
KR100851298B1 (ko) 캐시 메모리 컨트롤러 및 이를 이용한 캐시 메모리 관리방법

Legal Events

Date Code Title Description
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: 20080129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080226

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110307

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120307

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130307

Year of fee payment: 5