JP4295814B2 - マルチプロセッサシステム及びマルチプロセッサシステムの動作方法 - Google Patents

マルチプロセッサシステム及びマルチプロセッサシステムの動作方法 Download PDF

Info

Publication number
JP4295814B2
JP4295814B2 JP2008502629A JP2008502629A JP4295814B2 JP 4295814 B2 JP4295814 B2 JP 4295814B2 JP 2008502629 A JP2008502629 A JP 2008502629A JP 2008502629 A JP2008502629 A JP 2008502629A JP 4295814 B2 JP4295814 B2 JP 4295814B2
Authority
JP
Japan
Prior art keywords
cache
cache memory
memory
processor
level
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
JP2008502629A
Other languages
English (en)
Other versions
JPWO2007099643A1 (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
Application granted granted Critical
Publication of JP4295814B2 publication Critical patent/JP4295814B2/ja
Publication of JPWO2007099643A1 publication Critical patent/JPWO2007099643A1/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Landscapes

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

Description

本発明は、マルチプロセッサシステム及びマルチプロセッサシステムの動作方法に関する。
一般に、プロセッサシステムでは、プロセッサと主記憶装置であるメインメモリの動作速度のバランスをとるために、プロセッサとメインメモリの間に高速なキャッシュメモリを搭載する方式がとられている。また、高い処理性能が要求されるシステムでは、複数のプロセッサを使用するマルチプロセッサシステムが用いられている。マルチプロセッサシステムでは、例えば、複数のプロセッサがキャッシュメモリを介在してメインメモリのデータをアクセスするマルチプロセッサシステムに搭載されるキャッシュメモリは、プロセッサにそれぞれ対応して備えられる。このキャッシュメモリは、プロセッサ毎に固定のアクセス優先度をもって、全てのプロセッサからアクセスされる(例えば、特許文献1参照)。
特開平6−202949号公報
プロセッサにそれぞれ対応したキャッシュメモリを有する従来のマルチプロセッサシステムでは、各キャッシュメモリは全てのプロセッサからアクセスされるので、キャッシュメモリの利用効率は良い。しかし、各キャッシュメモリへのアクセス優先度(階層レベル)が固定されているため、プロセッサがキャッシュメモリにアクセスを要求してからデータを受け取るまでの遅延時間(レイテンシ)は、大きくなる場合がある。例えば、最適なレイテンシになるための階層レベルが、使用するアプリケーション毎に異なる場合でも、キャッシュメモリの階層レベルは、固定されている。このため、レイテンシは、アプリケーションによって大きくなる場合がある。また、複数のプロセッサによってアクセスされる共有データがキャッシュメモリのいずれかに存在するとき、他のキャッシュメモリにデータを移動した方が、レイテンシは小さくなる場合がある。この場合でも、キャッシュメモリ間でデータを転送できないので、レイテンシは小さくならない。
本発明の目的は、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることである。
本発明では、マルチプロセッサシステムは、プロセッサにそれぞれ対応したキャッシュメモリと各キャッシュメモリの階層レベルが設定される階層設定レジスタと各キャッシュメモリ間のアクセスを制御するアクセス制御部を有している。
各プロセッサは、他のプロセッサに対応したキャッシュメモリをそのプロセッサに対応しているキャッシュメモリより階層が深いキャッシュメモリとして扱う。この結果、各プロセッサは全てのキャッシュメモリにアクセスできるので、キャッシュメモリの利用効率を良くすることができる。プロセッサ毎のキャッシュメモリの階層レベルは、書き換え可能な階層設定レジスタに保持されているので、アプリケーション毎に最適なレイテンシになるように変更できる。
また、下位階層のキャッシュメモリがキャッシュヒットしたときのキャッシュラインを移動するか、複製するか、保持するかの条件(以後、転送条件とも称する)は、書き換え可能な転送設定レジスタに設定される。このため、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能になる。例えば、あるアプリケーションは、下位階層のキャッシュメモリに登録されているキャッシュラインを連続して使用する。この場合、キャッシュラインの転送条件を“移動”あるいは“複製”に設定することにより、レイテンシを小さくすることができる。別の例では、ある特定のプロセッサは、他のプロセッサより頻繁に、各プロセッサに共有されているデータをアクセスする。この場合、特定のプロセッサに対応するキャッシュメモリの転送条件を“保持”に設定することにより、レイテンシを小さくすることができる。
この結果、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
以下、本発明の実施形態を図面を用いて説明する。
図1は、本発明の第1の実施形態を示している。マルチプロセッサシステムは、プロセッサP0、P1、P2、キャッシュメモリC0、C1、C2、C3、アクセス制御部ACNT、階層設定レジスタLREG、転送設定レジスタTREG、置換設定レジスタRREG、およびメインメモリMMを有している。各キャッシュメモリC0−C3は、それぞれタグTG0−TG3を有している。プロセッサP0、P1、P2は、それぞれキャッシュメモリC0、C1、C2に直接接続されている。キャッシュメモリC0、C1、C2は、アクセス制御部ACNTに接続されている。アクセス制御部ACNTは、階層設定レジスタLREG、転送設定レジスタTREG、置換設定レジスタRREG、キャッシュメモリC3およびメインメモリMMに接続されている。メインメモリMMはキャッシュメモリC3に接続されている。各キャッシュメモリC0−C3のタグTG0−TG3には、LRU(Least Recently Used)データが記録されている。ここで、LRUデータは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータである。上述した各レジスタLREG、TREG、RREGは、書き換え可能である。アプリケーション毎に適切な設定に書き換えることにより、アプリケーションに依存せずに、レイテンシを常に小さくすることが可能である。
図2は、プロセッサP0−P2から見た各キャッシュメモリC0−C3の階層レベルを示している。図2に示したキャッシュメモリC0−C3の階層レベルは、図1に示した階層設定レジスタLREGに設定される。アクセス制御部ACNTは、階層設定レジスタLREGに設定された階層レベルに従って、各キャッシュメモリC0−C3間のアクセスを制御する。プロセッサP0から見たキャッシュメモリC0、C1、C2、C3の階層レベルは、それぞれレベル1、レベル2、レベル2、レベル3である。プロセッサP1から見たキャッシュメモリC0、C1、C2、C3の階層レベルは、それぞれレベル2、レベル1、レベル2、レベル3である。プロセッサP2から見たキャッシュメモリC0、C1、C2、C3の階層レベルは、それぞれレベル2、レベル2、レベル1、レベル3である。プロセッサP0−P2は、全てのキャッシュメモリC0−C3にアクセスできるので、キャッシュメモリの利用効率を良くすることができる。また、プロセッサP0−P2は、レベル2、レベル3のキャッシュメモリを備える。これにより、メインメモリMMまでアクセスする機会を減らすことができ、レイテンシを小さくできる。
図3は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインの転送条件を示している。図3に示した転送条件は、図1に示した転送設定レジスタTREGに設定される。アクセス制御部ACNTは、転送設定レジスタTREGに設定された条件に従って、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを制御する。キャッシュメモリC0−C2は、LRUデータの値が最後に使用したデータ(最新データ)を示しているときは、キャッシュラインを移動せずに保持する。LRUデータの値が最新データ以外を示しているときは、キャッシュラインを移動する(複製はしない)。図3に示した転送条件により、他のプロセッサが連続して使用する場合にキャッシュラインを移動し、適切なキャッシュメモリにキャッシュラインが登録される。この結果、レイテンシを小さくできる。キャッシュメモリC3は、LRUデータの値に拘わらず、キャッシュラインを複製する。
図4は、キャッシュラインを登録したときに、上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、メインメモリMMへ書き出すか、破棄するかの条件(以後、置換条件とも称する)を示している。図4に示した置換条件は、図1に示した置換設定レジスタRREGに設定される。アクセス制御部ACNTは、置換設定レジスタRREGに設定された条件に従って、上位階層のキャッシュメモリから溢れたキャッシュラインを制御する。キャッシュメモリC0、C1、C2、C3の置換条件は、それぞれ“破棄”、“移動”、“移動”、“破棄”である。このように、キャッシュメモリ毎にキャッシュラインの置換条件を設定できるので、アプリケーション毎に適切な設定に書き換えることにより、レイテンシを小さくすることが可能である。例えば、図4の置換条件では、あるプロセッサがキャッシュメモリC1、C2から溢れたキャッシュラインにアクセスする場合、そのキャッシュラインは他のキャッシュメモリに登録されているので、プロセッサはメインメモリMMにアクセスする必要がない。この結果、レイテンシを小さくできる。
図5は、LRUデータの更新手順を示している。図5に示したLRUデータの更新手順は、図1に示した転送設定レジスタTREGに設定される。以下では、一例として、下位階層のキャッシュメモリがキャッシュヒットした場合のLRUデータの更新手順を説明する。キャッシュヒットしたキャッシュラインに対応するLRUデータの値が“最新”の場合、キャッシュメモリC0、C1、C2は、LRUデータの値を“最新”から“2番目”に交換する(図5に示した“LRU最新”の列)。この結果、最後から2番目に使用されたキャッシュラインに対応するLRUデータの値は“最新”に設定され、最後に使用されたキャッシュラインに対応するLRUデータの値は“2番目”に設定される。従来の更新手順では、最後から2番目に使用されたキャッシュラインに対応するLRUデータの値を“2番目”に設定する。キャッシュヒットしたキャッシュラインに対応するLRUデータの値が“最新”でない場合、レベル1のキャッシュメモリにキャッシュラインを移動した後、LRUデータの値を“最新”に設定する(図5に示した“LRU最新以外”の列)。キャッシュメモリC3は、LRUデータの値に関わらず、LRUデータの値を“最新”に設定する。本実施形態では、図4に示した転送条件が機能するように、LRUデータを更新している。
また、キャッシュラインの置き換えが起こり、下位階層のキャッシュメモリに上位階層から溢れたキャッシュラインを登録する場合、キャッシュメモリC0−C2は、キャッシュラインが割り当てられるLRUデータの値を“最古”に設定する(図5の“リプレース時”の列)。キャッシュメモリC3は、キャッシュラインが割り当てられるLRUデータの値を変更しない(図5の“リプレース時”の列)。ここで、LRUデータの値の“最古”は、最初に使用されたキャッシュライン(未使用の時間がもっとも長いキャッシュライン)を意味する。
図6は、第1の実施形態のマルチプロセッサシステムの動作の一例を示している。アドレスX、Yは、図1のメインメモリMM内のアドレスを示している。アドレスXのデータはキャッシュメモリC0−C3に未登録で、アドレスYのデータは既にキャッシュメモリC3に登録されている場合を例にして、図6に示す動作を説明する。
まず、ステップS100では、プロセッサP0は、キャッシュメモリC0(レベル1)にアドレスXのリード要求を発行する。キャッシュメモリC0はキャッシュミスとなる。キャッシュメモリC0は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、階層設定レジスタLREGに設定された階層に従って、キャッシュメモリC1(レベル2)とキャッシュメモリC2(レベル2)にアドレスXのリード要求を発行する。キャッシュメモリC1、C2はキャッシュミスとなる。キャッシュメモリC1、C2は、アクセス制御部ACNTにキャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC3(レベル3)にアドレスXのリード要求を発行する。キャッシュメモリC3はキャッシュミスとなる。キャッシュメモリC3は、アクセス制御部ACNTにキャッシュミスを通知する。
アクセス制御部ACNTは、階層設定レジスタLREGにキャッシュメモリC3より下位階層のキャッシュメモリが設定されていないので、メインメモリMMにアドレスXのリード要求を発行する。アクセス制御部ACNTは、メインメモリMMからアドレスXを含むキャッシュラインサイズ分のデータを読み出す。アクセス制御部ACNTは、読み出したデータを含むキャッシュラインをキャッシュメモリC0、C3に転送する。キャッシュメモリC3は、プロセッサP0−P2で最下層の共有キャッシュメモリとして使用している。このため、メインメモリMMから読み出したキャッシュラインは、キャッシュメモリC3にも登録される。キャッシュメモリC0、C3は、アクセス制御部ACNTから送られたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC0、C3は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC0は、プロセッサP0にアドレスXのデータを返送する。
アクセス制御部ACNTは、キャッシュメモリC0、C3の置換設定レジスタRREGの置換条件が“破棄”になっているので、キャッシュメモリC0、C3から溢れたキャッシュラインを破棄する。但し、キャッシュメモリC0から溢れたキャッシュラインが“ダーティ”の場合は、アクセス制御部ACNTは、キャッシュメモリC0から溢れたキャッシュラインをキャッシュメモリC3に移動する。ここで、“ダーティ”は、上位階層のキャッシュメモリにあるデータのみ更新して、下位階層のキャッシュメモリあるいはメインメモリMMにあるデータを更新していない状態である。キャッシュメモリC3は、キャッシュメモリC0から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC3は、LRUデータの値が“最古”のキャッシュラインを追い出し、キャッシュメモリC0から送られてきたキャッシュラインを登録する。キャッシュメモリC3は、登録したキャッシュラインを“ダーティ”に設定する。キャッシュメモリC3から溢れたキャッシュラインが“ダーティ”のときは、アクセス制御部ACNTは、そのキャッシュラインをメインメモリMMに書き出す。
ステップS110では、プロセッサP1は、キャッシュメモリC1(レベル1)にアドレスXのリード要求を発行する。キャッシュメモリC1はキャッシュミスとなる。キャッシュメモリC1は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC0、C2(レベル2)にアドレスXのリード要求を発行する。キャッシュメモリC0はキャッシュヒットとなる。キャッシュメモリC0は、アクセス制御部ACNTに、キャッシュヒットを通知する。アクセス制御部ACNTは、キャッシュヒットしたキャッシュラインのLRUデータの値と転送設定レジスタTREGの転送条件を確認する。アクセス制御部ACNTは、LRUデータの値が“最新”を示しているので、キャッシュヒットしたキャッシュラインを移動せずに保持する。アクセス制御部ACNTは、アドレスXのデータをキャッシュメモリC0からキャッシュメモリC1を経由して、プロセッサP1に返送する。キャッシュメモリC0は、キャッシュヒットしたキャッシュラインのLRUデータの値を“2番目”に設定する。例えば、ステップS120の前に、プロセッサP0がアドレスXのリード要求を再度発行した場合、キャッシュメモリC0(レベル1)にアドレスXのデータが、まだ登録されているので、レイテンシを小さくできる。
ステップS120では、プロセッサP1は、キャッシュメモリC1(レベル1)にアドレスXのリード要求を再度発行する。キャッシュメモリC1はキャッシュミスとなる。キャッシュメモリC1は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC0、C2(レベル2)にアドレスXのリード要求を発行する。キャッシュメモリC0はキャッシュヒットとなる。キャッシュメモリC0は、アクセス制御部ACNTに、キャッシュヒットを通知する。アクセス制御部ACNTは、キャッシュヒットしたキャッシュラインのLRUデータの値と転送設定レジスタTREGの転送条件を確認する。アクセス制御部ACNTは、LRUデータの値が“2番目”を示しているので、キャッシュヒットしたキャッシュラインをキャッシュメモリC1(レベル1)に移動する。キャッシュメモリC1は、キャッシュメモリC0から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC1は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC1は、登録したキャッシュラインのLRUデータの値を“最新”に設定する。さらに、キャッシュメモリC1は、プロセッサP1にアドレスXのデータを返送する。
また、アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC1の置換条件が“移動”に設定されているので、キャッシュメモリC1から溢れたキャッシュラインをキャッシュメモリC0に移動する。キャッシュメモリC0は、キャッシュメモリC1から溢れたキャッシュラインを、キャッシュメモリC1に送ったキャッシュライン(キャッシュヒットしたキャッシュライン)があったところに登録する。キャッシュメモリC0は、登録したキャッシュラインのLRUデータの値を“最古”に設定する。このように、下位階層のキャッシュメモリC0でキャッシュヒットしたキャッシュラインをキャッシュメモリC1に移動しているので、キャッシュメモリC0とキャッシュメモリC1に同じデータが存在しない。このため、キャッシュメモリの利用効率を良くできる。また、上位階層のキャッシュメモリC1から溢れたキャッシュラインをメインメモリMMに書き戻さずに、下位階層のキャッシュメモリC0に移動している。このため、あるプロセッサがこのキャッシュラインに対応したアドレスにアクセス要求を発行した場合、キャッシュメモリC0にキャッシュラインが、まだ登録されているので、レイテンシを小さくできる。
ステップS130では、プロセッサP2は、キャッシュメモリC2(レベル1)にアドレスXのライト要求を発行する。キャッシュメモリC2はキャッシュミスとなる。キャッシュメモリC2は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC0、C1(レベル2)にアドレスXのライト要求を発行する。キャッシュメモリC1はキャッシュヒットとなる。キャッシュメモリC1は、アクセス制御部ACNTに、キャッシュヒットを通知する。アクセス制御部ACNTは、キャッシュヒットしたキャッシュラインのLRUデータの値と転送設定レジスタTREGの転送条件を確認する。アクセス制御部ACNTは、LRUデータの値が“最新”を示しているので、キャッシュヒットしたキャッシュラインを移動せずに保持する。アクセス制御部ACNTは、プロセッサP2から送られたデータをキャッシュメモリC1に送る。キャッシュメモリC1は、プロセッサP2からアクセス制御部ACNTを経由して送られてきたデータをキャッシュヒットしたキャッシュラインに書き込み、LRUデータの値を“2番目”に設定する。キャッシュメモリC1は、更新したキャッシュラインを“ダーティ”に設定する。または、キャッシュメモリC1は、更新したキャッシュラインを“ダーティ”と設定せずに、下位階層のキャッシュメモリC3、あるいはメインメモリMMまで、ライトスルーしてもよい。ここで、ライトスルーとは、プロセッサが上位階層のキャッシュメモリにデータを書き込む場合、上位階層のキャッシュメモリと同時に下位階層のメモリにもデータを書き込む方式である。
ステップS130では、プロセッサP2は、キャッシュメモリC1に直接データを書き込んでいる。このため、ステップS140の前に、プロセッサP1がアドレスXのアクセス要求を発行した場合、キャッシュメモリC1(レベル1)にアドレスXのデータが、まだ登録されているので、レイテンシを小さくできる。
ステップS140では、プロセッサP2はキャッシュメモリC2(レベル1)にアドレスXのライト要求を再度発行する。キャッシュメモリC2はキャッシュミスとなる。キャッシュメモリC2は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC0、C1(レベル2)にアドレスXのライト要求を発行する。キャッシュメモリC1はキャッシュヒットとなる。キャッシュメモリC1は、アクセス制御部ACNTに、キャッシュヒットを通知する。アクセス制御部ACNTは、キャッシュヒットしたキャッシュラインのLRUデータの値と転送設定レジスタTREGの転送条件を確認する。アクセス制御部ACNTは、LRUデータの値が“2番目”を示しているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリC2に移動する。キャッシュメモリC2は、キャッシュメモリC1から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC2は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC2は、登録したキャッシュラインにプロセッサP2から送られたデータを書き込む。キャッシュメモリC2は、書き込んだキャッシュラインを“ダーティ”にし、LRUデータの値を“最新”に設定する。これにより、プロセッサP2が、アドレスXのアクセス要求を再度発行した場合、キャッシュメモリC2(レベル1)にアドレスXのデータが登録されているので、レイテンシを小さくできる。
アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC2の置換条件が“移動”に設定されているので、キャッシュメモリC2から溢れたキャッシュラインをキャッシュメモリC1に移動する。キャッシュメモリC1は、キャッシュメモリC2から溢れたキャッシュラインを、キャッシュメモリC2に送ったキャッシュラインがあったところに登録し、LRUデータの値を“最古”に変更する。この場合も、ステップS120と同様に、上位階層のキャッシュメモリC2から溢れたキャッシュラインをメインメモリMMに書き戻さずに、下位階層のキャッシュメモリC1に移動している。このため、あるプロセッサがこのキャッシュラインに対応したアドレスにアクセス要求を発行した場合、キャッシュメモリC1にキャッシュラインが、まだ登録されているので、レイテンシを小さくできる。
ステップS150では、プロセッサP1は、キャッシュメモリC1(レベル1)にアドレスYのリード要求を発行する。キャッシュメモリC1はキャッシュミスとなる。キャッシュメモリC1は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC0、C2(レベル2)にアドレスYのリード要求を発行する。キャッシュメモリC0、C2はキャッシュミスとなる。キャッシュメモリC0、C2は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC3(レベル3)にアドレスYのリード要求を発行する。キャッシュメモリC3はキャッシュヒットとなる。キャッシュメモリC3は、アクセス制御部ACNTに、キャッシュヒットを通知する。アクセス制御部ACNTは、転送設定レジスタTREGのキャッシュメモリC3の転送条件が“複製”に設定されているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリC1に複製する。キャッシュメモリC1は、キャッシュメモリC3から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC1は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC1は、LRUデータの値を“最新”に設定する。さらに、キャッシュメモリC1は、プロセッサP1にアドレスYのデータを返送する。また、アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC1の置換条件が“移動”に設定されているので、キャッシュメモリC1から溢れたキャッシュラインをレベルが1つ下のキャッシュメモリC0に移動する。図2に示したように、レベルが1つ下のキャッシュメモリが複数ある場合、キャッシュラインの移動先になるキャッシュメモリは、ある判定基準を元に選択される。ステップS150では、キャッシュラインの移動先になるキャッシュメモリは、キャッシュメモリC0とキャッシュメモリC2からランダムに選択されている。その結果、キャッシュメモリC0が選択されている。
キャッシュメモリC0は、キャッシュメモリC1から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC0は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC0は、LRUデータの値を“最古”に設定する。アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC0の置換条件が“破棄”に設定されているので、キャッシュメモリC0から溢れたキャッシュラインを破棄する。置換条件を“破棄”に設定すると、下位階層キャッシュメモリへのキャッシュラインの移動が発生しないので、バス占有率を軽減できる。但し、破棄対象のキャッシュラインが“ダーティ”のときは、アクセス制御部ACNTは、破棄対象のキャッシュラインをキャッシュメモリC3に移動する。キャッシュメモリC3は、キャッシュメモリC0から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC3は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC3は、登録したキャッシュラインを“ダーティ”に設定する。アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC3の置換条件が“破棄”に設定されているので、キャッシュメモリC3から溢れたキャッシュラインを破棄する。このとき、破棄対象のキャッシュラインが“ダーティ”のときは、アクセス制御部ACNTは、破棄対象のキャッシュラインをメインメモリMMに書き出す。
以上、第1の実施形態では、階層設定レジスタLREGに設定された階層レベルに従って、プロセッサP0−P2は全てのキャッシュメモリC0−C3にアクセスできるので、キャッシュメモリの利用効率を良くすることができる。さらに、レジスタLREG、TREG、RREGに設定する条件をアプリケーション毎に適切な条件に設定できるので、アプリケーションに依存せずに、レイテンシを常に小さくすることが可能である。この結果、キャッシュメモリの利用効率を良くしたまま、レイテンシを小さくすることができる。
図7は、本発明の第2の実施形態を示している。第1の実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態のマルチプロセッサシステムでは、第1の実施形態のキャッシュメモリC3が省かれ、プロセッサP3と階層設定部LCNTが追加されている。また、キャッシュメモリC1は、プロセッサP1のアプリケーションの特性からキャッシュメモリ容量が小さくてもよいとの前提で、キャッシュメモリC1AとキャッシュメモリC1Bとに分けて使用されている。キャッシュメモリC1Bは、他のプロセッサに解放されている。
プロセッサP3は、アクセス制御部ACNTに直接接続されている。階層設定部LCNTは、アクセス制御部ACNTと階層設定レジスタLREGに接続されている。階層設定部LCNTは、階層設定レジスタLREGに階層レベルを設定する。この実施形態では、階層設定部LCNTは、プロセッサP0のアクセス要求に対して、キャッシュメモリC2でキャッシュヒットした場合に図9の階層レベルを階層設定レジスタLREGに設定し、キャッシュメモリC1Bでキャッシュヒットした場合に図8の階層レベルを階層設定レジスタLREGに設定する。
図8は、プロセッサP0−P3から見た各キャッシュメモリC0、C1A、C1B、C2の階層レベルの一例を示している。この例では、プロセッサP0から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれレベル1、未使用、レベル2、レベル3である。プロセッサP1から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれ未使用、レベル1、未使用、未使用である。プロセッサP2から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれ未使用、未使用、未使用、レベル1である。プロセッサP3から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれ未使用、未使用、未使用、レベル1である。未使用のキャッシュメモリは、階層設定レジスタLREGに、未使用のフラグが設定される。
図9は、プロセッサP0−P3から見た各キャッシュメモリC0、C1A、C1B、C2の階層レベルの別の例を示している。この例では、プロセッサP0から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれレベル1、未使用、レベル3、レベル2である。プロセッサP1から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれ未使用、レベル1、未使用、未使用である。プロセッサP2から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれ未使用、未使用、未使用、レベル1である。プロセッサP3から見たキャッシュメモリC0、C1A、C1B、C2の階層レベルは、それぞれ未使用、未使用、レベル1、未使用である。但し、プロセッサP3は、キャッシュメモリC1Bがキャッシュミスした場合、キャッシュメモリC1Bにキャッシュラインの登録をしないで、メインメモリMMにアクセスする。つまり、プロセッサP3は、キャッシュメモリC1Bがキャッシュヒットした場合のみ、キャッシュメモリC1Bを利用する。
図10は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインの転送条件を示している。図10に示した転送条件は、図7に示した転送設定レジスタTREGに設定される。キャッシュメモリC0、C1Aは、下位階層にならないので転送条件は設定されない。キャッシュメモリC1Bは、キャッシュヒットしたキャッシュラインを移動する。キャッシュメモリC2はキャッシュヒットしたキャッシュラインを複製する。
図11は、キャッシュラインを登録したときに、上位階層のキャッシュメモリから溢れたキャッシュラインの置換条件を示している。図11に示した条件は、図7に示した置換設定レジスタRREGに設定される。キャッシュメモリC0、C1A、C1B、C2の置換条件は、それぞれ“移動”、“破棄”、“メインメモリMMにライト”、“破棄”である。ここで、“メインメモリMMにライト”は、メインメモリMMへデータを書き戻すことである。
図12は、第2の実施形態のマルチプロッセッサシステムの動作の一例を示している。この例では、アドレスXのデータとアドレスYのデータは、キャッシュメモリC0、C1A、C1B、C2に未登録である。また、ステップS200の前のキャッシュメモリC0、C1A、C1B、C2の階層レベルは、図8に示した階層レベルが、図7に示した階層設定レジスタLREGに設定されている。新しいデータを格納する場所を確保するために既存のデータを追い出す方法として、図7には図示されていないが、従来のキャッシュメモリシステムで利用されているLRUデータの値を使用している。このような場合を例にして、動作を説明する。
まず、ステップS200では、プロセッサP2は、キャッシュメモリC2(レベル1)にアドレスXのライト要求を発行する。キャッシュメモリC2はキャッシュミスとなる。キャッシュメモリC2は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC2より下位階層のキャッシュメモリが階層設定レジスタLREGに設定されていないので、メインメモリMMにアドレスXを含むキャッシュラインのリード要求を発行する。キャッシュメモリC2は、アクセス制御部ACNTを経由して、メインメモリMMから読み出したキャッシュラインを登録する。キャッシュメモリC2は、プロセッサP2から送られたデータを登録したキャッシュラインに書き込む。そして、キャッシュメモリC2は、書き込んだキャッシュラインを“ダーティ”に設定する。
ステップS210では、プロセッサP0は、キャッシュメモリC0(レベル1)にアドレスXのリード要求を発行する。キャッシュメモリC0はキャッシュミスとなる。キャッシュメモリC0は、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC1B(レベル2)にアドレスXのリード要求を発行する。キャッシュメモリC1Bはキャッシュミスとなる。キャッシュメモリC1Bは、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC2(レベル3)にアドレスXのリード要求を発行する。キャッシュメモリC2はキャッシュヒットとなる。キャッシュメモリC2は、アクセス制御部ACNTに、キャッシュヒットを通知する。アクセス制御部ACNTは、転送設定レジスタTREGのキャッシュメモリC2の条件が“複製”に設定されているので、キャッシュヒットしたキャッシュラインを最上位階層のキャッシュメモリC0に複製する。キャッシュメモリC0は、キャッシュメモリC2から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC0は、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。キャッシュメモリC0は、LRUデータの値を“最新”に設定する。そして、キャッシュメモリC0は、アドレスXのデータをプロセッサP0に返送する。アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC0の置換条件が“移動”に設定されているので、キャッシュメモリC0から溢れた“最古”のキャッシュラインをレベルが1つ下のキャッシュメモリC1Bに移動する。キャッシュメモリC1Bは、キャッシュメモリC0から送られてきたキャッシュラインが割り当てられるLRUデータの値を確認する。キャッシュメモリC1Bは、LRUデータの値が“最古”のキャッシュラインを追い出し、送られてきたキャッシュラインを登録する。アクセス制御部ACNTは、置換設定レジスタRREGのキャッシュメモリC1Bの置換条件が“メインメモリMMにライト”に設定されているので、キャッシュメモリC1Bから溢れたキャッシュラインが“ダーティ”であるのを確認して、メインメモリMMにキャッシュラインのデータを書き出す。“ダーティ”でない場合は、メインメモリMMに書き出さずに破棄する。また、アクセス制御部ACNTは、階層設定部LCNTに、キャッシュメモリC2がキャッシュヒットしたことを通知する。階層設定部LCNTは、階層設定レジスタLREGの設定を図8の階層レベルから図9の階層レベルに変更する。この動作により、例えば、あるアプリケーションは、キャッシュメモリC1B(またはキャッシュメモリC2)にあるデータを使い始めたら、連続してキャッシュメモリC1B(またはキャッシュメモリC2)にあるデータにアクセスする。この場合、このアプリケーションをプロセッサP0で動作させれば、階層設定部LCNTは、下位階層でのキャッシュヒットに応じて、キャッシュメモリC1B、C2の階層レベルを変更するので、レイテンシを小さくできる。
ステップS220では、プロセッサP3は、キャッシュメモリC1B(レベル1)にアドレスYのリード要求を発行する。キャッシュメモリC1Bはキャッシュミスとなる。キャッシュメモリC1Bは、アクセス制御部ACNTに、キャッシュミスを通知する。アクセス制御部ACNTは、キャッシュメモリC1Bより下位階層のキャッシュメモリが階層設定レジスタLREGに設定されていないので、メインメモリMMにアドレスYのリード要求を発行する。アクセス制御部ACNTは、メインメモリMMから読み出したデータをキャッシュメモリC1Bに登録せずに、プロセッサP3に読み出したデータを返送する。このため、キャッシュメモリC1BにあるプロセッサP0で必要なデータは、プロセッサP3のアクセスによって追い出されない。この結果、プロセッサP0がキャッシュメモリC1Bに登録されているデータへ再度アクセスした場合、キャッシュメモリC1Bはキャッシュミスが減るため、レイテンシを小さくできる。また、キャッシュメモリC1Bに登録してあるデータをプロセッサP3が使用する場合、プロセッサP3は、キャッシュメモリC1Bにアクセスできるので、メインメモリMMにアクセスするより、レイテンシを小さくできる。
以上、第2の実施形態においても、上述した第1の実施形態と同様の効果を得ることができる。さらに、この実施形態では、階層設定部LCNTは、下位階層でのキャッシュヒットに応じて、キャッシュメモリC1B、C2の階層レベルを変更するので、同一キャッシュメモリに連続してアクセスする場合に、レイテンシを小さくできる。
なお、上述した第1の実施形態では、図6のステップS110において、下位階層のキャッシュメモリC0でキャッシュヒットしたキャッシュラインを保持したまま、アクセス要求したプロセッサP1がデータをアクセスする例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、アクセス制御部ACNTは、キャッシュメモリC1を経由しないで、プロセッサP1がキャッシュメモリC0にあるデータをアクセスするようにしてもよい。これにより、キャッシュメモリC1を経由する分のデータ遅延時間がなくなり、レイテンシを小さくできる。
上述した第1の実施形態では、キャッシュヒットしたキャッシュラインの転送条件にLRUデータの値を用いる例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、LRUデータの値を用いずに転送条件を決める方式にすることで、ハードウェアの構成を簡単にできる。この場合にも、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能なので、レイテンシを小さくできる。また、LRUデータの代わりに、プロセッサからキャッシュラインへアクセスされた記録であるアクセス情報として、別のアクセス情報を用いて転送条件を決める方式でもよい。例えば、キャッシュヒットしたキャッシュラインのアクセス回数を各キャッシュメモリC0−C3のタグTG0−TG3に記録して、タグTG0−TG3に記録したアクセス回数を転送条件に用いる。すなわち、アクセス制御部ACNTは、転送設定レジスタTREGに設定された条件に加えて、タグTG0−TG3に保持された情報に従って動作する。この場合にも、アプリケーション毎に最適なレイテンシになるような転送条件の設定が可能なので、レイテンシを小さくできる。
上述した第1の実施形態では、上位階層のキャッシュメモリから溢れたキャッシュラインを制御する例について述べた。本発明は、かかる実施形態に限定されるものではない。例えば、上位階層から溢れたキャッシュラインの制御を“移動”のみにして、置換設定レジスタRREGを用いずに、キャッシュラインを他のキャッシュメモリに移動する方式にすることで、レジスタ数を削減できる。この場合にも、アクセス制御部ACNTは、上位階層から溢れたキャッシュラインを他のキャッシュメモリに移動するので、メインメモリMMまでアクセスする機会を減らすことができ、レイテンシを小さくできる。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
複数のプロセッサと、
プロセッサ毎に異なる階層レベルを有し、前記プロセッサに共有された複数のキャッシュメモリと、
前記キャッシュメモリの階層レベルを保持する書き換え可能な階層設定レジスタと、
前記階層設定レジスタに設定された階層レベルに従って、各キャッシュメモリ間のアクセスを制御するアクセス制御部とを備えていることを特徴とするマルチプロセッサシステム。
(付記2)
付記1記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層設定レジスタに保持されたキャッシュメモリの階層レベルを書き換える設定部を備えていることを特徴とするマルチプロセッサシステム。
(付記3)
付記1記載のマルチプロセッサシステムにおいて、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件が設定される書き換え可能な転送設定レジスタを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
(付記4)
付記3記載のマルチプロセッサシステムにおいて、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録を保持するタグを備え、
前記アクセス制御部は、前記転送設定レジスタに設定された条件に加えて、前記タグに保持された情報に従って動作することを特徴とするマルチプロセッサシステム。
(付記5)
付記4記載のマルチプロセッサシステムにおいて、
前記タグは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるLRU(Least Recently Used)データを保持することを特徴とするマルチプロセッサシステム。
(付記6)
付記3記載のマルチプロセッサシステムにおいて、
前記アクセス制御部は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステム。
(付記7)
付記3記載のマルチプロセッサシステムにおいて、
前記プロセッサが共有するメインメモリと、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件が設定される書き換え可能な置換設定レジスタとを備え、
前記アクセス制御部は、前記置換設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
(付記8)
付記3記載のマルチプロセッサシステムにおいて、
前記転送設定レジスタに“保持”の条件が設定されているときに、
前記アクセス制御部は、前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステム。
(付記9)
複数のプロセッサと、前記プロセッサに共有された複数のキャッシュメモリとを備えたマルチプロセッサシステムの動作方法であって、
前記キャッシュメモリを前記プロセッサ毎で異なる階層レベルに設定し、前記階層レベルは書き換え可能であり、
前記キャッシュメモリの階層レベルに従って各キャッシュメモリ間のアクセスを制御することを特徴とするマルチプロセッサシステムの動作方法。
(付記10)
付記9記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層レベルを書き換えることを特徴とするマルチプロセッサシステムの動作方法。
(付記11)
付記9記載のマルチプロセッサシステムの動作方法において、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件である転送条件を設定し、前記転送条件は書き換え可能であり、
前記転送条件に従ってキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
(付記12)
付記11記載のマルチプロセッサシステムの動作方法において、
前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録であるアクセス情報を保持し、
前記転送条件に加えて、前記アクセス情報に従ってキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
(付記13)
付記12記載のマルチプロセッサシステムの動作方法において、
前記アクセス情報として、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるLRU(Least Recently Used)データを用いることを特徴とするマルチプロセッサシステムの動作方法。
(付記14)
付記11記載のマルチプロセッサシステムの動作方法において、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステムの動作方法。
(付記15)
付記11記載のマルチプロセッサシステムの動作方法において、
前記プロセッサは、メインメモリを共有し、
下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件である置換条件を設定し、前記置換条件は書き換え可能であり、
前記置換条件に従って、上位階層のキャッシュメモリから溢れたキャッシュラインを制御することを特徴とするマルチプロセッサシステムの動作方法。
(付記16)
付記11記載のマルチプロセッサシステムの動作方法において、
前記転送条件が“保持”の条件のときに、
前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステムの動作方法。
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
本発明は、キャッシュメモリを持つマルチプロセッサシステムに適用できる。
本発明の第1の実施形態を示すブロック図である。 図1に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルを示す説明図である。 図1に示した転送設定レジスタに設定される下位階層でキャッシュヒットしたキャッシュラインの転送条件を示す説明図である。 図1に示した置換設定レジスタに設定されるキャッシュライン登録時のキャッシュラインの置換条件を示す説明図である。 図1に示した転送設定レジスタに設定されるLRUデータの更新手順を示す説明図である。 第1の実施形態のマルチプロセッサシステムの動作の一例を示すフローチャートである。 本発明の第2の実施形態を示すブロック図である。 図7に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルの一例を示す説明図である。 図7に示した階層設定レジスタに設定される各プロセッサから見たキャッシュメモリの階層レベルの別の例を示す説明図である。 図7に示した転送設定レジスタに設定される下位階層でキャッシュヒットしたキャッシュラインの転送条件を示す説明図である。 図7に示した置換設定レジスタに設定されるキャッシュライン登録時のキャッシュラインの置換条件を示す説明図である。 第2の実施形態のマルチプロセッサシステムの動作の一例を示すフローチャートである。

Claims (10)

  1. 複数のプロセッサと、
    プロセッサ毎に異なる階層レベルを有し、前記プロセッサに共有された複数のキャッシュメモリと、
    前記キャッシュメモリの階層レベルを保持する書き換え可能な階層設定レジスタと、
    前記階層設定レジスタに設定された階層レベルに従って、各キャッシュメモリ間のアクセスを制御するアクセス制御部とを備えていることを特徴とするマルチプロセッサシステム。
  2. 請求項1記載のマルチプロセッサシステムにおいて、
    前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層設定レジスタに保持されたキャッシュメモリの階層レベルを書き換える設定部を備えていることを特徴とするマルチプロセッサシステム。
  3. 請求項1記載のマルチプロセッサシステムにおいて、
    前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュメモリへ移動するか、複製するか、あるいは保持するかの条件が設定される書き換え可能な転送設定レジスタを備え、
    前記アクセス制御部は、前記転送設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
  4. 請求項3記載のマルチプロセッサシステムにおいて、
    前記プロセッサからキャッシュメモリのキャッシュラインへアクセスされた記録を保持するタグを備え、
    前記アクセス制御部は、前記転送設定レジスタに設定された条件に加えて、前記タグに保持された情報に従って動作することを特徴とするマルチプロセッサシステム。
  5. 請求項4記載のマルチプロセッサシステムにおいて、
    前記タグは、未使用の時間がもっとも長いキャッシュラインを選択するためのデータであるLRU(Least Recently Used)データを保持することを特徴とするマルチプロセッサシステム。
  6. 請求項3記載のマルチプロセッサシステムにおいて、
    前記アクセス制御部は、下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動することを特徴とするマルチプロセッサシステム。
  7. 請求項3記載のマルチプロセッサシステムにおいて、
    前記プロセッサが共有するメインメモリと、
    下位階層のキャッシュメモリでキャッシュヒットしたキャッシュラインを上位階層のキャッシュミスしたキャッシュメモリへ移動したときに、その上位階層のキャッシュメモリから溢れたキャッシュラインを他のキャッシュメモリへ移動するか、前記メインメモリへ書き出すか、破棄するかの条件が設定される書き換え可能な置換設定レジスタとを備え、
    前記アクセス制御部は、前記置換設定レジスタに設定された条件に従って動作することを特徴とするマルチプロセッサシステム。
  8. 請求項3記載のマルチプロセッサシステムにおいて、
    前記転送設定レジスタに“保持”の条件が設定されているときに、
    前記アクセス制御部は、前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、キャッシュヒットしたキャッシュラインを保持し、キャッシュヒットした下位階層のキャッシュメモリに対して直接アクセスすることを特徴とするマルチプロセッサシステム。
  9. 複数のプロセッサと、前記プロセッサに共有された複数のキャッシュメモリとを備えたマルチプロセッサシステムの動作方法であって、
    前記キャッシュメモリを前記プロセッサ毎で異なる階層レベルに設定し、前記階層レベルは書き換え可能であり、
    前記キャッシュメモリの階層レベルに従って各キャッシュメモリ間のアクセスを制御することを特徴とするマルチプロセッサシステムの動作方法。
  10. 請求項9記載のマルチプロセッサシステムの動作方法において、
    前記各プロセッサからキャッシュメモリへのアクセス要求に対して、上位階層のキャッシュメモリがキャッシュミスをし、下位階層のキャッシュメモリがキャッシュヒットした場合に、前記階層レベルを書き換えることを特徴とするマルチプロセッサシステムの動作方法。
JP2008502629A 2006-03-03 2006-03-03 マルチプロセッサシステム及びマルチプロセッサシステムの動作方法 Expired - Fee Related JP4295814B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/304146 WO2007099643A1 (ja) 2006-03-03 2006-03-03 マルチプロセッサシステム及びマルチプロセッサシステムの動作方法

Publications (2)

Publication Number Publication Date
JP4295814B2 true JP4295814B2 (ja) 2009-07-15
JPWO2007099643A1 JPWO2007099643A1 (ja) 2009-07-16

Family

ID=38458768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008502629A Expired - Fee Related JP4295814B2 (ja) 2006-03-03 2006-03-03 マルチプロセッサシステム及びマルチプロセッサシステムの動作方法

Country Status (3)

Country Link
US (1) US8549227B2 (ja)
JP (1) JP4295814B2 (ja)
WO (1) WO2007099643A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2459047B (en) * 2006-11-30 2011-08-17 Fujitsu Ltd Cache system
JP5832284B2 (ja) * 2008-05-30 2015-12-16 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分散型レベル1キャッシュシステム及び集中型レベル2キャッシュを有するシェーダ複合体
US8117393B2 (en) * 2008-11-13 2012-02-14 Oracle America, Inc. Selectively performing lookups for cache lines
CN103761153B (zh) * 2012-05-02 2018-02-27 北京奇虎科技有限公司 压缩工具资源调用方法及装置
US9396030B2 (en) * 2013-03-13 2016-07-19 Samsung Electronics Co., Ltd. Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
US10437479B2 (en) * 2014-08-19 2019-10-08 Samsung Electronics Co., Ltd. Unified addressing and hierarchical heterogeneous storage and memory
JP7100237B2 (ja) 2017-09-11 2022-07-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719568A (en) * 1982-12-30 1988-01-12 International Business Machines Corporation Hierarchical memory system including separate cache memories for storing data and instructions
JP2000276381A (ja) * 1999-03-23 2000-10-06 Toshiba Corp タスク実行時間の見積もり方法
JP2001297035A (ja) * 2000-04-11 2001-10-26 Hitachi Ltd 情報処理装置
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置
JP2002251313A (ja) * 2001-02-23 2002-09-06 Fujitsu Ltd キャッシュサーバ及び分散キャッシュサーバシステム
JP4299555B2 (ja) * 2002-03-15 2009-07-22 富士通株式会社 キャッシュ制御プログラム
US6950904B2 (en) * 2002-06-25 2005-09-27 Intel Corporation Cache way replacement technique
US7386687B2 (en) * 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core

Also Published As

Publication number Publication date
US20080313404A1 (en) 2008-12-18
JPWO2007099643A1 (ja) 2009-07-16
WO2007099643A1 (ja) 2007-09-07
US8549227B2 (en) 2013-10-01

Similar Documents

Publication Publication Date Title
US7698508B2 (en) System and method for reducing unnecessary cache operations
US7076613B2 (en) Cache line pre-load and pre-own based on cache coherence speculation
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
TWI410796B (zh) 來自窺探過濾器之過期無效異動的減少
US7711902B2 (en) Area effective cache with pseudo associative memory
US8037252B2 (en) Method for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor
US8117397B2 (en) Victim cache line selection
US8489819B2 (en) Victim cache lateral castout targeting
JP3898984B2 (ja) 不均等メモリ・アクセス(numa)コンピュータ・システム
US20070073974A1 (en) Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US20080215820A1 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US20030009623A1 (en) Non-uniform memory access (NUMA) data processing system having remote memory cache incorporated within system memory
US20100235576A1 (en) Handling Castout Cache Lines In A Victim Cache
US20060184743A1 (en) Cache memory direct intervention
US20100153647A1 (en) Cache-To-Cache Cast-In
JP4295814B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムの動作方法
US20110173393A1 (en) Cache memory, memory system, and control method therefor
JP2000250813A (ja) I/oキャッシュ・メモリにおけるデータ管理方法
US6915396B2 (en) Fast priority determination circuit with rotating priority
US8095739B2 (en) Barriers processing in a multiprocessor system having a weakly ordered storage architecture without broadcast of a synchronizing operation
US20020169935A1 (en) System of and method for memory arbitration using multiple queues
JPH10254772A (ja) キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
EP0817079B1 (en) Skip-level write-through in a multi-level memory of a computer system

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

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

Free format text: PAYMENT UNTIL: 20120417

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130417

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140417

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees