JP4297968B2 - コヒーレンシ維持装置およびコヒーレンシ維持方法 - Google Patents

コヒーレンシ維持装置およびコヒーレンシ維持方法 Download PDF

Info

Publication number
JP4297968B2
JP4297968B2 JP2008500363A JP2008500363A JP4297968B2 JP 4297968 B2 JP4297968 B2 JP 4297968B2 JP 2008500363 A JP2008500363 A JP 2008500363A JP 2008500363 A JP2008500363 A JP 2008500363A JP 4297968 B2 JP4297968 B2 JP 4297968B2
Authority
JP
Japan
Prior art keywords
data
level cache
coherency
cache memory
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.)
Expired - Fee Related
Application number
JP2008500363A
Other languages
English (en)
Other versions
JPWO2007094046A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2007094046A1 publication Critical patent/JPWO2007094046A1/ja
Application granted granted Critical
Publication of JP4297968B2 publication Critical patent/JP4297968B2/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

Description

本発明は、第1のキャッシュメモリと当該第1のキャッシュメモリのデータを記録する第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置およびコヒーレンシ維持方法に関するものである。
CPU(Central Processing Unit)は、主記憶装置間に発生するデータ遅延問題の解決手段として、キャッシュメモリを利用している。キャッシュメモリは、主記憶装置に対して階層構造をなしており、現在では複数階層のキャッシュメモリが用いられている。
キャッシュメモリはCPUから近い順に、第1レベルキャッシュおよび第2レベルキャッシュとよばれている。一般的にキャッシュメモリは、CPUに近いほど高速にアクセスできるが容量は小さく、主記憶装置に近いほどアクセスは低速だが容量は大きくなるように構成されている。
また、従来にかかるキャッシュメモリは、第1レベルキャッシュに対するタグの写しを第2レベルキャッシュに保持させ、第2レベルキャッシュが第1レベルキャッシュのタグの写しを利用し、第1レベルキャッシュのタグの情報を取得することによって、第1レベルキャッシュおよび第2レベルキャッシュ間の相互矛盾を無くしている(コヒーレンシを維持している)。
図19は、従来の第1レベルキャッシュの状態を得るまでのステージを示す図である。同図に示すように、従来では、物理インデックスで第2レベルキャッシュのタグにアクセスした場合に、第2レベルキャッシュに含まれる仮想インデックスを利用して第1レベルキャッシュのタグの写しにアクセスし(つまり、2段階アクセスし)、第1レベルキャッシュの登録状態を把握することによって、第1レベルキャッシュおよび第2レベルキャッシュの相互矛盾を無くしている。
なお、特許文献1では、キャッシュに含まれる各キャッシュラインに状態ビットフィールドなどを関連付けて、キャッシュライン状態のデコード効率を向上させる技術が公開されており、特許文献2では、共用の第2レベルキャッシュに包含ビット、命令ビットおよびデータビットを有するディレクトリを含ませることでデータキャッシュの包含を追跡可能とする技術が公開されている。
また、特願2004−222401号明細書では、第2レベルキャッシュに第1レベルキャッシュのタグの写しを統合させることにより、第2レベルキャッシュのタグの検索結果を用いて第1レベルキャッシュのタグの写しを検索することができ、2段階アクセスによるディレイを削減可能とする技術が公開されている。
特開平10−301850号公報 特開平8−235061号公報
しかしながら、上述した特願2004−222401号明細書による方式では、2段階アクセスを削減でき、キャッシュメモリのマシンサイクルの高速化が可能となる一方で、キャッシュメモリが階層構造を取るために、第2レベルキャッシュに統合された第1レベルキャッシュのタグの写しにかかる使用効率が低く、第2レベルキャッシュの限られた資源を効率よく利用できていないという問題があった。
これは、第1レベルキャッシュの容量と比較して第2レベルキャッシュの容量が大きいこと、すなわち、第1レベルキャッシュと第2レベルキャッシュとのエントリ数の差に起因する。第1レベルキャッシュのタグを第2レベルキャッシュのタグに含めようとすれば、原理的に相互の容量差の分だけ絶対に使用されない部分が発生する。例えば、第1レベルキャッシュが2kエントリであるのに対し、第2レベルキャッシュが96kエントリ持つとすると、第2レベルキャッシュ内で使用される第1レベルキャッシュのタグの写し部分は、最大で2%の使用効率となる。
さらに、近年の半導体技術の向上により、最近のCPUはマルチコアで構成されている。マルチコアからアクセスされる第2レベルキャッシュは、シングルコアの時よりもエントリ数の差が小さくなるが、第1レベルキャッシュの写しに必要な情報量が増大するため、結果として、統合されたタグの使用効率が低下してしまい、この問題は更に深刻なものとなる。
また、使用効率を向上させるべく、上述した特許文献1または特許文献2に開示されている手法を利用することも考えられるが、特許文献1および特許文献2では、第1レベルキャッシュの登録状態を把握するために、2段階アクセスを行う必要があるので、2段階アクセスによるディレイの問題が発生し、マシンサイクルを高速化することが困難となる。
すなわち、2段階アクセスにより発生するディレイをなくしてマシンサイクルを向上させると共に、キャッシュメモリの限られた資源を効率よく利用することが極めて重要な課題となっている。
本発明は、上記に鑑みてなされたものであって、2段階アクセスにより発生するディレイをなくしてマシンサイクルを向上させ、キャッシュメモリの資源を効率よく利用することができるコヒーレンシ維持装置およびコヒーレンシ維持方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、第1のキャッシュメモリと当該第1のキャッシュメモリのデータを記録する第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、所定のエントリ数を有し、前記第1のキャッシュメモリに対するデータの登録情報の一部を記録する第1の記録手段と、前記第1の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第2の記録手段と、前記第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持手段とを備え、前記第1の記録手段に記録された登録情報の一部は、前記第2のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第1のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持手段は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第2の記録手段に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする。
また、本発明は、第1のキャッシュメモリと当該第1のキャッシュメモリのデータを記録する第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、前記第1のキャッシュメモリに対するデータの登録情報の一部を、所定のエントリ数を有する第1の記録装置に記録する第1の記録工程と、前記登録情報の残りの部分を、前記第1の記録装置よりも少ないエントリ数を有する第2の記録装置に記録する第2の記録工程と、前記第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持工程を含み、前記第1の記録装置に記録された登録情報の一部は、前記第2のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第1のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持工程は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第2の記録装置に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とする。
本発明によれば、所定のエントリ数を有し、第1のキャッシュメモリに対するデータの登録情報の一部を記録する第1の記録手段と、第1の記録手段より少ないエントリ数を有し、登録情報の残りの部分を記録する第2の記録手段とを有し、第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持するので、第1の記録手段に記録されたデータの使用効率を高めることができ、資源を有効に使用することができる。
また、本発明によれば、第2のキャッシュメモリに対するリードリクエストを取得した場合に、第1の記録手段からリードリクエストに該当するデータの登録情報の一部を読み出して、第1のキャッシュメモリと第2のキャッシュメモリとのコヒーレンシを維持するので、2段階アクセスをなくし、マシンサイクルを高速化することができる。
また、本発明によれば、第2のキャッシュメモリに対するリードリクエストを取得した場合に、該当するデータが複数の第1のキャッシュメモリによって共有されている場合に、第2の記録手段に記録された登録情報の残りを基にして、第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持するので、第1レベルキャッシュの登録情報を分割して保持し、資源の効率化を図った場合であっても、適切に第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持することができる。
また、本発明によれば、第1のキャッシュメモリに記録されたデータにエラーが発生した場合に、第2の記録手段に記録された登録情報の残りの部分を利用してエラーを修正するので、第1のキャッシュメモリに記録されたデータのエラーを適切に修正することができる。
以下に、本発明にかかるコヒーレンシ維持装置およびコヒーレンシ維持方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
まず、本発明の特徴について従来技術と比較して説明する。本発明では、第2レベルキャッシュのタグ部に第1レベルキャッシュに対するデータの登録情報の一部(以下、第1キャッシュ登録情報と表記する)を保持させると共に、第1レベルキャッシュの登録状態を把握するための詳細な情報(あるいは、第1レベルキャッシュに対するデータの登録情報の残り;以下、第1キャッシュ詳細情報)を、第2レベルキャッシュのタグ部と同タイミングで検索するように構成する。
第1キャッシュ登録情報は、第2レベルキャッシュがリードリクエストを取得した場合に、リードリクエストに該当するデータが複数の第1レベルキャッシュ(プロセッサコア)によって共有されているか否かの情報(以下、共有情報)が含まれている。データが複数の第1レベルキャッシュに共有されていない場合には、この第1レベルキャッシュ登録情報は、該当データを保持している第1レベルキャッシュの識別情報やデータの登録情報(例えば、プロセッサコア1のオペランドウェイ0に、更新型で登録されているなどの情報)を記録している。
すなわち、リードリクエストに該当するデータが、複数のプロセッサコアに共有されていない場合には、第1キャッシュ登録情報によって第1レベルキャッシュに対するデータの登録情報を得ることができる。また、データが複数のプロセッサコアに共有されている場合には、第1キャッシュ詳細情報を参照して、各プロセッサコアに対するデータの登録情報を取得し、第1レベルキャッシュと第2レベルキャッシュとの間でコヒーレンシを維持することとなる。
図1は、本発明に対する第1レベルキャッシュの登録状態を把握するまでのステージを示す図である。同図に示すように、物理アドレスで第2レベルキャッシュのタグ部をアクセスした場合に、アクセスした第2レベルキャッシュのタグ部に第1キャッシュ登録情報が含まれているため、迅速に第1レベルキャッシュの登録情報を把握することができる。
また、本発明では、必要に応じて(すなわち、第1レベルキャッシュの詳細な情報が必要な場合)、物理アドレスおよび論理アドレスによって、第2レベルキャッシュのタグ部に対するアクセスと同タイミングで、第1キャッシュ詳細情報にアクセスするので、特許文献1および特許文献2のような2段階アクセスを回避し、マシンサイクルを高速化することができる。
図2は、本発明による第2レベルキャッシュのタグ部の使用効率の改善について説明するための説明図である。図2の左側は、従来の第2レベルキャッシュのタグ部の一例(特願2004−222401号明細書にかかる第2レベルキャッシュのタグ部の一例)を示しており、図2の右側は、本発明の第2レベルキャッシュのタグ部の一例を示している。
図2の左側に示すように、従来の第2レベルキャッシュのタグ部には、第1レベルキャッシュの詳細な情報として、第2レベルキャッシュのエントリごとに8ビットずつ第2レベルキャッシュのタグ部の記憶領域を使用していた。なお、ここでは、プロセッサコアが2個、第1レベルキャッシュは2ウェイ・命令オペランドセパレートキャッシュを仮定しているが、このフィールドは、プロセッサコアの数、第1レベルキャッシュのウェイ数に比例して増加することとなる。
一方、図2の右側に示すように、本発明の第2レベルキャッシュのタグ部では、第1レベルキャッシュの詳細な情報を記録しておらず(8ビットで記憶しておらず)、第1キャッシュ登録情報として5ビット記録しているので、従来に比べて記憶容量を有効に利用することができる。ここでは、エントリごとに第1キャッシュ登録情報を5ビットずつ記録しているので従来よりも3ビットずつ少なく記録されている。
また、第2レベルキャッシュのタグ部とは別に、第1キャッシュ詳細情報を第1レベルキャッシュタグ写し部に記録している。このように、第1レベルキャッシュの詳細な情報(登録情報の残り)を第2レベルキャッシュのタグ部以外に記録しているので、第2レベルキャッシュのタグ部に対する使用効率が向上する。
従来の第2レベルキャッシュのタグ部に比べて、本発明の第2レベルキャッシュのタグ部は、各エントリに対して3ビットずつ少なく構成されているので、第2レベルキャッシュのタグの総エントリ数を96kとすると、288kビット(3ビット×96k)第2レベルキャッシュのタグ部の記憶容量を有効に利用していることとなる。
また、第1レベルキャッシュタグ写し部に記録された第1キャッシュ詳細情報が10ビットで構成されているとすれば、この第1レベルキャッシュタグ写し部に要する記憶容量は、160kビット(2k×10ビット×8)となる(ここでは、2ウェイの命令キャッシュおよびオペランドキャッシュがプロセッサ2個分あるため、8が乗算されている)。
すなわち、第1レベルキャッシュタグ写し部に記録された第1キャッシュ詳細情報を考慮した場合でも、従来の第2レベルキャッシュよりも、資源を有効に利用することができる。
次に、本実施例にかかるシステムの構成について説明を行う。図3は、本実施例にかかるシステムの構成を示す図である。同図に示すように、このシステムは、第2レベルキャッシュ装置200が、第1レベルキャッシュ装置を持つプロセッサコア100,110といった複数のコアに接続されており、主記憶装置300へは、他の第2レベルキャッシュ装置220〜2m0(mは自然数)と共に、データバス400によって接続されている。ここでは、説明の便宜上、プロセッサコア100,100、第2レベルキャッシュ装置200、主記憶装置300に着目して説明を行う。
なお、本実施例のシステムにおける連想方式は、2種類のウェイ(ウェイ0およびウェイ1)を持つ2ウェイセットアソシエイティブ方式であり、プロセッサコア数を2個とするが、本発明は、ウェイ数、連想方式、プロセッサコアの数によって制限されるものではない。
次に、本実施例にかかるプロセッサコア(プロセッサコアには第1レベルキャッシュ装置が含まれる)、第2レベルキャッシュ装置および主記憶装置の構成について説明する。図4は、本実施例にかかるプロセッサコア、第2レベルキャッシュ装置および主記憶装置の構成を示す図である。同図に示すように、第2レベルキャッシュ装置200は、プロセッサコア100,110に接続され、データバス400によって主記憶装置300に接続される。
プロセッサコア100,110は、命令実行制御部101と第1レベルキャッシュ装置102を有する。なお、プロセッサコア100およびプロセッサコア110の構成要素に関する説明は、同様であるため、以下では、プロセッサコア100の説明を行い、プロセッサ110の説明は省略する。
命令実行制御部101は、第1レベルキャッシュ装置102に論理アドレスを渡し、論理アドレスに対応するデータを第1レベルキャッシュ装置102から取得すると共に、取得したデータを基に所定の処理を実行する処理部である。
第1レベルキャッシュ装置102は、命令実行制御部101から論理アドレス情報を取得した場合に、取得した論理アドレス情報に対応するデータを検索し、検索したデータを命令実行制御部101に渡す装置である。図4に示すように、第1レベルキャッシュ装置102は、第1レベルキャッシュ制御部103および記憶部104を有する。
第1レベルキャッシュ制御部103は、アドレス変換処理部103a、検索処理部103b、エラー検出部103cを有する。アドレス変換処理部103aは、命令実行処理部101から論理アドレス情報を取得した場合に、取得した論理アドレス情報を物理アドレス情報に変換する処理部である。
図5は、論理アドレス情報のデータ構造の一例を示す図である。同図に示すように、この論理アドレスAは、論理アドレス上位ビットA1、第1レベルキャッシュインデックスA2、論理アドレス下位ビットA3を有する。論理アドレス上位ビットA1に格納された情報は、物理アドレスに変換された後、命令実行制御部101に要求されたデータにヒットしたか否かを判定するために利用される。
第1レベルキャッシュインデックスA2は、第1レベルキャッシュ装置102の記憶部104に記憶されたタグのエントリ位置を特定するための情報が格納される。なお、論理アドレス下位ビットA3には、その他の情報が格納される。
続いて、アドレス変換処理部103aが論理アドレス情報を変換して生成する物理アドレス情報について説明する。図6は、物理アドレスA’のデータ構造の一例を示す図である。同図に示すように、この物理アドレスA’は、物理アドレス上位ビットA1’、第2レベルキャッシュインデックスA2’、物理アドレス下位ビットA3’を有する。
物理アドレス上位ビットA1’は、タグ比較アドレスが格納される。このタグ比較アドレスは、データがヒットしたか否かを判定するために利用されるアドレスである。具体的には、図5に示した第1レベルキャッシュインデックスA2によって特定されるタグに格納された物理アドレスと、タグ比較アドレスとが等しければ、データがヒットしたことになり、等しくなければ、データがヒットしなかったことになる。
第2レベルキャッシュインデックスA2’は、第2レベルキャッシュ装置200の記憶部204に記録されたタグの位置を特定するための情報が格納される。なお、物理アドレス下位ビットA3’には、その他の情報が格納される。
検索処理部103bは、命令実行制御部101から要求されたデータ(論理アドレスAに対応するデータ)が、記憶部104に存在するか否かを判定し、要求されたデータが記憶部104に存在する場合には、該当データを命令実行処理部101に渡す処理部である。
一方、命令実行制御部101から要求されたデータが、記憶部104に存在しない場合には、検索処理部103bは、その旨の情報を第2レベルキャッシュ装置に送信する。なお、検索処理部103bは、記憶部104に記録されたデータに対しライトバック処理も行う。
続いて、検索処理部103bが行う処理について具体的に説明する。検索処理部103は、論理アドレスAに含まれる第1レベルキャッシュインデックスA2を基にして、対応するタグを命令キャッシュタグ部104aまたはオペランドキャッシュタグ部104cから検索する。
命令キャッシュタグ部104aは、命令キャッシュデータ部104bに登録されたデータの登録情報(タグ)を保持する。命令キャッシュデータ部104bは、命令キャッシュに登録されたデータを保持する。
オペランドキャッシュタグ部104cは、オペランドキャッシュデータ部104dに登録されたデータの登録情報(タグ)を保持する。オペランドキャッシュデータ部104dは、オペランドキャッシュに登録されたデータを保持する。
本実施例では、以下の説明において、命令キャッシュタグ部104aまたはオペランドキャッシュタグ部104cに格納されるタグを第1レベルキャッシュタグと表記する。図7は、第1レベルキャッシュタグのデータ構造の一例を示す図である。同図に示すように、この第1レベルキャッシュタグは、第1物理アドレス400とステータス401とを有する。
第1物理アドレス400は、物理アドレス上位ビットA1’(タグ比較アドレス)の比較対象となるアドレスを格納している。検索処理部103bは、第1物理アドレス400に格納されるアドレスと物理アドレス上位ビットA1’に格納されるアドレスとを比較し、両者が一致した場合には、命令実行制御部101が要求するデータにヒットしたと判定する。そして、検索処理部103bは、対応するデータを命令実行制御部101に渡す。
一方、両者が一致しない場合には、検索処理部103bは、命令実行制御部101が要求するデータにヒットしないと判定する。ステータス401は、第1レベルキャッシュタグが有効か否か、データが更新されたか否かなどの情報を格納する。
検索処理部103bは、第1レベルキャッシュタグの第1物理アドレス400と、物理アドレス上位ビットA1’とが一致しないと判定した場合には、命令実行制御部101に要求されたデータが第1レベルキャッシュ装置102に存在しないこととなるので、検索処理部103bは、対応するデータを取得すべく、物理アドレスA’と、第1レベルキャッシュインデックスA2とを第2レベルキャッシュ装置200に渡す。
エラー検出部103cは、命令キャッシュタグ部104a、命令キャッシュデータ部104b、オペランドキャッシュタグ部104c、オペランドキャッシュデータ部104dに発生するエラーを検出する処理部である。
エラー検出部103cがエラーを検出した場合には、第2レベルキャッシュ制御装置200にエラーが発生した旨を通知すると共に、エラーの発生したデータにかかる第1レベルキャッシュインデックスA2およびエラーの発生した第1レベルキャッシュ装置102の命令側またはオペランド側のウェイを特定する情報(以下、エラーウェイ特定情報)を第2レベルキャッシュ装置200に渡す。
第2レベルキャッシュ装置200は、エラー検出部103cからエラーウェイ特定情報を取得した場合に、このエラー特定情報に基づいて、対応する第1レベルキャッシュタグ写し部204cを検索し、第1レベルキャッシュ装置102におけるエラーデータを無効化するかライトバックを行うかを判定し、エラー検出部103cに処理要求を行う。その結果、第1レベルキャッシュ装置102からはエラーしたエントリが削除されることになる。すなわち、第2レベルキャッシュ装置200は、第1レベルキャッシュ装置102にエラーが発生した場合には、第1レベルキャッシュタグ写し部204cを参照して、エラーの発生したデータを修正する。
続いて、図4に示した第2レベルキャッシュ装置200について説明する。この第2レベルキャッシュ装置200は、第2レベルキャッシュ制御部203および記憶部204を有する。第2レベルキャッシュ制御部203は、第1レベルキャッシュ装置102と第2レベルキャッシュ装置200との一貫性を維持するための処理部である。この第2レベルキャッシュ制御部203は、コヒーレンシ維持処理部203a、エラー処理部203bを有する。
コヒーレンシ維持処理部203は、第1レベルキャッシュ装置102からの要求に応じて、該当するデータを記憶部204から検索し、検索したデータを第1レベルキャッシュ装置102に渡す処理部である。また、コヒーレンシ維持処理部203は、第1レベルキャッシュ装置102および第2レベルキャッシュ装置200のコヒーレンシを維持する。また、コヒーレンシ維持処理部203は、第2レベルキャッシュ装置200の記憶部204に格納されたデータに対しライトバック処理を行う。
ここで、記憶部204は、第2レベルキャッシュタグ部204a、第2レベルキャッシュデータ部204b、第1レベルキャッシュタグ写し部204cを記憶する記憶部である。第2レベルキャッシュタグ部204aは、第2レベルキャッシュデータ部204bに登録されたデータの登録情報と第1キャッシュ登録情報とを関連付けて記憶するタグであり。第2レベルキャッシュデータ部204bは、第2レベルキャッシュに登録されたデータを保持する。
第1レベルキャッシュタグ写し部204cは、第2レベルキャッシュタグ部204aに記録された第1キャッシュ登録情報補足するための情報を記録するタグである。
エラー処理部203bは、キャッシュアクセスが正常に行われたか否かを判定し、エラーが発生した場合には、エラーを救済する処理部である。また、エラー処理部203bは、第1レベルキャッシュ装置102にエラーが発生した場合には、第1レベルキャッシュタグ写し部204cを参照して、エラーの発生したデータを修正する。なお、エラー処理部203bは、第1レベルキャッシュタグ写し部204cを参照した場合に、エラーの発生したデータを削除してもよいか否かを判定し、削除してよい場合には、該当するデータを第1レベルキャッシュ装置102から強制的に削除する。
主記憶装置300は、データや所定の処理を実行するためのプログラムを記憶する記憶装置である。この主記憶装置300は、アクセス制御部300aおよびメモリ300bを有する。アクセス制御部300aは、第2レベルキャッシュ装置200、あるいは図示しないハードディスクに対するアクセスを制御する処理部である。メモリ300bは、第2レベルキャッシュ装置あるいはハードディスクから転送されるデータを記憶する記憶部である。
続いて、コヒーレンシ維持処理部203bの処理について具体的に説明する。コヒーレンシ維持処理部203bは、第1レベルキャッシュ装置102から物理アドレスA’と第1レベルキャッシュインデックスA2とを取得し、物理アドレスA’に含まれる第2レベルキャッシュインデックスA2’を基にして、対応するタグを第2レベルキャッシュタグ部204aから検索する。なお、本実施例では、第2レベルキャッシュタグ部204に格納されたタグを第2レベルキャッシュタグと表記する。
図8は、第2レベルキャッシュタグのデータ構造の一例を示す図である。同図に示すように、この第2レベルキャッシュタグは、第2物理アドレス500、ステータス501、仮想インデックス502、第1キャッシュ登録情報503を有する。
コヒーレンシ維持処理部203aは、第2物理アドレス500に格納されたデータと物理アドレス上位ビットA1’に格納された情報とを比較し、両者が一致した場合には、命令実行制御部101から要求されたデータが記憶部204に格納されていることになる。一方、第2物理アドレス500に格納されたデータと物理アドレス上位ビットが一致しない場合には、要求されたデータが第2レベルキャッシュ装置200に存在しないので、コヒーレンシ維持処理部203aは、対応するデータを主記憶装置300から取得する。
ステータス501は、第2レベルキャッシュタグが有効か否かの情報などを格納している。仮想インデックス502は、シノニムか否かを判定するための情報が格納されている。コヒーレンシ維持処理部203aは、第1レベルキャッシュインデックスA2に格納されたデータと仮想インデックス502に格納されたデータとを比較し、両者が等しい場合には、シノニムではないと判定する。
一方、両者が等しくない場合には、コヒーレンシ維持処理部203aは、シノニムであると判定する。コヒーレンシ維持処理部203aがシノニムと判定した場合には、コヒーレンシ維持処理部203aは、第2レベルキャッシュタグに含まれる第2物理アドレス500、仮想インデックス502、第2レベルキャッシュインデックスA2’、物理アドレス下位ビットA3’、第1キャッシュ登録情報503を用いて、第1レベルキャッシュメモリ装置102に対してデータの無効化またはライトバックの処理を要求することによって、シノニム対象となるデータを第1レベルキャッシュ装置102から削除する。
その後、コヒーレンシ維持処理部203aは、命令実行処理部101から要求されたデータを第1レベルキャッシュ装置102に渡し、アクセスに使用された情報を仮想インデックス502に格納する。
第1キャッシュ登録情報503は、第1レベルキャッシュ装置102にかかる登録情報を格納する。この第1キャッシュ登録情報を参照することによって、コヒーレンシ維持処理部203aは、第1レベルキャッシュ装置102の登録状態を把握することができる。ただし、複数のプロセッサコアが同一データを共有している場合には、把握できるのは、複数のプロセッサコアに共有されているという情報だけである。
すなわち、データが複数のプロセッサコアに共有されていない場合には、コヒーレンシ維持処理部203aは、第1キャッシュ登録情報によって第1レベルキャッシュ装置102に対するデータの登録状態を得ることができる。しかし、複数のプロセッサコアによってデータが共有されている場合には、コヒーレンシ維持処理部203aは、第1レベルキャッシュタグ写し部204cを参照して、各データの登録情報を取得する必要がある。
図9は、第1キャッシュ登録情報503に格納されるコードの意味を示す図である。なお、第1キャッシュ登録情報503は5ビットで構成されており、内4ビットは図9に示すような意味づけとなる。
残りの1ビットは、プロセッサコアの識別に利用される。例えば、プロセッサコア100が保持している場合には「0」が格納され、プロセッサコア110が保持している場合には、「1」が格納される。ただし、他の4ビットが「0001」の場合を除く。
なお、第2レベルキャッシュタグがプロセッサコア100,110から共有されている場合は、第1キャッシュ登録情報503には「0001」が格納される。これは、それぞれのプロセッサコア100,110が同一の第2レベルキャッシュタグが示すデータを持つが、第1レベルキャッシュ装置102にどのような状態で登録されているかわからない。つまり、命令・オペランド側、またウェイに関する情報が不足している。ただし、データが共有されている以上、そのデータそのものは共有型であることが保障されている。
このように、複数のプロセッサコアから共有されている状態を1コードで表すことにより、第2レベルキャッシュタグ部204aの情報量を削減することができる。なお、本実施例では一例として、第1キャッシュ登録情報503が5ビットで構成される例を示すが、これに限定されるものではなく、第1キャッシュ登録情報503をどのようなビット数で構成してもよい。
なお、図9において、「更新型」とは、第1レベルキャッシュ装置102にかかるデータが書換えられている可能性があることを示し、「共有型」とは、第1レベルキャッシュ装置102にかかるデータが書換えられていないことを示す。また、データの書換えは、オペランドキャッシュのみ発生する。コヒーレンシ維持処理部203aは、図8に示した第2レベルキャッシュタグが有する第1キャッシュ登録情報503を参照することによって、高速に第1レベルキャッシュ装置102の登録状態を把握することができる。
続いて、第1レベルキャッシュタグの写し部204cが保持する第1キャッシュ詳細情報のデータ構造について説明する。図10は、第1キャッシュ詳細情報のデータ構造の一例を示す図である。同図に示すように、この第1キャッシュ詳細情報は、第2レベルキャッシュアドレス600、第2キャッシュウェイ601、ステータス602を有する。
第1キャッシュ詳細情報は、第1レベルキャッシュの一つのウェイに対応している。したがって、2ウェイの命令キャッシュおよびオペランドキャッシュがプロセッサコア2個分あるシステムにおいては、第1キャッシュ詳細情報を8組使用することになる。コヒーレンシ維持処理部203aは、論理アドレスによって、第1レベルキャッシュタグ写し部204cに格納された第1キャッシュ詳細情報にアクセスする。
第2レベルキャッシュアドレス600は、第2レベルキャッシュタグ部204aの検索などにインデックスとして使用する物理アドレスと、第1レベルキャッシュタグ写し部204cの検索にインデックスとして使用する論理アドレスとの差分が格納される。
例えば、物理アドレスA’がビット[40:0](40ビット目〜0ビット目)からなり、第2レベルキャッシュインデックスA2’が、ビット[18:10]からなり、第1レベルキャッシュインデックスA2が、ビット[15:7]からなり、論理アドレスと物理アドレスとの共通部がビット[12:0]とすると、第2レベルキャッシュアドレス600は、物理アドレスA’のビット[18:13]を格納する。
コヒーレンシ維持処理部203aは、第2レベルキャッシュアドレス600に格納された情報が命令実行制御部101から要求された物理アドレスA’と一致し、かつ、第2キャッシュウェイ601に格納された情報が物理アドレスA’で第2レベルキャッシュ装置200を検索した結果ヒットしたウェイと等しい場合、第1レベルキャッシュタグ写し部204に対応する第1レベルキャッシュの情報が得られる。
ところで、コヒーレンシ維持処理部203aは、第1レベルキャッシュタグ写し部204cに格納された情報を利用して、第2レベルキャッシュタグ(図8に示す)が複数のプロセッサコアに共有されている状態(コード0001)から他の状態に遷移させる。
例えば、第1レベルキャッシュ装置102に記録されたデータが、リプレイスのために消去され、共有状態が解消されるエントリ(第2レベルキャッシュタグ)が存在するとする。もしも、第1レベルキャッシュタグ写し部204cがない場合、コヒーレンシ維持処理部203aは、その解消されるエントリを探すために第2レベルキャッシュ装置200に記録されたデータを走査する必要がある。
なぜならば、第1レベルキャッシュタグは論理アドレスで検索され、第2レベルキャッシュタグは物理アドレスで検索されるためである。つまり、インデックスに用いられるアドレスから共通な部分を除いた差分によって示されるエントリに、該当するデータが登録されている可能性があるからである。
しかし、第1レベルキャッシュタグ写し部204cが記録する第1キャッシュ詳細情報を参照することによって、迅速に第1キャッシュ登録情報を更新することができる。
また、本発明では、第2レベルキャッシュタグが複数のプロセッサコアによって共有されている(コード0001)状態から他の状態に遷移する際にエラーが発生した場合には、エラー処理部203bは、第1キャッシュ詳細情報を利用してエラー処理を実行する。
第2レベルキャッシュ装置200がリプレイスをおこなう場合、キャッシュメモリが階層構造になっているため、第1レベルキャッシュ装置102からもデータブロックを消去する必要がある。このとき、コヒーレンシ維持処理部203aは、そのデータブロックが複数のプロセッサコアで共有されている(コード0001)状態である場合には、両方のプロセッサコア(例えば、プロセッサコア100,110)に対して、データの無効化要求を発行する。
第2レベルキャッシュ装置200から無効化要求を取得した第1レベルキャッシュ装置102は、第1レベルキャッシュタグを検索し、ヒットしたウェイに登録されたデータを消去する。なぜならば、第1レベルキャッシュタグ写し部204cを検索する際に利用する論理アドレスは、第2レベルキャッシュのリプレイス対象となっているエントリの論理アドレスと異なっているために、その結果が使用できないためである。この時点で第1レベルキャッシュタグにエラーが発生すると、エラーの発生したタグに対応するデータブロックを消去すべきか否かの判断ができなくなる。
そこで、第1レベルキャッシュタグにエラーが発生した場合には、第1レベルキャッシュ装置102は、エラー報告およびエラーの発生したタグの論理アドレスを第2レベルキャッシュ装置200に送信し、第2レベルキャッシュ装置200が、受信した論理アドレスに対応するタグの情報を第1レベルキャッシュタグ写し部204cから検索することによってエラーリカバリーを実行する。第1レベルキャッシュタグ写し部204cに対する検索においてデータがヒットした場合には、第2レベルキャッシュ装置200は、再び、第1レベルキャッシュ装置に無効化要求を行う。第1レベルキャッシュタグ写し部204cのデータにヒットしたため、エラーの発生したタグに対する情報が得られているため、第1レベルキャッシュタグの検索を行うことなく、第2レベルキャッシュ装置200は、無効化要求を実行することができる。
次に、コヒーレンシ維持処理部203aが、プロセッサコアからのリードリクエストを取得した場合の処理について説明する。図11は、プロセッサコアからのリードリクエストによるタグ登録情報の遷移を説明するための説明図である。
図11の左側に示すように、コヒーレンシ維持処理部203aが、プロセッサコア100から物理アドレスA’、論理アドレスAからなるリードリクエストを取得すると、物理アドレスA’に対応するエントリを第2レベルキャッシュタグ部204aから検索する。同図に示す例では、第2レベルキャッシュタグ部204aの物理アドレスA’にデータが登録されており、ステータスが有効(Valid)なので、ヒットとなる。第1レベルキャッシュ装置102には有効なデータが登録されていないため、第1レベルキャッシュタグ写し部204cには、論理アドレスに対応する有効なデータは存在していない。
第1レベルキャッシュ装置102がリードリクエストしたデータを、例えば、命令キャッシュのウェイ0に登録した場合には、コヒーレンシ維持処理部203aは、図11の右側に示すように、仮想インデックス502に論理アドレスAを登録し、第1キャッシュ登録情報503の1ビット目にプロセッサコア100の識別情報「0」を登録し、2ビット目〜5ビット目にコード1000(命令ウェイ0に、共有型で登録されている;図9参照)を登録する。
また、コヒーレンシ維持処理部203aは、論理アドレスAに対応する第1レベルキャッシュタグ写し部204cにおけるエントリの第2レベルキャッシュアドレス600に、上述した物理アドレスA’と論理アドレスAとの差分を登録するとともに、第2キャッシュウェイ601に「ウェイ0(Way0)」を登録し、ステータス602に「有効(Val)」を登録する。
次に、シノニム状態となった場合のコヒーレンシ維持処理部203aの処理について説明する。図12は、シノニム状態からのタグ登録情報の遷移を説明するための説明図である。
図12の左側に示すように、コヒーレンシ維持処理部203aが、プロセッサコア100から物理アドレスA’、論理アドレスBからなるリードリクエストを取得すると、物理アドレスA’に対応するエントリを第2レベルキャッシュタグ部204から検索する。同図に示す例では、第2レベルキャッシュタグ部204aの物理アドレスA’にデータが登録されており、ステータスが有効なので、ヒットとなる。
しかし、仮想インデックス502には論理アドレスAが登録されているため、リードリクエストに含まれる論理アドレスBと異なり、シノニムヒットとなる。シノニムヒットとなった場合には、コヒーレンシ維持処理部203aは、論理アドレスAに対応するエントリの無効化を第1レベルキャッシュ装置102に要求する。
第1レベルキャッシュ装置102による論理アドレスAに対するエントリの無効化が完了した場合に、コヒーレンシ維持処理部203aは、図12の右側に示すように、第1レベルキャッシュタグ写し部204cに登録されたデータを更新する。具体的には、コヒーレンシ維持処理部203aは、第2レベルキャッシュタグ部204aの仮想インデックス502に論理アドレスBを登録する。また、コヒーレンシ維持処理部203aは、第1レベルキャッシュタグ写し部204cに登録された情報を更新する。すなわち、論理アドレスAに対するエントリを無効化するとともに、論理アドレスBに対応する第2レベルキャッシュアドレス600、第2レベルキャッシュウェイ601、ステータス603にそれぞれ、「物理アドレスA’と論理アドレスBとの差分」、「ウェイ0」、「有効」を登録する。
次に、コヒーレンシ維持処理部203aが、第2レベルキャッシュタグ部204aおよび第1レベルキャッシュタグ写し部204cにおけるプロセッサコア間の共有状態を他の状態へ遷移させる処理について説明する。図13および図14は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図である。
図13の左側に示すように、コヒーレンシ維持処理部203aが、プロセッサコア100から物理アドレスB’、論理アドレスBからなるリードリクエストを取得すると、物理アドレスB’に対応するエントリを第2レベルキャッシュタグ部204aから検索する。同図に示す例では、第2レベルキャッシュタグ部204aにおいて、物理アドレスA’に対するデータがヒットしたが、第1レベルキャッシュタグ写し部204の論理アドレスBに対応するエントリに、論理アドレスAに対する有効なデータが登録されているため、リプレイスが発生する。コヒーレンシ維持処理部203aは、物理アドレスB’に登録されたデータおよび論理アドレスAのデータ無効化要求をプロセッサコア100に渡す。
図13の右側(図14の左側も同様)に示すように、状態遷移の途中では、第2レベルキャッシュタグ部204aおよび第1レベルキャッシュタグ写し部204cはともに更新されているが、リプレイスされた論理アドレスAに関する情報はまだ古いまま(コード0001)である。
続いて、図14の右側に示すように、コヒーレンシ維持処理部203aは、プロセッサコア100から論理アドレスA(物理アドレスA’)の無効化要求に対する応答(以下、無効化応答と表記する)を取得する。コヒーレンシ維持処理部203aは、無効化応答に含まれる論理アドレスAによって第1レベルキャッシュタグ写し部204cを検索し、論理アドレスAを持っている第1レベルキャッシュの状態を把握し、把握した情報によって、物理アドレスA’に対するエントリの第1キャッシュ登録情報を更新する。
次に、登録状態遷移中にエラーが発生した場合の処理について説明する。図15および図16は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図である。同図に示すように、コヒーレンシ維持処理部203aが、プロセッサコア100から物理アドレスB’、論理アドレスBからなるリードリクエストを取得すると、物理アドレスB’に対応するエントリを検索する。
図15の左側に示す例では、対応するデータが第2レベルキャッシュに登録されておらず、また、物理アドレスB’に対するエントリに他の有効なデータが登録されているため、第2レベルキャッシュ装置にリプレイスが発生する。なお、リプレイス対象となるデータが共有状態であるため、全てのプロセッサコア100に対して無効化要求を行う。
プロセッサコア100(第1レベルキャッシュ装置102)は、無効化要求(例えば、論理アドレスAに対する無効化要求)を第2レベルキャッシュ装置200から取得した場合に、論理アドレスAに対応するエントリを第1レベルキャッシュタグ(図に示す例では、命令キャッシュタグ部104a)から検索する。そして、図15の右側に示すように、プロセッサコア100は、該当するエントリが存在する場合には、当該エントリに登録されたデータを削除する。ここで、タグに記録されたデータを読み出す場合にエラーが発生すると、ヒットしたか否かが不明となり、削除対象か否かを判定することができない。
そこで、プロセッサコア100は、物理アドレスA’および論理アドレスAからなる無効化要求のエラー応答を第2レベルキャッシュ装置200に渡す。エラー応答を取得した第2レベルキャッシュ装置200は、論理アドレスAによって第1レベルキャッシュタグ写し部204cを検索し、該当データがヒットするか否か、つまり消去対象であるか否かを判定する。データがヒットした場合には、第2コヒーレンシ維持処理部203aは、再度、プロセッサコア100に対して無効化要求を行うが、この場合は既に消すべき対象が決まっているため、第1レベルキャッシュタグの検索は不要となり、エラーを回避することができる。
続いて、図16の右側に示すように、無効化要求を行った各プロセッサコアからの無効化応答をコヒーレンシ維持処理部203aが取得し、コヒーレンシ維持処理部203aは、第1レベルキャッシュタグ写し部204cの該当エントリを無効化するとともに、第2レベルキャッシュタグ部204aの第1キャッシュ登録情報503にコード「0000(該当データが存在しない旨を示す)」を登録する。
次に、本実施例にかかる第2レベルキャッシュ装置200の処理について説明する。図17および図18は、本実施例にかかる第2レベルキャッシュ装置200の処理を示すフローチャートである。
同図に示すように、第2レベルキャッシュ装置200は、第1レベルキャッシュ装置102からデータのリクエストを取得し(ステップS101)、リクエストされたデータを保持しているか否かを判定する(ステップS102)。
第2レベルキャッシュ装置200がリクエストされたデータを保持していない場合には(ステップS103,No)、第2レベルキャッシュ装置200は、主記憶装置300にアクセスし(ステップS104)、第2レベルキャッシュ装置200にリプレイスが発生するか否かを判定する(ステップS105)。
そして、第2レベルキャッシュ装置200にリプレイスが発生していない場合には(ステップS106,No)、第2レベルキャッシュ装置200は、主記憶装置300から取得するデータを第2レベルキャッシュデータ部204bに登録し、第2レベルキャッシュタグ部204aのデータを更新する(ステップS107)。
一方、第2レベルキャッシュ装置200にリプレイスが発生した場合には(ステップS106,Yes)、第2レベルキャッシュ装置200はcleanか否かを判定し(ステップS108)、cleanである場合には(ステップS109,Yes)、第2レベルキャッシュ装置200のデータを消去し(ステップS110)、ステップS107に移行する。なお、cleanでない場合には(ステップS109,No)、第2レベルキャッシュ装置200のデータをライトバックし(ステップS111)、ステップS107に移行する。
ステップS107の後、第2レベルキャッシュ装置200は、第1レベルキャッシュ装置102においてリプレイスが発生するか否かを判定し(ステップS112)、第1レベルキャッシュ装置102にリプレイスが発生しない場合には(ステップS113,No)、第1レベルキャッシュ装置102にデータを登録し、第1レベルキャッシュタグおよび第1レベルキャッシュタグ写し部204cのデータを更新する(ステップS114)。
一方、第1レベルキャッシュ102においてリプレイスが発生する場合には(ステップS113,Yes)、第1レベルキャッシュデータはcleanか否かを判定し(ステップS115)、cleanである場合には(ステップS116,Yes)、第1レベルキャッシュデータを消去して(ステップS117)、ステップS112に移行する。なお、cleanでない場合には(ステップS116,No)、第1レベルキャッシュデータをライトバックし(ステップS118)、ステップS112に移行する。
ところで、ステップS103において、第2レベルキャッシュ装置200がデータを保持している場合には(ステップS103,Yes)、シノニムか否かを判定し(ステップS119)、シノニムでない場合には(ステップS120,No)、ステップS112に移行する。
なお、シノニムの場合には(ステップS120,Yes)、第2レベルキャッシュ装置200は、第1レベルキャッシュデータが共有(複数のプロセッサコアによって共有されている)か否かを判定し(ステップS121)、共有でない場合には(ステップS122,No)、ステップS115に移行する。
第1レベルキャッシュデータが共有の場合には(ステップS122,Yes)、第1レベルキャッシュデータを消去し(ステップS123)、正常に消去が終了した場合には(ステップS124,Yes)、ステップS112に移行する。一方、正常に消去が終了しなかった場合には(ステップS124,No)、第1レベルキャッシュタグ写し部204cを検索し、ヒットした場合に、対応するデータを強制消去して(ステップS125)、ステップS112に移行する。
このように、第2レベルキャッシュ装置200は、第1レベルキャッシュ装置102とのコヒーレンシを維持しつつ、プロセッサコア100からのリードリクエストに対する処理を適切に実行することができる。
上述してきたように、本実施例にかかる第2レベルキャッシュ装置200は、第2レベルキャッシュタグ部204aに第2レベルキャッシュデータ部204bの登録情報に対応付けて、第1レベルキャッシュ装置102(およびその他の第1レベルキャッシュ装置)に対するデータの登録情報の一部を記録し、第1レベルキャッシュタグ写し部204cに第1レベルキャッシュ装置102に対するデータの登録情報を記録し、コヒーレンシ維持処理部203aが、第2レベルキャッシュタグ部204aおよび第1レベルキャッシュタグ写し部204cに記録された情報を使用して第1レベルキャッシュ装置102と第2レベルキャッシュ装置200との間でコヒーレンシを維持するので、第2レベルキャッシュタグ部204aに記録されたデータの使用効率を高めることができ、第2レベルキャッシュ装置200の限られた資源を有効に使用することができる。
以上のように、本発明にかかるコヒーレンシ維持装置およびコヒーレンシ維持方法は、キャッシュメモリのマシンサイクルを高める場合に有用であり、特に、マシンサイクルを高めた場合であっても、キャッシュメモリに記録されたデータの使用効率を高め、資源を有効に利用する場合に適している。
図1は、本発明に対する第1レベルキャッシュの登録状態を把握するまでのステージを示す図である。 図2は、本発明による第2レベルキャッシュのタグ部の使用効率の改善について説明するための説明図である。 図3は、本実施例にかかるシステムの構成を示す図である。 図4は、本実施例にかかるプロセッサコア、第2レベルキャッシュ装置および主記憶装置の構成を示す図である。 図5は、論理アドレスのデータ構造の一例を示す図である。 図6は、物理アドレスのデータ構造の一例を示す図である。 図7は、第1レベルキャッシュタグのデータ構造の一例を示す図である。 図8は、第2レベルキャッシュタグのデータ構造の一例を示す図である。 図9は、第1キャッシュ登録情報に格納されるコードの意味を示す図である。 図10は、第1キャッシュ詳細情報のデータ構造の一例を示す図である。 図11は、プロセッサコアからのリードリクエストによるタグ登録情報の遷移を説明するための説明図である。 図12は、シノニム状態からのタグ登録情報の遷移を説明するための説明図である。 図13は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図(1)である。 図14は、プロセッサコア間の共有状態から他の状態への遷移を説明するための説明図(2)である。 図15は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図(1)である。 図16は、登録状態遷移中にエラーが発生した場合の処理を説明するための説明図(2)である。 図17は、本実施例にかかる第2レベルキャッシュ装置の処理を示すフローチャート(1)である。 図18は、本実施例にかかる第2レベルキャッシュ装置の処理を示すフローチャート(2)である。 図19は、従来の第1レベルキャッシュの状態を得るまでのステージを示す図である。
符号の説明
100,110,120,130,1m0,1n0 プロセッサコア
101 命令実行制御部
102 第1レベルキャッシュ装置
103 第1レベルキャッシュ制御部
103a アドレス変換処理部
103b 検索処理部
103c エラー検出部
104 記憶部
104a 命令キャッシュタグ部
104b 命令キャッシュデータ部
104c オペランドキャッシュタグ部
104d オペランドキャッシュデータ部
200,220,2m0 第2レベルキャッシュ装置
203 第2レベルキャッシュ制御部
203a コヒーレンシ維持処理部
203b エラー処理部
204a 第2レベルキャッシュタグ部
204b 第2レベルキャッシュデータ部
204c 第1レベルキャッシュタグ写し部
300 主記憶装置
300a アクセス制御部
300b メモリ

Claims (8)

  1. 第1のキャッシュメモリと当該第1のキャッシュメモリのデータを記録する第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持装置であって、
    所定のエントリ数を有し、前記第1のキャッシュメモリに対するデータの登録情報の一部を記録する第1の記録手段と、
    前記第1の記録手段よりも少ないエントリ数を有し、前記登録情報の残りの部分を記録する第2の記録手段と、
    前記第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持手段とを備え、
    前記第1の記録手段に記録された登録情報の一部は、前記第2のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第1のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持手段は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第2の記録手段に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とするコヒーレンシ維持装置。
  2. 前記コヒーレンシ維持手段は、リードリクエストに含まれる物理アドレスおよび論理アドレスを利用して、前記第1の記録手段に記録された登録情報の一部と前記第2の記録手段に記録された前記登録情報の残りの部分とを同時にアクセスすることを特徴とする請求項に記載のコヒーレンシ維持装置。
  3. 前記第1のキャッシュメモリに記録されたデータにエラーが発生した場合に、前記第2の記録手段に記録された登録情報の残りの部分を基にしてエラーの発生したデータを修正するエラー修正手段を更に備えたことを特徴とする請求項1に記載のコヒーレンシ維持装置。
  4. 前記エラー修正手段は、前記第1のキャッシュメモリに記録されたデータにエラーが発生した場合に、当該エラーの発生したデータを消去するか否かを前記第2の記録手段に記録された登録情報の残りの部分を基に判定し、判定結果に基づいてエラーの発生したデータを消去することを特徴とする請求項に記載のコヒーレンシ維持装置。
  5. 前記第1の記録手段は、第2のキャッシュメモリに対するデータの登録状態を示す情報と、前記登録情報の一部とを対応付けて記録することを特徴とする請求項1に記載のコヒーレンシ維持装置。
  6. 前記第1の記録手段は、リードリクエストにヒットしたか否かを判定する情報、当該第1の記録手段に記録されたデータが有効か否かの情報、シノニムか否かを判定する情報および前記登録情報の一部を対応付けて記録することを特徴とする請求項に記載のコヒーレンシ維持装置。
  7. 前記第1の記録手段が記録する登録情報の一部は複数のビットによって構成され、前記コヒーレンシ維持手段は、前記複数のビットによって前記第1のキャッシュメモリに記録されたデータの登録状態を把握し、第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持することを特徴とする請求項のいずれか一つに記載のコヒーレンシ維持装置。
  8. 第1のキャッシュメモリと当該第1のキャッシュメモリのデータを記録する第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持方法であって、
    前記第1のキャッシュメモリに対するデータの登録情報の一部を、所定のエントリ数を有する第1の記録装置に記録する第1の記録工程と、
    前記登録情報の残りの部分を、前記第1の記録装置よりも少ないエントリ数を有する第2の記録装置に記録する第2の記録工程と、
    前記第1のキャッシュメモリと第2のキャッシュメモリとの間でコヒーレンシを維持するコヒーレンシ維持工程を含み、
    前記第1の記録装置に記録された登録情報の一部は、前記第2のキャッシュメモリが受付けるリードリクエストに該当するデータが複数の第1のキャッシュメモリに共有されているか否かを示す共有情報を含み、前記コヒーレンシ維持工程は、リードリクエストを取得した場合に、リードリクエストに該当するデータの前記共有情報を取得し、前記データが共有されている場合に、前記第2の記録装置に記録された登録情報の残りの部分に基づいて、コヒーレンシを維持することを特徴とするコヒーレンシ維持方法。
