JPH06103477B2 - 並列キャッシュメモリ - Google Patents
並列キャッシュメモリInfo
- Publication number
- JPH06103477B2 JPH06103477B2 JP3348383A JP34838391A JPH06103477B2 JP H06103477 B2 JPH06103477 B2 JP H06103477B2 JP 3348383 A JP3348383 A JP 3348383A JP 34838391 A JP34838391 A JP 34838391A JP H06103477 B2 JPH06103477 B2 JP H06103477B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- memory
- cache line
- data
- line data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E60/00—Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
- Y02E60/30—Hydrogen technology
- Y02E60/50—Fuel cells
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【産業上の利用分野】本発明は、複数のプロセッサを有
するデータ処理システムに用いられる並列キャッシュメ
モリに関するものである。
するデータ処理システムに用いられる並列キャッシュメ
モリに関するものである。
【0002】
【従来の技術】従来、高速のデータ処理を実現する手段
として、図8に示すように複数のプロセッサPを使用
し、これら複数のプロセッサPをメモリバスBに接続し
てメモリMを共有する密結合マルチプロセッサ方式を採
用したものがある。
として、図8に示すように複数のプロセッサPを使用
し、これら複数のプロセッサPをメモリバスBに接続し
てメモリMを共有する密結合マルチプロセッサ方式を採
用したものがある。
【0003】しかし、このように各プロセッサPを単に
メモリバスBに結合したのでは、各プロセッサPから共
有メモリMに対するリード/ライトなどのメモリアクセ
ス要求がメモリバスBに集中することがあるため、プロ
セッサPの数が4〜16個程度になると、システム全体
の性能向上がそれ以上望めなくなることが知られてい
る。
メモリバスBに結合したのでは、各プロセッサPから共
有メモリMに対するリード/ライトなどのメモリアクセ
ス要求がメモリバスBに集中することがあるため、プロ
セッサPの数が4〜16個程度になると、システム全体
の性能向上がそれ以上望めなくなることが知られてい
る。
【0004】これを解決する手段として、図9に示すよ
うに各プロセッサPに対してキャッシュメモリCM1 、
CM2 、…を接続したものがある。なお、キャッシュメ
モリに関する参考文献として、次のものが知られてい
る。
うに各プロセッサPに対してキャッシュメモリCM1 、
CM2 、…を接続したものがある。なお、キャッシュメ
モリに関する参考文献として、次のものが知られてい
る。
【0005】Paul Sweazey and Alan Jay Smith : A Cl
ass of a Compatible Cache Consistency Protocol and
their Support by the IEEE Futurebus, Proceedingso
f the 13th Annual International Symposium on Compu
ter Architecture, June, 1986. James Archibald and Jean-loup Baer: Cache Coherenc
e Protocols: Evaluation Using a Multiprocessor Sim
ulation Model, ACM Transacions on Computer, Vol.4,
No.4, Novemder, 1986. ここで、図9において、各プロセッサPにそれぞれ接続
されるキャッシュメモリCM1 、CM2 、…は、それぞ
れ対応するプロセッサPが最近に参照した共有メモリM
の内容のコピーを、複数あるキャッシュラインのひとつ
に格納している。ここでの各キャッシュラインは、下記
のような情報を格納するようにしている。 (1)数ワード分(4〜16ワード程度のものが一般的
である)のデータ(これをキャッシュラインデータと呼
ぶ)。 (2)データがもともと存在していた共有メモリ装置M
上でのアドレス。 (3)キャッシュラインの状態、例えば、タグ情報とし
て、 ・キャッシュラインに有効なデータが格納されているか
否か、 ・キャッシュラインのデータは他のキャッシュメモリに
も存在するか否か、 ・共有メモリ上のデータと同じであるか否か、 などである。
ass of a Compatible Cache Consistency Protocol and
their Support by the IEEE Futurebus, Proceedingso
f the 13th Annual International Symposium on Compu
ter Architecture, June, 1986. James Archibald and Jean-loup Baer: Cache Coherenc
e Protocols: Evaluation Using a Multiprocessor Sim
ulation Model, ACM Transacions on Computer, Vol.4,
No.4, Novemder, 1986. ここで、図9において、各プロセッサPにそれぞれ接続
されるキャッシュメモリCM1 、CM2 、…は、それぞ
れ対応するプロセッサPが最近に参照した共有メモリM
の内容のコピーを、複数あるキャッシュラインのひとつ
に格納している。ここでの各キャッシュラインは、下記
のような情報を格納するようにしている。 (1)数ワード分(4〜16ワード程度のものが一般的
である)のデータ(これをキャッシュラインデータと呼
ぶ)。 (2)データがもともと存在していた共有メモリ装置M
上でのアドレス。 (3)キャッシュラインの状態、例えば、タグ情報とし
て、 ・キャッシュラインに有効なデータが格納されているか
否か、 ・キャッシュラインのデータは他のキャッシュメモリに
も存在するか否か、 ・共有メモリ上のデータと同じであるか否か、 などである。
【0006】しかして、このようにしたキャッシュメモ
リCM1 、CM2 、…では、各プロセッサPから共有メ
モリMへのリード/ライト要求に対し、いま、あるプロ
セッサPからリード要求があった場合、プロセッサPに
接続されたキャッシュメモリCM1 が、要求のあったキ
ャッシュラインデータを保持していると、図10(a)
の動作シーケンスに示すように、キャッシュメモリCM
1 は、そのキャッシュラインデータの中から要求のあっ
た部分データをプロセッサPに返して処理を終了する。
リCM1 、CM2 、…では、各プロセッサPから共有メ
モリMへのリード/ライト要求に対し、いま、あるプロ
セッサPからリード要求があった場合、プロセッサPに
接続されたキャッシュメモリCM1 が、要求のあったキ
ャッシュラインデータを保持していると、図10(a)
の動作シーケンスに示すように、キャッシュメモリCM
1 は、そのキャッシュラインデータの中から要求のあっ
た部分データをプロセッサPに返して処理を終了する。
【0007】また、プロセッサPに接続されたキャッシ
ュメモリCM1 が、該当するキャッシュラインデータを
保持していないと、図10(b)の動作シーケンスに示
すように、まず、キャッシュメモリCM1 は、他のキャ
ッシュメモリCM2 および共有メモリMに対して、その
アドレスに対応するキャッシュラインデータの転送を要
求する。すると、データ転送要求を受け取ったキャッシ
ュメモリCM2 は、そのキャッシュラインに要求のあっ
たキャッシュラインデータを保持しているか否か、およ
び、それをキャッシュメモリCM1 に転送すべきか否か
を判定する。そして、データ転送をすべきと判定したキ
ャッシュメモリCM2 は、そのキャッシュラインデータ
をキャッシュメモリCM1 に転送する。もし、どのキャ
ッシュメモリも転送しない場合、共有メモリMが該当す
るキャッシュラインデータを転送する。そして、転送さ
れたキャッシュラインの内容を受けとったキャッシュメ
モリCM1 は、それを適当なキャッシュラインに格納す
るとともに、そのキャッシュラインデータの中から要求
のあった部分データをプロセッサPに返して処理を終了
する。
ュメモリCM1 が、該当するキャッシュラインデータを
保持していないと、図10(b)の動作シーケンスに示
すように、まず、キャッシュメモリCM1 は、他のキャ
ッシュメモリCM2 および共有メモリMに対して、その
アドレスに対応するキャッシュラインデータの転送を要
求する。すると、データ転送要求を受け取ったキャッシ
ュメモリCM2 は、そのキャッシュラインに要求のあっ
たキャッシュラインデータを保持しているか否か、およ
び、それをキャッシュメモリCM1 に転送すべきか否か
を判定する。そして、データ転送をすべきと判定したキ
ャッシュメモリCM2 は、そのキャッシュラインデータ
をキャッシュメモリCM1 に転送する。もし、どのキャ
ッシュメモリも転送しない場合、共有メモリMが該当す
るキャッシュラインデータを転送する。そして、転送さ
れたキャッシュラインの内容を受けとったキャッシュメ
モリCM1 は、それを適当なキャッシュラインに格納す
るとともに、そのキャッシュラインデータの中から要求
のあった部分データをプロセッサPに返して処理を終了
する。
【0008】一方、プロセッサPからライト要求があっ
た場合、プロセッサPに接続されたキャッシュメモリC
M1 が、該当するキャッシュラインデータを保持し、か
つ、そのキャッシュラインデータが他のキャッシュメモ
リCM2に存在しないと(これは、タグ情報を参照して
調べる)、図11(a)の動作シーンスに示すように、
キャッシュメモリCM1 は、該当するキャッシュライン
データのうち、ライト要求のあった部分のデータを書き
換えるとともに、必要に応じてタグ情報の更新(例え
ば、共有メモリMと内容が異なることを記憶する)を行
う。
た場合、プロセッサPに接続されたキャッシュメモリC
M1 が、該当するキャッシュラインデータを保持し、か
つ、そのキャッシュラインデータが他のキャッシュメモ
リCM2に存在しないと(これは、タグ情報を参照して
調べる)、図11(a)の動作シーンスに示すように、
キャッシュメモリCM1 は、該当するキャッシュライン
データのうち、ライト要求のあった部分のデータを書き
換えるとともに、必要に応じてタグ情報の更新(例え
ば、共有メモリMと内容が異なることを記憶する)を行
う。
【0009】また、プロセッサPに接続されたキャッシ
ュメモリCM1 が、該当するキャッシュラインデータを
保持しており、かつ、そのキャッシュラインデータが他
のキャッシュメモリCM2 に存在すると、図11(b)
の動作シーンスに示すように、キャッシュメモリCM1
は、他のキャッシュメモリCM2 に対して、該当するキ
ャッシュラインデータの無効化を要求する。そして、こ
の無効化の要求が達成されることが確実になった時点
で、該当するキャッシュラインデータのうち、ライト要
求のあった部分のデータを書き換えるとともに、必要に
応じてタグ情報の更新(例えば、共有メモリと内容が異
なること、そのキャッシュラインデータは他のキャッシ
ュメモリには無いことを記憶する)を行う。さらに、無
効化要求を受け取ったキャッシュメモリCM2 は、キャ
ッシュラインに、該当するキャッシュラインデータがあ
るか否か調べ、もしあれば、そのタグに保持されている
データが無効であることを示す情報を格納するようにな
る。
ュメモリCM1 が、該当するキャッシュラインデータを
保持しており、かつ、そのキャッシュラインデータが他
のキャッシュメモリCM2 に存在すると、図11(b)
の動作シーンスに示すように、キャッシュメモリCM1
は、他のキャッシュメモリCM2 に対して、該当するキ
ャッシュラインデータの無効化を要求する。そして、こ
の無効化の要求が達成されることが確実になった時点
で、該当するキャッシュラインデータのうち、ライト要
求のあった部分のデータを書き換えるとともに、必要に
応じてタグ情報の更新(例えば、共有メモリと内容が異
なること、そのキャッシュラインデータは他のキャッシ
ュメモリには無いことを記憶する)を行う。さらに、無
効化要求を受け取ったキャッシュメモリCM2 は、キャ
ッシュラインに、該当するキャッシュラインデータがあ
るか否か調べ、もしあれば、そのタグに保持されている
データが無効であることを示す情報を格納するようにな
る。
【0010】また、プロセッサPに接続されたキャッシ
ュメモリCM1 が、該当するキャッシュラインデータを
保持していないと、図11(c)の動作シーンスに示す
ように、キャッシュメモリCM1 は、他のキャッシュメ
モリCM2 及び共有メモリMに対して、そのアドレスに
対応するキャッシュラインデータの転送と無効化を要求
する。そして、データ転送及び無効化要求を受け取った
キャッシュメモリCM2 は、同キャッシュメモリCM2
内のキャッシュラインに、該当するキャッシュラインデ
ータが存在するか否か、及び、それを要求元のキャッシ
ュメモリCM1に転送すべきか否かを判定する。そし
て、データ転送をすべきと判定したキャッシュメモリC
M2 は、該当するキャッシュラインデータをキャッシュ
メモリCM1 に転送する。もし、どのキャッシュメモリ
CM1 も転送しない場合、共有メモリMが該当するキャ
ッシュラインデータを転送する。それと同時に、キャッ
シュラインに、該当するキャッシュラインデータが存在
するすべてのキャッシュメモリCM2は、その無効化を
行う(すなわちタグにそれが無効であることを示す情報
を格納する)。さらに、転送されたキャッシュラインデ
ータを受け取ったキャッシュメモリCM1 は、それを適
当なキャッシュラインに格納するとともに、該当するキ
ャッシュラインデータのうち、ライト要求のあった部分
のデータを書き換え、必要に応じてタグ情報の更新(例
えば、共有メモリと内容が異なること、そのキャッシュ
ラインデータは他のキャッシュメモリには無いことを記
憶する)を行う。
ュメモリCM1 が、該当するキャッシュラインデータを
保持していないと、図11(c)の動作シーンスに示す
ように、キャッシュメモリCM1 は、他のキャッシュメ
モリCM2 及び共有メモリMに対して、そのアドレスに
対応するキャッシュラインデータの転送と無効化を要求
する。そして、データ転送及び無効化要求を受け取った
キャッシュメモリCM2 は、同キャッシュメモリCM2
内のキャッシュラインに、該当するキャッシュラインデ
ータが存在するか否か、及び、それを要求元のキャッシ
ュメモリCM1に転送すべきか否かを判定する。そし
て、データ転送をすべきと判定したキャッシュメモリC
M2 は、該当するキャッシュラインデータをキャッシュ
メモリCM1 に転送する。もし、どのキャッシュメモリ
CM1 も転送しない場合、共有メモリMが該当するキャ
ッシュラインデータを転送する。それと同時に、キャッ
シュラインに、該当するキャッシュラインデータが存在
するすべてのキャッシュメモリCM2は、その無効化を
行う(すなわちタグにそれが無効であることを示す情報
を格納する)。さらに、転送されたキャッシュラインデ
ータを受け取ったキャッシュメモリCM1 は、それを適
当なキャッシュラインに格納するとともに、該当するキ
ャッシュラインデータのうち、ライト要求のあった部分
のデータを書き換え、必要に応じてタグ情報の更新(例
えば、共有メモリと内容が異なること、そのキャッシュ
ラインデータは他のキャッシュメモリには無いことを記
憶する)を行う。
【0011】しかして、各プロセッサPでのリード/ラ
イト要求がそれぞれ図10(a)、図11(a)に示す
動作シーケンスで処理できる確率が高い場合には、この
ような並列キャッシュの採用により、データ処理装置全
体の性能は飛躍的に改善できることになる。しかし、実
際には図10(b)、図11(b)(c)に示すような
動作シーケンスも起こることがあるため、プロセッサP
の数が16〜30程度にもなると、メモリバス上のトラ
フィックが増大し、それ以上のプロセッサ数を増やして
もシステム全体の性能は上がらないようになる。
イト要求がそれぞれ図10(a)、図11(a)に示す
動作シーケンスで処理できる確率が高い場合には、この
ような並列キャッシュの採用により、データ処理装置全
体の性能は飛躍的に改善できることになる。しかし、実
際には図10(b)、図11(b)(c)に示すような
動作シーケンスも起こることがあるため、プロセッサP
の数が16〜30程度にもなると、メモリバス上のトラ
フィックが増大し、それ以上のプロセッサ数を増やして
もシステム全体の性能は上がらないようになる。
【0012】ところで、並列キャッシュメモリを使用す
る場合に、メモリバスBにコマンドが出るのは、次の3
つのケースに大別できる。
る場合に、メモリバスBにコマンドが出るのは、次の3
つのケースに大別できる。
【0013】第1のケースは、あるプロセッサが使用す
るプログラム及びデータがキャッシュメモリに格納しき
れず、キャッシュメモリと共有メモリの間でキャッシュ
ラインデータの転送が起きる場合である。これは、図1
0(b)や図11(c)の動作シーケンスに相当し、こ
れを軽減するには、キャッシュメモリの容量を大きくす
る必要がある。これは近年のLSIの高集積化により実
現できる可能性がある。
るプログラム及びデータがキャッシュメモリに格納しき
れず、キャッシュメモリと共有メモリの間でキャッシュ
ラインデータの転送が起きる場合である。これは、図1
0(b)や図11(c)の動作シーケンスに相当し、こ
れを軽減するには、キャッシュメモリの容量を大きくす
る必要がある。これは近年のLSIの高集積化により実
現できる可能性がある。
【0014】第2のケースは、あるキャッシュライン中
の個々のデータをそれぞれ別のプロセッサがアクセスす
ることにより、結果的にそのキャッシュラインデータへ
のアクセス競合を生ずる場合である。これは、図10
(b)や図11(b)(c)の動作シーケンスに相当
し、これを軽減するには、キャッシュラインサイズを小
さくする必要がある。これについても、近年のLSIの
高集積化により実現できる可能性がある。
の個々のデータをそれぞれ別のプロセッサがアクセスす
ることにより、結果的にそのキャッシュラインデータへ
のアクセス競合を生ずる場合である。これは、図10
(b)や図11(b)(c)の動作シーケンスに相当
し、これを軽減するには、キャッシュラインサイズを小
さくする必要がある。これについても、近年のLSIの
高集積化により実現できる可能性がある。
【0015】第3のケースは、あるデータに対して複数
のプロセッサからのアクセスが競合することにより、図
10(b)や図11(b)(c)の動作シーケンスが起
きる場合である。これは、ひとつの仕事を複数のプロセ
ッサで並列処理する場合に本質的な現象でありLSIの
高集積化では解決できない。
のプロセッサからのアクセスが競合することにより、図
10(b)や図11(b)(c)の動作シーケンスが起
きる場合である。これは、ひとつの仕事を複数のプロセ
ッサで並列処理する場合に本質的な現象でありLSIの
高集積化では解決できない。
【0016】
【発明が解決しようとする課題】このように、従来の並
列キャッシュメモリにあっては、あるデータに対して複
数のプロセッサからのアクセスが競合する場合に、メモ
リバスの負荷が増大するために、プロセッサ数をある限
度以上に増やしてもデータ処理のためのシステム全体の
性能は上がらないという問題点があった。
列キャッシュメモリにあっては、あるデータに対して複
数のプロセッサからのアクセスが競合する場合に、メモ
リバスの負荷が増大するために、プロセッサ数をある限
度以上に増やしてもデータ処理のためのシステム全体の
性能は上がらないという問題点があった。
【0017】本発明は、上記事情に鑑みてなされたもの
で、メモリバスに対する負荷を軽減しデータ処理のため
のシステム全体の性能向上を可能にした並列キャッシュ
メモリを提供することを目的とする。
で、メモリバスに対する負荷を軽減しデータ処理のため
のシステム全体の性能向上を可能にした並列キャッシュ
メモリを提供することを目的とする。
【0018】
【課題を解決するための手段】本発明の並列キャッシュ
メモリは、複数のプロセッサにそれぞれ接続されるとと
もに、それぞれがメモリバスを介して共有メモリに接続
されるキャッシュメモリを有し、プロセッサのリード要
求に対してそのプロセッサに接続されたキャッシュメモ
リが自己のキャッシュライン中にリード要求の対象とな
るキャッシュラインデータがあるか否かを判断し、無け
れば他のキャッシュメモリまたは前記共有メモリからリ
ード要求の対象となるキャッシュラインデータを獲得す
るようにしたもので、各キャッシュメモリは、自らキャ
ッシュメモリ中にリード要求の対象となるキャッシュラ
インデータがあるとリード要求を行ったプロセッサが同
じキャッシュラインデータに対してライト要求を行うか
否かを予測する手段を有し、リード要求を行ったプロセ
ッサに接続されたキャッシュメモリからキャッシュライ
ンデータの転送要求を受けた他のキャッシュメモリは、
自己のキャッシュラインデータに対しプロセッサがライ
ト要求を行うか否かを予測しライト要求を行うと予測す
るとそのキャッシュラインデータを無効化し、リード要
求を行ったプロセッサに接続されたキャッシュメモリ
は、他のキャッシュメモリ又は前記共有メモリから転送
されてきたキャッシュラインデータに対してプロセッサ
がライト要求を行うか否かを予測しライト要求を行うと
予測するとそのキャッシュラインデータが他のキャッシ
ュメモリに無いことを記憶するようにしている。
メモリは、複数のプロセッサにそれぞれ接続されるとと
もに、それぞれがメモリバスを介して共有メモリに接続
されるキャッシュメモリを有し、プロセッサのリード要
求に対してそのプロセッサに接続されたキャッシュメモ
リが自己のキャッシュライン中にリード要求の対象とな
るキャッシュラインデータがあるか否かを判断し、無け
れば他のキャッシュメモリまたは前記共有メモリからリ
ード要求の対象となるキャッシュラインデータを獲得す
るようにしたもので、各キャッシュメモリは、自らキャ
ッシュメモリ中にリード要求の対象となるキャッシュラ
インデータがあるとリード要求を行ったプロセッサが同
じキャッシュラインデータに対してライト要求を行うか
否かを予測する手段を有し、リード要求を行ったプロセ
ッサに接続されたキャッシュメモリからキャッシュライ
ンデータの転送要求を受けた他のキャッシュメモリは、
自己のキャッシュラインデータに対しプロセッサがライ
ト要求を行うか否かを予測しライト要求を行うと予測す
るとそのキャッシュラインデータを無効化し、リード要
求を行ったプロセッサに接続されたキャッシュメモリ
は、他のキャッシュメモリ又は前記共有メモリから転送
されてきたキャッシュラインデータに対してプロセッサ
がライト要求を行うか否かを予測しライト要求を行うと
予測するとそのキャッシュラインデータが他のキャッシ
ュメモリに無いことを記憶するようにしている。
【0019】
【作用】この結果、本発明によれば、プロセッサがある
アドレスに対してリードを行い、次に同じアドレスに対
してライトを行うような場合、各キャッシュメモリでの
ライト要求を予測する機能とそれに基づくキャッシュラ
インデータの無効化の機能により、あるデータに対して
複数のプロセッサからのアクセスが競合する場合にもラ
イト処理を高速化できるとともに、メモリバスに対する
負荷を軽減できるようになる。
アドレスに対してリードを行い、次に同じアドレスに対
してライトを行うような場合、各キャッシュメモリでの
ライト要求を予測する機能とそれに基づくキャッシュラ
インデータの無効化の機能により、あるデータに対して
複数のプロセッサからのアクセスが競合する場合にもラ
イト処理を高速化できるとともに、メモリバスに対する
負荷を軽減できるようになる。
【0020】
【実施例】以下、本発明の一実施例を図面に従い説明す
る。
る。
【0021】図1は同実施例の概略構成を示すものであ
る。図において、1〜3はプロセッサで、これらプロセ
ッサ1〜3は、32ビットのアドレス線4〜6、32ビ
ットのデータ線7〜9をそれぞれ介してキャッシュメモ
リ10〜12を接続している。また、これらキャッシュ
メモリ10〜12は、メモリバス13により共有メモリ
14を接続している。
る。図において、1〜3はプロセッサで、これらプロセ
ッサ1〜3は、32ビットのアドレス線4〜6、32ビ
ットのデータ線7〜9をそれぞれ介してキャッシュメモ
リ10〜12を接続している。また、これらキャッシュ
メモリ10〜12は、メモリバス13により共有メモリ
14を接続している。
【0022】ここで、説明を簡単にするためキャッシュ
メモリ10について述べると、かかるキャッシュメモリ
10は、レジスタ101、比較回路102、セレクタ1
03、キャッシュライン104、制御回路105、10
6、比較回路107、セレクタ108、レジスタ10
9、110、演算回路111、レジスタ112を有して
いる。
メモリ10について述べると、かかるキャッシュメモリ
10は、レジスタ101、比較回路102、セレクタ1
03、キャッシュライン104、制御回路105、10
6、比較回路107、セレクタ108、レジスタ10
9、110、演算回路111、レジスタ112を有して
いる。
【0023】レジスタ101は、対応するプロセッサ1
からリード要求を受けとると、そのアドレスを格納す
る。キャッシュライン104は、アドレス格納部104
1、タグ格納部1042、キャッシュラインデータ格納
部1043を有している。また、キャッシュライン10
4のエントリ数として1024個を有し、それぞれのキ
ャッシュラインデータの大きさを16バイトとしてい
る。さらに、キャッシュライン104は、格納されてい
るキャッシュラインデータがもともと格納されていた共
有メモリのアドレスのうち、A31〜A14(ただし、最上
位ビットをA31、最下位ビットをA0 で表わす)の情報
と、タグ情報としてのVビットおよびXビットを有して
いる。ここでは、Vビットが1の時、そのキャッシュラ
インデータが有効であることを表わし、Xビットが1の
時、そのキャッシュラインデータは、他のキャッシュメ
モリには存在しないことを表わしている。
からリード要求を受けとると、そのアドレスを格納す
る。キャッシュライン104は、アドレス格納部104
1、タグ格納部1042、キャッシュラインデータ格納
部1043を有している。また、キャッシュライン10
4のエントリ数として1024個を有し、それぞれのキ
ャッシュラインデータの大きさを16バイトとしてい
る。さらに、キャッシュライン104は、格納されてい
るキャッシュラインデータがもともと格納されていた共
有メモリのアドレスのうち、A31〜A14(ただし、最上
位ビットをA31、最下位ビットをA0 で表わす)の情報
と、タグ情報としてのVビットおよびXビットを有して
いる。ここでは、Vビットが1の時、そのキャッシュラ
インデータが有効であることを表わし、Xビットが1の
時、そのキャッシュラインデータは、他のキャッシュメ
モリには存在しないことを表わしている。
【0024】そして、リード要求に対応するキャッシュ
ラインデータがキャッシュメモリ10中に存在するか否
かの判定は、制御回路105により、レジスタ101に
格納されたアドレスのA13〜A4 に対応するキャッシュ
ラインを選択し、そのキャッシュラインに格納されてい
るアドレスとレジスタ101に格納されたアドレスのA
31〜A14が等しいか否かを比較回路102で調べ、その
結果とタグ情報のVビットの値が共に1であるか否かに
より行う。例えば0x34564 番地(16進数)に対するリー
ド要求の場合、A13〜A4 は0x56であるので、0x56番目
(10進では86番目)のキャッシュラインが選択されるよ
うになる。
ラインデータがキャッシュメモリ10中に存在するか否
かの判定は、制御回路105により、レジスタ101に
格納されたアドレスのA13〜A4 に対応するキャッシュ
ラインを選択し、そのキャッシュラインに格納されてい
るアドレスとレジスタ101に格納されたアドレスのA
31〜A14が等しいか否かを比較回路102で調べ、その
結果とタグ情報のVビットの値が共に1であるか否かに
より行う。例えば0x34564 番地(16進数)に対するリー
ド要求の場合、A13〜A4 は0x56であるので、0x56番目
(10進では86番目)のキャッシュラインが選択されるよ
うになる。
【0025】ここで、リード要求に対応するキャッシュ
ラインデータがキャッシュメモリ10中に存在する場合
には、レジスタ101に格納されたアドレスのA3 〜A
2 に対応する部分のデータをセレクタ103で選択し、
それをデータ線7に出力するようになる。
ラインデータがキャッシュメモリ10中に存在する場合
には、レジスタ101に格納されたアドレスのA3 〜A
2 に対応する部分のデータをセレクタ103で選択し、
それをデータ線7に出力するようになる。
【0026】一方、リード要求に対応するキャッシュラ
インデータがキャッシュメモリ10中に存在しない場合
には、メモリバス13を通じて他のキャッシュメモリ1
1、12あるいは共有メモリ13にキャッシュラインデ
ータの転送を要求するようになる。
インデータがキャッシュメモリ10中に存在しない場合
には、メモリバス13を通じて他のキャッシュメモリ1
1、12あるいは共有メモリ13にキャッシュラインデ
ータの転送を要求するようになる。
【0027】他のキャッシュメモリ11、12について
も上述したキャッシュメモリ10と同様である。
も上述したキャッシュメモリ10と同様である。
【0028】この状態から、キャッシュメモリ10がキ
ャッシュラインデータの転送を要求した場合を説明する
と、メモリバス13は、図示しないアドレス線32ビッ
ト、データ線64ビット、制御線で構成され、制御線に
は、コマンドの種類(キャッシュラインデータの転送、
キャッシュラインデータの無効化等)が含まれる。
ャッシュラインデータの転送を要求した場合を説明する
と、メモリバス13は、図示しないアドレス線32ビッ
ト、データ線64ビット、制御線で構成され、制御線に
は、コマンドの種類(キャッシュラインデータの転送、
キャッシュラインデータの無効化等)が含まれる。
【0029】そして、他のキャッシュメモリ11、12
が、キャッシュメモリ10からのキャッシュラインデー
タの転送要求を受け取ると、そのアドレス情報がそれぞ
れのレジスタ112に格納される。
が、キャッシュメモリ10からのキャッシュラインデー
タの転送要求を受け取ると、そのアドレス情報がそれぞ
れのレジスタ112に格納される。
【0030】そして、キャッシュラインに該当するキャ
ッシュラインデータがあるか否かを、制御回路106、
比較回路107で判定する。この判定方法は、対応する
プロセッサからのリード要求に対して行う制御回路10
5、比較回路102による判定と全く同じである。ここ
で、全く同じ回路を2重に持つのは、そのキャッシュメ
モリと直接接続されているプロセッサからのメモリアク
セス要求と他のキャッシュメモリからのバスを介して送
られてくるキャッシュラインデータの転送等の要求を同
時に処理できるようにするためである。
ッシュラインデータがあるか否かを、制御回路106、
比較回路107で判定する。この判定方法は、対応する
プロセッサからのリード要求に対して行う制御回路10
5、比較回路102による判定と全く同じである。ここ
で、全く同じ回路を2重に持つのは、そのキャッシュメ
モリと直接接続されているプロセッサからのメモリアク
セス要求と他のキャッシュメモリからのバスを介して送
られてくるキャッシュラインデータの転送等の要求を同
時に処理できるようにするためである。
【0031】キャッシュメモリ11、12は、キャッシ
ュラインに該当するキャッシュラインデータがあれば、
そのキャッシュラインデータを送るとともに、セレクタ
108を用いて、レジスタ112に格納されているアド
レスのA3 〜A2 に対応するデータを選択し、演算回路
111を用いて、そのデータとレジスタ109に格納さ
れている値の間でビットごとの論理積をとり、次にレジ
スタ110に格納されている値と比較する。その結果、
両者が一致すると、Vビットを1から0に書き変えるよ
うになる。
ュラインに該当するキャッシュラインデータがあれば、
そのキャッシュラインデータを送るとともに、セレクタ
108を用いて、レジスタ112に格納されているアド
レスのA3 〜A2 に対応するデータを選択し、演算回路
111を用いて、そのデータとレジスタ109に格納さ
れている値の間でビットごとの論理積をとり、次にレジ
スタ110に格納されている値と比較する。その結果、
両者が一致すると、Vビットを1から0に書き変えるよ
うになる。
【0032】また、キャッシュメモリ10は、転送され
てきたキャッシュラインデータを適当なキャッシュライ
ンに格納するとともに、セレクタ108を用いて、レジ
スタ112に格納されているアドレスのA3 〜A2 に対
応するデータを選択し、演算回路111を用いて、その
データとレジスタ109に格納されている値の間でビッ
トごとの論理積をとり、次にレジスタ110に格納され
ている値と比較する。その結果、両者が一致するとき、
Xビットに1を書き込むようになる。
てきたキャッシュラインデータを適当なキャッシュライ
ンに格納するとともに、セレクタ108を用いて、レジ
スタ112に格納されているアドレスのA3 〜A2 に対
応するデータを選択し、演算回路111を用いて、その
データとレジスタ109に格納されている値の間でビッ
トごとの論理積をとり、次にレジスタ110に格納され
ている値と比較する。その結果、両者が一致するとき、
Xビットに1を書き込むようになる。
【0033】次に、このように構成した本発明を図2に
示すように複数のプロセッサPに対してそれぞれキャッ
シュメモリCM1 、CM2 を接続し、これらキャッシュ
メモリCM1 、CM2 をメモリバスBに接続してメモリ
Mを共有するような構成に置き換えて説明する。
示すように複数のプロセッサPに対してそれぞれキャッ
シュメモリCM1 、CM2 を接続し、これらキャッシュ
メモリCM1 、CM2 をメモリバスBに接続してメモリ
Mを共有するような構成に置き換えて説明する。
【0034】まず、あるデータに対して複数のプロセッ
サPからのアクセスが競合する典型的なパターンは、各
プロセッサPがそのアドレスに対してリードを行い、そ
のデータに対してライトを行う場合である。この一連の
動作において、プロセッサPが初めにリード要求を行っ
た時点で、プロセッサPに接続されるキャッシュメモリ
CM1 に該当するキャッシュラインが無く、他のキャッ
シュメモリCM2 からキャッシュラインデータの転送を
受ける必要のある場合、従来では、図3の動作シーケン
スに示すように、リード要求によりキャッシュメモリC
M2 からキャッシュメモリCM1 へのキャッシュライン
データの転送が行われ(上述した図10(a)と同じ動
作シーケンス)、次のライト要求で、もともとそのキャ
ッシュラインを保持していた他のキャッシュメモリCM
2 に対してそのキャッシュラインの無効化が起きてしま
う。これに対して、本発明のキャッシュメモリCM1 で
は、図4の動作シーケンスに示すように、まずリード要
求によりキャッシュメモリCM2 からキャッシュメモリ
CM1 へのキャッシュラインデータの転送が行われる
と、キャッシュメモリCM2 でプロセッサP2 によるラ
イト要求を予測した結果、そのキャッシュラインデータ
の無効化も同時に行われる。また、キャッシュラインデ
ータを受けとったキャッシュメモリCM1 もプロセッサ
Pによるライト要求を予測した結果、そのキャッシュラ
インデータを持つキャッシュメモリが他に無いことを記
憶する。そして、次のライト要求では、キャッシュメモ
リCM1だけがそのキャッシュラインを保持しているの
で、上述した図11(a)と同じ動作シーケンスが起き
る。
サPからのアクセスが競合する典型的なパターンは、各
プロセッサPがそのアドレスに対してリードを行い、そ
のデータに対してライトを行う場合である。この一連の
動作において、プロセッサPが初めにリード要求を行っ
た時点で、プロセッサPに接続されるキャッシュメモリ
CM1 に該当するキャッシュラインが無く、他のキャッ
シュメモリCM2 からキャッシュラインデータの転送を
受ける必要のある場合、従来では、図3の動作シーケン
スに示すように、リード要求によりキャッシュメモリC
M2 からキャッシュメモリCM1 へのキャッシュライン
データの転送が行われ(上述した図10(a)と同じ動
作シーケンス)、次のライト要求で、もともとそのキャ
ッシュラインを保持していた他のキャッシュメモリCM
2 に対してそのキャッシュラインの無効化が起きてしま
う。これに対して、本発明のキャッシュメモリCM1 で
は、図4の動作シーケンスに示すように、まずリード要
求によりキャッシュメモリCM2 からキャッシュメモリ
CM1 へのキャッシュラインデータの転送が行われる
と、キャッシュメモリCM2 でプロセッサP2 によるラ
イト要求を予測した結果、そのキャッシュラインデータ
の無効化も同時に行われる。また、キャッシュラインデ
ータを受けとったキャッシュメモリCM1 もプロセッサ
Pによるライト要求を予測した結果、そのキャッシュラ
インデータを持つキャッシュメモリが他に無いことを記
憶する。そして、次のライト要求では、キャッシュメモ
リCM1だけがそのキャッシュラインを保持しているの
で、上述した図11(a)と同じ動作シーケンスが起き
る。
【0035】このため、本発明のキャッシュメモリCM
1 、CM2 では、従来のキャッシュメモリがライト要求
で行っていたキャッシュラインデータの無効化を省略す
ることができ、バスの負荷を減らすことができるように
なる。
1 、CM2 では、従来のキャッシュメモリがライト要求
で行っていたキャッシュラインデータの無効化を省略す
ることができ、バスの負荷を減らすことができるように
なる。
【0036】なお、プロセッサPが、あるアドレスに対
してリードを行った場合、その後でそのアドレスに対し
てライトが行われるとは限らない。本発明では、次にラ
イトが行われるか否かを、各キャッシュメモリCM1 、
CM2 に予測させ、ライトが起きると予測される場合の
み、そのプロセッサPに直接つながっているキャッシュ
メモリCM1 またはCM2 だけが、該当するキャッシュ
ラインデータを保持するようにすることが最大の特徴と
なる。
してリードを行った場合、その後でそのアドレスに対し
てライトが行われるとは限らない。本発明では、次にラ
イトが行われるか否かを、各キャッシュメモリCM1 、
CM2 に予測させ、ライトが起きると予測される場合の
み、そのプロセッサPに直接つながっているキャッシュ
メモリCM1 またはCM2 だけが、該当するキャッシュ
ラインデータを保持するようにすることが最大の特徴と
なる。
【0037】次に、実際にリードを行ったプロセッサが
同じアドレスに対してライトを行うか否かが予測可能な
場合を説明する。
同じアドレスに対してライトを行うか否かが予測可能な
場合を説明する。
【0038】この場合、並列論理プログラムでは、一般
に多くのプロセスを生成し、それらを多数のプロセッサ
で実行することにより、処理の高速化をはかる。このよ
うに複数のプロセスで並列処理を行う場合には、各プロ
セス間で結果の引渡しを行うなど、プロセス間で同期を
とる必要がある。それを並列論理プログラムでは変数へ
の値の代入により実現している。
に多くのプロセスを生成し、それらを多数のプロセッサ
で実行することにより、処理の高速化をはかる。このよ
うに複数のプロセスで並列処理を行う場合には、各プロ
セス間で結果の引渡しを行うなど、プロセス間で同期を
とる必要がある。それを並列論理プログラムでは変数へ
の値の代入により実現している。
【0039】例えば、プロセスP1 からプロセスP2 へ
結果を引渡すには、図5に示すように予め決めておいた
ワードAを使用する。ワードAは、初期状態として、値
が未定義であり、何かある値を格納できる状態(並列論
理プログラムでは、これを変数と呼ぶ)となっている。
そして、プロセスP1 では、プロセスP2 に引渡す値が
決まった時、それをワードAに代入する。また、プロセ
スP2 は、ワードAに対してリード操作を行い、その結
果が変数でなければ、それをプロセスP1 から引渡され
た値として処理を行う。逆に、その結果が未だ変数のま
まであれば、ワードAに変数以外の値が格納されるま
で、P2 の実行を待たせる必要がある。
結果を引渡すには、図5に示すように予め決めておいた
ワードAを使用する。ワードAは、初期状態として、値
が未定義であり、何かある値を格納できる状態(並列論
理プログラムでは、これを変数と呼ぶ)となっている。
そして、プロセスP1 では、プロセスP2 に引渡す値が
決まった時、それをワードAに代入する。また、プロセ
スP2 は、ワードAに対してリード操作を行い、その結
果が変数でなければ、それをプロセスP1 から引渡され
た値として処理を行う。逆に、その結果が未だ変数のま
まであれば、ワードAに変数以外の値が格納されるま
で、P2 の実行を待たせる必要がある。
【0040】並列論理プログラムでは、上記の操作を下
記の方法により実現している。
記の方法により実現している。
【0041】まず、結果をもらう側のプロセスP2 は、
ワードAに対してリードした結果、もしそれが変数でな
ければ、ワードAに対して、さらにアクセスすることは
ない。しかし、変数であった場合は、別のプロセスによ
って、ワードAに何か結果が書き込まれるまで、ウェイ
トする必要があるので、ワードAに図6に示すような
「ポインタつきの変数」を書き込む。この「ポインタ付
きの変数」は、「このワードに、あるプロセスが値を書
き込んだ時は、そのポインタで指されているプロセスP
2 を再び実行可能とするように」ということを表わして
いる。
ワードAに対してリードした結果、もしそれが変数でな
ければ、ワードAに対して、さらにアクセスすることは
ない。しかし、変数であった場合は、別のプロセスによ
って、ワードAに何か結果が書き込まれるまで、ウェイ
トする必要があるので、ワードAに図6に示すような
「ポインタつきの変数」を書き込む。この「ポインタ付
きの変数」は、「このワードに、あるプロセスが値を書
き込んだ時は、そのポインタで指されているプロセスP
2 を再び実行可能とするように」ということを表わして
いる。
【0042】次に、プロセスP1 がその結果をワードA
に書き込む場合、ワードAは、変数であるか、ポインタ
つきの変数であるか(すなわち図4に示すデータ構造が
できている)、あるいは別のプロセスによって既に変数
以外の値が格納されているかの3種類の可能性があるの
で、ワードAに対してリード動作を行う必要がある。そ
して、その結果として、ワードAが変数あるいはポイン
タつき変数の場合は、ワードAへの値の書込みを行い、
ワードAが変数以外の場合には、ワードAに対するアク
セスは行わないようになる。。
に書き込む場合、ワードAは、変数であるか、ポインタ
つきの変数であるか(すなわち図4に示すデータ構造が
できている)、あるいは別のプロセスによって既に変数
以外の値が格納されているかの3種類の可能性があるの
で、ワードAに対してリード動作を行う必要がある。そ
して、その結果として、ワードAが変数あるいはポイン
タつき変数の場合は、ワードAへの値の書込みを行い、
ワードAが変数以外の場合には、ワードAに対するアク
セスは行わないようになる。。
【0043】このように、並列論理プログラムでは、変
数あるいはポインタつき変数をリードした後には、その
ワードに対してライトを行い、そうでない場合はライト
を行わないことが多いので、「リードしたデータが変数
あるいはポインタつき変数であること」をライト要求の
予測とすることができる。これは、そのデータが特定の
パターンであるか否か(例えば、そのデータとある定数
のビットごとの論理積がある定数と一致するか否か)に
より判定できる。
数あるいはポインタつき変数をリードした後には、その
ワードに対してライトを行い、そうでない場合はライト
を行わないことが多いので、「リードしたデータが変数
あるいはポインタつき変数であること」をライト要求の
予測とすることができる。これは、そのデータが特定の
パターンであるか否か(例えば、そのデータとある定数
のビットごとの論理積がある定数と一致するか否か)に
より判定できる。
【0044】プロセッサによるライト要求を、このよう
な方法で予測することにより、本発明の並列キャッシュ
メモリでは、プロセスP2による最初のリードに関して
はメモリバスBが使用されるものの、その時に他のキャ
ッシュメモリ中の当該キャッシュラインデータは無効化
されるので、続いて行われるライトではメモリバスBに
コマンドを出す必要が無い。また、その後に行われるプ
ロセスP1 によるワードAへのリード及びライトについ
ても、同様にメモリバスBの負荷は軽減される。その結
果、プロセスP2 およびP1 によるワードAへのライト
動作が高速化できるとともに、メモリバスBの付加が軽
減され、その分全体の性能が向上する。
な方法で予測することにより、本発明の並列キャッシュ
メモリでは、プロセスP2による最初のリードに関して
はメモリバスBが使用されるものの、その時に他のキャ
ッシュメモリ中の当該キャッシュラインデータは無効化
されるので、続いて行われるライトではメモリバスBに
コマンドを出す必要が無い。また、その後に行われるプ
ロセスP1 によるワードAへのリード及びライトについ
ても、同様にメモリバスBの負荷は軽減される。その結
果、プロセスP2 およびP1 によるワードAへのライト
動作が高速化できるとともに、メモリバスBの付加が軽
減され、その分全体の性能が向上する。
【0045】次に、記号処理言語では実行過程で多くの
データをメモリ上に割付け、また、不要になったデータ
に割付けていたメモリの回収を行う。このうち、不要に
なったデータを発見する有力な方法に、参照カウンタを
用いる方法がある。これは、図7に示すように、そのデ
ータがいくつのポインタで指されているかを保持するカ
ウンタである。図7では、データAが、3つのポインタ
で指されているので、参照カウンタには「3」が格納さ
れている。
データをメモリ上に割付け、また、不要になったデータ
に割付けていたメモリの回収を行う。このうち、不要に
なったデータを発見する有力な方法に、参照カウンタを
用いる方法がある。これは、図7に示すように、そのデ
ータがいくつのポインタで指されているかを保持するカ
ウンタである。図7では、データAが、3つのポインタ
で指されているので、参照カウンタには「3」が格納さ
れている。
【0046】この参照カウンタは、プロセッサがポイン
タを新たに作ったり削除するたびに、そのポインタが指
すデータの参照カウンタを1だけ増減する必要がある。
このため、プロセッサによる参照カウンタの更新では、
まずリードを行い、次に更新後の結果をライトする。逆
に、参照カウントをリードだけしてライトを行わないこ
とはない。従って、リードしたデータが参照カウンタで
ある場合には、次にライトが行われると予測できる。リ
ードしたデータが参照カウンタであるか否かは、そのデ
ータを特定のパターンになっているか否かで判定でき
る。
タを新たに作ったり削除するたびに、そのポインタが指
すデータの参照カウンタを1だけ増減する必要がある。
このため、プロセッサによる参照カウンタの更新では、
まずリードを行い、次に更新後の結果をライトする。逆
に、参照カウントをリードだけしてライトを行わないこ
とはない。従って、リードしたデータが参照カウンタで
ある場合には、次にライトが行われると予測できる。リ
ードしたデータが参照カウンタであるか否かは、そのデ
ータを特定のパターンになっているか否かで判定でき
る。
【0047】次に、マルチプロセッサ用オペレーティン
グシステムでは、メモリの一部を例えばセマフォのよう
に同期処理用の領域として使用する。このような同期処
理用の領域は、通常、リード動作に引き続いて同じアド
レスに対してライト動作が行われることが多い。従っ
て、プロセッサによるライト動作の予測に、リード要求
のあったデータが同期処理用の領域であるか否かを用い
ることができ、そのワードのアドレスが特定の範囲内に
あるか否かにより判定できる。
グシステムでは、メモリの一部を例えばセマフォのよう
に同期処理用の領域として使用する。このような同期処
理用の領域は、通常、リード動作に引き続いて同じアド
レスに対してライト動作が行われることが多い。従っ
て、プロセッサによるライト動作の予測に、リード要求
のあったデータが同期処理用の領域であるか否かを用い
ることができ、そのワードのアドレスが特定の範囲内に
あるか否かにより判定できる。
【0048】なお、本発明は上記実施例にのみ限定され
ず、要旨を変更しない範囲で適宜変形して実施できる。
例えば、プロセッサによるリードの後のライトを予測す
る手段として、上記実施例では、リード対象となるデー
タと定数(レジスタ109に格納されている値)のビッ
トごとの論理積をとり、それと別の定数(レジスタ11
0の値)が一致するかとしたが、他にもそのデータが特
定のパターンであるか否かの判定法としていろいろな可
能性がある。一例として、2N エントリ×1ビットのメ
モリを用意し、リード対象のデータのうちNビットをア
ドレスとして、このメモリにアクセスを行い、その値が
1である場合に、プロセッサによるライトが行われると
予測してもよい。
ず、要旨を変更しない範囲で適宜変形して実施できる。
例えば、プロセッサによるリードの後のライトを予測す
る手段として、上記実施例では、リード対象となるデー
タと定数(レジスタ109に格納されている値)のビッ
トごとの論理積をとり、それと別の定数(レジスタ11
0の値)が一致するかとしたが、他にもそのデータが特
定のパターンであるか否かの判定法としていろいろな可
能性がある。一例として、2N エントリ×1ビットのメ
モリを用意し、リード対象のデータのうちNビットをア
ドレスとして、このメモリにアクセスを行い、その値が
1である場合に、プロセッサによるライトが行われると
予測してもよい。
【0049】また、上述では、リード対象となるデータ
に対して、それが特定のパターンであるか否かをプロセ
ッサによるライトの予測として用いたが、それに代え
て、リード対象となるデータ及びそのアドレスをデータ
(すなわち、64ビットのデータ)とみなし、これに対
して上述したと同様の予測手段とすることにより、より
精度の高い予測が可能になる場合がある。これは、例え
ば、並列論理プログラムにおいて、変数の存在する領域
があるアドレス範囲に限定されている場合に有効であ
る。つまり、変数であるか否かを、データのパターンが
変数の場合と一致し、かつ、「そのアドレスが変数の存
在するアドレス範囲に含まれる」ことで判定することに
より、プロセッサによるライトの予測の精度を高めるこ
とができる。
に対して、それが特定のパターンであるか否かをプロセ
ッサによるライトの予測として用いたが、それに代え
て、リード対象となるデータ及びそのアドレスをデータ
(すなわち、64ビットのデータ)とみなし、これに対
して上述したと同様の予測手段とすることにより、より
精度の高い予測が可能になる場合がある。これは、例え
ば、並列論理プログラムにおいて、変数の存在する領域
があるアドレス範囲に限定されている場合に有効であ
る。つまり、変数であるか否かを、データのパターンが
変数の場合と一致し、かつ、「そのアドレスが変数の存
在するアドレス範囲に含まれる」ことで判定することに
より、プロセッサによるライトの予測の精度を高めるこ
とができる。
【0050】さらに、アドレスがある範囲にあるか否か
をプロセッサによるライトの予測として用いる場合、上
述のメモリの代わりに、論理アドレスから物理アドレス
への変換を行うMMU(Memory Management Unit) を用
い、そのアドレスを含むページに関する情報として、ラ
イトが予測されるか否かを含めることも可能である。さ
らにまた、上述では、キャッシュメモリ10がプロセッ
サ1によるライトを予測する手段として、リード要求の
あったデータ部分とレジスタ109に格納されている値
の間でビットごとの論理積をとり(演算器111使
用)、次にレジスタ110に格納されている値と比較し
たが、それに代えて、キャッシュメモリ11、12がキ
ャッシュラインデータを転送する際、それらのキャッシ
ュメモリ11、12が行った予測結果も同時に転送し、
それをキャッシュメモリ10が参照するようにしてもよ
い。
をプロセッサによるライトの予測として用いる場合、上
述のメモリの代わりに、論理アドレスから物理アドレス
への変換を行うMMU(Memory Management Unit) を用
い、そのアドレスを含むページに関する情報として、ラ
イトが予測されるか否かを含めることも可能である。さ
らにまた、上述では、キャッシュメモリ10がプロセッ
サ1によるライトを予測する手段として、リード要求の
あったデータ部分とレジスタ109に格納されている値
の間でビットごとの論理積をとり(演算器111使
用)、次にレジスタ110に格納されている値と比較し
たが、それに代えて、キャッシュメモリ11、12がキ
ャッシュラインデータを転送する際、それらのキャッシ
ュメモリ11、12が行った予測結果も同時に転送し、
それをキャッシュメモリ10が参照するようにしてもよ
い。
【0051】
【発明の効果】本発明の並列キャッシュメモリによれ
ば、ライト処理を高速化でき、メモリバスに対する負荷
の軽減を実現できることから、プロセッサ数を変えるこ
となく高性能のデータ処理システムを実現することがで
きる。
ば、ライト処理を高速化でき、メモリバスに対する負荷
の軽減を実現できることから、プロセッサ数を変えるこ
となく高性能のデータ処理システムを実現することがで
きる。
【図1】本発明による並列キャッシュメモリの一実施例
の該略構成を示すブロック図。
の該略構成を示すブロック図。
【図2】図1に示す実施例の動作を説明するための図。
【図3】図1に示す実施例においてあるデータに対して
リード及びライトを続けて行った場合のキャッシュメモ
リの動作シーケンスを示す図。
リード及びライトを続けて行った場合のキャッシュメモ
リの動作シーケンスを示す図。
【図4】図1に示す実施例においてあるデータに対して
リード及びライトを続けて行った場合のキャッシュメモ
リの動作シーケンスを示す図。
リード及びライトを続けて行った場合のキャッシュメモ
リの動作シーケンスを示す図。
【図5】図1に示す実施例においてワードAを媒介とす
るプロセス間の同期を説明する概念図。
るプロセス間の同期を説明する概念図。
【図6】図1に示す実施例においてポインタ付き変数を
用いたプロセスのウェイト動作を説明する概念図。
用いたプロセスのウェイト動作を説明する概念図。
【図7】図1に示す実施例において参照カウンタを説明
するための概念図。
するための概念図。
【図8】従来のメモリ共有型マルチプロセッサを示す構
成図。
成図。
【図9】従来の並列キャッシュメモリを備えたマルチプ
ロセッサを示す構成図。
ロセッサを示す構成図。
【図10】図9に示すマルチプロセッサにおいてプロセ
ッサのリード要求に対する各キャッシュメモリの動作シ
ーケンスを示す図。
ッサのリード要求に対する各キャッシュメモリの動作シ
ーケンスを示す図。
【図11】図9に示すマルチプロセッサにおいてプロセ
ッサのライト要求に対する各キャッシュメモリの動作シ
ーケンスを示す図。
ッサのライト要求に対する各キャッシュメモリの動作シ
ーケンスを示す図。
1〜3…プロセッサ、4〜6…アドレス線、7〜9…デ
ータ線、10〜12…キャッシュメモリ、101、10
9、110、112…レジスタ、102、107…比較
回路、103、108…セレクタ、104…キャッシュ
ライン、105、106…制御回路、111…演算回
路。
ータ線、10〜12…キャッシュメモリ、101、10
9、110、112…レジスタ、102、107…比較
回路、103、108…セレクタ、104…キャッシュ
ライン、105、106…制御回路、111…演算回
路。
Claims (3)
- 【請求項1】 複数のプロセッサにそれぞれ接続される
とともに、それぞれがメモリバスを介して共有メモリに
接続されるキャッシュメモリを有し、プロセッサのリー
ド要求に対してそのプロセッサに接続されたキャッシュ
メモリが自己のキャッシュライン中にリード要求の対象
となるキャッシュラインデータがあるか否かを判断し、
無ければ他のキャッシュメモリまたは前記共有メモリか
らリード要求の対象となるキャッシュラインデータを獲
得するようにした並列キャッシュメモリにおいて、 各キャッシュメモリは自らキャッシュメモリ中にリード
要求の対象となるキャッシュラインデータがあるとリー
ド要求を行ったプロセッサが同じキャッシュラインデー
タに対してライト要求を行うか否かを予測する手段を有
し、 リード要求を行ったプロセッサに接続されたキャッシュ
メモリからキャッシュラインデータの転送要求を受けた
他のキャッシュメモリは自己のキャッシュラインデータ
に対しプロセッサがライト要求を行うか否かを予測しラ
イト要求を行うと予測するとそのキャッシュラインデー
タを無効化し、 リード要求を行ったプロセッサに接続されたキャッシュ
メモリは他のキャッシュメモリ又は前記共有メモリから
転送されてきたキャッシュラインデータに対してプロセ
ッサがライト要求を行うか否かを予測しライト要求を行
うと予測するとそのキャッシュラインデータが他のキャ
ッシュメモリに無いことを記憶することを特徴とする並
列キャッシュメモリ。 - 【請求項2】 リード要求を行ったプロセッサが同じキ
ャッシュラインデータに対してライト要求を行うか否か
の予測は、リード要求の対象データがある一定のパター
ンであるか否かにより行うことを特徴とする請求項1記
載の並列キャッシュメモリ。 - 【請求項3】 リード要求を行ったプロセッサが同じキ
ャッシュラインデータに対してライト要求を行うか否か
の予測は、リード要求の対象アドレスがある一定の範囲
であるか否かにより行うことを特徴とする請求項1記載
の並列キャッシュメモリ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3348383A JPH06103477B2 (ja) | 1991-12-05 | 1991-12-05 | 並列キャッシュメモリ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3348383A JPH06103477B2 (ja) | 1991-12-05 | 1991-12-05 | 並列キャッシュメモリ |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05158793A JPH05158793A (ja) | 1993-06-25 |
JPH06103477B2 true JPH06103477B2 (ja) | 1994-12-14 |
Family
ID=18396659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3348383A Expired - Lifetime JPH06103477B2 (ja) | 1991-12-05 | 1991-12-05 | 並列キャッシュメモリ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06103477B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5809536A (en) * | 1996-12-09 | 1998-09-15 | Intel Corporation, Inc. | Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache |
US7266642B2 (en) | 2004-02-17 | 2007-09-04 | International Business Machines Corporation | Cache residence prediction |
WO2011032593A1 (en) | 2009-09-17 | 2011-03-24 | Nokia Corporation | Multi-channel cache memory |
US8661200B2 (en) | 2010-02-05 | 2014-02-25 | Nokia Corporation | Channel controller for multi-channel cache |
-
1991
- 1991-12-05 JP JP3348383A patent/JPH06103477B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH05158793A (ja) | 1993-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3067112B2 (ja) | 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法 | |
US7613884B2 (en) | Multiprocessor system and method ensuring coherency between a main memory and a cache memory | |
EP0009938B1 (en) | Computing systems having high-speed cache memories | |
US4928225A (en) | Coherent cache structures and methods | |
EP0139407B1 (en) | Data select match | |
JPH06318174A (ja) | キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法 | |
JP2004199677A (ja) | キャッシュを動作させるためのシステム及び方法 | |
EP0173909B1 (en) | Look-aside buffer least recently used marker controller | |
US6480940B1 (en) | Method of controlling cache memory in multiprocessor system and the multiprocessor system based on detection of predetermined software module | |
JPH06103477B2 (ja) | 並列キャッシュメモリ | |
JP2521027B2 (ja) | マルチプロセッサ及びその制御方法 | |
EP0271187B1 (en) | Split instruction and operand cache management | |
JP2580263B2 (ja) | バッファ記憶装置 | |
JP3733604B2 (ja) | キャッシュメモリ | |
JP3006204B2 (ja) | 情報処理装置 | |
JP3219810B2 (ja) | データ処理装置 | |
JP2700147B2 (ja) | 命令キャッシュ・フラッシュ・オン・rei制御 | |
JP2976980B2 (ja) | キャッシュ制御方式 | |
JPH1185613A (ja) | キャッシュメモリ | |
JP2001229074A (ja) | メモリ制御装置と情報処理装置及びメモリ制御チップ | |
JPH10207773A (ja) | バス接続装置 | |
JPH077355B2 (ja) | 情報処理装置 | |
US20030101280A1 (en) | Fast jump address algorithm | |
Dixon | Page associative caches on Futurebus | |
JPH0778786B2 (ja) | 記憶制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EXPY | Cancellation because of completion of term |