JP2007156821A - キャッシュシステム及び共用2次キャッシュ - Google Patents
キャッシュシステム及び共用2次キャッシュ Download PDFInfo
- Publication number
- JP2007156821A JP2007156821A JP2005350977A JP2005350977A JP2007156821A JP 2007156821 A JP2007156821 A JP 2007156821A JP 2005350977 A JP2005350977 A JP 2005350977A JP 2005350977 A JP2005350977 A JP 2005350977A JP 2007156821 A JP2007156821 A JP 2007156821A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- entry
- entries
- shared secondary
- secondary cache
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
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
【課題】本発明は、システムの性能低下及び回路規模の増大を最小限に抑えることが可能な共用2次キャッシュ及びキャッシュシステムを提供することを目的とする。
【解決手段】キャッシュシステムは、主記憶装置にアクセスするよう機能する複数の処理装置と、複数の処理装置にそれぞれ結合され処理装置から主記憶装置よりも高速にアクセス可能な複数の1次キャッシュと、複数の1次キャッシュを介して複数の処理装置に結合され複数の処理装置から主記憶装置よりも高速にアクセス可能な1つの共用2次キャッシュを含み、共用2次キャッシュは、複数のエントリを格納する記憶素子と、複数のエントリの各々に対して設けられ複数の処理装置に一対一に対応する複数のフラグを含み、あるエントリの複数のフラグは対応する処理装置がそのエントリを使用中であるか否かを示すことを特徴とする。
【選択図】図2
【解決手段】キャッシュシステムは、主記憶装置にアクセスするよう機能する複数の処理装置と、複数の処理装置にそれぞれ結合され処理装置から主記憶装置よりも高速にアクセス可能な複数の1次キャッシュと、複数の1次キャッシュを介して複数の処理装置に結合され複数の処理装置から主記憶装置よりも高速にアクセス可能な1つの共用2次キャッシュを含み、共用2次キャッシュは、複数のエントリを格納する記憶素子と、複数のエントリの各々に対して設けられ複数の処理装置に一対一に対応する複数のフラグを含み、あるエントリの複数のフラグは対応する処理装置がそのエントリを使用中であるか否かを示すことを特徴とする。
【選択図】図2
Description
本発明は一般にキャッシュシステムに関し、詳しくはキャッシュメモリが階層化されたキャッシュシステム及びそのようなキャッシュシステムで用いられる共用2次キャッシュに関する。
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュにコピーしておくことで、この情報をアクセスする場合には主記憶からではなくキャッシュから読み出すことで、高速な情報の読み出しが可能となる。
キャシュは複数のキャッシュラインを含み、主記憶からキャシュへの情報のコピーはキャシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
メモリ空間上のあるアドレスに最初のアクセスが実行されると、そのアドレスの情報(データやプログラム)をキャシュ内の対応するキャッシュラインにコピーする。同一アドレスに対して次のアクセスを実行する場合にはキャシュから直接に情報を読み出す。一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュのインデックスとなり、それより上位に位置する残りのビットがキャッシュのタグとなる。
データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュ中の対応するインデックスのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、当該インデックスに対応するキャッシュデータ(1キャッシュライン分の所定ビット数のデータ)がアクセスされる。
各キャッシュラインに対して1つだけタグを設けたキャッシュの構成を、ダイレクトマッピング方式と呼ぶ。各キャッシュラインに対してN個のタグを設けたキャッシュの構成をNウェイセットアソシアティブと呼ぶ。ダイレクトマッピング方式は1ウェイセットアソシアティブとみなすことができる。
ライトスルー方式では、データをメモリに書き込む際に、キャッシュへの書き込みとともに主記憶にも書き込みを行う。この方式では、キャッシュの内容を置き換える必要が生じても、データの有効/無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データをメモリに書き込む際に、キャッシュへの書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュの内容を置き換える際には、キャッシュメモリの内容を主記憶にコピーする必要がある。
キャッシュミスが発生した場合に、主記憶にアクセスすることによるペナルティーを軽減するために、キャッシュメモリを多階層化したシステムが用いられる。例えば、1次キャッシュと主記憶との間に、主記憶よりは高速にアクセスできる2次キャッシュを設けることにより、1次キャッシュにおいてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。以下の説明では2階層のキャッシュシステムを考え、処理装置(演算器)に近い方を1次キャッシュ、主記憶に近い方を2次キャッシュとする。一般的には、1次キャッシュは小容量・高速であり、2次キャッシュは大容量・低速である。
多階層キャッシュシステムの構成において、キャッシュ間のデータの包含関係としては、インクルーシブ・キャッシュ方式が最も単純な構成である。インクルーシブ・キャッシュ方式では、1次キャッシュの格納内容が全て常に2次キャッシュに格納されている。2次キャッシュの内容が1次キャッシュの内容を包含していることになる。最も単純な構成であり、キャッシュの動作を制御する論理を組み立て易いという利点がある。これ以外の方式としては、例えば、全てのキャッシュの格納内容が1次キャッシュ又は2次キャッシュの何れか一方にのみ格納されるイクスクルーシブ・キャッシュ方式がある。イクスクルーシブ・キャッシュ方式では、実効キャッシュ容量が総キャッシュ容量に等しく、メモリ使用効率が良いという利点がある。以下のキャッシュ動作等の説明では、特にことわりのない限り、インクルーシブ・キャッシュ方式を前提とする。
複数の処理装置(マスタ)が存在するシステムでは、複数のマスタの各々が専用の1次キャッシュを有し、2次キャッシュについては複数のマスタ間で共用する構成がしばしば用いられる。この構成においては、例えば1次キャッシュは各マスタに内蔵する形で実装され、複数のマスタが1つの共用2次キャッシュに接続される。複数のマスタは、この共用2次キャッシュを介して主記憶装置に結合される。
このように2次キャッシュを共用する構成は、2次キャッシュをマスタ毎に専用に設ける構成と比較して、2次キャッシュの記憶容量を有効に活用することができるという利点がある。一方で、複数のマスタで2次キャッシュを共用するために、1次キャッシュ及び2次キャッシュの制御動作が複雑になるという問題がある。
2次キャッシュを共用するシステムでは、各マスタのID等を2次キャッシュに設けることなく、2次キャッシュの各エントリに対して当該エントリを使用するマスタを特定せずに制御する方式がある。この方式では、共用2次キャッシュのあるエントリを無効化する場合、全てのマスタの1次キャッシュの対応するエントリを無効化する必要が生じる。このように共用2次キャッシュの無効化動作が全てのマスタに影響を及ぼすので、システムの処理性能が低下してしまうという問題がある。
上記問題を解決する構成として、各マスタ毎の1次キャッシュのタグのコピーを、共用2次キャッシュ内に設ける構成がある。共用2次キャッシュのあるエントリを無効化する場合、当該エントリのタグを上記1次キャッシュのタグのコピー内で検索し、当該エントリに対応するエントリを有する1次キャッシュを特定する。こうして特定された1次キャッシュに対してのみ、無効化処理を実行すればよく、効率的な処理を実現することができる。しかしながらこの構成の場合、全てのマスタの1次キャッシュのタグのコピーを共用2次キャッシュ内に設ける必要があり、回路規模が増大すると共に、タグのコピーの検索のために制御が複雑になるという問題がある。
なお例えば特許文献1には、ジョブIDを登録してジョブ終了後にジョブIDを指定してエントリを無効化する構成が開示されている。
特開平11−259362号公報
特開平8−305633号公報
以上を鑑みて、本発明は、システムの性能低下及び回路規模の増大を最小限に抑えることが可能な共用2次キャッシュ及びキャッシュシステムを提供することを目的とする。
本発明によるキャッシュシステムは、主記憶装置にアクセスするよう機能する複数の処理装置と、該複数の処理装置にそれぞれ結合され該処理装置から該主記憶装置よりも高速にアクセス可能な複数の1次キャッシュと、該複数の1次キャッシュを介して該複数の処理装置に結合され該複数の処理装置から該主記憶装置よりも高速にアクセス可能な1つの共用2次キャッシュを含み、該共用2次キャッシュは、複数のエントリを格納する記憶素子と、該複数のエントリの各々に対して設けられ該複数の処理装置に一対一に対応する複数のフラグを含み、一のエントリの該複数のフラグは対応する処理装置が該一のエントリを使用中であるか否かを示すことを特徴とする。
また本発明による共用2次キャッシュは、各々が1次キャッシュを含む複数のマスタに共通に接続され、該複数のマスタと主記憶装置との間に介在するよう機能する共用2次キャッシュであって、複数のエントリを格納する記憶素子と、該複数のエントリの各々に対して設けられ該複数のマスタに一対一に対応する複数のフラグを含み、一のエントリの該複数のフラグは対応するマスタが該一のエントリを使用中であるか否かを示すことを特徴とする。
本発明の少なくとも1つの実施例によれば、共用2次キャッシュの各エントリ毎に識別用のフラグを設けることにより、あるエントリが使用されているか否かを各処理装置(マスタ)毎に示すことができる。従って、マスタが特定されている場合には、そのマスタが使用しているエントリを容易に特定することができるとともに、エントリが指定されている場合には、そのエントリを使用しているマスタを容易に特定することができる。この際、エントリ毎に設けられたフラグは、各マスタに対して1ビットの情報を格納すればよい。従って、例えば各マスタ毎のタグのコピーを共用2次キャッシュに保持するような構成と比較して、回路規模の増大を抑制することができる。
上記構成においては、エントリを順次選択しながらフラグをチェックすることで、共用2次キャッシュにおいて特定のマスタが使用中のエントリを検索することができる。このようにして検索されたエントリを共用2次キャッシュにおいて無効化することで、特定のマスタについてのエントリ無効化処理を容易に且つ高速に実現することができる。また共用2次キャッシュのあるエントリを無効化した場合に、対応するフラグをチェックすることで、そのエントリを使用中のマスタを高速且つ容易に特定することができる。このようにして特定されたマスタにのみ無効化処理要求を発行することで、共用2次キャッシュのエントリ無効化処理に無関係なマスタに影響を与えることなく、必要なマスタにおいてのみ無効化処理を実行することができる。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、本発明によるキャッシュシステムの実施例の構成を示す図である。図1のキャッシュシステムは、複数(n個)のマスタ1−1乃至1−n、共用2次キャッシュ2、主記憶装置3、DMA4、及びバス5を含む。マスタ1−1乃至1−nの各々は、主記憶装置3のメモリ空間にアクセスする演算器等の処理装置1aと、共用2次キャッシュ2と処理装置1aとの間に設けられる1次キャッシュ1bとを含む。
複数のマスタ1−1乃至1−nは共用2次キャッシュ2を共用し、共用2次キャッシュ2を介して主記憶装置3に結合される。DMA4は、説明の便宜上図示されるが、本発明によるキャッシュシステムに必須のものではない。DMA4、共用2次キャッシュ2、主記憶装置3は、バス5を介して互いに接続される。
以下において、一例として、マスタ1−1の処理装置1aがメモリ空間上のあるアドレスにアクセスを実行する場合の動作を説明する。
まずマスタ1−1の処理装置1aが、メモリ空間に対する読み出し・書き込み動作を実行するために、マスタ1−1の1次キャッシュ1bにアクセス先のアドレスを送出すると、マスタ1−1の1次キャッシュ1bに当該アドレスのデータが格納されているか否かが判断される。これは1次キャッシュ1bのタグレジスタのタグ情報に基づいて判断される。1次キャッシュ1bに当該アドレスのデータが格納されていれば、読み出し動作の場合には、そのデータが1次キャッシュ1bのデータレジスタから処理装置1aに供給される。書き込み動作の場合には、処理装置1aから供給される書き込みデータで、1次キャッシュ1bのヒットしたエントリのデータを書き換える。
1次キャッシュ1bに当該アドレスのデータが格納されていない場合には、共用2次キャッシュ2に当該アドレスのデータが格納されているか否かが判断される。これは共用2次キャッシュ2のタグレジスタのタグ情報に基づいて判断される。共用2次キャッシュ2に当該アドレスのデータが格納されていれば、読み出し動作の場合には、そのデータが共用2次キャッシュ2のデータレジスタからマスタ1−1に供給される。当該データは、マスタ1−1の1次キャッシュ1bに登録される。即ち、データが1次キャッシュ1bのデータレジスタに格納されるとともに、対応するタグが1次キャッシュ1bのタグレジスタに格納され、更に対応有効ビットが有効にされる。書き込み動作の場合には、処理装置1aから供給される書き込みデータで、共用2次キャッシュ2のヒットしたエントリのデータを書き換える。
1次キャッシュ1bにも共用2次キャッシュ2にも当該アドレスのデータが格納されていない場合には、そのアドレスに格納されているデータを主記憶装置3からバス5を介して読み出し、キャシュ内の対応するキャッシュラインにコピーする。即ち、主記憶装置3から読み出したデータを共用2次キャッシュ2及びマスタ1−1の1次キャッシュ1bの両方に登録する。読み出し動作の場合、処理装置1aは、供給されたデータを取り込む。書き込み動作の場合、処理装置1aは、キャッシュにコピーされたデータを書き換える。
データ書き込みの場合、ライトスルー方式では、データを書き込む際に、1次キャッシュ1b及び/又は共用2次キャッシュ2への書き込みとともに主記憶装置3にも書き込みを行う。この方式では、キャッシュの内容を置き換える必要が生じても、データの有効/無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データを書き込む際に、1次キャッシュ1b及び/又は共用2次キャッシュ2への書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュの内容を置き換える際には、キャッシュメモリの内容を主記憶装置3にコピーする必要がある。この場合、キャッシュの内容と主記憶装置11の内容とが一致しているか否かを示すために、タグレジスタ部分21に設定されるダーティービットと呼ばれる1ビットの情報が利用される。
本発明では、1次キャッシュの格納内容が全て2次キャッシュに包含されるインクルーシブ・キャッシュ方式を前提とする。データ書き込み方式としては、ライトスルー方式或いはライトバック方式の何れであっても構わない。以下の説明では、便宜上、ライトスルー方式を例にとって説明する。
図2は、本発明による共用2次キャッシュ2の実施例の構成の一例を示す図である。図2の共用2次キャッシュ2は、調停回路10、コントローラ11、ラインアドレスバッファ12、タグレジスタ13、セレクタ14、判定ユニット15、ラインアドレスバッファ16、データレジスタ17、セレクタ18、及びゲート19を含む。タグレジスタ13には、有効ビット21、マスタ識別フラグ22、及びタグ23が格納される。マスタ識別フラグ22は、図示の都合上2つだけ示されるが、実際には共用2次キャッシュ2を共用するマスタの数(図1の例ではn個)に等しい数だけ設けられる。
調停回路10は、複数のマスタ1−1乃至1−nから共用2次キャッシュ2に対するアクセス要求を受け取った場合に、優先度の高いマスタを選択するために設けられる。調停回路10は、マスタ1−1乃至1−nのうちの1つを選択すると、選択されたマスタからの要求に伴うアドレスを出力する。このアクセス先を示すアドレスのうち、インデックス部分がラインアドレスバッファ12に格納される。セレクタ14は、ラインアドレスバッファ12の格納値に応じて、タグレジスタ13内の当該インデックスに対応する内容を選択して出力する。セレクタ14から出力されたタグと、調停回路10から供給されたアドレス中のタグ部分のビットパターンが一致するか否かを、判定ユニット15で判断する。比較結果が一致を示し、且つタグレジスタ13の当該インデックスの有効ビット21が有効値“1”であれば、判定ユニット15の出力がアサートされる。
また調停回路10から出力されるアクセス先を示すアドレスのうち、インデックス部分がラインアドレスバッファ16に格納される。セレクタ18は、ラインアドレスバッファ16の格納値に応じて、データレジスタ17内の当該インデックスに対応するデータを選択して出力する。セレクタ18から出力されるデータは、判定ユニット15の出力のアサート状態に応答してゲート19が開くことにより、共用2次キャッシュからの読み出しデータとしてマスタに供給される。
共用2次キャッシュ2に所望のデータが存在しない場合、判定ユニット15の出力はアサートされない。この場合、コントローラ11は、調停回路10から供給されるアドレスに応答して、主記憶装置3の当該アドレスをアクセスする。コントローラ11は、主記憶装置3から読み出されたリードデータを取り込み、共用2次キャッシュ2へのエントリとして登録する。即ち、データをデータレジスタ17に格納するとともに、対応するタグをタグレジスタ13に格納し、更に対応有効ビットを有効にする。
コントローラ11は、キャッシュ管理に関わる種々の制御動作を実行する。例えば、有効ビットの設定をしたり、タグの設定をしたり、有効ビットをチェックすることで利用可能なキャッシュラインを検索したり、例えばLRU(least recently used)アルゴリズム等に基づいて置換対象となるキャッシュラインを選択したり、データレジスタ17へのデータ書き込み動作を制御したりする。
本発明による共用2次キャッシュ2は、従来の構成と比較して、マスタ識別フラグがタグレジスタ13に設けられていることを特徴とする。図3は、タグレジスタ13及びデータレジスタ17の内容を詳細に示す図である。
図3に示すように、タグレジスタ13は、有効ビット(V)21、複数のマスタ識別フラグ(M1,・・・,Mn)22、及びタグ23(アドレスのタグ部分)を含む。有効ビット21は、データの有効/無効を示す1ビットのデータである。マスタ識別フラグ22は、図1に示される複数のマスタ1−1乃至1−nに一対一に対応して設けられる複数のフラグM1,・・・,Mnである。各フラグは1ビットのデータであり、対応エントリのデータが対応するマスタにより使用されているか否かを示す。
例えば、あるデータエントリ(あるインデックス)のマスタ識別フラグM1が0である場合、このデータエントリはマスタ識別フラグM1に対応するマスタ1−1により使用されていないことを示す。逆に、あるデータエントリ(あるインデックス)のマスタ識別フラグM1が1である場合、このデータエントリはマスタ識別フラグM1に対応するマスタ1−1により使用されていることを示す。同様に、あるデータエントリのマスタ識別フラグMnが0である場合、このデータエントリはマスタ識別フラグMnに対応するマスタ1−nにより使用されていないことを示す。逆に、あるデータエントリのマスタ識別フラグMnが1である場合、このデータエントリはマスタ識別フラグMnに対応するマスタ1−nにより使用されていることを示す。
マスタ識別フラグ22の設定は、マスタ1−1乃至1−nから共用2次キャッシュ2へのアクセス要求に応じて行なわれる。具体的には、あるマスタからアクセス要求が共用2次キャッシュ2へ発行されると、共用2次キャッシュ2はタグレジスタ13を検索する。該当するエントリが登録されていた場合、共用2次キャッシュ2はこのエントリを要求元のマスタへ送出するとともに、コントローラ11が当該エントリの要求元マスタに対応するマスタ識別フラグ22をセットする。また共用2次キャッシュ2に該当するエントリが登録されていなかった場合には、共用2次キャッシュ2からの読み出し要求に応じて主記憶装置3から読み出されたデータを共用2次キャッシュ2にエントリとして登録するとともに要求元マスタに転送し、更にコントローラ11が当該エントリの要求元マスタに対応するマスタ識別フラグ22をセットする。
このように本発明では、共用2次キャッシュ2のタグレジスタ13の各エントリ毎にマスタ識別フラグ22を設けることにより、あるエントリが使用されているか否かを各マスタ1−1乃至1−n毎に示すことができる。従って、マスタが特定されている場合には、そのマスタが使用しているエントリを容易に特定することができるとともに、エントリが指定されている場合には、そのエントリを使用しているマスタを容易に特定することができる。
この際、エントリ毎に設けられたマスタ識別フラグ22は、各マスタに対して1ビットの情報を格納すればよい。従って、例えば各マスタ毎のタグのコピーを共用2次キャッシュに保持するような構成と比較して、回路規模の増大を抑制することができる。
なお判別対象となるエントリの指定及びそのエントリのマスタ識別フラグ22の値の判別は、コントローラ11及び判定ユニット15により実行されるものとしてよい。例えば図2において、コントローラ11によりラインアドレスバッファ12に対してインデックス(ラインアドレス)を指定することで、判別対象となるエントリを特定し、この特定されたエントリに対応するタグレジスタ13の内容をセレクタ14により選択出力する。またコントローラ11から判定ユニット15にマスタ識別フラグを指定する信号を供給することで、判別対象となるフラグを特定する。判定ユニット15は、セレクタ14から供給されるデータ中の特定されたフラグが1か0かを判別して、その結果をコントローラ11に供給する。
なおラインアドレスバッファ12及びセレクタ14をそれぞれ2重に設けて、調停回路10を介したマスタからのキャッシュアクセス用の経路と、マスタ識別フラグ22の値の判別処理の経路とを別々とする構成としてよい。図4は、ラインアドレスバッファ及びセレクタを2重に設けた場合の構成の一例を示す図である。
図4において、ラインアドレスバッファ12はラインアドレスバッファ12a及び12bから構成され、セレクタ14はセレクタ14a及び14bから構成される。また判定ユニット15も同様に、判定ユニット15aと判定ユニット15bとに分割して示してある。
ラインアドレスバッファ12a、セレクタ14a、及び判定ユニット15aは、マスタからのアドレスに基づいて、当該アドレスのデータがエントリされているか否かを判断するための経路である。この経路を用いることで、マスタ1−1乃至1−nからメモリアクセスがあった場合に、前述の動作に従って共用2次キャッシュ2がヒットするか否かを判断する。
ラインアドレスバッファ12b、セレクタ14b、及び判定ユニット15bは、コントローラ11からのラインアドレス指定及びマスタ識別フラグ指定に基づいて、当該ラインアドレスのエントリが指定のマスタにより使用されているか否かを判断するための経路である。即ち、コントローラ11によりラインアドレスバッファ12bに対してインデックス(ラインアドレス)を指定することで、判別対象となるエントリを特定し、この特定されたエントリに対応するタグレジスタ13の内容をセレクタ14bにより選択出力する。またコントローラ11から判定ユニット15bにマスタ識別フラグを指定する信号を供給することで、判別対象となるフラグを特定する。判定ユニット15bは、セレクタ14bから供給されるデータ中の特定されたフラグが1か0かを判別して、その判別結果を出力する。
このように、マスタからのキャッシュアクセス用の経路とマスタ識別フラグの判別処理(検索処理)の経路とを別々に設ける構成とすれば、共用2次キャッシュ2のエントリを無効化する無効化処理と、共用2次キャッシュ2に対するマスタからのアクセス要求とを同時に実行することができる。これにより、あるマスタからの無効化処理要求を、他のマスタの処理に影響を与えることなく実行することが可能となる。
以下に、図1に示した本発明のキャッシュシステムの実施例において、エントリを無効化する場合の動作について説明する。具体的な例として、マスタ1−1乃至1−nのうちでマスタ1−1(以下M1と呼ぶ)が使用している領域をDMA4(図1)で書き換えた場合について説明する。
図5は、本発明によるキャッシュエントリ無効化処理の一例を示すフローチャートである。
ステップS1で、M1が何らかの処理を実行し、この処理において主記憶装置3の領域Aがアクセスされ、領域Aの内容が共用2次キャッシュ2及びM1の1次キャッシュ1bに格納される。ステップS2で、M1はDMA転送に必要な情報をDMACに設定した後、DMACにデータ転送を開始させる。
ステップS3で、DMAC終了割込みが発生したか否かを判断する。DMACは転送が終了した時点で、起動元であるM1に対してDMA転送の終了割込みを発生させる。割込みが発生すると、処理はステップS4に進む。
ステップS4で、割込み通知を受けたM1が、割り込み処理ルーチンを起動させ、DMA転送によって書き換えられた領域が、M1が使用している領域Aであるか否かを判断する。領域Aでない場合には、処理はステップS1に戻り、M1が実行中であった処理を再開する。
M1が使用する領域Aが書き換えられたと判断した場合、ステップS5で、M1内部の1次キャッシュ1bをフラッシュする(1次キャッシュ1bの全内容を無効化する)。更にステップS6で、共用2次キャッシュ2においてM1が使用中のエントリを無効化するように、無効化要求をM1から共用2次キャッシュ2に発行する。これらの無効化処理は、領域Aについて主記憶装置3上のデータと各キャッシュに格納されたデータとが不一致となるために必要となるものである。
ステップS7で、共用2次キャッシュ2をフラッシュする。即ち共用2次キャッシュ2においてM1が使用中のエントリを全て無効化する。この際、共用2次キャッシュのフラッシュ実行中はM1からの要求を保留する。
ステップS8で、共用2次キャッシュのフラッシュが終了したか否かを判断する。共用2次キャッシュのフラッシュが終了すると、処理はステップS1に戻り、M1が実行中であった処理を再開する。
図6は、共用2次キャッシュ2の無効化処理の第1の実施例を示すフローチャートである。このフローチャートの処理は図5のステップS7で実行されるものであり、DMACで書き換えた領域Aが、M1だけが使用している領域であった場合の例である。
まず共用2次キャッシュ2は、M1が使用中のエントリを無効化する要求をM1から受けとる。これに応じてステップS1で、コントローラ11がラインアドレスバッファ12のラインアドレスを0に設定する。
ステップS2で、ラインアドレスバッファ12のラインアドレス(インデックス)で指定されるエントリについて、タグレジスタ13の内容をセレクタ14で選択的に読み出す。この内容には有効ビット21及びマスタ識別フラグ22が含まれる。次にステップS3で、読み出した有効ビット21の値Vが1(有効)であり、且つ読み出したマスタ識別フラグ22のうちでM1のフラグが1(使用中)であるか否かを、判定ユニット15により判定する。エントリが有効であり且つM1により使用中である場合以外の場合には、ステップS5に進む。エントリが有効であり且つM1により使用中である場合には、ステップS4で、コントローラ11が当該ラインアドレスの有効ビット21の値Vをゼロにして、当該エントリを無効化する。次にステップS5で、コントローラ11がラインアドレスバッファ12のラインアドレスの値を1だけインクリメントする。
ステップS6で、インクリメント後のラインアドレスの値が最終アドレスを超えたか否かを判断する。超えていない場合には、処理はステップS2に戻って、以降の処理を繰り返す。またインクリメント後のラインアドレスの値が最終アドレスを超えた場合には、処理を終了する。なお図6の処理を終了すると、共用2次キャッシュ2はM1にその旨を通知する。
このようにして、ラインアドレスを順次増加しながらマスタ識別フラグ22をチェックすることで、共用2次キャッシュ2において特定のマスタが使用中のエントリを検索することができる。このようにして検索されたエントリを共用2次キャッシュ2において無効化することで、特定のマスタについてのエントリ無効化処理を容易に且つ高速に実現することができる。
図7は、共用2次キャッシュ2の無効化処理の第2の実施例を示すフローチャートである。これは、このフローチャートの処理は図5のステップS7で実行されるものであり、DMACで書き換えた領域Aが、マスタ1−1乃至1−nのうちでM1以外のマスタ(以下M2と呼ぶ)もまた使用している領域であった場合の例である。
まず共用2次キャッシュ2は、M1が使用中のエントリを無効化する要求をM1から受けとる。これに応じてステップS1で、コントローラ11がラインアドレスバッファ12のラインアドレスを0に設定する。
ステップS2で、ラインアドレスバッファ12のラインアドレス(インデックス)で指定されるエントリについて、タグレジスタ13の内容をセレクタ14で選択的に読み出す。この内容には有効ビット21及びマスタ識別フラグ22が含まれる。次にステップS3で、読み出した有効ビット21の値Vが1(有効)であり、且つ読み出したマスタ識別フラグ22のうちでM1のフラグが1(使用中)であるか否かを、判定ユニット15により判定する。エントリが有効であり且つM1により使用中である場合以外の場合には、ステップS5に進む。エントリが有効であり且つM1により使用中である場合には、ステップS4で、コントローラ11が当該ラインアドレスの有効ビット21の値Vをゼロにして、当該エントリを無効化する。
次にステップS5で、読み出したマスタ識別フラグ22のうちで、M1以外のM2乃至Mnのフラグの何れかが1であるか否かを判断する。この判断は、判定ユニット15(判定ユニット15b)が実行するように構成してよい。何れも1でない場合には、処理はステップS7に進む。何れかが1の場合には、処理はステップS6に進む。
ステップS6で、ステップS5のチェックによりフラグが1であると判明したマスタに対して、コントローラ11が、1次キャッシュ1bの対応するエントリを無効化するように無効化要求を発行する。これにより、無効化要求が発行されたマスタ(この例の場合はM2)において、共用2次キャッシュ2のラインアドレスバッファ12に格納されている現在のラインアドレス(インデックス)に対応したラインアドレスに位置する1次キャッシュ1bのエントリが無効化される。
ステップS7で、コントローラ11がラインアドレスバッファ12のラインアドレスの値を1だけインクリメントする。ステップS8で、インクリメント後のラインアドレスの値が最終アドレスを超えたか否かを判断する。超えていない場合には、処理はステップS2に戻って、以降の処理を繰り返す。またインクリメント後のラインアドレスの値が最終アドレスを超えた場合には、処理を終了する。なお図7の処理を終了すると、共用2次キャッシュ2はM1にその旨を通知する。
このようにして、共用2次キャッシュ2のあるエントリを無効化した場合に、対応するマスタ識別フラグ22をチェックすることで、そのエントリを使用中のマスタを高速且つ容易に特定することができる。このようにして特定されたマスタにのみ無効化処理要求を発行することで、共用2次キャッシュ2のエントリ無効化処理に無関係なマスタに影響を与えることなく、必要なマスタにおいてのみ無効化処理を実行することができる。
以上説明した例では、共用2次キャッシュ2に対する無効化要求は1つのマスタM1からのみ送られてくる場合について説明した。しかし実際には、マスタ1−1乃至1−nのうちの複数のマスタが同時に無効化処理を共用2次キャッシュ2に要求してくる場合が考えられる。このような場合を考えると、マスタ識別フラグの判別処理(検索処理)の経路を複数用意して、複数のマスタからの無効化処理要求を同時に処理できることが好ましい。
図8は、マスタ識別フラグの判別処理用にラインアドレスバッファ及びセレクタを2重に設けた場合の構成の一例を示す図である。
図8において、ラインアドレスバッファ12はラインアドレスバッファ12b及び12cを含む。これらのラインアドレスバッファ12b及び12cは、ラインアドレスバッファ12a(図4参照)とは別に設けられる。またセレクタ14はセレクタ14b及び14cを含む。これらのセレクタ14b及び14cは、セレクタ14a(図4参照)とは別に設けられる。また判定ユニット15も同様に、判定ユニット15bと判定ユニット15cとに分割して示してある。
ラインアドレスバッファ12b、セレクタ14b、及び判定ユニット15bは、コントローラ11からのラインアドレス指定及びマスタ識別フラグ指定に基づいて、当該ラインアドレスのエントリが指定のマスタにより使用されているか否かを判断するための第1の経路である。コントローラ11によりラインアドレスバッファ12bに対してインデックス(ラインアドレス)を指定することで、判別対象となるエントリを特定し、この特定されたエントリに対応するタグレジスタ13の内容をセレクタ14bにより選択出力する。またコントローラ11から判定ユニット15bにマスタ識別フラグを指定する信号を供給することで、判別対象となるフラグを特定する。判定ユニット15bは、セレクタ14bから供給されるデータ中の特定されたフラグが1か0かを判別して、その判別結果を出力する。
ラインアドレスバッファ12c、セレクタ14c、及び判定ユニット15cもまた同様に、コントローラ11からのラインアドレス指定及びマスタ識別フラグ指定に基づいて、当該ラインアドレスのエントリが指定のマスタにより使用されているか否かを判断するための第2の経路である。
このようにマスタ識別フラグの判別処理(検索処理)の経路を多重に設ける構成とすれば、第1のマスタから要求される共用2次キャッシュ2のエントリを無効化する第1の無効化処理と、第2のマスタから要求される共用2次キャッシュ2のエントリを無効化する第2の無効化処理とを、同時に実行することができる。これにより、マスタからの無効化処理要求を、効率的に処理することが可能となる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
1−1乃至1−n マスタ
2 共用2次キャッシュ
3 主記憶装置
4 DMA
5 バス
10 調停回路
11 コントローラ
12 ラインアドレスバッファ
13 タグレジスタ
14 セレクタ
15 判定ユニット
16 ラインアドレスバッファ
17 データレジスタ
18 セレクタ
19 ゲート
2 共用2次キャッシュ
3 主記憶装置
4 DMA
5 バス
10 調停回路
11 コントローラ
12 ラインアドレスバッファ
13 タグレジスタ
14 セレクタ
15 判定ユニット
16 ラインアドレスバッファ
17 データレジスタ
18 セレクタ
19 ゲート
Claims (10)
- 主記憶装置にアクセスするよう機能する複数の処理装置と、
該複数の処理装置にそれぞれ結合され該処理装置から該主記憶装置よりも高速にアクセス可能な複数の1次キャッシュと、
該複数の1次キャッシュを介して該複数の処理装置に結合され該複数の処理装置から該主記憶装置よりも高速にアクセス可能な1つの共用2次キャッシュ
を含み、該共用2次キャッシュは、
複数のエントリを格納する記憶素子と、
該複数のエントリの各々に対して設けられ該複数の処理装置に一対一に対応する複数のフラグ
を含み、一のエントリの該複数のフラグは対応する処理装置が該一のエントリを使用中であるか否かを示すことを特徴とするキャッシュシステム。 - 該共用2次キャッシュは、該複数のエントリを1つずつ順次選択し、該選択したエントリに対応する該複数のフラグのうちの指定のフラグを参照することで、該指定のフラグに対応する処理装置が使用中であるエントリを検索するよう機能するコントローラを更に含むことを特徴とする請求項1記載のキャッシュシステム。
- 該共用2次キャッシュは、
該複数の処理装置のうちの1つからのアクセス要求に応じて該複数のエントリの1つを選択する第1の回路と、
該コントローラによるエントリ検索において該複数のエントリを1つずつ順次選択する第2の回路
を更に含み、該第1の回路と該第2の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項2記載のキャッシュシステム。 - 該共用2次キャッシュは、
該コントローラによるエントリ検索において該複数のエントリを1つずつ順次選択する第3の回路
を更に含み、該第2の回路と該第3の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項3記載のキャッシュシステム。 - 該共用2次キャッシュは、該複数の処理装置のうちの1つが該複数のエントリの1つをアクセスするとそれに応答して、該アクセスされたエントリの該複数のフラグのうちで該アクセスした処理装置に対応するフラグを、使用中を示す値に設定するよう機能するコントローラを含むことを特徴とする請求項1記載のキャッシュシステム。
- 各々が1次キャッシュを含む複数のマスタに共通に接続され、該複数のマスタと主記憶装置との間に介在するよう機能する共用2次キャッシュであって、
複数のエントリを格納する記憶素子と、
該複数のエントリの各々に対して設けられ該複数のマスタに一対一に対応する複数のフラグ
を含み、一のエントリの該複数のフラグは対応するマスタが該一のエントリを使用中であるか否かを示すことを特徴とする共用2次キャッシュ。 - 該複数のエントリを1つずつ順次選択し、該選択したエントリに対応する該複数のフラグのうちの指定のフラグを参照することで、該指定のフラグに対応するマスタが使用中であるエントリを検索するよう機能するコントローラを更に含むことを特徴とする請求項6記載の共用2次キャッシュ。
- 該複数のマスタのうちの1つからのアクセス要求に応じて該複数のエントリの1つを選択する第1の回路と、
該コントローラによるエントリ検索において該複数のエントリを1つずつ順次選択する第2の回路
を更に含み、該第1の回路と該第2の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項7記載の共用2次キャッシュ。 - 該コントローラによるエントリ検索において該複数のエントリを1つずつ順次選択する第3の回路
を更に含み、該第2の回路と該第3の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項8記載の共用2次キャッシュ。 - 該複数のマスタのうちの1つが該複数のエントリの1つをアクセスするとそれに応答して、該アクセスされたエントリの該複数のフラグのうちで該アクセスしたマスタに対応するフラグを、使用中を示す値に設定するよう機能するコントローラを含むことを特徴とする請求項6記載の共用2次キャッシュ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005350977A JP2007156821A (ja) | 2005-12-05 | 2005-12-05 | キャッシュシステム及び共用2次キャッシュ |
US11/377,208 US20070130426A1 (en) | 2005-12-05 | 2006-03-17 | Cache system and shared secondary cache with flags to indicate masters |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005350977A JP2007156821A (ja) | 2005-12-05 | 2005-12-05 | キャッシュシステム及び共用2次キャッシュ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007156821A true JP2007156821A (ja) | 2007-06-21 |
Family
ID=38120149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005350977A Withdrawn JP2007156821A (ja) | 2005-12-05 | 2005-12-05 | キャッシュシステム及び共用2次キャッシュ |
Country Status (2)
Country | Link |
---|---|
US (1) | US20070130426A1 (ja) |
JP (1) | JP2007156821A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009252165A (ja) * | 2008-04-10 | 2009-10-29 | Toshiba Corp | マルチプロセッサシステム |
US8688918B2 (en) | 2011-11-09 | 2014-04-01 | Kabushiki Kaisha Toshiba | Program converting apparatus, program converting method, and medium |
JP2018503891A (ja) * | 2014-11-25 | 2018-02-08 | クアルコム,インコーポレイテッド | 共有キャッシュメモリシステムに関する概算使用測定値の生成 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008152594A (ja) * | 2006-12-19 | 2008-07-03 | Hitachi Ltd | マルチコアプロセッサ計算機の高信頼化方法 |
US7698504B2 (en) * | 2007-07-03 | 2010-04-13 | Oracle America, Inc. | Cache line marking with shared timestamps |
JP2009157608A (ja) * | 2007-12-26 | 2009-07-16 | Nec Corp | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |
US20150019822A1 (en) * | 2013-07-11 | 2015-01-15 | Lsi Corporation | System for Maintaining Dirty Cache Coherency Across Reboot of a Node |
US10402337B2 (en) * | 2017-08-03 | 2019-09-03 | Micron Technology, Inc. | Cache filter |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530832A (en) * | 1993-10-14 | 1996-06-25 | International Business Machines Corporation | System and method for practicing essential inclusion in a multiprocessor and cache hierarchy |
-
2005
- 2005-12-05 JP JP2005350977A patent/JP2007156821A/ja not_active Withdrawn
-
2006
- 2006-03-17 US US11/377,208 patent/US20070130426A1/en not_active Abandoned
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009252165A (ja) * | 2008-04-10 | 2009-10-29 | Toshiba Corp | マルチプロセッサシステム |
US8688918B2 (en) | 2011-11-09 | 2014-04-01 | Kabushiki Kaisha Toshiba | Program converting apparatus, program converting method, and medium |
JP2018503891A (ja) * | 2014-11-25 | 2018-02-08 | クアルコム,インコーポレイテッド | 共有キャッシュメモリシステムに関する概算使用測定値の生成 |
Also Published As
Publication number | Publication date |
---|---|
US20070130426A1 (en) | 2007-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5689679A (en) | Memory system and method for selective multi-level caching using a cache level code | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US20030061450A1 (en) | List based method and apparatus for selective and rapid cache flushes | |
JP4803983B2 (ja) | 演算処理装置 | |
JP2011065574A (ja) | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 | |
US20060036811A1 (en) | Method for software controllable dynamically lockable cache line replacement system | |
KR19980079433A (ko) | 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템 | |
US9720847B2 (en) | Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed | |
JP2007156821A (ja) | キャッシュシステム及び共用2次キャッシュ | |
US20150019823A1 (en) | Method and apparatus related to cache memory | |
CN109074313B (zh) | 缓存和方法 | |
EP2866148B1 (en) | Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device | |
US20100217939A1 (en) | Data processing system | |
US8135910B2 (en) | Bandwidth of a cache directory by slicing the cache directory into two smaller cache directories and replicating snooping logic for each sliced cache directory | |
JP5319049B2 (ja) | キャッシュシステム | |
US7356650B1 (en) | Cache apparatus and method for accesses lacking locality | |
US6496917B1 (en) | Method to reduce memory latencies by performing two levels of speculation | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
JP5157424B2 (ja) | キャッシュメモリシステム及びキャッシュメモリの制御方法 | |
JP3732397B2 (ja) | キャッシュシステム | |
JPH08314802A (ja) | キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法 | |
US7328313B2 (en) | Methods to perform cache coherency in multiprocessor system using reserve signals and control bits | |
JP2008310414A (ja) | コンピュータシステム | |
JP2685455B2 (ja) | データ処理装置 | |
US20060015689A1 (en) | Implementation and management of moveable buffers in cache system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20080729 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080916 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20081020 |