JP2000267935A - キヤッシュメモリ装置 - Google Patents
キヤッシュメモリ装置Info
- Publication number
- JP2000267935A JP2000267935A JP11073302A JP7330299A JP2000267935A JP 2000267935 A JP2000267935 A JP 2000267935A JP 11073302 A JP11073302 A JP 11073302A JP 7330299 A JP7330299 A JP 7330299A JP 2000267935 A JP2000267935 A JP 2000267935A
- Authority
- JP
- Japan
- Prior art keywords
- block
- sub
- cache
- data
- updated
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】プロセッサとキャッシュの組が複数接続され、
各プロセッサから共通にアクセス可能な共有メモリを有
する計算機システムにおいて、各キャッシュにおける空
間的局所性の有効利用とfalse sharing 回避の両者を同
時に満たすようにする。 【解決手段】キャッシュメモリのブロックをより小さな
サブブロックに分割し、各サブブロック毎に状態情報を
持たせ、複数キャッシュ間で共有しているデータに関す
る書き込み操作が発生したとき、サブブロックの状態情
報にもとづいて、書き込みの発生したブロックのみ無効
化する。
各プロセッサから共通にアクセス可能な共有メモリを有
する計算機システムにおいて、各キャッシュにおける空
間的局所性の有効利用とfalse sharing 回避の両者を同
時に満たすようにする。 【解決手段】キャッシュメモリのブロックをより小さな
サブブロックに分割し、各サブブロック毎に状態情報を
持たせ、複数キャッシュ間で共有しているデータに関す
る書き込み操作が発生したとき、サブブロックの状態情
報にもとづいて、書き込みの発生したブロックのみ無効
化する。
Description
【0001】
【発明の属する技術分野】本発明は、プロセッサとキャ
ッシュの組が複数接続され、各プロセッサから共通にア
クセス可能な共有メモリを有する共有メモリ型並列計算
機システムにおけるキャッシュメモリ装置に関するもの
である。
ッシュの組が複数接続され、各プロセッサから共通にア
クセス可能な共有メモリを有する共有メモリ型並列計算
機システムにおけるキャッシュメモリ装置に関するもの
である。
【0002】
【従来の技術】現在の計算機は、図18に示すように、
演算を行なう演算装置(プロセッサ)と、データの記憶
を行なう主記憶(メモリ)と入出力装置から構成され
る。計算の主な部分は、主記憶からデータを取り出し、
演算装置で演算し、その結果をまた主記憶に書き戻すと
いう動作を繰り返すことによって行なわれる。そのた
め、計算の高速化のためには、演算装置と主記憶との間
を高速化する必要がある。
演算を行なう演算装置(プロセッサ)と、データの記憶
を行なう主記憶(メモリ)と入出力装置から構成され
る。計算の主な部分は、主記憶からデータを取り出し、
演算装置で演算し、その結果をまた主記憶に書き戻すと
いう動作を繰り返すことによって行なわれる。そのた
め、計算の高速化のためには、演算装置と主記憶との間
を高速化する必要がある。
【0003】キャッシュは、プロセッサからみたメモリ
レイテンシを短縮するための手段の一つである。図19
に示すように、キャッシュメモリと呼ばれる高速なメモ
リをプロセッサとメモリの間におき、アクセスしやすい
データのコピーをキャッシュに保持しておく。プロセッ
サが要求するデータがキャッシュ内にあれば、メモリに
直接アクセスするよりも高速なアクセスが実現できる。
レイテンシを短縮するための手段の一つである。図19
に示すように、キャッシュメモリと呼ばれる高速なメモ
リをプロセッサとメモリの間におき、アクセスしやすい
データのコピーをキャッシュに保持しておく。プロセッ
サが要求するデータがキャッシュ内にあれば、メモリに
直接アクセスするよりも高速なアクセスが実現できる。
【0004】一般にキャッシュには、一度アクセスされ
たブロックを保持することが多い。ブロックとは、デー
タをある程度のまとまりに固めたものである。これは、
プログラムの時間的・空間的局所性という性質、すなわ
ち、一度アクセスされたデータは再びアクセスされやす
く、その近傍も近い将来アクセスされるであろうことが
期待される性質を利用したものである。
たブロックを保持することが多い。ブロックとは、デー
タをある程度のまとまりに固めたものである。これは、
プログラムの時間的・空間的局所性という性質、すなわ
ち、一度アクセスされたデータは再びアクセスされやす
く、その近傍も近い将来アクセスされるであろうことが
期待される性質を利用したものである。
【0005】キャッシュを設計する際に、このブロック
をどのくらいの大きさにするかを決定するのは重要な問
題である。ブロックが小さ過ぎると、先にあげた空間的
局所性を有効に利用できず、キャッシュヒット率が小さ
くなってしまう。一方で大きくし過ぎると、利用されな
い無駄なデータがキャッシュメモリを占有してしまった
り、データの転送に時間がかかるという問題が発生す
る。
をどのくらいの大きさにするかを決定するのは重要な問
題である。ブロックが小さ過ぎると、先にあげた空間的
局所性を有効に利用できず、キャッシュヒット率が小さ
くなってしまう。一方で大きくし過ぎると、利用されな
い無駄なデータがキャッシュメモリを占有してしまった
り、データの転送に時間がかかるという問題が発生す
る。
【0006】この、ブロックサイズを大きくしたいがデ
ータ転送量が増えてしまうという問題を解決するために
考えられたのがSector Cacheと呼ばれる方式である。Se
ctorCacheとは、ブロックを小さなsub sectorに分割
し、データの書き戻しの際には、このsub sector単位で
書き戻すという方式である。図20にsub sector方式の
例を示す。この方式を用いると、書き戻しの際のデータ
転送量を削減することが可能になる。
ータ転送量が増えてしまうという問題を解決するために
考えられたのがSector Cacheと呼ばれる方式である。Se
ctorCacheとは、ブロックを小さなsub sectorに分割
し、データの書き戻しの際には、このsub sector単位で
書き戻すという方式である。図20にsub sector方式の
例を示す。この方式を用いると、書き戻しの際のデータ
転送量を削減することが可能になる。
【0007】現在では、デバイスの性能が上がり、より
多くの高速なキャッシュメモリを利用することができ、
高速なプロセッサ(キャッシュメモリ)−メモリ間転送
が可能なため、ブロックサイズは大きくし、より空間的
局所性を利用する方向へと進んでいる。
多くの高速なキャッシュメモリを利用することができ、
高速なプロセッサ(キャッシュメモリ)−メモリ間転送
が可能なため、ブロックサイズは大きくし、より空間的
局所性を利用する方向へと進んでいる。
【0008】単一プロセッサシステムの場合は、コスト
や転送速度のみを考慮するだけでよかったが、複数のプ
ロセッサが接続する並列システムで大きなブロックサイ
ズのキャッシュを用いると、false sharing という問題
が発生する。
や転送速度のみを考慮するだけでよかったが、複数のプ
ロセッサが接続する並列システムで大きなブロックサイ
ズのキャッシュを用いると、false sharing という問題
が発生する。
【0009】いま、write invalidateのプロトコルを持
つ、図21に示す並列システムを考える。あるプロセッ
サAがアドレスadr0に書き込みを行なったとする。プロ
セッサAはadr0を含むブロックをinvalidateし、他のキ
ャッシュが保持しているコピーを無効化する。一方、違
うプロセッサBは同じブロックに属するアドレスadr1に
書き込みを行なおうとする。すると、プロセッサBもA
と同様にadr1を含むブロック(=adr0を含むブロック)
を無効化しようとする。これが繰り返し行なわれると、
ブロックに対するinvalidateやwriteback が頻発し、メ
モリ性能が低下する。
つ、図21に示す並列システムを考える。あるプロセッ
サAがアドレスadr0に書き込みを行なったとする。プロ
セッサAはadr0を含むブロックをinvalidateし、他のキ
ャッシュが保持しているコピーを無効化する。一方、違
うプロセッサBは同じブロックに属するアドレスadr1に
書き込みを行なおうとする。すると、プロセッサBもA
と同様にadr1を含むブロック(=adr0を含むブロック)
を無効化しようとする。これが繰り返し行なわれると、
ブロックに対するinvalidateやwriteback が頻発し、メ
モリ性能が低下する。
【0010】ここでの問題は、プロセッサA、Bは違う
アドレス(adr0、adr1)に書き込みを行なっているの
に、ブロックとしては同一ブロックに属してしまうた
め、見かけ上同じアドレスに対してお互いに書き込むの
と同じ動作になってしまうことである。この、実際には
共有する必要がないのに、ブロックとしてまとめられた
ため、見かけ上共有したような振る舞いになってしまう
ことをfalse sharing と呼ぶ。同じアドレスに書き込む
場合はプログラムの仕様上性能が低下するのもやむを得
ないが、違うアドレスに対して同じことが発生するのは
問題である。
アドレス(adr0、adr1)に書き込みを行なっているの
に、ブロックとしては同一ブロックに属してしまうた
め、見かけ上同じアドレスに対してお互いに書き込むの
と同じ動作になってしまうことである。この、実際には
共有する必要がないのに、ブロックとしてまとめられた
ため、見かけ上共有したような振る舞いになってしまう
ことをfalse sharing と呼ぶ。同じアドレスに書き込む
場合はプログラムの仕様上性能が低下するのもやむを得
ないが、違うアドレスに対して同じことが発生するのは
問題である。
【0011】ブロックサイズが大きくなってくると、こ
のfalse sharing の可能性が高くなり、システムの性能
低下の原因となる可能性がある。したがって、従来の並
列計算機システムではブロックサイズをあまり大きくす
ることができなかった。
のfalse sharing の可能性が高くなり、システムの性能
低下の原因となる可能性がある。したがって、従来の並
列計算機システムではブロックサイズをあまり大きくす
ることができなかった。
【0012】そのため、プリフェッチなどの技術を用い
て空間的局所性を利用する方法も考えられた。これは、
キャッシュのブロックサイズをfalse sharing が起こら
ない程度に小さくしたまま、一度の読み出しアクセスで
複数の連続したブロックを読み出すという方法である。
この方法を用いると、false sharing は回避でき、空間
的局所性も効率よく利用することができる。
て空間的局所性を利用する方法も考えられた。これは、
キャッシュのブロックサイズをfalse sharing が起こら
ない程度に小さくしたまま、一度の読み出しアクセスで
複数の連続したブロックを読み出すという方法である。
この方法を用いると、false sharing は回避でき、空間
的局所性も効率よく利用することができる。
【0013】しかし、現在のシステムではプロセッサに
付随するキャッシュのサイズは大きくなる一方であり、
これからもその傾向は続いていくものと考えられてい
る。この状態でブロックサイズを小さいままキャッシュ
を管理しようとすると、キャッシュ内に存在するブロッ
クの数が多くなる。すると、各キャッシュデータに付随
するキャッシュタグ(このキャッシュデータがどのアド
レスのメモリのコピーを保持しているか、キャッシュデ
ータの現在の状態などを示すデータ)の量が増加すると
いうことになる。キャッシュシステムに使える資源量に
は上限があるので、キャッシュタグの量が多過ぎると、
その分、データ領域を圧迫することになる。またそれと
同時に、タグを少なくするための工夫を導入せざるをえ
なくなり、キャッシュが複雑になったり、アクセスのた
びに大量のタグを検索する必要があるため、キャッシュ
の速度低下の原因となったりする。そのため、今後の大
容量キャッシュではブロックサイズの大きさをある程度
以上は大きくせざるを得ない。
付随するキャッシュのサイズは大きくなる一方であり、
これからもその傾向は続いていくものと考えられてい
る。この状態でブロックサイズを小さいままキャッシュ
を管理しようとすると、キャッシュ内に存在するブロッ
クの数が多くなる。すると、各キャッシュデータに付随
するキャッシュタグ(このキャッシュデータがどのアド
レスのメモリのコピーを保持しているか、キャッシュデ
ータの現在の状態などを示すデータ)の量が増加すると
いうことになる。キャッシュシステムに使える資源量に
は上限があるので、キャッシュタグの量が多過ぎると、
その分、データ領域を圧迫することになる。またそれと
同時に、タグを少なくするための工夫を導入せざるをえ
なくなり、キャッシュが複雑になったり、アクセスのた
びに大量のタグを検索する必要があるため、キャッシュ
の速度低下の原因となったりする。そのため、今後の大
容量キャッシュではブロックサイズの大きさをある程度
以上は大きくせざるを得ない。
【0014】
【発明が解決しようとする課題】従来の技術では、並列
計算機において空間的局所性の有効利用と、false shar
ing の回避を共存させることができなかった。
計算機において空間的局所性の有効利用と、false shar
ing の回避を共存させることができなかった。
【0015】本発明は、並列計算機において、空間的局
所性の有効利用とfalse sharing 回避の両者を同時に満
たすようなキャッシュシステムを構築することを目的と
している。
所性の有効利用とfalse sharing 回避の両者を同時に満
たすようなキャッシュシステムを構築することを目的と
している。
【0016】
【課題を解決するための手段】上記課題を解決するため
に、本発明は、図1に示すようなキャッシュブロック構
成を採用する。
に、本発明は、図1に示すようなキャッシュブロック構
成を採用する。
【0017】まず、空間的局所性が十分利用できるよう
に、また将来の大容量キャッシュに対応できるよう
に、、データの転送速度やキャッシュサイズなどを考慮
して、キャッシュのブロック1のサイズを大きくとる。
このままではfalse sharing が発生しやすくなるので、
ブロック1をさらに小さなサブブロック2に分割し、実
際の書き込み操作などはこのサブブロック単位で行なう
ようにする。さらに、このサブブロック2の状態を管理
するためのサブブロックタグ3を付加する。ブロック1
の状態を管理するためのブロックタグ4も付加される。
に、また将来の大容量キャッシュに対応できるよう
に、、データの転送速度やキャッシュサイズなどを考慮
して、キャッシュのブロック1のサイズを大きくとる。
このままではfalse sharing が発生しやすくなるので、
ブロック1をさらに小さなサブブロック2に分割し、実
際の書き込み操作などはこのサブブロック単位で行なう
ようにする。さらに、このサブブロック2の状態を管理
するためのサブブロックタグ3を付加する。ブロック1
の状態を管理するためのブロックタグ4も付加される。
【0018】このサブブロック2は、書き込み、無効化
の基本単位となる。読み出しは従来どおり、ブロック1
の単位で行なうが、すでにブロック1がキャッシュ内に
あるが、必要なサブブロック2のみが欠けている場合
は、サブブロック単位での読み出しも可能とする。
の基本単位となる。読み出しは従来どおり、ブロック1
の単位で行なうが、すでにブロック1がキャッシュ内に
あるが、必要なサブブロック2のみが欠けている場合
は、サブブロック単位での読み出しも可能とする。
【0019】また、本発明の実現方式の一例として、図
2に示す共有メモリ型並列計算機を考える。共有バス1
0にプロセッサ・キャッシュ11が接続し、さらに全プ
ロセッサ12がアクセスすることのできる共有メモリ1
3も接続されている。通常は、この共有バス10に、各
キャッシュ11の状態を通知する状態通知線14がある
が、本方式ではこれに加えて、当該ブロック内の各サブ
ブロックの状態を通知する信号線を追加する。
2に示す共有メモリ型並列計算機を考える。共有バス1
0にプロセッサ・キャッシュ11が接続し、さらに全プ
ロセッサ12がアクセスすることのできる共有メモリ1
3も接続されている。通常は、この共有バス10に、各
キャッシュ11の状態を通知する状態通知線14がある
が、本方式ではこれに加えて、当該ブロック内の各サブ
ブロックの状態を通知する信号線を追加する。
【0020】図3に状態通知線14の構造を示す。これ
は例えば、ひとつのブロックの中に4つのサブブロック
があるとすれば、4本のサブブロックの状態通知線15
を追加するということである。これによって、従来から
存在するブロック状態通知線16により通知されるブロ
ックの状態とともに、その中のすべてのサブブロックの
状態も同時に全プロセッサ12に通知することができる
ようになる。
は例えば、ひとつのブロックの中に4つのサブブロック
があるとすれば、4本のサブブロックの状態通知線15
を追加するということである。これによって、従来から
存在するブロック状態通知線16により通知されるブロ
ックの状態とともに、その中のすべてのサブブロックの
状態も同時に全プロセッサ12に通知することができる
ようになる。
【0021】本発明の作用は以下の通りである。基本的
作用として、キャッシュブロック1を複数のサブブロッ
ク2に分割し、各サブブロック2に状態を持たせること
により、書き込み、読み出し、無効化などの操作がサブ
ブロック単位で行なえるようになる。
作用として、キャッシュブロック1を複数のサブブロッ
ク2に分割し、各サブブロック2に状態を持たせること
により、書き込み、読み出し、無効化などの操作がサブ
ブロック単位で行なえるようになる。
【0022】次に各請求項に対応する作用を詳細に説明
する。 (1) 請求項1に対応する作用:図4に示すように、複数
のプロセッサA,B,...において、あるデータブロ
ックが共有されている状態を考える。すなわち、プロセ
ッサA,B,...に付随するキャッシュには、同じア
ドレスadr に対応するデータのコピーが保持されてい
る。このとき、すべてのブロックおよびブロック内のサ
ブブロックは最新の状態(データが共有メモリの内容と
一致した状態)であるとする。
する。 (1) 請求項1に対応する作用:図4に示すように、複数
のプロセッサA,B,...において、あるデータブロ
ックが共有されている状態を考える。すなわち、プロセ
ッサA,B,...に付随するキャッシュには、同じア
ドレスadr に対応するデータのコピーが保持されてい
る。このとき、すべてのブロックおよびブロック内のサ
ブブロックは最新の状態(データが共有メモリの内容と
一致した状態)であるとする。
【0023】このような状況で、プロセッサAがadr に
書き込みを発生したとする。従来のwrite invalidate型
のキャッシュでは、まずプロセッサB,...などの他
のプロセッサに付随するキャッシュが保持しているデー
タのコピーを無効化し、その後にデータを書き換え、ブ
ロックの状態をM(modified)とする。しかしこの方法で
は、ブロック全体に対しての処理になるので、他のキャ
ッシュのブロック全体を無効化してしまい、false shar
ing が発生したときには無駄に多くの一貫性管理処理が
発生することになる。
書き込みを発生したとする。従来のwrite invalidate型
のキャッシュでは、まずプロセッサB,...などの他
のプロセッサに付随するキャッシュが保持しているデー
タのコピーを無効化し、その後にデータを書き換え、ブ
ロックの状態をM(modified)とする。しかしこの方法で
は、ブロック全体に対しての処理になるので、他のキャ
ッシュのブロック全体を無効化してしまい、false shar
ing が発生したときには無駄に多くの一貫性管理処理が
発生することになる。
【0024】そこで本発明では、書き込み対象となるサ
ブブロックのみを無効化し、ブロックの状態は共有状態
のままとする。すなわち、 ・プロセッサAに付随するキャッシュ −ブロック全体の状態: 共有状態 → 共有状態 −書き込み対象のサブブロックの状態: 有効 → 変
更 ・プロセッサB,...に付随するキャッシュ −ブロック全体の状態: 共有状態 → 共有状態 −プロセッサAが書き込み対象としたサブブロックの状
態:有効 → 無効 という状態変化を起こす。これによって、false sharin
g が発生しても、必要な部分のみを無効化し、false sh
aring に伴う無駄な一貫性管理処理を削減することが可
能となる。図5に必要な部分のみ無効化する態様を示
す。
ブブロックのみを無効化し、ブロックの状態は共有状態
のままとする。すなわち、 ・プロセッサAに付随するキャッシュ −ブロック全体の状態: 共有状態 → 共有状態 −書き込み対象のサブブロックの状態: 有効 → 変
更 ・プロセッサB,...に付随するキャッシュ −ブロック全体の状態: 共有状態 → 共有状態 −プロセッサAが書き込み対象としたサブブロックの状
態:有効 → 無効 という状態変化を起こす。これによって、false sharin
g が発生しても、必要な部分のみを無効化し、false sh
aring に伴う無駄な一貫性管理処理を削減することが可
能となる。図5に必要な部分のみ無効化する態様を示
す。
【0025】また、プロセッサBなどで、プロセッサA
の書き込みによって無効化されたサブブロックに該当す
る部分に対して読み出しが発生すると、従来の手法で
は、再びブロック全体をメモリ(あるいは最新データを
持っているキャッシュ)から読み出し、ブロック全体を
最新の状態にする必要があった。そこで本発明では、ブ
ロック単位だけでなくサブブロック単位での読み出しも
可能とする。この手法によって、無駄なデータ読み出し
を防ぐことが可能になる。
の書き込みによって無効化されたサブブロックに該当す
る部分に対して読み出しが発生すると、従来の手法で
は、再びブロック全体をメモリ(あるいは最新データを
持っているキャッシュ)から読み出し、ブロック全体を
最新の状態にする必要があった。そこで本発明では、ブ
ロック単位だけでなくサブブロック単位での読み出しも
可能とする。この手法によって、無駄なデータ読み出し
を防ぐことが可能になる。
【0026】さらに、プロセッサAにおいて上記のよう
な部分書き込みを行なうと、ひとつのブロックの中に更
新されたサブブロックと更新されていないサブブロック
が存在する。このブロックがキャッシュの追い出し等で
ライトバックすることになると、従来の手法ではブロッ
ク全体をメモリに書き込む必要があった。そこで本発明
では、更新されたブロックのみ転送し、ヘッダとしてど
のサブブロックが有効であるかを示すフラグを付加す
る。
な部分書き込みを行なうと、ひとつのブロックの中に更
新されたサブブロックと更新されていないサブブロック
が存在する。このブロックがキャッシュの追い出し等で
ライトバックすることになると、従来の手法ではブロッ
ク全体をメモリに書き込む必要があった。そこで本発明
では、更新されたブロックのみ転送し、ヘッダとしてど
のサブブロックが有効であるかを示すフラグを付加す
る。
【0027】図6にサブブロック単位での有効/無効フ
ラグを用いたデータ転送パケットのヘッダ例を示す。ヘ
ッダには、コマンド20、送信者ID21、サブブロッ
クフラグ22、アドレス23が含まれ、サブブロックフ
ラグ22には個々のサブブロック毎の有効/無効フラグ
24が含まれている。これによって、無駄なデータ転送
を防ぐことができるようになる。 (2) 請求項2に対応する作用:さて、上記のような手法
によって、プロセッサAがあるブロックadr のサブブロ
ックaを更新した状態で、他のプロセッサB,...が
一部のサブブロックaを無効化された状態で保持してい
るとする。図7に、プロセッサA,Bのキャッシュでデ
ータを共有し、プロセッサBで一部が無効化されている
状態を示す。ここで、プロセッサBが同じブロックadr
内の違うサブブロックbに対して書き込みを発生したと
する。
ラグを用いたデータ転送パケットのヘッダ例を示す。ヘ
ッダには、コマンド20、送信者ID21、サブブロッ
クフラグ22、アドレス23が含まれ、サブブロックフ
ラグ22には個々のサブブロック毎の有効/無効フラグ
24が含まれている。これによって、無駄なデータ転送
を防ぐことができるようになる。 (2) 請求項2に対応する作用:さて、上記のような手法
によって、プロセッサAがあるブロックadr のサブブロ
ックaを更新した状態で、他のプロセッサB,...が
一部のサブブロックaを無効化された状態で保持してい
るとする。図7に、プロセッサA,Bのキャッシュでデ
ータを共有し、プロセッサBで一部が無効化されている
状態を示す。ここで、プロセッサBが同じブロックadr
内の違うサブブロックbに対して書き込みを発生したと
する。
【0028】さのとき、従来の手法では、ブロックがプ
ロセッサAによって更新されているので、プロセッサB
はプロセッサAに対してライトバックを起こさせるよう
にし、自分の持っているブロックadr を最新状態にした
上で書き込みを行なう。しかしこの方法では、false sh
aring を起こしているときには、無駄な一貫性管理処理
を多く発生することになる。
ロセッサAによって更新されているので、プロセッサB
はプロセッサAに対してライトバックを起こさせるよう
にし、自分の持っているブロックadr を最新状態にした
上で書き込みを行なう。しかしこの方法では、false sh
aring を起こしているときには、無駄な一貫性管理処理
を多く発生することになる。
【0029】そこで本発明では、違うサブブロックに対
する書き込みは、従来の一貫性管理処理を省略して実行
できるものとする。つまり、ひとつのブロックに対して
複数のプロセッサが書き込みできるということにする。
上記状態でいえば、プロセッサBがサブブロックbに対
して書き込みを発生したとき、プロセッサBに付随して
いるキャッシュコントローラ(図示せず)は他のキャッ
シュに対して、ブロックadr のサブブロックbに対する
無効化要求を発生する。他のキャッシュでブロックadr
のサブブロックbに対する無効化が完了した後に、プロ
セッサBに付随するキャッシュのブロックadr サブブロ
ックbを更新する。
する書き込みは、従来の一貫性管理処理を省略して実行
できるものとする。つまり、ひとつのブロックに対して
複数のプロセッサが書き込みできるということにする。
上記状態でいえば、プロセッサBがサブブロックbに対
して書き込みを発生したとき、プロセッサBに付随して
いるキャッシュコントローラ(図示せず)は他のキャッ
シュに対して、ブロックadr のサブブロックbに対する
無効化要求を発生する。他のキャッシュでブロックadr
のサブブロックbに対する無効化が完了した後に、プロ
セッサBに付随するキャッシュのブロックadr サブブロ
ックbを更新する。
【0030】図8にプロセッサA,Bがお互いのキャッ
シュを無効化しあっている状態を示す。従来の手法に比
べて、プロセッサAに対してサブブロックaをライトバ
ックさせる必要のないところが違っている。一度更新し
てしまったサブブロックは何度でも一貫性管理処理の必
要なく更新が可能なので、プロセッサAがサブブロック
aに対して、プロセッサBがサブブロックbに対して何
度も書き込みを行なう場合、このライトバックが発生す
る必要がないのはトラフィックを削減する上で非常に有
効である。 (3) 請求項3に対応する作用:以上のような方式を効率
よく実現する実現方式のひとつとして、共有バス10に
プロセッサ・キャッシュ11が接続され、さらに全プロ
セッサ12がアクセスすることのできる共有メモリ13
も接続されている、上述した図2に示す共有メモリ型並
列計算機を考える。通常はこの共通バス10に、各キャ
ッシュの状態を通知する状態通知線14があるが、本方
式ではこれに加えて、上述した図3に示すように当該ブ
ロック内の各サブブロックの状態を通知する信号線15
を追加する。これは例えば、ひとつのブロックの中に4
つのサブブロックがあるとすれば、4本のサブブロック
状態通知線を追加するということである。これによっ
て、ブロックの状態とともに、その中のすべてのサブブ
ロックの状態も同時に全プロセッサに通知することがで
きるようになる。 (4) 請求項4に対応する作用:上記のようなシステムを
仮定した上で、もう一度先のプロセッサA,B,...
の例に戻る。先のように、プロセッサA,プロセッサB
がそれぞれサブブロックa,サブブロックbを更新して
いる状態を考える。
シュを無効化しあっている状態を示す。従来の手法に比
べて、プロセッサAに対してサブブロックaをライトバ
ックさせる必要のないところが違っている。一度更新し
てしまったサブブロックは何度でも一貫性管理処理の必
要なく更新が可能なので、プロセッサAがサブブロック
aに対して、プロセッサBがサブブロックbに対して何
度も書き込みを行なう場合、このライトバックが発生す
る必要がないのはトラフィックを削減する上で非常に有
効である。 (3) 請求項3に対応する作用:以上のような方式を効率
よく実現する実現方式のひとつとして、共有バス10に
プロセッサ・キャッシュ11が接続され、さらに全プロ
セッサ12がアクセスすることのできる共有メモリ13
も接続されている、上述した図2に示す共有メモリ型並
列計算機を考える。通常はこの共通バス10に、各キャ
ッシュの状態を通知する状態通知線14があるが、本方
式ではこれに加えて、上述した図3に示すように当該ブ
ロック内の各サブブロックの状態を通知する信号線15
を追加する。これは例えば、ひとつのブロックの中に4
つのサブブロックがあるとすれば、4本のサブブロック
状態通知線を追加するということである。これによっ
て、ブロックの状態とともに、その中のすべてのサブブ
ロックの状態も同時に全プロセッサに通知することがで
きるようになる。 (4) 請求項4に対応する作用:上記のようなシステムを
仮定した上で、もう一度先のプロセッサA,B,...
の例に戻る。先のように、プロセッサA,プロセッサB
がそれぞれサブブロックa,サブブロックbを更新して
いる状態を考える。
【0031】このとき、図9に示すように、これまでブ
ロックadr を共有していなかったプロセッサCが新たに
ブロックadr に対する読み出し要求を発生したとする。
このとき、サブブロックa,サブブロックbに対する扱
いをどうするかによって、いくつかの選択肢が考えられ
る。
ロックadr を共有していなかったプロセッサCが新たに
ブロックadr に対する読み出し要求を発生したとする。
このとき、サブブロックa,サブブロックbに対する扱
いをどうするかによって、いくつかの選択肢が考えられ
る。
【0032】ひとつは、通常のキャッシュ方式と同様
に、サブブロックa,サブブロックbをライトバックす
る方式である。すなわち、プロセッサCに付随するキャ
ッシュコントローラ(図示せず)からブロックadr に対
する読み出し要求が発生すると、各プロセッサに付随す
るキャッシュコントローラ(図示せず)は自分のキャッ
シュ内のブロックadr の状態およびブロックadr 内の各
サブブロックの状態を状態通知線に出す。
に、サブブロックa,サブブロックbをライトバックす
る方式である。すなわち、プロセッサCに付随するキャ
ッシュコントローラ(図示せず)からブロックadr に対
する読み出し要求が発生すると、各プロセッサに付随す
るキャッシュコントローラ(図示せず)は自分のキャッ
シュ内のブロックadr の状態およびブロックadr 内の各
サブブロックの状態を状態通知線に出す。
【0033】メモリコントローラ30(図10参照)は
これらの状態通知線をすべて監視しており、ブロックad
r 内にライトバックしなくてはならないサブブロックが
いくつ存在するかを知ることができる。
これらの状態通知線をすべて監視しており、ブロックad
r 内にライトバックしなくてはならないサブブロックが
いくつ存在するかを知ることができる。
【0034】ライトバックしなければならないサブブロ
ックを持っているキャッシュコントローラ(この場合は
ブロセッサA,Bに付随するキャッシュコントローラ)
は、更新されているサブブロックをライトバックする。
メモリコントローラはこれらのライトバックを受け付
け、共有メモリ自体を更新し、最新の状態にするととも
に、いくつのサブブロックがライトバックされたかをカ
ウントする。この例でいえば、プロセッサAによってサ
ブブロックaが、プロセッサBによってサブブロックb
がライトバックされると、ブロックadr に関するライト
バックはすべて終了したことになる。そこでメモリコン
トローラは、プロセッサCの読み出し要求のリプライと
して、ライトバックされブロック内すべてが最新の状態
となったブロックadr のデータをブロセッサCに付随す
るキャッシュコントローラに転送する。このように、メ
モリコントローラでブロックデータをまとめて要求元キ
ャッシュコントローラにデータを転送する方式を図10
に示す。
ックを持っているキャッシュコントローラ(この場合は
ブロセッサA,Bに付随するキャッシュコントローラ)
は、更新されているサブブロックをライトバックする。
メモリコントローラはこれらのライトバックを受け付
け、共有メモリ自体を更新し、最新の状態にするととも
に、いくつのサブブロックがライトバックされたかをカ
ウントする。この例でいえば、プロセッサAによってサ
ブブロックaが、プロセッサBによってサブブロックb
がライトバックされると、ブロックadr に関するライト
バックはすべて終了したことになる。そこでメモリコン
トローラは、プロセッサCの読み出し要求のリプライと
して、ライトバックされブロック内すべてが最新の状態
となったブロックadr のデータをブロセッサCに付随す
るキャッシュコントローラに転送する。このように、メ
モリコントローラでブロックデータをまとめて要求元キ
ャッシュコントローラにデータを転送する方式を図10
に示す。
【0035】なお、このライトバックの時またはメモリ
コントローラからプロセッサCに付随するキャッシュコ
ントローラに対するブロックadr の転送時に、ブロセッ
サA,Bは自分のキャッシュメモリ内に欠けているサブ
ブロック(プロセッサAならサブブロックb,プロセッ
サBならサブブロックa)を補ってもよい。 (5) 請求項5に対応する作用:また、ライトバックする
ときには必ずしもメモリコントローラがデータをまとめ
る必要はない。他の手法として、キャッシュからキャッ
シュへデータを転送する方式も考えられる。
コントローラからプロセッサCに付随するキャッシュコ
ントローラに対するブロックadr の転送時に、ブロセッ
サA,Bは自分のキャッシュメモリ内に欠けているサブ
ブロック(プロセッサAならサブブロックb,プロセッ
サBならサブブロックa)を補ってもよい。 (5) 請求項5に対応する作用:また、ライトバックする
ときには必ずしもメモリコントローラがデータをまとめ
る必要はない。他の手法として、キャッシュからキャッ
シュへデータを転送する方式も考えられる。
【0036】上記の例に合わせると、次のようになる。
メモリコントローラおよび要求元(プロセッサCに付随
するキャッシュコントローラ)は、状態通知線をすべて
監視しており、ブロックadr 内に更新されたサブブロッ
クがいくつ存在するかを知ることができる。
メモリコントローラおよび要求元(プロセッサCに付随
するキャッシュコントローラ)は、状態通知線をすべて
監視しており、ブロックadr 内に更新されたサブブロッ
クがいくつ存在するかを知ることができる。
【0037】更新されたサブブロックを持っているキャ
ッシュコントローラ(この場合は、プロセッサA,Bに
付随するキャッシュコントローラ)は、更新されたサブ
ブロックを要求元に転送する。要求元はこれらのサブブ
ロックを受け取り、いくつのサブブロックが転送された
かをカウントする。この例でいえば、プロセッサAによ
ってサブブロックaが、プロセッサBによってサブブロ
ックbが転送されると、ブロックadr に関する更新され
たサブブロックの転送はすべて終了したことになる。ま
た、メモリコントローラは、ブロックadr に対応するデ
ータを共有メモリから読み出し、要求元に送る。このと
き、更新されたサブブロックに相当するデータを外して
送ってもよいし、そのまますべて送って要求元で更新さ
れたサブブロックのデータをまとめてもよい。図11に
それぞれのキャッシュが要求元キャッシュにデータを転
送する方式を示す。
ッシュコントローラ(この場合は、プロセッサA,Bに
付随するキャッシュコントローラ)は、更新されたサブ
ブロックを要求元に転送する。要求元はこれらのサブブ
ロックを受け取り、いくつのサブブロックが転送された
かをカウントする。この例でいえば、プロセッサAによ
ってサブブロックaが、プロセッサBによってサブブロ
ックbが転送されると、ブロックadr に関する更新され
たサブブロックの転送はすべて終了したことになる。ま
た、メモリコントローラは、ブロックadr に対応するデ
ータを共有メモリから読み出し、要求元に送る。このと
き、更新されたサブブロックに相当するデータを外して
送ってもよいし、そのまますべて送って要求元で更新さ
れたサブブロックのデータをまとめてもよい。図11に
それぞれのキャッシュが要求元キャッシュにデータを転
送する方式を示す。
【0038】このように、キャッシュからキャッシュへ
の転送をベースとしても、プロセッサCの要求に対して
処理することができる。
の転送をベースとしても、プロセッサCの要求に対して
処理することができる。
【0039】なお、本方式の場合においても、先の方式
と同様に、更新されたデータの転送時に各プロセッサが
自分の足りないサブブロックを補ってもよい。
と同様に、更新されたデータの転送時に各プロセッサが
自分の足りないサブブロックを補ってもよい。
【0040】また本方式では、更新されたデータの転送
時にキャッシュからキャッシュへの転送のみを行ない、
メモリは更新しない方式(ライトバックはデータが追い
出されたときのみ行なう方式)と、メモリも同時に更新
する方式(更新データに対する読み出しが発生すると同
時にライトバックも行なう方式)の両方を選択すること
ができる。 (6) 請求項6に対応する作用:先の2つ方法は、どちら
も更新されたサブブロックを持っているキャッシュがば
らばらにデータをメモリコントローラあるいは要求元の
キャッシュに転送する方式であった。しかし、共有バス
を用いた並列計算機システムでは、データ転送のための
パケットにアービトレーション(送出権獲得)が必要で
あり、パケットヘッダが付随する。そのため、データを
ばらばらに転送するということは、それだけアービトレ
ーションやヘッダ送出のための時間がかかり、大きなオ
ーバヘッドとなる可能性がある。
時にキャッシュからキャッシュへの転送のみを行ない、
メモリは更新しない方式(ライトバックはデータが追い
出されたときのみ行なう方式)と、メモリも同時に更新
する方式(更新データに対する読み出しが発生すると同
時にライトバックも行なう方式)の両方を選択すること
ができる。 (6) 請求項6に対応する作用:先の2つ方法は、どちら
も更新されたサブブロックを持っているキャッシュがば
らばらにデータをメモリコントローラあるいは要求元の
キャッシュに転送する方式であった。しかし、共有バス
を用いた並列計算機システムでは、データ転送のための
パケットにアービトレーション(送出権獲得)が必要で
あり、パケットヘッダが付随する。そのため、データを
ばらばらに転送するということは、それだけアービトレ
ーションやヘッダ送出のための時間がかかり、大きなオ
ーバヘッドとなる可能性がある。
【0041】そこで、これらの複数のデータ転送を、ひ
とつのパケットにまとめてしまう方式を考える。いま、
対象となっている並列計算機には各サブブロックに対応
した状態通知線が用意されているので、 ・更新されたサブブロックがいくつあるか、 ・(更新されたサブブロックを持っているキャッシュに
とって)自分が何番目の更新されたサブブロックを持っ
ているか、 を知ることができる。
とつのパケットにまとめてしまう方式を考える。いま、
対象となっている並列計算機には各サブブロックに対応
した状態通知線が用意されているので、 ・更新されたサブブロックがいくつあるか、 ・(更新されたサブブロックを持っているキャッシュに
とって)自分が何番目の更新されたサブブロックを持っ
ているか、 を知ることができる。
【0042】そこで、ブロック内の最初に更新されたサ
ブブロックを持っているキャッシュがヘッダを作り、バ
スのアービトレーションを開始する。バスの使用権を得
ると、バスにヘッダを流し、それに続けて自分の持って
いる更新されたサブブロックのデータを送出する。さら
に、自分のデータの後ろにデータスロット(データを送
出することができるタイミング)を用意し、データバス
の使用権を手放す。最初以外の更新されたサブブロック
を持っている各キャッシュは、このヘッダがバス上を流
れるのをみて、自分の持っている更新されたサブブロッ
クに対応するデータスロットがやってくるのを待つ。自
分の番になると、空いているデータスロットに自分が持
っている更新されたサブブロックのデータを載せ、バス
を開放する。図12にこの方式(複数のDirty データの
1パケット化/固定データスロット方式)による動作態
様を示す。
ブブロックを持っているキャッシュがヘッダを作り、バ
スのアービトレーションを開始する。バスの使用権を得
ると、バスにヘッダを流し、それに続けて自分の持って
いる更新されたサブブロックのデータを送出する。さら
に、自分のデータの後ろにデータスロット(データを送
出することができるタイミング)を用意し、データバス
の使用権を手放す。最初以外の更新されたサブブロック
を持っている各キャッシュは、このヘッダがバス上を流
れるのをみて、自分の持っている更新されたサブブロッ
クに対応するデータスロットがやってくるのを待つ。自
分の番になると、空いているデータスロットに自分が持
っている更新されたサブブロックのデータを載せ、バス
を開放する。図12にこの方式(複数のDirty データの
1パケット化/固定データスロット方式)による動作態
様を示す。
【0043】このようにすると、ヘッダと最初のデータ
のみを最初の更新されたサブブロックを持っているキャ
ッシュが送出し、以下次々と更新されたサブブロックが
転送され、全体としてひとつの大きなパケットの形でデ
ータ転送が行なわれるようになる。
のみを最初の更新されたサブブロックを持っているキャ
ッシュが送出し、以下次々と更新されたサブブロックが
転送され、全体としてひとつの大きなパケットの形でデ
ータ転送が行なわれるようになる。
【0044】これによって、複数のアービトレーション
および複数のヘッダ送出時間を削減することができ、共
有バスの利用率を下げ、システムの性能向上に寄与する
ことができる。 (7) 請求項7に対応する作用:上記した方式では、まず
最初の更新されたサブブロックを持っているキャッシュ
が、固定のデータスロットを用意し、データスロットに
対応するデータを持っているキャッシュが次々とデータ
を載せていく方式であった。しかし、この方式では、誰
がデータを載せるかがわからないので、最初にデータス
ロットを用意するときは、バスの開放・方向切り替えの
ための時間を間にはさんでおかなくてはならない。その
ため、例えばバスの開放・方向切り替えの時間とサブブ
ロックのデータ転送時間が同じであった場合、連続して
データ転送するのに比べて倍のデータ転送時間がかかる
ことになる。
および複数のヘッダ送出時間を削減することができ、共
有バスの利用率を下げ、システムの性能向上に寄与する
ことができる。 (7) 請求項7に対応する作用:上記した方式では、まず
最初の更新されたサブブロックを持っているキャッシュ
が、固定のデータスロットを用意し、データスロットに
対応するデータを持っているキャッシュが次々とデータ
を載せていく方式であった。しかし、この方式では、誰
がデータを載せるかがわからないので、最初にデータス
ロットを用意するときは、バスの開放・方向切り替えの
ための時間を間にはさんでおかなくてはならない。その
ため、例えばバスの開放・方向切り替えの時間とサブブ
ロックのデータ転送時間が同じであった場合、連続して
データ転送するのに比べて倍のデータ転送時間がかかる
ことになる。
【0045】ところが実際には、ひとつのブロック内に
あるサブブロックを、すべておなじキャッシュが更新し
ているという場合も数多い。このような場合、同じキャ
ッシュが連続してデータ転送するのに、わざわざ間にバ
スの開放・方向切り替えの時間をはさむのは無駄であ
る。
あるサブブロックを、すべておなじキャッシュが更新し
ているという場合も数多い。このような場合、同じキャ
ッシュが連続してデータ転送するのに、わざわざ間にバ
スの開放・方向切り替えの時間をはさむのは無駄であ
る。
【0046】そこで、同じキャッシュが連続してデータ
転送する場合には、バスの開放・方向切り替えにかかる
時間を削る方式を考える。
転送する場合には、バスの開放・方向切り替えにかかる
時間を削る方式を考える。
【0047】まず、共有バスのデータバスに、データが
有効であることを示す信号線を用意する。各キャッシュ
がデータ転送する場合は、データをデータバスに出力す
るのと同時に、このデータ有効線をassertする。このよ
うな仕組みを用意した上で、上記方式の場合と同様に、
データ転送を行なう場合を考える。
有効であることを示す信号線を用意する。各キャッシュ
がデータ転送する場合は、データをデータバスに出力す
るのと同時に、このデータ有効線をassertする。このよ
うな仕組みを用意した上で、上記方式の場合と同様に、
データ転送を行なう場合を考える。
【0048】上記方式と同様に、最初の更新されたサブ
ブロックを持っているキャッシュは、ヘッダを作成し、
バスのアービトレーションを開始する。バスの使用権を
得ると、バスにヘッダを流し、それに続けて自分の持っ
ている更新されたサブブロックのデータを送出し、デー
タ有効線をassertする。ここで、もしこのキャッシュが
次の更新されたサブブロックを持っている場合は、バス
を開放せずに、続けてデータを送出し、データ有効線を
assertする。以降、自分の番でなくなるまでこの動作を
続け、最終的にバスを開放する。このとき、固定のデー
タスロットは用意しない。他の更新されたサブブロック
を持っているキャッシュは、データ有効線がいくつasse
rtされたかをカウントする。このカウントによって、自
分が持っている更新されたサブブロック以前の更新され
たサブブロックがすべてバスに流れたことを確認する
と、バスの使用権を得て、バスにデータを流し、データ
有効線をassertする。この場合も同様に、次の更新され
たサブブロックを持っていれば、続けてデータ転送およ
びデータ有効線のassertを行なう。このようにして、最
後の更新されたサブブロックが転送されると、データ転
送の終了となる。図13にこの方式(複数のDirty デー
タの1パケット化/可変データスロット方式)による動
作態様を示す。
ブロックを持っているキャッシュは、ヘッダを作成し、
バスのアービトレーションを開始する。バスの使用権を
得ると、バスにヘッダを流し、それに続けて自分の持っ
ている更新されたサブブロックのデータを送出し、デー
タ有効線をassertする。ここで、もしこのキャッシュが
次の更新されたサブブロックを持っている場合は、バス
を開放せずに、続けてデータを送出し、データ有効線を
assertする。以降、自分の番でなくなるまでこの動作を
続け、最終的にバスを開放する。このとき、固定のデー
タスロットは用意しない。他の更新されたサブブロック
を持っているキャッシュは、データ有効線がいくつasse
rtされたかをカウントする。このカウントによって、自
分が持っている更新されたサブブロック以前の更新され
たサブブロックがすべてバスに流れたことを確認する
と、バスの使用権を得て、バスにデータを流し、データ
有効線をassertする。この場合も同様に、次の更新され
たサブブロックを持っていれば、続けてデータ転送およ
びデータ有効線のassertを行なう。このようにして、最
後の更新されたサブブロックが転送されると、データ転
送の終了となる。図13にこの方式(複数のDirty デー
タの1パケット化/可変データスロット方式)による動
作態様を示す。
【0049】この場合、データ転送の終了は、データを
受け取る側がデータ有効線がassertされた数を数えてい
てもよいし、最後の更新されたサブブロックを転送する
キャッシュがデータ転送終了markを付加してもよい。
受け取る側がデータ有効線がassertされた数を数えてい
てもよいし、最後の更新されたサブブロックを転送する
キャッシュがデータ転送終了markを付加してもよい。
【0050】このようにして、無駄なバスの開放・方向
切り替えの時間をなくし、共有バスを有効に使うことに
よって、さらにシステムの性能向上を図ることが可能と
なる。 (8) 請求項8に対応する作用:上記した4つの手法は、
どれも共有していないプロセッサからの読み出し要求に
対して、ブロック内の更新されたサブブロックすべてを
最新の状態にするものであった。しかし、ブロックすべ
てを読み出すのはプリフェッチ的な効果(空間局所性の
利用)を目指しているのであり、必ずしもすべてのデー
タが必要であるとは限らない。そのため、結果として必
要のない書き戻し(およびそれに付随する書き込み時の
一貫性管理処理)を引き起こす可能性もある。
切り替えの時間をなくし、共有バスを有効に使うことに
よって、さらにシステムの性能向上を図ることが可能と
なる。 (8) 請求項8に対応する作用:上記した4つの手法は、
どれも共有していないプロセッサからの読み出し要求に
対して、ブロック内の更新されたサブブロックすべてを
最新の状態にするものであった。しかし、ブロックすべ
てを読み出すのはプリフェッチ的な効果(空間局所性の
利用)を目指しているのであり、必ずしもすべてのデー
タが必要であるとは限らない。そのため、結果として必
要のない書き戻し(およびそれに付随する書き込み時の
一貫性管理処理)を引き起こす可能性もある。
【0051】そこで、新たに必要のない書き戻しを起こ
さない方式を考える。先の例と同様に、プロセッサA,
Bが更新したサブブロックa,bを保持している状態
で、ブロックを共有していないプロセッサCが読み出し
要求を発生した場合を考える。
さない方式を考える。先の例と同様に、プロセッサA,
Bが更新したサブブロックa,bを保持している状態
で、ブロックを共有していないプロセッサCが読み出し
要求を発生した場合を考える。
【0052】プロセッサCの要求するアドレスが属する
サブブロックcがサブブロックa,サブブロックbのど
れでもないものであったとする。このとき、上記した2
つの手法のようにサブブロックa,bのデータを転送す
るのは、後に無駄な一貫性管理処理を発生する可能性が
ある。そのため、プロセッサA,Bはサブブロックa,
bに該当する部分はデータ転送を行なわない。メモリコ
ントローラは、メモリからブロックadr に対応するデー
タを読み出し、サブブロックa,bを除いたデータをプ
ロセッサCに転送する。図14にこの方式(Dirty なサ
ブブロック以外を要求元キャッシュに転送する方式)の
動作態様を示す。
サブブロックcがサブブロックa,サブブロックbのど
れでもないものであったとする。このとき、上記した2
つの手法のようにサブブロックa,bのデータを転送す
るのは、後に無駄な一貫性管理処理を発生する可能性が
ある。そのため、プロセッサA,Bはサブブロックa,
bに該当する部分はデータ転送を行なわない。メモリコ
ントローラは、メモリからブロックadr に対応するデー
タを読み出し、サブブロックa,bを除いたデータをプ
ロセッサCに転送する。図14にこの方式(Dirty なサ
ブブロック以外を要求元キャッシュに転送する方式)の
動作態様を示す。
【0053】あるいは、ブロックadr に対応するデータ
をすべて転送し、プロセッサCに付随するキャッシュコ
ントローラでサブブロックa,bに該当する部分を捨て
る方式を採用することも可能である。このデータにはサ
ブブロックcが含まれているので、プロセッサCの読み
出し要求には答えることができるし、後の無駄な一貫性
管理処理を省くことができる。
をすべて転送し、プロセッサCに付随するキャッシュコ
ントローラでサブブロックa,bに該当する部分を捨て
る方式を採用することも可能である。このデータにはサ
ブブロックcが含まれているので、プロセッサCの読み
出し要求には答えることができるし、後の無駄な一貫性
管理処理を省くことができる。
【0054】サブブロックcがサブブロックaまたはサ
ブブロックbと一致した場合は、上記の例にあるように
更新されたデータを転送しなくてはならない。このと
き、同時にブロックadr の中の更新されたサブブロック
すべてを転送する方式と、要求されたサブブロックのみ
転送する方式の両方が考えられる。
ブブロックbと一致した場合は、上記の例にあるように
更新されたデータを転送しなくてはならない。このと
き、同時にブロックadr の中の更新されたサブブロック
すべてを転送する方式と、要求されたサブブロックのみ
転送する方式の両方が考えられる。
【0055】
【発明の実施の形態】本発明の第1の実施例を説明す
る。図15に示すような構造の並列計算機を考える。図
15に示す並列計算機は、各ブロセッサ12がキャッシ
ュ11を通じて共有バス10で接続された構成となって
いる。メインメモリ13はメモリコントローラ30を通
じて、同じく共有バス10に接続されており、システム
には一つしか存在しない。
る。図15に示すような構造の並列計算機を考える。図
15に示す並列計算機は、各ブロセッサ12がキャッシ
ュ11を通じて共有バス10で接続された構成となって
いる。メインメモリ13はメモリコントローラ30を通
じて、同じく共有バス10に接続されており、システム
には一つしか存在しない。
【0056】図16は、図15のキャッシュ11の部分
を詳細に示したものである。キャッシュ11は大きく分
けて、キャッシュコントーラ31とキャッシュアレイ3
2、キー33およびタグ34から構成される。キャッシ
ュコントローラ31はキャッシュ11の動作を司るもの
で、プロセッサ12からのデータ要求を受け取ったり、
共有バス10にリクエストを発行したりする。また、常
に共有バス上のトラフィックを監視しており、他のキャ
ッシュからのリクエストがバス上を流れるとそれに応じ
た動作を行なう。
を詳細に示したものである。キャッシュ11は大きく分
けて、キャッシュコントーラ31とキャッシュアレイ3
2、キー33およびタグ34から構成される。キャッシ
ュコントローラ31はキャッシュ11の動作を司るもの
で、プロセッサ12からのデータ要求を受け取ったり、
共有バス10にリクエストを発行したりする。また、常
に共有バス上のトラフィックを監視しており、他のキャ
ッシュからのリクエストがバス上を流れるとそれに応じ
た動作を行なう。
【0057】キャッシュアレイ32は、データを保存し
ておくための場所であり、メインメモリ13のコピー
や、プロセッサ12によって更新されたデータが保存さ
れている。キャッシュアレイ32は、ブロック単位で管
理されており、1ブロックは複数のサブブロックから構
成される。本実施例では、1ブロック=4サブブロック
としている。各サブブロックは、サブブロックの状態を
表す状態ビット(有効/無効を表すVビットと、更新さ
れている/更新されていないを表すDビットの2ビッ
ト)とデータから構成される。図17はサブブロックの
状態ビットを示す図である。
ておくための場所であり、メインメモリ13のコピー
や、プロセッサ12によって更新されたデータが保存さ
れている。キャッシュアレイ32は、ブロック単位で管
理されており、1ブロックは複数のサブブロックから構
成される。本実施例では、1ブロック=4サブブロック
としている。各サブブロックは、サブブロックの状態を
表す状態ビット(有効/無効を表すVビットと、更新さ
れている/更新されていないを表すDビットの2ビッ
ト)とデータから構成される。図17はサブブロックの
状態ビットを示す図である。
【0058】キー33およびタグ34はキャッシュアレ
イ32の各ブロックの状態を示すものであり、キャッシ
ュアレイひとつにひとつ対応している。一般にはセット
アソシアティブ・キャッシュと呼ばれる、あるインデッ
クス(何番目のエントリか)に対応するデータを複数持
たせる方式が用いられるが、本実施例では説明を簡単に
するため、ひとつのインデックスにひとつのアドレスが
対応するダイレクトマップ方式を用いる。キー33は、
キャッシュアレイ32のデータがどのアドレスのメモリ
のコピーかを表しているものであり、インデックスとを
合わせるとアドレスが一意に定まるようになっている。
タグ34は、ブロックの状態を表すものであり、有効/
無効を表すVビット、共有/非共有を表すSビットの2
ビットから構成される。
イ32の各ブロックの状態を示すものであり、キャッシ
ュアレイひとつにひとつ対応している。一般にはセット
アソシアティブ・キャッシュと呼ばれる、あるインデッ
クス(何番目のエントリか)に対応するデータを複数持
たせる方式が用いられるが、本実施例では説明を簡単に
するため、ひとつのインデックスにひとつのアドレスが
対応するダイレクトマップ方式を用いる。キー33は、
キャッシュアレイ32のデータがどのアドレスのメモリ
のコピーかを表しているものであり、インデックスとを
合わせるとアドレスが一意に定まるようになっている。
タグ34は、ブロックの状態を表すものであり、有効/
無効を表すVビット、共有/非共有を表すSビットの2
ビットから構成される。
【0059】共有バス10には、キャッシュ11のブロ
ック状態を検査した結果を流すHIT線(各1本)(図
示せず)、各サブブロックの状態を検査した結果を流す
HITM線(サブブロックひとつに対して1本、計4
本)(図示せず)が用意されている。これらの線は各キ
ャッシュコントローラ31で共有されており、メモリト
ランザクションから特定のタイミングでassertされるよ
うに規定されている。あるキャッシュコントローラ31
から何らかのメモリトランザクションが発生すると、他
の各キャッシュコントローラ31は当該アドレスに対す
るブロックデータが自分のキャッシュアレイ32に存在
するか、存在するとすればどういう状態か、またその中
のサブブロックはどういう状態かを調べ、それをHIT
線、およびHITM線(4本)に乗せて通知する。当該
ブロックに対応するデータがキャッシュアレイ32中に
あり、Sビットが共有状態であればHITをassertす
る。
ック状態を検査した結果を流すHIT線(各1本)(図
示せず)、各サブブロックの状態を検査した結果を流す
HITM線(サブブロックひとつに対して1本、計4
本)(図示せず)が用意されている。これらの線は各キ
ャッシュコントローラ31で共有されており、メモリト
ランザクションから特定のタイミングでassertされるよ
うに規定されている。あるキャッシュコントローラ31
から何らかのメモリトランザクションが発生すると、他
の各キャッシュコントローラ31は当該アドレスに対す
るブロックデータが自分のキャッシュアレイ32に存在
するか、存在するとすればどういう状態か、またその中
のサブブロックはどういう状態かを調べ、それをHIT
線、およびHITM線(4本)に乗せて通知する。当該
ブロックに対応するデータがキャッシュアレイ32中に
あり、Sビットが共有状態であればHITをassertす
る。
【0060】また、ブロック内のサブブロックのDビッ
トが更新されている状態であれば、HITM[0:3]
をassertする。これによって、各キャッシュコントロー
ラ31は、今流れたメモリトランザクションに対応する
ブロックについて、 ・ブロックが複数のキャッシュ11に共有されている
か、 ・誰かが更新されたサブブロックを持っているか、 ・いくつのサブブロックが更新された状態で保持されて
いるか、 を知ることができる。
トが更新されている状態であれば、HITM[0:3]
をassertする。これによって、各キャッシュコントロー
ラ31は、今流れたメモリトランザクションに対応する
ブロックについて、 ・ブロックが複数のキャッシュ11に共有されている
か、 ・誰かが更新されたサブブロックを持っているか、 ・いくつのサブブロックが更新された状態で保持されて
いるか、 を知ることができる。
【0061】メモリコントローラ30には、メモリ13
から読み出したデータを一時記憶しておくバッファ35
(1ブロック分のデータを記憶できる)が用意されてい
る。
から読み出したデータを一時記憶しておくバッファ35
(1ブロック分のデータを記憶できる)が用意されてい
る。
【0062】このシステムにおいて、今、プロセッサ1
2からのメモリアクセスの要求が出た場合を考える。プ
ロセッサ12からのデータ要求は、従来のキャッシュと
同様に共有バス10にリクエストとして流される(キャ
ッシュ内にブロックが存在しなかった場合)。リクエス
トには、要求するブロックIDの他に、要求元のプロセ
ッサ12が要求したアドレスが含まれるサブブロックの
IDが記載されている。
2からのメモリアクセスの要求が出た場合を考える。プ
ロセッサ12からのデータ要求は、従来のキャッシュと
同様に共有バス10にリクエストとして流される(キャ
ッシュ内にブロックが存在しなかった場合)。リクエス
トには、要求するブロックIDの他に、要求元のプロセ
ッサ12が要求したアドレスが含まれるサブブロックの
IDが記載されている。
【0063】バス10上に流れるリクエストを見て、各
キャッシュコントローラ31はスヌープ動作を開始す
る。自分のキャッシュのキー33を検査し、バス10上
に流れているリクエストと同じブロックが存在するかど
うか調べる。本実施例ではダイレクトマップ方式を採用
しているので、ブロックのIDの一部を取り出せばそれ
がキャッシュアレイ32のインデックスとなる。そのイ
ンデックスに対応したキー33がブロックのIDと一致
し、タグ34のVビットが有効状態であれば、ブロック
が存在することになる。
キャッシュコントローラ31はスヌープ動作を開始す
る。自分のキャッシュのキー33を検査し、バス10上
に流れているリクエストと同じブロックが存在するかど
うか調べる。本実施例ではダイレクトマップ方式を採用
しているので、ブロックのIDの一部を取り出せばそれ
がキャッシュアレイ32のインデックスとなる。そのイ
ンデックスに対応したキー33がブロックのIDと一致
し、タグ34のVビットが有効状態であれば、ブロック
が存在することになる。
【0064】要求されているブロックと同じアドレスの
ブロックがキャッシュ内部に存在した場合、キャッシュ
コントローラ31は指定されたタイミングで次のように
スヌープ結果を通知する。
ブロックがキャッシュ内部に存在した場合、キャッシュ
コントローラ31は指定されたタイミングで次のように
スヌープ結果を通知する。
【0065】・キャッシュタグ34のSビットが共有状
態であれば、HITをassertする。
態であれば、HITをassertする。
【0066】・各サブブロックの状態ビットを調べ、V
ビットが有効かつDビットが更新されている状態であれ
ば、対応するHITMをassertする。ここで、各サブブ
ロックとHITM線の対応は、 サブブロック0 − HITM0 サブブロック1 − HITM1 サブブロック2 − HITM2 サブブロック3 − HITM3 となっている。
ビットが有効かつDビットが更新されている状態であれ
ば、対応するHITMをassertする。ここで、各サブブ
ロックとHITM線の対応は、 サブブロック0 − HITM0 サブブロック1 − HITM1 サブブロック2 − HITM2 サブブロック3 − HITM3 となっている。
【0067】このHIT,HITM[0:3]を観測す
ることによって、そのブロックがすでに誰かに保持され
ているか、更新されているサブブロックはいくつかを知
ることができる。
ることによって、そのブロックがすでに誰かに保持され
ているか、更新されているサブブロックはいくつかを知
ることができる。
【0068】HIT,HITM[0:3]の情報に基づ
いて、メモリコントローラ30、各キャッシュコントロ
ーラ31、要求元のキャッシュコントローラ31は以下
のような動作を行なう。
いて、メモリコントローラ30、各キャッシュコントロ
ーラ31、要求元のキャッシュコントローラ31は以下
のような動作を行なう。
【0069】・メモリコントローラ:メモリコントロー
ラ30は、HIT,HITM[0:3]の状態にかかわ
らず、要求されたブロックをメモリ13から読み出す。
この読み出したデータは、メモリコントローラ30内部
のバッファ35に一時記憶しておく。
ラ30は、HIT,HITM[0:3]の状態にかかわ
らず、要求されたブロックをメモリ13から読み出す。
この読み出したデータは、メモリコントローラ30内部
のバッファ35に一時記憶しておく。
【0070】HITM[0:3]がどれもassertされな
ければ、メモリコントローラ30はメモリ13から読み
出したデータを要求元のキャッシュコントローラ31に
転送する。
ければ、メモリコントローラ30はメモリ13から読み
出したデータを要求元のキャッシュコントローラ31に
転送する。
【0071】HITM[0:3]のいずれかがassertさ
れていれば、メモリコントローラ30はassertされた線
の数を記憶し、キャッシュコントローラ31からデータ
がライトバックされるのを待つ。更新されたサブブロッ
クを持っているキャッシュコントローラ31が更新され
たサブブロックをライトバックすると、メモリコントロ
ーラ30はメモリ13から読み出したデータの上にその
ライトバックされたデータを上書きし、数をカウントす
る。ライトバックされた数とHITM[0:3]のasse
rtされた数が一致すると、メモリコントローラ30は内
部のバッファ35に蓄えられたデータを要求元のキャッ
シュコントローラ31に転送するとともに、バッファ3
5のデータをメモリ13に書き戻す。これによって、キ
ャッシュに最新の情報を与えるとともに、ブロックのラ
イトバック動作を行なう。
れていれば、メモリコントローラ30はassertされた線
の数を記憶し、キャッシュコントローラ31からデータ
がライトバックされるのを待つ。更新されたサブブロッ
クを持っているキャッシュコントローラ31が更新され
たサブブロックをライトバックすると、メモリコントロ
ーラ30はメモリ13から読み出したデータの上にその
ライトバックされたデータを上書きし、数をカウントす
る。ライトバックされた数とHITM[0:3]のasse
rtされた数が一致すると、メモリコントローラ30は内
部のバッファ35に蓄えられたデータを要求元のキャッ
シュコントローラ31に転送するとともに、バッファ3
5のデータをメモリ13に書き戻す。これによって、キ
ャッシュに最新の情報を与えるとともに、ブロックのラ
イトバック動作を行なう。
【0072】・要求元以外のキャッシュコントローラ:
要求元以外のキャッシュコントローラ31は、要求アド
レスを見て、自分が要求されているブロックを保持して
いるかどうか、サブブロックの中に更新されたサブブロ
ックがないか検査する。
要求元以外のキャッシュコントローラ31は、要求アド
レスを見て、自分が要求されているブロックを保持して
いるかどうか、サブブロックの中に更新されたサブブロ
ックがないか検査する。
【0073】自分が更新されたサブブロックを持ってい
た場合、メモリコントローラ30に対してライトバック
を行なう。すなわち、更新されたサブブロックのデータ
をメモリコントローラ30に転送し、当該サブブロック
の状態ビットのDビットを更新されていない状態に変更
する。
た場合、メモリコントローラ30に対してライトバック
を行なう。すなわち、更新されたサブブロックのデータ
をメモリコントローラ30に転送し、当該サブブロック
の状態ビットのDビットを更新されていない状態に変更
する。
【0074】・要求元のキャッシュコントローラ:要求
元のキャッシュコントローラ31は、読み出し要求を発
行した後、メモリコントローラ30からブロックデータ
が転送されるのを待つ。ブロックデータが転送されてく
ると、そのブロックデータを格納し、キー33を設定
し、ブロックの状態を、Vビットを有効、SビットをH
IT線の状態(assertされていれば共有状態、assertさ
れていなければ非共有状態) に設定する。
元のキャッシュコントローラ31は、読み出し要求を発
行した後、メモリコントローラ30からブロックデータ
が転送されるのを待つ。ブロックデータが転送されてく
ると、そのブロックデータを格納し、キー33を設定
し、ブロックの状態を、Vビットを有効、SビットをH
IT線の状態(assertされていれば共有状態、assertさ
れていなければ非共有状態) に設定する。
【0075】さらに、ブロック内の各サブブロックの状
態を、Vビットを有効、Dビットを更新されていない状
態に設定する。
態を、Vビットを有効、Dビットを更新されていない状
態に設定する。
【0076】次に、書き込み動作の場合を考える。今、
プロセッサ12からの書き込み要求がキャッシュコント
ローラ31に届いたとする。するとキャッシュコントロ
ーラ31は、まず自分のキャッシュの中に該当するブロ
ックが存在するかどうか調べ、存在しなければ上記の読
み出し動作に基づいて、まず読み出し動作を行なう。
プロセッサ12からの書き込み要求がキャッシュコント
ローラ31に届いたとする。するとキャッシュコントロ
ーラ31は、まず自分のキャッシュの中に該当するブロ
ックが存在するかどうか調べ、存在しなければ上記の読
み出し動作に基づいて、まず読み出し動作を行なう。
【0077】キャッシュコントローラ31は次に、当該
ブロックの状態およびプロセッサ12の書き込み要求ア
ドレスに該当するサブブロックの状態を調べる。この状
態によって、以下のような書き込み動作が行なわれる。
ブロックの状態およびプロセッサ12の書き込み要求ア
ドレスに該当するサブブロックの状態を調べる。この状
態によって、以下のような書き込み動作が行なわれる。
【0078】・ブロックが非共有、サブブロックが有効
の場合:キャッシュコントローラ31はサブブロックの
データを更新して、サブブロック状態のDビットを更新
されている状態に設定する。
の場合:キャッシュコントローラ31はサブブロックの
データを更新して、サブブロック状態のDビットを更新
されている状態に設定する。
【0079】・ブロックが非共有、サブブロックが無効
の場合:キャッシュコントローラ31はサブブロックの
読み出しを行なう。この場合、ブロックが非共有なの
で、他のキャッシュに保持されていることはなく、必ず
メモリ13からデータを読み出すことになる。
の場合:キャッシュコントローラ31はサブブロックの
読み出しを行なう。この場合、ブロックが非共有なの
で、他のキャッシュに保持されていることはなく、必ず
メモリ13からデータを読み出すことになる。
【0080】読み出されたサブブロックは、他のキャッ
シュでは無効状態になっているので、キャッシュコント
ローラ31はサブブロックのデータを更新して、サブブ
ロックの状態のDビットを更新されている状態に設定す
る。
シュでは無効状態になっているので、キャッシュコント
ローラ31はサブブロックのデータを更新して、サブブ
ロックの状態のDビットを更新されている状態に設定す
る。
【0081】・ブロックが共有、サブブロックが有効か
つ更新されている状態の場合:ブロックが共有状態であ
っても、サブブロックの状態が更新されている状態であ
れば、他のキャッシュの当該サブブロックは無効状態で
ある。そのため、キャッシュコントローラ31は即座に
サブブロックのデータを更新することができる。
つ更新されている状態の場合:ブロックが共有状態であ
っても、サブブロックの状態が更新されている状態であ
れば、他のキャッシュの当該サブブロックは無効状態で
ある。そのため、キャッシュコントローラ31は即座に
サブブロックのデータを更新することができる。
【0082】・ブロックが共有、サブブロックが有効か
つ更新されていない状態の場合:ブロックが共有状態に
あるので、他のキャッシュに当該サブブロックのデータ
が保持されている可能性がある。そのため、キャッシュ
コントローラ31は当該サブブロックに対する無効化要
求を発行する。各キャッシュコントローラ31は、無効
化要求を受け取ると、自分のサブブロックの状態を無効
状態にする。もし無効化前のサブブロックの状態が更新
されている状態であった場合、サブブロックのライトバ
ックを行なった後、無効化する。
つ更新されていない状態の場合:ブロックが共有状態に
あるので、他のキャッシュに当該サブブロックのデータ
が保持されている可能性がある。そのため、キャッシュ
コントローラ31は当該サブブロックに対する無効化要
求を発行する。各キャッシュコントローラ31は、無効
化要求を受け取ると、自分のサブブロックの状態を無効
状態にする。もし無効化前のサブブロックの状態が更新
されている状態であった場合、サブブロックのライトバ
ックを行なった後、無効化する。
【0083】各キャッシュでの無効化動作が終了した
後、要求元のキャッシュコントローラ31はサブブロッ
クのデータを更新して、サブブロックの状態のDビット
を更新されている状態に設定する。
後、要求元のキャッシュコントローラ31はサブブロッ
クのデータを更新して、サブブロックの状態のDビット
を更新されている状態に設定する。
【0084】・ブロックが共有、サブブロックが無効の
場合:キャッシュコントローラ31は、サブブロックの
読み出しおよび無効化を行なう。サブブロック単位の読
み出しや無効化は、通常(従来)のキャッシュの読み出
しや無効化と同等である。すなわち、各キャッシュコン
トローラ31は読み出しおよび無効化要求を受け取る
と、自分の当該サブブロックの状態を無効状態にする。
もし、無効化前のサブブロックの状態が更新されている
状態であった場合、サブブロックのライトバックを行な
った後に無効化する。メモリコントローラ30および要
求元のキャッシュコントローラ31は、ライトバックが
行なわれるかどうか監視し、ライトバックが行なわれれ
ばそのデータを取り込み、メモリコントローラ30はメ
モリ13を更新する。
場合:キャッシュコントローラ31は、サブブロックの
読み出しおよび無効化を行なう。サブブロック単位の読
み出しや無効化は、通常(従来)のキャッシュの読み出
しや無効化と同等である。すなわち、各キャッシュコン
トローラ31は読み出しおよび無効化要求を受け取る
と、自分の当該サブブロックの状態を無効状態にする。
もし、無効化前のサブブロックの状態が更新されている
状態であった場合、サブブロックのライトバックを行な
った後に無効化する。メモリコントローラ30および要
求元のキャッシュコントローラ31は、ライトバックが
行なわれるかどうか監視し、ライトバックが行なわれれ
ばそのデータを取り込み、メモリコントローラ30はメ
モリ13を更新する。
【0085】ライトバックが行なわれなければ、メモリ
コントローラ30はメモリ13から読み出したデータを
要求元のキャッシュコントローラ31へ転送する。
コントローラ30はメモリ13から読み出したデータを
要求元のキャッシュコントローラ31へ転送する。
【0086】各キャッシュでの無効化動作が終了し、デ
ータを読み出した後、要求元のキャッシュコントローラ
31はサブブロックのデータを更新して、サブブロック
の状態のDビットを更新されている状態に設定する。
ータを読み出した後、要求元のキャッシュコントローラ
31はサブブロックのデータを更新して、サブブロック
の状態のDビットを更新されている状態に設定する。
【0087】次に、本発明の第2の実施例を説明する。
第2の実施例のハードウェア構成は、第1の実施例にお
ける図15〜図17と同様な構成である。本実施例は、
第1の実施例の場合と比較して、読み出しの場合の動作
が異なるものである。
第2の実施例のハードウェア構成は、第1の実施例にお
ける図15〜図17と同様な構成である。本実施例は、
第1の実施例の場合と比較して、読み出しの場合の動作
が異なるものである。
【0088】本実施例では、プロセッサ12から読み出
し要求が発生し、バス10上に読み出し要求が流れ、各
キャッシュコントローラ31がHIT,HITM[0:
3]をキャッシュの状態に応じてassertした後、HI
T,HITM[0:3]の情報に基づいて、メモリコン
トローラ30、各キャッシュコントローラ31、要求元
のキャッシュコントローラ31は以下のような動作を行
なう。
し要求が発生し、バス10上に読み出し要求が流れ、各
キャッシュコントローラ31がHIT,HITM[0:
3]をキャッシュの状態に応じてassertした後、HI
T,HITM[0:3]の情報に基づいて、メモリコン
トローラ30、各キャッシュコントローラ31、要求元
のキャッシュコントローラ31は以下のような動作を行
なう。
【0089】・メモリコントローラ:メモリコントロー
ラ30は、HIT,HITM[0:3]の状態にかかわ
らず、要求されたブロックをメモリ13から読み出す。
この読み出したデータは、メモリコントローラ30内部
のバッファ35に一時記憶しておく。
ラ30は、HIT,HITM[0:3]の状態にかかわ
らず、要求されたブロックをメモリ13から読み出す。
この読み出したデータは、メモリコントローラ30内部
のバッファ35に一時記憶しておく。
【0090】HITM[0:3]がどれもassertされな
ければ、メモリコントローラ30はメモリ13から読み
出したデータを要求元のキャッシュコントローラ31に
転送する。HITM[0:3]のいずれかがassertされ
ていれば、メモリコントローラ30はassertされた部分
以外のデータを要求元のキャッシュコントローラ31に
転送する。このとき、ライトバックは行なわれない。
ければ、メモリコントローラ30はメモリ13から読み
出したデータを要求元のキャッシュコントローラ31に
転送する。HITM[0:3]のいずれかがassertされ
ていれば、メモリコントローラ30はassertされた部分
以外のデータを要求元のキャッシュコントローラ31に
転送する。このとき、ライトバックは行なわれない。
【0091】・要求元以外のキャッシュコントローラ:
要求元以外のキャッシュコントローラ31は、要求アド
レスを見て、自分が要求されているブロックを保持して
いるかどうか、サブブロックの中に更新されたサブブロ
ックがないか検査する。
要求元以外のキャッシュコントローラ31は、要求アド
レスを見て、自分が要求されているブロックを保持して
いるかどうか、サブブロックの中に更新されたサブブロ
ックがないか検査する。
【0092】自分が更新されたサブブロックを持ってい
た場合、そのデータを要求元のキャッシュコントローラ
31に転送し、当該サブブロックのDビットを更新され
ていない状態に変更する。
た場合、そのデータを要求元のキャッシュコントローラ
31に転送し、当該サブブロックのDビットを更新され
ていない状態に変更する。
【0093】・要求元のキャッシュコントローラ:HI
TM[0:3]がどれもassertされなければ、要求元の
キャッシュコントローラ31は、メモリコントローラ3
0からデータが転送されてくるのを待つ。データが転送
されてくると、そのブロックを格納し、キー33を設定
し、ブロックの状態をVビットを有効、SビットをHI
T線の状態(assertされていれば共有状態、assertされ
ていなければ非共有状態)に設定する。
TM[0:3]がどれもassertされなければ、要求元の
キャッシュコントローラ31は、メモリコントローラ3
0からデータが転送されてくるのを待つ。データが転送
されてくると、そのブロックを格納し、キー33を設定
し、ブロックの状態をVビットを有効、SビットをHI
T線の状態(assertされていれば共有状態、assertされ
ていなければ非共有状態)に設定する。
【0094】さらに、ブロック内の各サブブロックの状
態を、Vビットを有効、Dビットを更新されていない状
態に設定する。
態を、Vビットを有効、Dビットを更新されていない状
態に設定する。
【0095】HITM[0:3]のいずれかがassertさ
れていれば、要求元のキャッシュコントローラ31はas
sertされた線の数を記憶し、他のキャッシュコントロー
ラ31からデータが転送されるのを待つ。更新されたサ
ブブロックを持っているキャッシュコントローラ31が
更新されたサブブロックのデータを転送すると、要求元
のキャッシュコントローラ31はキャッシュアレイ32
にそのデータを格納し、数をカウントする。転送されて
きたサブブロックの数とHITM[0:3]のassertさ
れた数が一致し、メモリコントローラ30からそれ以外
のデータが転送されてくると、要求元のキャッシュコン
トローラ31はキー33を設定し、ブロックの状態をV
ビットを有効、SビットをHIT線の状態(assertされ
ていれば共有状態、assertされていなければ非共有状
態)に設定する。さらに、ブロック内の各サブブロック
の状態を、Vビットを有効、Dビットを更新されていな
い状態に設定する。
れていれば、要求元のキャッシュコントローラ31はas
sertされた線の数を記憶し、他のキャッシュコントロー
ラ31からデータが転送されるのを待つ。更新されたサ
ブブロックを持っているキャッシュコントローラ31が
更新されたサブブロックのデータを転送すると、要求元
のキャッシュコントローラ31はキャッシュアレイ32
にそのデータを格納し、数をカウントする。転送されて
きたサブブロックの数とHITM[0:3]のassertさ
れた数が一致し、メモリコントローラ30からそれ以外
のデータが転送されてくると、要求元のキャッシュコン
トローラ31はキー33を設定し、ブロックの状態をV
ビットを有効、SビットをHIT線の状態(assertされ
ていれば共有状態、assertされていなければ非共有状
態)に設定する。さらに、ブロック内の各サブブロック
の状態を、Vビットを有効、Dビットを更新されていな
い状態に設定する。
【0096】次に、本発明の第3の実施例を説明する。
第3の実施例のハードウェア構成は、第2の実施例と同
じく、第1の実施例における図15〜図17と同様な構
成である。
第3の実施例のハードウェア構成は、第2の実施例と同
じく、第1の実施例における図15〜図17と同様な構
成である。
【0097】本実施例は、各ユニットの動作は第2の実
施例と同様であるが、第2の実施例に比べて、読み出し
が発生したときのデータ転送方式が異なっている。
施例と同様であるが、第2の実施例に比べて、読み出し
が発生したときのデータ転送方式が異なっている。
【0098】読み出し時に、HITM[0:3]のいず
れかがassertされていると、ブロック内の最初の更新さ
れたサブブロックを持っているキャッシュがヘッダを作
り、バス10のアービトレーションを開始する。バス1
0の使用権を得ると、バス10にヘッダを流し、それに
続けて自分の持っている更新されたサブブロックのデー
タを送出する。さらに、自分のデータの後ろにデータス
ロットを用意し、データバス10の使用権を手放す。最
初以外の更新されたサブブロックを持っている各キャッ
シュは、このヘッダがバス10上を流れるのを見て、自
分の持っている更新されたサブブロックに対応するデー
タスロットがやってくるのを待つ。自分の番になると、
空いているデータスロットに自分が持っている更新され
たサブブロックのデータを載せ、バス10を開放する。
れかがassertされていると、ブロック内の最初の更新さ
れたサブブロックを持っているキャッシュがヘッダを作
り、バス10のアービトレーションを開始する。バス1
0の使用権を得ると、バス10にヘッダを流し、それに
続けて自分の持っている更新されたサブブロックのデー
タを送出する。さらに、自分のデータの後ろにデータス
ロットを用意し、データバス10の使用権を手放す。最
初以外の更新されたサブブロックを持っている各キャッ
シュは、このヘッダがバス10上を流れるのを見て、自
分の持っている更新されたサブブロックに対応するデー
タスロットがやってくるのを待つ。自分の番になると、
空いているデータスロットに自分が持っている更新され
たサブブロックのデータを載せ、バス10を開放する。
【0099】これにともない、要求元のキャッシュは、
各キャッシュから転送されるデータの数をカウントする
必要がなくなる。
各キャッシュから転送されるデータの数をカウントする
必要がなくなる。
【0100】その他の状態遷移に関しては、第2実施例
と同様である。
と同様である。
【0101】次に、本発明の第4の実施例を説明する。
第4の実施例は、第1〜第3の実施例とくらべて、デー
タバス10にデータ有効線(DATAE line )(図示
せず)が付加される点において異なる。本実施例では、
各ユニットの動作は第2実施例、第3実施例と同様であ
るが、第2実施例、第3実施例に比べて、読み出しが発
生したときのデータ転送方式が異なる。
第4の実施例は、第1〜第3の実施例とくらべて、デー
タバス10にデータ有効線(DATAE line )(図示
せず)が付加される点において異なる。本実施例では、
各ユニットの動作は第2実施例、第3実施例と同様であ
るが、第2実施例、第3実施例に比べて、読み出しが発
生したときのデータ転送方式が異なる。
【0102】読み出し時に、HITM[0:3]のいず
れかがassertされていると、ブロック内の最初の更新さ
れたサブブロックを持っているキャッシュがヘッダを作
り、バス10のアービトレーションを開始する。バス1
0の使用権を得ると、バス10にヘッダを流し、それに
続けて自分の持っている更新されたサブブロックのデー
タを送出する。さらに、データと同時に、DATAEを
assertする。
れかがassertされていると、ブロック内の最初の更新さ
れたサブブロックを持っているキャッシュがヘッダを作
り、バス10のアービトレーションを開始する。バス1
0の使用権を得ると、バス10にヘッダを流し、それに
続けて自分の持っている更新されたサブブロックのデー
タを送出する。さらに、データと同時に、DATAEを
assertする。
【0103】このとき、キャッシュがさらに連続して更
新されたサブブロックをもっている場合、続けてデータ
を送出し、DATAEをassertする。
新されたサブブロックをもっている場合、続けてデータ
を送出し、DATAEをassertする。
【0104】最初以外の更新されたサブブロックを持っ
ている各キャッシュは、このヘッダがバス10上を流れ
るのを見ると、DATAEがassertされた数を数える。
自分が持っているもの以前の更新されたサブブロックが
すべて流れたことを確認すると、自分が持っている更新
されたサブブロックのデータを載せ、DATAEをasse
rtする。さらに、連続して更新されたサブブロックを持
っていれば、同様のことを続ける。
ている各キャッシュは、このヘッダがバス10上を流れ
るのを見ると、DATAEがassertされた数を数える。
自分が持っているもの以前の更新されたサブブロックが
すべて流れたことを確認すると、自分が持っている更新
されたサブブロックのデータを載せ、DATAEをasse
rtする。さらに、連続して更新されたサブブロックを持
っていれば、同様のことを続ける。
【0105】要求元のキャッシュは、パケットヘッダを
受け取ると、DATAEがassertされている数をカウン
トし、それがHITM[0:3]のassertされた数と等
しくなると、データ転送は終了したものとみなす。
受け取ると、DATAEがassertされている数をカウン
トし、それがHITM[0:3]のassertされた数と等
しくなると、データ転送は終了したものとみなす。
【0106】その他の状態遷移に関しては、第2実施
例、第3実施例と同様である。
例、第3実施例と同様である。
【0107】次に、本発明の第5の実施例を説明する。
本実施例も、第1実施例〜第4実施例と同様な構造を備
えている。本実施例では、第1実施例〜第4実施例と比
べて、読み出しの場合の動作が異なる。
本実施例も、第1実施例〜第4実施例と同様な構造を備
えている。本実施例では、第1実施例〜第4実施例と比
べて、読み出しの場合の動作が異なる。
【0108】本実施例では、プロセッサ12からの読み
出し要求が発生し、バス10上に読み出し要求が流れ、
各キャッシュコントローラ31がHIT,HITM
[0:3]をキャッシュの状態に応じてassertした後、
HIT,HITM[0:3]の情報に基づいて、メモリ
コントローラ30、各キャッシュコントローラ31、要
求元のキャッシュコントローラ31は以下のような動作
を行なう。
出し要求が発生し、バス10上に読み出し要求が流れ、
各キャッシュコントローラ31がHIT,HITM
[0:3]をキャッシュの状態に応じてassertした後、
HIT,HITM[0:3]の情報に基づいて、メモリ
コントローラ30、各キャッシュコントローラ31、要
求元のキャッシュコントローラ31は以下のような動作
を行なう。
【0109】・メモリコントローラ:メモリコントロー
ラ30は、HIT,HITM[0:3]の状態にかかわ
らず、要求されたブロックをメモリ13から読み出す。
この読み出したデータは、メモリコントローラ30内部
のバッファ35に一時記憶しておく。
ラ30は、HIT,HITM[0:3]の状態にかかわ
らず、要求されたブロックをメモリ13から読み出す。
この読み出したデータは、メモリコントローラ30内部
のバッファ35に一時記憶しておく。
【0110】HITM[0:3]がどれもassertされな
ければ、メモリコントローラ30はメモリ13から読み
出したデータを要求元のキャッシュコントローラ31に
転送する。HITM[0:3]のいずれかがassertされ
ていれば、メモリコントローラ30はassertされた部分
以外のデータを要求元のキャッシュコントローラ31に
転送する。このとき、ライトバックは行なわれない。
ければ、メモリコントローラ30はメモリ13から読み
出したデータを要求元のキャッシュコントローラ31に
転送する。HITM[0:3]のいずれかがassertされ
ていれば、メモリコントローラ30はassertされた部分
以外のデータを要求元のキャッシュコントローラ31に
転送する。このとき、ライトバックは行なわれない。
【0111】・要求元以外のキャッシュコントローラ:
要求元以外のキャッシュコントローラ31は、要求アド
レスを見て、自分が要求されているブロックを保持して
いるかどうか、サブブロックの中に更新されたサブブロ
ックがないか検査する。
要求元以外のキャッシュコントローラ31は、要求アド
レスを見て、自分が要求されているブロックを保持して
いるかどうか、サブブロックの中に更新されたサブブロ
ックがないか検査する。
【0112】自分が更新されたサブブロックを持ってお
り、それが読み出し要求に書かれているサブブロックと
一致する場合、そのデータを要求元のキャッシュコント
ローラ31に転送し、当該サブブロックの状態ビットの
Dビットを更新されていない状態に変更する。
り、それが読み出し要求に書かれているサブブロックと
一致する場合、そのデータを要求元のキャッシュコント
ローラ31に転送し、当該サブブロックの状態ビットの
Dビットを更新されていない状態に変更する。
【0113】自分が更新されたサブブロックを持ってい
るが、それが読み出し要求に書かれているサブブロック
とは異なる場合、何もしない。
るが、それが読み出し要求に書かれているサブブロック
とは異なる場合、何もしない。
【0114】・要求元のキャッシュコントローラ:HI
TM[0:3]がどれもassertされなければ、要求元の
キャッシュコントローラ31は、メモリコントローラ3
0からデータが転送されてくるのを待つ。データが転送
されてくると、そのブロックを格納し、キー33を設定
し、ブロックの状態をVビットを有効、SビットをHI
T線の状態(assertされていれば共有状態、assertされ
ていなければ非共有状態)に設定する。
TM[0:3]がどれもassertされなければ、要求元の
キャッシュコントローラ31は、メモリコントローラ3
0からデータが転送されてくるのを待つ。データが転送
されてくると、そのブロックを格納し、キー33を設定
し、ブロックの状態をVビットを有効、SビットをHI
T線の状態(assertされていれば共有状態、assertされ
ていなければ非共有状態)に設定する。
【0115】さらに、ブロック内の各サブブロックの状
態を、Vビットを有効、Dビットを更新されていない状
態に設定する。
態を、Vビットを有効、Dビットを更新されていない状
態に設定する。
【0116】HITM[0:3]のうち、プロセッサ1
2の読み出し要求アドレスに該当するサブブロックに対
応する線がassertされている場合、キャッシュコントロ
ーラ31からデータが転送されるのを待つ。更新された
サブブロックを持っているキャッシュコントローラ31
が更新されたサブブロックのデータを転送すると、要求
元のキャッシュコントローラ31はキャッシュアレイ3
2にそのデータを格納する。さらにメモリコントローラ
31から、HITM[0:3]がassertされたサブブロ
ック以外のデータが転送されてくると、要求元のキャッ
シュコントローラ31は、キー33を設定し、ブロック
の状態を、Vビットを有効、SビットをHIT線の状態
(assertされていれば共有状態、assertされていなけれ
ば非共有状態)に設定する。さらに、ブロック内の各サ
ブブロックの状態を、HITM[0:3]がassertされ
ていないサブブロックおよびプロセッサ12の読み出し
要求アドレスに該当するサブブロックに関しては、Vビ
ットを有効かつDビットを更新されていない状態に、H
ITM[0:3]がassertされたサブブロックのうち、
プロセッサ12の読み出し要求アドレスに該当するサブ
ブロックを除いたものに関してはVビットを無効に設定
する。
2の読み出し要求アドレスに該当するサブブロックに対
応する線がassertされている場合、キャッシュコントロ
ーラ31からデータが転送されるのを待つ。更新された
サブブロックを持っているキャッシュコントローラ31
が更新されたサブブロックのデータを転送すると、要求
元のキャッシュコントローラ31はキャッシュアレイ3
2にそのデータを格納する。さらにメモリコントローラ
31から、HITM[0:3]がassertされたサブブロ
ック以外のデータが転送されてくると、要求元のキャッ
シュコントローラ31は、キー33を設定し、ブロック
の状態を、Vビットを有効、SビットをHIT線の状態
(assertされていれば共有状態、assertされていなけれ
ば非共有状態)に設定する。さらに、ブロック内の各サ
ブブロックの状態を、HITM[0:3]がassertされ
ていないサブブロックおよびプロセッサ12の読み出し
要求アドレスに該当するサブブロックに関しては、Vビ
ットを有効かつDビットを更新されていない状態に、H
ITM[0:3]がassertされたサブブロックのうち、
プロセッサ12の読み出し要求アドレスに該当するサブ
ブロックを除いたものに関してはVビットを無効に設定
する。
【0117】HITM[0:3]のうち、プロセッサ1
2の読み出し要求アドレスに該当するサブブロックに対
応する線がassertされていなかった場合、要求元のキャ
ッシュコントローラ31はメモリコントローラ30か
ら、HITM[0:3]がassertされたサブブロック以
外のデータが転送されてくると、要求元のキャッシュコ
ントローラ31はキー33を設定し、ブロックの状態を
Vビットを有効、SビットをHIT線の状態(assertさ
れていれば共有状態、assertされていなければ非共有状
態)に設定する。さらに、ブロック内の各サブブロック
の状態を、HITM[0:3]がassertされていないサ
ブブロックに関してはVビットを有効かつDビットを更
新されていない状態に、HITM[0:3]がassertさ
れたブロックに関してはVビットを無効に設定する。
2の読み出し要求アドレスに該当するサブブロックに対
応する線がassertされていなかった場合、要求元のキャ
ッシュコントローラ31はメモリコントローラ30か
ら、HITM[0:3]がassertされたサブブロック以
外のデータが転送されてくると、要求元のキャッシュコ
ントローラ31はキー33を設定し、ブロックの状態を
Vビットを有効、SビットをHIT線の状態(assertさ
れていれば共有状態、assertされていなければ非共有状
態)に設定する。さらに、ブロック内の各サブブロック
の状態を、HITM[0:3]がassertされていないサ
ブブロックに関してはVビットを有効かつDビットを更
新されていない状態に、HITM[0:3]がassertさ
れたブロックに関してはVビットを無効に設定する。
【0118】
【発明の効果】本発明によれば、並列計算機において、
空間的局所性の有効利用と、false sharing の回避を共
存させることができるようになる。また、false sharin
g の回避のためのプリフェッチなどの従来技術を用いた
ときに問題となる、大容量キャッシュにおけるキャッシ
ュタタグの増大という問題に対しても対応できるように
なる。
空間的局所性の有効利用と、false sharing の回避を共
存させることができるようになる。また、false sharin
g の回避のためのプリフェッチなどの従来技術を用いた
ときに問題となる、大容量キャッシュにおけるキャッシ
ュタタグの増大という問題に対しても対応できるように
なる。
【図1】本発明によるキャッシュブロック構成を示す図
である。
である。
【図2】本発明が適用される共有メモリ型並列計算機を
示す図である。
示す図である。
【図3】状態通知線の構造を示す図である。
【図4】複数のプロセッサのキャッシュでデータを共有
している状態を示す図である。
している状態を示す図である。
【図5】複数のプロセッサのキャッシュ間で必要な部分
のみ無効化する態様を示す図である。
のみ無効化する態様を示す図である。
【図6】サブブロック単位での有効/無効フラグを用い
たデータ転送パケットのヘッダ例を示す図である。
たデータ転送パケットのヘッダ例を示す図である。
【図7】プロセッサA,Bのキャッシュでデータを共有
し、プロセッサBで一部が無効化されている状態を示す
図である。
し、プロセッサBで一部が無効化されている状態を示す
図である。
【図8】プロセッサA,Bが互いのキャッシュを無効化
しあっている状態を示す図である。
しあっている状態を示す図である。
【図9】ブロックを共有していなかったプロセッサCが
新たにそのブロックに対する読み出し要求を発生した状
態を示す図である。
新たにそのブロックに対する読み出し要求を発生した状
態を示す図である。
【図10】メモリコントローラでブロックデータをまと
めて要求元キャッシュにデータを転送する方式を示す図
である。
めて要求元キャッシュにデータを転送する方式を示す図
である。
【図11】それぞれのキャッシュが要求元キャッシュに
データを転送する方式を示す図である。
データを転送する方式を示す図である。
【図12】複数のDirty データの1パケット化/固定デ
ータスロット方式を示す図である。
ータスロット方式を示す図である。
【図13】複数のDirty データの1パケット化/可変デ
ータスロット方式を示す図である。
ータスロット方式を示す図である。
【図14】Dirty なサブブロック以外を要求元キャッシ
ュに転送する方式を示す図である。
ュに転送する方式を示す図である。
【図15】並列計算機の構成を示す図である。
【図16】本発明の実施例のキャッシュの構成を示す図
である。
である。
【図17】サブブロックの状態ビットを示す図である。
【図18】計算機の構成を示す図である。
【図19】キャッシュを利用したシステムを示す図であ
る。
る。
【図20】Sub sector方式を示す図である。
【図21】並列計算機におけるfalse sharing を説明す
る図である。
る図である。
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B005 JJ11 KK13 MM01 NN03 NN31 NN43 NN45 NN53 PP03 PP21 PP26 TT02 TT03 UU41
Claims (8)
- 【請求項1】 プロセッサとキャッシュの組が複数接続
され、各プロセッサから共通にアクセス可能な共有メモ
リを有する共有メモリ型並列計算機システムにおけるキ
ャッシュメモリ装置において、 キャッシュメモリのブロックをより小さなサブブロック
に分割し、各サブブロック毎に状態情報を持たせるよう
に構成するとともに、 複数のキャッシュ間で共有しているデータに関する書き
込み操作が発生したとき、共有している他のキャッシュ
の該当ブロックに対して、上記サブブロック毎の状態情
報にもとづいて、書き込みが発生したサブブロックのみ
を無効化する手段を備えたことを特徴とするキャッシュ
メモリ装置。 - 【請求項2】 複数のキャッシュ間で共有状態にあるブ
ロックに対して、共有しているプロセッサの中のあるプ
ロセッサが書き込みを起こしたことにより、他のプロセ
ッサに付随しているキャッシュではブロックの一部のみ
が無効状態になっている状態において、ブロックを共有
しているプロセッサのうち、最初に書き込みを起こした
プロセッサ以外のプロセッサが同じブロックに対して書
き込みを発生した場合、書き込み対象のサブブロックが
最初のプロセッサが書き込み対象としたサブブロックで
なければ、最初のプロセッサのキャッシュに保持されて
いるブロックをライトバックすることなく当該他のプロ
セッサの書き込み操作を行なう構成としたことを特徴と
する請求項1に記載のキャッシュメモリ装置。 - 【請求項3】 あるキャッシュからの読み出し信号が発
生したときに、各キャッシュの当該アドレスに相当する
ブロックの状態を通知する信号線として、ブロックに対
応する信号線とともに、各サブブロックに対応する信号
線を複数用意し、同時にすべてのサブブロックの状態を
すべてのキャッシュに通知するように構成したことを特
徴とする請求項1に記載のキャッシュメモリ装置。 - 【請求項4】 複数のプロセッサがあるブロックを共有
するとともに、当該ブロック内のそれぞれ異なるサブブ
ロックを更新した状態で保持しているとき、共有状態に
ない他のプロセッサからの読み出し要求が発生したと
き、メモリコントローラが更新されたサブブロックを保
持している各キャッシュからのライトバック要求をまと
め、当該ブロック内のサブブロックをすべて最新のデー
タに更新した状態でブロックデータを要求元に渡すよう
に構成したことを特徴とする請求項3に記載のキャッシ
ュメモリ装置。 - 【請求項5】 複数のプロセッサがあるブロックを共有
するとともに、当該ブロック内のそれぞれ異なるサブブ
ロックを更新した状態で保持しているとき、共有状態に
ない他のプロセッサからの読み出し要求が発生したと
き、更新されたサブブロックを保持している各キャッシ
ュは更新されたサブブロックを要求元に転送し、メモリ
コントローラは更新状態にないサブブロックを要求元に
転送し、これらのデータを要求元のキャッシュコントロ
ーラが集めて1つのブロックとするように構成したこと
を特徴とする請求項3に記載のキャッシュメモリ装置。 - 【請求項6】 複数のプロセッサがそれぞれ異なる更新
されたサブブロックを保持している状態で、ブロック全
体に対する読み出しまたはライトバックが発生した場
合、ひとつのキャッシュがパケットヘッダを作成し、各
更新されたサブブロック用のデータスロットを用意し、
各更新されたサブブロックを持っているキャッシュは、
このデータスロットにデータを埋めることにより、各キ
ャッシュにまたがって更新されたサブブロックをひとつ
のパケットにまとめてデータ転送するように構成したこ
とを特徴とする請求項4または請求項5に記載のキャッ
シュメモリ装置。 - 【請求項7】 複数のプロセッサがそれぞれ異なる更新
されたサブブロックを保持している状態で、ブロック全
体に対する読み出しまたはライトバックが発生した場
合、ひとつのキャッシュがパケットヘッダを作成し、各
更新されたサブブロックを保持しているキャッシュは、
順にデータを送出するとともにデータの有効信号をオン
とし、このデータの有効信号の到来数によって各更新さ
れたサブブロックを持っているキャッシュは自己のデー
タ送出順番を識別し、各キャッシュにまたがって更新さ
れたサブブロックをひとつのパケットにまとめてデータ
転送するように構成したことを特徴とする請求項4また
は請求項5に記載のキャッシュメモリ装置。 - 【請求項8】 複数のプロセッサがあるブロックを共有
するとともに、当該ブロック内のそれぞれ異なるサブブ
ロックを更新した状態で保持しているとき、共有状態に
ない他のプロセッサからの読み出し要求が発生したと
き、要求されたアドレスに対するサブブロックのみを有
効データとして転送するように構成したことを特徴とす
る請求項3に記載のキャッシュメモリ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11073302A JP2000267935A (ja) | 1999-03-18 | 1999-03-18 | キヤッシュメモリ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11073302A JP2000267935A (ja) | 1999-03-18 | 1999-03-18 | キヤッシュメモリ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2000267935A true JP2000267935A (ja) | 2000-09-29 |
Family
ID=13514242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11073302A Withdrawn JP2000267935A (ja) | 1999-03-18 | 1999-03-18 | キヤッシュメモリ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2000267935A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007535057A (ja) * | 2004-04-26 | 2007-11-29 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 集積回路及びトランザクション発信方法 |
EP2073126A1 (en) | 2007-12-19 | 2009-06-24 | Nec Corporation | Cache memory system and cache memory control method |
EP2075704A1 (en) | 2007-12-26 | 2009-07-01 | NEC Corporation | Cache memory system and cache memory control method |
JPWO2008155844A1 (ja) * | 2007-06-20 | 2010-08-26 | 富士通株式会社 | 情報処理装置およびキャッシュ制御方法 |
WO2014087654A1 (ja) * | 2012-12-07 | 2014-06-12 | 日本電気株式会社 | データ送信装置、データ送信方法、及び記録媒体 |
US8874856B2 (en) | 2010-10-08 | 2014-10-28 | Samsung Electronics Co., Ltd. | Apparatus and method for detecting false sharing |
-
1999
- 1999-03-18 JP JP11073302A patent/JP2000267935A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007535057A (ja) * | 2004-04-26 | 2007-11-29 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 集積回路及びトランザクション発信方法 |
JP4740234B2 (ja) * | 2004-04-26 | 2011-08-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 集積回路及びトランザクション発信方法 |
JPWO2008155844A1 (ja) * | 2007-06-20 | 2010-08-26 | 富士通株式会社 | 情報処理装置およびキャッシュ制御方法 |
JP4613247B2 (ja) * | 2007-06-20 | 2011-01-12 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
EP2073126A1 (en) | 2007-12-19 | 2009-06-24 | Nec Corporation | Cache memory system and cache memory control method |
EP2075704A1 (en) | 2007-12-26 | 2009-07-01 | NEC Corporation | Cache memory system and cache memory control method |
US8874856B2 (en) | 2010-10-08 | 2014-10-28 | Samsung Electronics Co., Ltd. | Apparatus and method for detecting false sharing |
WO2014087654A1 (ja) * | 2012-12-07 | 2014-06-12 | 日本電気株式会社 | データ送信装置、データ送信方法、及び記録媒体 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7698508B2 (en) | System and method for reducing unnecessary cache operations | |
JP3269967B2 (ja) | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム | |
US6021468A (en) | Cache coherency protocol with efficient write-through aliasing | |
JP5120850B2 (ja) | ストリーム・レジスタを用いてスヌープ要求をフィルタする方法、装置及びコンピュータ・プログラム | |
US5881303A (en) | Multiprocessing system configured to perform prefetch coherency activity with separate reissue queue for each processing subnode | |
JP5535991B2 (ja) | キャッシュ競合の解決 | |
US9170946B2 (en) | Directory cache supporting non-atomic input/output operations | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US7281092B2 (en) | System and method of managing cache hierarchies with adaptive mechanisms | |
US7434007B2 (en) | Management of cache memories in a data processing apparatus | |
US6343344B1 (en) | System bus directory snooping mechanism for read/castout (RCO) address transaction | |
US6266743B1 (en) | Method and system for providing an eviction protocol within a non-uniform memory access system | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
US6751705B1 (en) | Cache line converter | |
JP2000250812A (ja) | メモリ・キャッシュ・システムおよびその管理方法 | |
JP2007183702A (ja) | キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
JP2008535093A5 (ja) | ||
JPH10154100A (ja) | 情報処理システム及び装置及びその制御方法 | |
US7380068B2 (en) | System and method for contention-based cache performance optimization | |
US20040059877A1 (en) | Method and apparatus for implementing cache state as history of read/write shared data | |
US6766360B1 (en) | Caching mechanism for remote read-only data in a cache coherent non-uniform memory access (CCNUMA) architecture | |
US10540283B2 (en) | Coherence de-coupling buffer | |
US6615321B2 (en) | Mechanism for collapsing store misses in an SMP computer system | |
US7797495B1 (en) | Distributed directory cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060606 |