JP2008500363A 2006-02-14 2006-02-14 コヒーレンシ維持装置およびコヒーレンシ維持方法 Expired - Fee Related JP4297968B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/302533 WO2007094046A1 (ja) 2006-02-14 2006-02-14 コヒーレンシ維持装置およびコヒーレンシ維持方法

Publications (2)

Publication Number Publication Date
JPWO2007094046A1 JPWO2007094046A1 (ja) 2009-07-02
JP4297968B2 true JP4297968B2 (ja) 2009-07-15

Family

ID=38371242

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008500363A Expired - Fee Related JP4297968B2 (ja) 2006-02-14 2006-02-14 コヒーレンシ維持装置およびコヒーレンシ維持方法

Country Status (4)

Country Link
US (1) US7958318B2 (ja)
EP (1) EP1986101B1 (ja)
JP (1) JP4297968B2 (ja)
WO (1) WO2007094046A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013084315A1 (ja) 2011-12-07 2013-06-13 富士通株式会社 演算処理装置、及び、演算処理装置の制御方法

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689771B2 (en) * 2006-09-19 2010-03-30 International Business Machines Corporation Coherency management of castouts
JP4965974B2 (ja) * 2006-11-14 2012-07-04 ルネサスエレクトロニクス株式会社 半導体集積回路装置
JP5440067B2 (ja) * 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US10769021B1 (en) * 2010-12-31 2020-09-08 EMC IP Holding Company LLC Cache protection through cache
WO2013042240A1 (ja) * 2011-09-22 2013-03-28 富士通株式会社 情報処理装置及び情報処理装置の制御方法
WO2013058745A1 (en) * 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches
WO2013084314A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9110830B2 (en) 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US20150134661A1 (en) * 2013-11-14 2015-05-14 Apple Inc. Multi-Source Media Aggregation
US9489104B2 (en) 2013-11-14 2016-11-08 Apple Inc. Viewable frame identification
US9582160B2 (en) 2013-11-14 2017-02-28 Apple Inc. Semi-automatic organic layout for media streams
JP6337570B2 (ja) * 2014-03-28 2018-06-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9672180B1 (en) 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9715428B1 (en) * 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
US10956339B2 (en) 2016-07-14 2021-03-23 Advanced Micro Devices, Inc. System and method for storing cache location information for cache entry transfer
KR20200137181A (ko) 2019-05-29 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보를 전송하는 장치
KR20200139433A (ko) 2019-06-04 2020-12-14 에스케이하이닉스 주식회사 컨트롤러의 동작 방법 및 메모리 시스템
KR20200123684A (ko) 2019-04-22 2020-10-30 에스케이하이닉스 주식회사 메모리 시스템에서 맵 정보를 전송하는 장치
KR20210004502A (ko) 2019-07-05 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20210004322A (ko) * 2019-07-04 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템에서 맵정보 및 리드카운트를 전송하는 장치 및 방법
US11899588B2 (en) * 2020-09-14 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for discarding inactive intermediate render targets

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0290259A (ja) 1988-09-27 1990-03-29 Hitachi Ltd マルチプロセッサシステム
DE69225876T2 (de) * 1991-12-24 1998-12-10 Motorola Inc Cachesteuerungsschaltung
JPH05342101A (ja) * 1992-06-12 1993-12-24 Fujitsu Ltd 階層キャッシュ・メモリ
JPH0635801A (ja) * 1992-07-16 1994-02-10 Fujitsu Ltd 階層メモリ制御方式
JP3483296B2 (ja) * 1994-04-28 2004-01-06 富士通株式会社 情報処理装置
JP3132749B2 (ja) * 1994-12-05 2001-02-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチプロセッサ・データ処理システム
US5740400A (en) 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
US6115794A (en) * 1997-04-14 2000-09-05 International Business Machines Corporation Method and system of providing a pseudo-precise inclusivity scheme in a sectored cache memory for maintaining cache coherency within a data-processing system
US6725334B2 (en) 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US6704841B2 (en) * 2001-06-26 2004-03-09 Sun Microsystems, Inc. Method and apparatus for facilitating speculative stores in a multiprocessor system
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
JP4673584B2 (ja) * 2004-07-29 2011-04-20 富士通株式会社 キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013084315A1 (ja) 2011-12-07 2013-06-13 富士通株式会社 演算処理装置、及び、演算処理装置の制御方法

Also Published As

Publication number Publication date
JPWO2007094046A1 (ja) 2009-07-02
WO2007094046A1 (ja) 2007-08-23
US20080313405A1 (en) 2008-12-18
EP1986101A1 (en) 2008-10-29
US7958318B2 (en) 2011-06-07
EP1986101A4 (en) 2009-08-12
EP1986101B1 (en) 2012-06-20

Similar Documents

Publication Publication Date Title
JP4297968B2 (ja) コヒーレンシ維持装置およびコヒーレンシ維持方法
JP5526626B2 (ja) 演算処理装置およびアドレス変換方法
US7472253B1 (en) System and method for managing table lookaside buffer performance
US8195881B2 (en) System, method and processor for accessing data after a translation lookaside buffer miss
JP4608011B2 (ja) 演算処理装置および演算処理方法
JP4673584B2 (ja) キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US11847058B2 (en) Using a second content-addressable memory to manage memory burst accesses in memory sub-systems
JP2010518519A (ja) アドレス変換方法及び装置
US7549035B1 (en) System and method for reference and modification tracking
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
US20140289469A1 (en) Processor and control method of processor
JP5319049B2 (ja) キャッシュシステム
WO2007096998A1 (ja) キャッシュメモリ装置およびキャッシュメモリ制御方法
US8185699B2 (en) Cache memory controller and cache memory controlling method
JP4812876B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6451475B2 (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
US11836085B2 (en) Cache line coherence state upgrade
US20230418758A1 (en) Tag processing for external caches
US11822479B2 (en) History-based selective cache line invalidation requests
JP2000347941A (ja) キャッシュメモリ装置
US7546439B1 (en) System and method for managing copy-on-write faults and change-protection
JP6337570B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR20040047398A (ko) 캐쉬 메모리를 이용한 데이터 억세스 방법
JPWO2013084315A1 (ja) 演算処理装置、及び、演算処理装置の制御方法

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4297968

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120424

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130424

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140424

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees