JPH0721781B2 - マルチプロセツサ・システム - Google Patents
マルチプロセツサ・システムInfo
- Publication number
- JPH0721781B2 JPH0721781B2 JP1057761A JP5776189A JPH0721781B2 JP H0721781 B2 JPH0721781 B2 JP H0721781B2 JP 1057761 A JP1057761 A JP 1057761A JP 5776189 A JP5776189 A JP 5776189A JP H0721781 B2 JPH0721781 B2 JP H0721781B2
- Authority
- JP
- Japan
- Prior art keywords
- protocol
- type
- bus
- data
- protocol type
- 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
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)
- Multi Processors (AREA)
Description
【発明の詳細な説明】 A.産業上の利用分野 この発明は複数のプロセッサがプライベート・キャッシ
ュを介して共有バスおよび共有メモリに接続されている
マルチプロセッサ・システムに関し、とくに各プライベ
ート・キャッシュがわに制御装置を設け共有バス上の信
号を監視することによりキャッシュにおけるデータの操
作、たとえばプライベート・キャッシュ間のデータの一
貫性を維持する操作を行う、いわゆるスヌープ・キャッ
シュを有するマルチプロセッサ・システムに関する。
ュを介して共有バスおよび共有メモリに接続されている
マルチプロセッサ・システムに関し、とくに各プライベ
ート・キャッシュがわに制御装置を設け共有バス上の信
号を監視することによりキャッシュにおけるデータの操
作、たとえばプライベート・キャッシュ間のデータの一
貫性を維持する操作を行う、いわゆるスヌープ・キャッ
シュを有するマルチプロセッサ・システムに関する。
B.従来技術 共有メモリ、共有バス型のマルチプロセッサ・システム
においては、バスおよびメモリへのアクセスの競合を減
ずるために各プロセッサにプライベート・キャッシュを
付加する方法が広く用いられている。このような方法に
おいては複数キャッシュ間のデータの一貫性を保証する
機構が必要になる。またこのような機構により、バス・
トラフィックを一層効率よく行えれば好都合である。そ
してその機構のひとつとしてスヌープ・キャッシュとよ
ばれるものがある。
においては、バスおよびメモリへのアクセスの競合を減
ずるために各プロセッサにプライベート・キャッシュを
付加する方法が広く用いられている。このような方法に
おいては複数キャッシュ間のデータの一貫性を保証する
機構が必要になる。またこのような機構により、バス・
トラフィックを一層効率よく行えれば好都合である。そ
してその機構のひとつとしてスヌープ・キャッシュとよ
ばれるものがある。
第1図はスヌープ・キャッシュ方式のマルチプロセッサ
・システムを示す。第1図において複数のプロセッサP1
P2…Pnはそれぞれプライベート・キャッシュC1C…Cnを
介して共有バス1および共有メモリMに接続されてい
る。そして各プライベート・キャッシュがわに制御装置
を設けて共有バス1上の信号を監視させ、分散制御方式
によりデータの一貫性を実現する。すなわちこの方式で
は各制御装置が共有バス1上のプロトコールにしたがっ
て動作することによりデータの一貫性を実現する。
・システムを示す。第1図において複数のプロセッサP1
P2…Pnはそれぞれプライベート・キャッシュC1C…Cnを
介して共有バス1および共有メモリMに接続されてい
る。そして各プライベート・キャッシュがわに制御装置
を設けて共有バス1上の信号を監視させ、分散制御方式
によりデータの一貫性を実現する。すなわちこの方式で
は各制御装置が共有バス1上のプロトコールにしたがっ
て動作することによりデータの一貫性を実現する。
従来のプロトコールは、共有データに関する書込み時の
手順の観点から、インバリデート・タイプ(invalidate
type)とアップデート・タイプ(update type)とに分
類できる。インバリデート・タイプにおいては所定のプ
ライベート・キャッシュの共有データに書込みが行なわ
れると、当該共有データを有する他のプライベート・キ
ャッシュでその共有データを無効化する。他方アップデ
ート・タイプにおいては書き込んだデータの複製を他の
プライベート・キャッシュに送出し、共有データの更新
を実行する。
手順の観点から、インバリデート・タイプ(invalidate
type)とアップデート・タイプ(update type)とに分
類できる。インバリデート・タイプにおいては所定のプ
ライベート・キャッシュの共有データに書込みが行なわ
れると、当該共有データを有する他のプライベート・キ
ャッシュでその共有データを無効化する。他方アップデ
ート・タイプにおいては書き込んだデータの複製を他の
プライベート・キャッシュに送出し、共有データの更新
を実行する。
ところで以上のプロトコールには一長一短があり、すべ
てのタイプの共有データに対して適しているわけではな
い。メモリがあるタイプの共有データに割り付けられた
とき、どういうプロトコールが一番適しているか、イン
バリデート・タイプとアップデート・タイプ タイプの
プロトコールについて例を挙げて説明する。
てのタイプの共有データに対して適しているわけではな
い。メモリがあるタイプの共有データに割り付けられた
とき、どういうプロトコールが一番適しているか、イン
バリデート・タイプとアップデート・タイプ タイプの
プロトコールについて例を挙げて説明する。
1) ある変数がセマフォやプロセッサ間のデータの受
渡しに使用されている場合はその変数は頻繁に複数のプ
ロセッサから参照されるので、参照の際のキャッシュ・
ヒットの可能性を高めるためにアップデート・タイプ
タイプのプロトコールで処理されることが望ましい。
渡しに使用されている場合はその変数は頻繁に複数のプ
ロセッサから参照されるので、参照の際のキャッシュ・
ヒットの可能性を高めるためにアップデート・タイプ
タイプのプロトコールで処理されることが望ましい。
2) ある変数がローカル変数で1つのプロセッサのみ
が使用する場合(ローカル変数でもページ管理の都合で
他のキャッシュにもその変数の物理アドレスが張り付い
たままで、共有データになる可能性がある場合)や、あ
る変数またはワークエリアがクリティカル・セクション
内にあり1つのプロセッサが長期にわたって独占使用す
る場合は、共有データのまま複数のキャッシュ内に存在
し続けると、データの書き込みの度にアクセスがキャッ
シュの外側の共有バスまで出てしまい効率が悪い。よっ
て、これらの時はインバリデート・タイプとして他のキ
ャッシュ内のデータ・エントリを無効化すると効率が上
がる。
が使用する場合(ローカル変数でもページ管理の都合で
他のキャッシュにもその変数の物理アドレスが張り付い
たままで、共有データになる可能性がある場合)や、あ
る変数またはワークエリアがクリティカル・セクション
内にあり1つのプロセッサが長期にわたって独占使用す
る場合は、共有データのまま複数のキャッシュ内に存在
し続けると、データの書き込みの度にアクセスがキャッ
シュの外側の共有バスまで出てしまい効率が悪い。よっ
て、これらの時はインバリデート・タイプとして他のキ
ャッシュ内のデータ・エントリを無効化すると効率が上
がる。
なおキャッシュのプロトコールという言葉は、データ書
込みの扱い方やデータの置き換えの方式等、かなり広い
意味で使われることがある。しかし、本文章では共有デ
ータの取扱い方に的を絞っているので、特に断らない限
りプロトコールと言えば、共有データの取扱い方を指す
ものとする。
込みの扱い方やデータの置き換えの方式等、かなり広い
意味で使われることがある。しかし、本文章では共有デ
ータの取扱い方に的を絞っているので、特に断らない限
りプロトコールと言えば、共有データの取扱い方を指す
ものとする。
以上のようにデータのタイプ毎のプロトコールの最適化
を考慮したときには従来のマルチプロセッサ・システム
では十分ではないことがわかる。以下検討する。
を考慮したときには従来のマルチプロセッサ・システム
では十分ではないことがわかる。以下検討する。
a)多くのシステムではプロトコールが一種類に固定さ
れている。または、システムの立上げ時にプロトコール
を選択し、その後は一種類に固定されている。これでは
ある種の共有データについては効率が悪く、通常、様々
なタイプの共有データが混在するので、そのタイプによ
ってプロトコールが動的に選択可能な方が効率が良い。
れている。または、システムの立上げ時にプロトコール
を選択し、その後は一種類に固定されている。これでは
ある種の共有データについては効率が悪く、通常、様々
なタイプの共有データが混在するので、そのタイプによ
ってプロトコールが動的に選択可能な方が効率が良い。
b)日本アイ・ビー・エム株式会社東京基礎研究所で試
作したTOP−1(プロトタイプ名)では、プロセッサ毎
(キャッシュ毎)にアップデート・タイプかインバリデ
ート・タイプかを決定できる。しかし、前述のように変
数またはワークエリア毎に適合するプロトコールが異な
っている。そこで、プロセッサ毎にプロトコールを決め
るよりも、変数またはワークエリア毎にどのプロトコー
ルでアクセスするかを決める方が効率の向上が望める。
TOP−1ではキャッシュ内のレジスターの変更でプロト
コールのタイプを選択するようになっているが、これで
はきめ細かく制御するためにはレジスタを書換える命令
をデータのアクセスの度に挿入しなければならない。こ
れについては特願平1−4799号を参照されたい。
作したTOP−1(プロトタイプ名)では、プロセッサ毎
(キャッシュ毎)にアップデート・タイプかインバリデ
ート・タイプかを決定できる。しかし、前述のように変
数またはワークエリア毎に適合するプロトコールが異な
っている。そこで、プロセッサ毎にプロトコールを決め
るよりも、変数またはワークエリア毎にどのプロトコー
ルでアクセスするかを決める方が効率の向上が望める。
TOP−1ではキャッシュ内のレジスターの変更でプロト
コールのタイプを選択するようになっているが、これで
はきめ細かく制御するためにはレジスタを書換える命令
をデータのアクセスの度に挿入しなければならない。こ
れについては特願平1−4799号を参照されたい。
C.発明が解決しようとする問題点 この発明は以上の事情を考慮してなされたものであり、
効率のよいマルチプロセッサ・システムを実現するため
に、簡易な構成で変数またはワークエリア毎につまり共
有データのタイプによってプロトコールをオーバーヘッ
ドなしに切替可能なキャッシュの制御機構を提供するこ
とを目的としている。
効率のよいマルチプロセッサ・システムを実現するため
に、簡易な構成で変数またはワークエリア毎につまり共
有データのタイプによってプロトコールをオーバーヘッ
ドなしに切替可能なキャッシュの制御機構を提供するこ
とを目的としている。
また、ある特定のプロセッサ群の中でのみ効力を働かせ
たいプロトコールをサポートするためのキャッシュの制
御機構を提供することを目的としている。
たいプロトコールをサポートするためのキャッシュの制
御機構を提供することを目的としている。
D.問題点を解決するための手段 共有バス,共有メモリ型でスヌープ・キャッシュを持っ
たマルチプロセッサ・システムにおいて、ある特定の記
憶領域毎にこの領域に属するデータをアクセスする時に
キャッシュが用いるプロトコールを指定する情報を付加
しておく。プロセッサ(またはメモリ管理ユニット)は
メモリアクセス時に操作対象のメモリの属する領域に対
応するその付加情報を信号として出力する。メモリアク
セスが共有バスを用いて実行される際は、その付加情報
の信号は共有バス上にも出力される。共有バスに接続さ
れているすべてのキャッシュは共有バス上のその信号で
プロトコールを選択して、バス・スヌープ(バス監視)
を実行する。
たマルチプロセッサ・システムにおいて、ある特定の記
憶領域毎にこの領域に属するデータをアクセスする時に
キャッシュが用いるプロトコールを指定する情報を付加
しておく。プロセッサ(またはメモリ管理ユニット)は
メモリアクセス時に操作対象のメモリの属する領域に対
応するその付加情報を信号として出力する。メモリアク
セスが共有バスを用いて実行される際は、その付加情報
の信号は共有バス上にも出力される。共有バスに接続さ
れているすべてのキャッシュは共有バス上のその信号で
プロトコールを選択して、バス・スヌープ(バス監視)
を実行する。
また、共有バスを拡張して、プロセッサ群を指定するた
めのバスを新たに設けて、バスアクセス時にプロセッサ
群の識別信号がバスを使用しているプロセッサから出力
されるようにしておくこともできる。ある種のプロトコ
ールの際にはその信号を基に、同じプロセッサ群に属し
ているかどうかによってキャッシュのスヌープ動作を制
御する。
めのバスを新たに設けて、バスアクセス時にプロセッサ
群の識別信号がバスを使用しているプロセッサから出力
されるようにしておくこともできる。ある種のプロトコ
ールの際にはその信号を基に、同じプロセッサ群に属し
ているかどうかによってキャッシュのスヌープ動作を制
御する。
E.実施例 以下この発明の実施例について第2図以降の図面を参照
して説明する。
して説明する。
第2図は記憶領域毎にアップデート・タイプ タイプ、
インバリデート・タイプおよびオール・リード・タイプ
(all−read type)のプロトコールの設定を行える1実
施例を全体として示している。なお第2図において第1
図と対応する箇所には対応する番号を付して詳細な説明
を省略する。またオール・リード・タイプのプロトコー
ルについては後に詳述する。
インバリデート・タイプおよびオール・リード・タイプ
(all−read type)のプロトコールの設定を行える1実
施例を全体として示している。なお第2図において第1
図と対応する箇所には対応する番号を付して詳細な説明
を省略する。またオール・リード・タイプのプロトコー
ルについては後に詳述する。
第2図においてプロセッサP1P2…Pnはプロトコール・タ
イプを表示する信号T0、T1およびT2を対応するプライベ
ート・キャッシュC1C…Cnを介してプロトコール・タイ
プ・バス2に送出している。信号T0、T1およびT2は共有
バス1上のデータに対するプロトコール・タイプがそれ
ぞれアップデート・タイプ、インバリデート・タイプお
よびオール・リード・タイプであることを示す。プライ
ベート・キャッシュC1C…Cnは図示しないがキャッシュ
制御機構をそれぞれ有しており、このキャッシュ制御機
構がプロトコール・タイプ・バス2を監視して共有バス
1上のデータに対するプロトコールを判別し、必要に応
じて(該当する共有データを保持するとき)そのプロト
コールの手順を実行する。
イプを表示する信号T0、T1およびT2を対応するプライベ
ート・キャッシュC1C…Cnを介してプロトコール・タイ
プ・バス2に送出している。信号T0、T1およびT2は共有
バス1上のデータに対するプロトコール・タイプがそれ
ぞれアップデート・タイプ、インバリデート・タイプお
よびオール・リード・タイプであることを示す。プライ
ベート・キャッシュC1C…Cnは図示しないがキャッシュ
制御機構をそれぞれ有しており、このキャッシュ制御機
構がプロトコール・タイプ・バス2を監視して共有バス
1上のデータに対するプロトコールを判別し、必要に応
じて(該当する共有データを保持するとき)そのプロト
コールの手順を実行する。
この実施例ではデータのアドレス毎にプロトコール・タ
イプ表示情報を付加するのでなく、一定の記憶領域毎に
この情報を割り当てている。すなわち、従来技術に関連
して説明したように、メモリ毎(変数やワークエリア
毎)に適したキャッシュのプロトコールが異なってい
る。よって、メモリ毎にプロトコールを制御することが
パフォーマンスを向上する上で重要である。しかし、各
アドレス毎にプロトコールのタイプを表す情報を付加し
たのでは、その情報のための記憶領域や管理のハードゥ
ェアがかなりの量となり、効率的ではない。そこで一定
の記憶領域ごとにプロトコールのタイプを表す情報を付
加し管理する。ここでは実現の容易さから、従来型のプ
ロセッサ(またはその専用MMU)にすでにインプリメン
トされているページ管理機構に注目し、ページ毎にその
情報を付加することにする。
イプ表示情報を付加するのでなく、一定の記憶領域毎に
この情報を割り当てている。すなわち、従来技術に関連
して説明したように、メモリ毎(変数やワークエリア
毎)に適したキャッシュのプロトコールが異なってい
る。よって、メモリ毎にプロトコールを制御することが
パフォーマンスを向上する上で重要である。しかし、各
アドレス毎にプロトコールのタイプを表す情報を付加し
たのでは、その情報のための記憶領域や管理のハードゥ
ェアがかなりの量となり、効率的ではない。そこで一定
の記憶領域ごとにプロトコールのタイプを表す情報を付
加し管理する。ここでは実現の容易さから、従来型のプ
ロセッサ(またはその専用MMU)にすでにインプリメン
トされているページ管理機構に注目し、ページ毎にその
情報を付加することにする。
第3図は第2図のプロセッサPに関連する入出力信号を
示し、第4図は第2図実施例のページ管理機構とページ
・エントリの構成例を示す。
示し、第4図は第2図実施例のページ管理機構とページ
・エントリの構成例を示す。
第3図および第4図において(とくに第4図におい
て)、ページ管理機構はメモリをページという単位(図
では4Kバイト単位)で管理しており、ページ毎にそのペ
ージを実メモリのどこに配置するか、どのような保護を
行うかといったことを記述したページ・エントリを持っ
ている。プロセッサのメモリ・アクセスの際は論理アド
レスの上位ビットで選択されたページ・エントリ(また
はページ・エントリをプロセッサ内にコピーしたトラン
スレーション・ルックアサイド・バッファ:TLB)が必ず
参照されてアクセス権がチェックされ、ページ・エント
リの頁・フレーム・アドレスを基に実メモリのアドレス
が算出される。そして、アクセス権を満たしていると実
メモリへのアクセスが行なわれる。
て)、ページ管理機構はメモリをページという単位(図
では4Kバイト単位)で管理しており、ページ毎にそのペ
ージを実メモリのどこに配置するか、どのような保護を
行うかといったことを記述したページ・エントリを持っ
ている。プロセッサのメモリ・アクセスの際は論理アド
レスの上位ビットで選択されたページ・エントリ(また
はページ・エントリをプロセッサ内にコピーしたトラン
スレーション・ルックアサイド・バッファ:TLB)が必ず
参照されてアクセス権がチェックされ、ページ・エント
リの頁・フレーム・アドレスを基に実メモリのアドレス
が算出される。そして、アクセス権を満たしていると実
メモリへのアクセスが行なわれる。
第4図のページ・エントリのP1,P0はアクセス権を示す
ビットで、次表のようにプロテクション・レベルに対応
している。
ビットで、次表のようにプロテクション・レベルに対応
している。
ページ・エントリのA,D,Eは仮想記憶の管理に用いられ
るビットで、それぞれページ内がアクセスされたか、書
き替えられたか、ページが実メモリに存在するかを示
す。
るビットで、それぞれページ内がアクセスされたか、書
き替えられたか、ページが実メモリに存在するかを示
す。
さて、T2,T1,T0が本発明の特徴であるページのプロトコ
ールのタイプを表すビットである。つまり、このページ
に属するデータはどのタイプのプロトコールを使ってア
クセスするかを示す情報である。ここでは3ビットでプ
ロトコールのタイプを表わすことにしているが、この数
はシステムがサポートするプロトコールの数に対応して
いる(3ビットでは23=8種類までのプロトコールに対
応)。プロセッサ(またはMMU)がメモリ・アクセスす
る際に、このアクセスはどのプロトコールで処理しなけ
ればならないかを示すため、このプロトコールのタイプ
を示すビットを外部に出力する信号線をプロセッサに設
ける(第3図)。そして、第2図のようにマルチプロセ
ッサを構成し、キャッシュC1C…Cnから共有バス1上に
アクセスが出るとき、つまり共有バス1のトラフィック
が必要なときには、共有バス1にもプロトコールのタイ
プを示す信号が出力され、他のキャッシュC1C…Cnはこ
の信号でプロトコールを選択しながらバス・スヌープ
(バス監視)を行う。
ールのタイプを表すビットである。つまり、このページ
に属するデータはどのタイプのプロトコールを使ってア
クセスするかを示す情報である。ここでは3ビットでプ
ロトコールのタイプを表わすことにしているが、この数
はシステムがサポートするプロトコールの数に対応して
いる(3ビットでは23=8種類までのプロトコールに対
応)。プロセッサ(またはMMU)がメモリ・アクセスす
る際に、このアクセスはどのプロトコールで処理しなけ
ればならないかを示すため、このプロトコールのタイプ
を示すビットを外部に出力する信号線をプロセッサに設
ける(第3図)。そして、第2図のようにマルチプロセ
ッサを構成し、キャッシュC1C…Cnから共有バス1上に
アクセスが出るとき、つまり共有バス1のトラフィック
が必要なときには、共有バス1にもプロトコールのタイ
プを示す信号が出力され、他のキャッシュC1C…Cnはこ
の信号でプロトコールを選択しながらバス・スヌープ
(バス監視)を行う。
第5図は第4図のプロトコール制御を従来型のCPUやMMU
でインプリメントした変形例を示す。第5図の変形例で
は、ページ・エントリ内にT2,T1,T0のようなビットはな
いので、アドレスの上位2〜3ビットをプロトコールの
タイプを示すビットとして使用する(第5図)。32ビッ
トの実アドレス線があれば、2〜3ビットこの用途に使
用しても512Mバイト〜1Gバイトの実メモリ空間が使用可
能で実用上問題ないと思われる。
でインプリメントした変形例を示す。第5図の変形例で
は、ページ・エントリ内にT2,T1,T0のようなビットはな
いので、アドレスの上位2〜3ビットをプロトコールの
タイプを示すビットとして使用する(第5図)。32ビッ
トの実アドレス線があれば、2〜3ビットこの用途に使
用しても512Mバイト〜1Gバイトの実メモリ空間が使用可
能で実用上問題ないと思われる。
次にオール・リード(all read)・タイプのプロトコ
ールについて説明しておく。
ールについて説明しておく。
以上のように効率的にプロトコールを切替る機構を実現
することが可能となると、ある種のデータにのみ有効だ
が、他のデータに用いると効率が悪くなるため今まで使
われなかったようなプロトコールも有効に使えるように
なる。そのようなプロトコールに対してはその適合する
データにのみ選択的に用いられるように制御する。この
ようなプロトコールの例がall readというプロトコー
ルである。このプロトコールはバス・スヌープを行って
いるキャッシュが他のキャッシュによる共有バスを使っ
ての読み出しの際に積極的にバス上のデータを取り込む
プロトコールである。
することが可能となると、ある種のデータにのみ有効だ
が、他のデータに用いると効率が悪くなるため今まで使
われなかったようなプロトコールも有効に使えるように
なる。そのようなプロトコールに対してはその適合する
データにのみ選択的に用いられるように制御する。この
ようなプロトコールの例がall readというプロトコー
ルである。このプロトコールはバス・スヌープを行って
いるキャッシュが他のキャッシュによる共有バスを使っ
ての読み出しの際に積極的にバス上のデータを取り込む
プロトコールである。
このプロトコールは以下のような場合に適している。全
プロセッサが同じデータを参照する必要があるときに各
プロセッサが個別にリードを行ない、メモリからキャッ
シュにデータを張り付けるとすると、キャッシュ内にデ
ータが持ってこられるまでに、データ数×プロセッサ数
のバス・トラフィックスが共有バスで発生する。そこ
で、all readをこのデータに対するプロトコールとし
て用いれば、データ数だけのバス・トラフィックで済み
効率が良い。
プロセッサが同じデータを参照する必要があるときに各
プロセッサが個別にリードを行ない、メモリからキャッ
シュにデータを張り付けるとすると、キャッシュ内にデ
ータが持ってこられるまでに、データ数×プロセッサ数
のバス・トラフィックスが共有バスで発生する。そこ
で、all readをこのデータに対するプロトコールとし
て用いれば、データ数だけのバス・トラフィックで済み
効率が良い。
つぎにアップデート・タイプ、インバリデート・タイプ
およびオール・リード・タイプのプロトコールを例に用
いて、キャッシュのスヌープ時の動作を説明する。バス
・スヌープの結果のキャッシュの動作を箇条書きにする
と以下のようになる。
およびオール・リード・タイプのプロトコールを例に用
いて、キャッシュのスヌープ時の動作を説明する。バス
・スヌープの結果のキャッシュの動作を箇条書きにする
と以下のようになる。
アップデート・タイプ ・書込みアクセスでキャッシュ・ヒットなら、バス上の
データでキャッシュ内のデータを更新する。
データでキャッシュ内のデータを更新する。
・他の場合なら、何もしない(注参照)。
(注)ここでは、キャッシュの動作のうち、プロトコー
ルをデータ毎に更新することで効率が上がるようなもの
のみに注目している。そこで、この箇条書きでは書込み
動作がどんな方式で行なわれるかということを簡単のた
めに考慮していない。書込み動作の方式がwrite back等
の場合は、データのオウナーシップ(誰が一番最新の正
しいデータを持っており、バスに供給する責任がある
か)によりキャッシュのスヌープ時の動作はもう少し複
雑になる。
ルをデータ毎に更新することで効率が上がるようなもの
のみに注目している。そこで、この箇条書きでは書込み
動作がどんな方式で行なわれるかということを簡単のた
めに考慮していない。書込み動作の方式がwrite back等
の場合は、データのオウナーシップ(誰が一番最新の正
しいデータを持っており、バスに供給する責任がある
か)によりキャッシュのスヌープ時の動作はもう少し複
雑になる。
インバリデート・タイプ ・書込みアクセスでキャッシュ・ヒットなら、キャッシ
ュ内のデータを無効化(invalidate)する。
ュ内のデータを無効化(invalidate)する。
・他の場合なら何もしない(上記注参照)。
オール・リード・タイプ ・読み出しアクセスでキャッシュ・ヒットではなく、か
つデータのリプレイスによるライト・バック(write ba
ck、つまりシステム・バスへのアクセス)を引き起こす
ことなしにデータを取り込めるなら、バス上のデータを
キャッシュ内に取り込む。
つデータのリプレイスによるライト・バック(write ba
ck、つまりシステム・バスへのアクセス)を引き起こす
ことなしにデータを取り込めるなら、バス上のデータを
キャッシュ内に取り込む。
・書込みアクセスでキャッシュ・ヒットなら、アップデ
ート・タイプの書込みアクセス時と同じ処理を行う。
ート・タイプの書込みアクセス時と同じ処理を行う。
・他の場合なら何もしない(上記注参照)。
また、キャッシュのプロトコールの種類としては、他の
プロセッサの共有バスを使った読み出しアクセスでキャ
ッシュ・ヒットしたら、スヌープしているキャッシュは
キャッシュ内のデータを無効化するインバリート・リー
ド(invalidate read)等他にも色々考えられるが、こ
こでは上記の3種を列挙するに留めておく。
プロセッサの共有バスを使った読み出しアクセスでキャ
ッシュ・ヒットしたら、スヌープしているキャッシュは
キャッシュ内のデータを無効化するインバリート・リー
ド(invalidate read)等他にも色々考えられるが、こ
こでは上記の3種を列挙するに留めておく。
ページ毎の変数やワークエリアの振り分けの例を第6図
に示す。コンパイラによるアクセス・パターンの解析や
プログラマによりプロトコール・タイプの指示等によっ
て、変数やワークエリアをそれに適したプロトコールの
タイプを持つページ内に割り振る。また、プロセッサの
命令コードについても、全プロセッサが同じコードを共
有するときはall readタイプのページに割り付けるの
が効率上得策である。
に示す。コンパイラによるアクセス・パターンの解析や
プログラマによりプロトコール・タイプの指示等によっ
て、変数やワークエリアをそれに適したプロトコールの
タイプを持つページ内に割り振る。また、プロセッサの
命令コードについても、全プロセッサが同じコードを共
有するときはall readタイプのページに割り付けるの
が効率上得策である。
つぎにオール・リード・タイプの有効に利用する実施例
について第7図を参照して説明する。なお第7図におい
て第1図および第2図に対応する個所には対応する符号
を付して詳細な説明を省略する。
について第7図を参照して説明する。なお第7図におい
て第1図および第2図に対応する個所には対応する符号
を付して詳細な説明を省略する。
第7図実施例はつぎの点を考慮したものである。
すなわちall readタイプのプロトコールを指定したバ
ス・アクセスにおいて、関係のないキャッシュにまでデ
ータを取り込ませることがないように、データを取り込
んで欲しいキャッシュ群(プロセッサ群)を指定できる
ことが望ましい。時に,OS上でアプリケーション・プロ
グラムとしてプログラムが走るようなときには、複数の
お互いに無関係なタスクがマルチプロプセッサ・システ
ム上で同時に走ることが想定され、このような機能が望
まれる。この機能な実現のためには、システム・バス上
でキャッシュ群を指定する情報を伝えるためのバスとそ
の情報を蓄えておいてall readタイプのアクセス時に
外部に出力するようなハードウェアがあればよい。そし
て、各キャッシュはスヌープ動作で、バスのアクセスが
all readタイプの際に、プロセッサ群を指定するバス
も監視して自分のプロセッサが選択されているときのみ
前記の動作を行うようにする。このプロセッサ群の指定
にもきめ細かい制御が要求されるのであれば、この指定
の情報はページ・エントリ内に記憶され、ページ毎に指
定が変えられるインプリメントが望ましい。しかし、そ
れではプロセッサ(またはMMU)のピン数がかなり増大
してしまう。また、all readはあるタスクを一緒に処
理しているプロセッサ群のすべてのキャッシュにデータ
を張り付けるというのが基本的な考えなので、この同一
のタスクを処理するプロセッサ群を指定する情報は各キ
ャッシュに1つ記憶できれば良い。そこで、キャッシュ
毎に1つのレジスターを用意する(第7図)。
ス・アクセスにおいて、関係のないキャッシュにまでデ
ータを取り込ませることがないように、データを取り込
んで欲しいキャッシュ群(プロセッサ群)を指定できる
ことが望ましい。時に,OS上でアプリケーション・プロ
グラムとしてプログラムが走るようなときには、複数の
お互いに無関係なタスクがマルチプロプセッサ・システ
ム上で同時に走ることが想定され、このような機能が望
まれる。この機能な実現のためには、システム・バス上
でキャッシュ群を指定する情報を伝えるためのバスとそ
の情報を蓄えておいてall readタイプのアクセス時に
外部に出力するようなハードウェアがあればよい。そし
て、各キャッシュはスヌープ動作で、バスのアクセスが
all readタイプの際に、プロセッサ群を指定するバス
も監視して自分のプロセッサが選択されているときのみ
前記の動作を行うようにする。このプロセッサ群の指定
にもきめ細かい制御が要求されるのであれば、この指定
の情報はページ・エントリ内に記憶され、ページ毎に指
定が変えられるインプリメントが望ましい。しかし、そ
れではプロセッサ(またはMMU)のピン数がかなり増大
してしまう。また、all readはあるタスクを一緒に処
理しているプロセッサ群のすべてのキャッシュにデータ
を張り付けるというのが基本的な考えなので、この同一
のタスクを処理するプロセッサ群を指定する情報は各キ
ャッシュに1つ記憶できれば良い。そこで、キャッシュ
毎に1つのレジスターを用意する(第7図)。
第7図のプロセッサ群指定回路3132…3nとプロセッサ群
指定バス4がこの処理を実現するためのキャッシュ制御
機構である。プロセッサ指定バス4のバス幅はlog2(n
+2)−1本(nはプロセッサ台数)である。その動作
は以下の通りである。
指定バス4がこの処理を実現するためのキャッシュ制御
機構である。プロセッサ指定バス4のバス幅はlog2(n
+2)−1本(nはプロセッサ台数)である。その動作
は以下の通りである。
・プロセッサ群指定回路3132…3nは自分の担当するプロ
セッサP1P2…Pnが共有バス1を使ってall readタイプ
のアクセスをするときに、内部のレジスタに保持したプ
ロセッサ群を指定する識別番号をプロセッサ群指定バス
4上に出力する。
セッサP1P2…Pnが共有バス1を使ってall readタイプ
のアクセスをするときに、内部のレジスタに保持したプ
ロセッサ群を指定する識別番号をプロセッサ群指定バス
4上に出力する。
・プロセッサ群指定回路3132…3nは自分の担当するプロ
セッサP1P2…Pnが共有バス1を使用していないときは、
プロセッサ群指定バス4を監視(スヌープ)し、レジス
ターの値と比較して、自分の担当するプロセッサP1P2…
Pnが選択されているかどうかの信号をキャッシュC1C…C
nに出力する。キャッシュC1C…Cnは共有バス1のアクセ
スがall readタイプの場合、その信号によってスヌー
プ動作を切替る。
セッサP1P2…Pnが共有バス1を使用していないときは、
プロセッサ群指定バス4を監視(スヌープ)し、レジス
ターの値と比較して、自分の担当するプロセッサP1P2…
Pnが選択されているかどうかの信号をキャッシュC1C…C
nに出力する。キャッシュC1C…Cnは共有バス1のアクセ
スがall readタイプの場合、その信号によってスヌー
プ動作を切替る。
プロセッサ群指定回路3132…3n内部のレジスタにプロセ
ッサ群を指定する識別番号を設定するのはプロセッサが
ソフトウェアで行う。OSが存在する時はOSがタスクにプ
ロセッサを割り付ける毎にこのレジスタの設定を行えば
よい。第7図中のキャッシュC1C…Cnとプロセッサ群指
定回路3132…3n間の信号線A,Eはそれぞれ、プロセッサP
1P2…Pnがall readタイプのアクセスを行っていること
を示す信号線とプロセッサP1P2…Pnが選択されているこ
とを示す信号線である。
ッサ群を指定する識別番号を設定するのはプロセッサが
ソフトウェアで行う。OSが存在する時はOSがタスクにプ
ロセッサを割り付ける毎にこのレジスタの設定を行えば
よい。第7図中のキャッシュC1C…Cnとプロセッサ群指
定回路3132…3n間の信号線A,Eはそれぞれ、プロセッサP
1P2…Pnがall readタイプのアクセスを行っていること
を示す信号線とプロセッサP1P2…Pnが選択されているこ
とを示す信号線である。
もちろん、このプロセッサ群指定バス4は操作対象とす
るプロセッサ群(キャッシュ群)を指定するために用い
ているだけなので、all readのプロトコール以外でも
使用できる。
るプロセッサ群(キャッシュ群)を指定するために用い
ているだけなので、all readのプロトコール以外でも
使用できる。
データ(変数)の中にプログラムのある部分では全プロ
セッサP1P2…Pnに参照され、ある部分では1つのプロセ
ッサが独占使用するというようなものが存在する、つま
り望ましいプロトコール・タイプが1つのプログラム中
で大きく変化するデータが存在するときは、同じように
変化するデータを1つのページに集めて途中でそのペー
ジ・エントリのプロトコール・タイプを書換えることで
対応できる。
セッサP1P2…Pnに参照され、ある部分では1つのプロセ
ッサが独占使用するというようなものが存在する、つま
り望ましいプロトコール・タイプが1つのプログラム中
で大きく変化するデータが存在するときは、同じように
変化するデータを1つのページに集めて途中でそのペー
ジ・エントリのプロトコール・タイプを書換えることで
対応できる。
F.発明の効果 本発明によれば、共有データのタイプによってキャッシ
ュのプロトコールをオーバーヘッドなしに切替可能とな
る。これにより、共有データ毎に最適なプロトコールを
選択でき、共有バスの使用頻度を減らすことができる。
そして、マルチプロセッサ・システムの性能の向上を図
ることができる。
ュのプロトコールをオーバーヘッドなしに切替可能とな
る。これにより、共有データ毎に最適なプロトコールを
選択でき、共有バスの使用頻度を減らすことができる。
そして、マルチプロセッサ・システムの性能の向上を図
ることができる。
第1図は共有バス,共有メモリ型でスヌープ・キャッシ
ュを持った従来のマルチプロセッサ・システムを示すブ
ロック図、第2図は本発明の1実施例の全体構成を示す
ブロック図、第3図は第2図実施例のプロセッサに関連
する信号を説明する図、第4図は第2図実施例で用いる
ページ管理機構およびページ・エントリの構成例を説明
する図、第5図は第4図構成例を従来型のプロセッサで
実現するように変形した他の構成例を説明する図、第6
図はプロトコールのタイプによるページの割り付けを説
明する図、第7図はプロセッサ群の指定を可能にする、
この発明の他の実施例の全体構成図を示すブロック図で
ある。 P1P2…Pn……プロセッサ、C1C…Cn……キャッシュ、M
……共有メモリ、1……共有バス、2……プロトコール
・タイプ・バス、3132…3n……プロセッサ群指定回路、
4……プロセッサ群指定バス。
ュを持った従来のマルチプロセッサ・システムを示すブ
ロック図、第2図は本発明の1実施例の全体構成を示す
ブロック図、第3図は第2図実施例のプロセッサに関連
する信号を説明する図、第4図は第2図実施例で用いる
ページ管理機構およびページ・エントリの構成例を説明
する図、第5図は第4図構成例を従来型のプロセッサで
実現するように変形した他の構成例を説明する図、第6
図はプロトコールのタイプによるページの割り付けを説
明する図、第7図はプロセッサ群の指定を可能にする、
この発明の他の実施例の全体構成図を示すブロック図で
ある。 P1P2…Pn……プロセッサ、C1C…Cn……キャッシュ、M
……共有メモリ、1……共有バス、2……プロトコール
・タイプ・バス、3132…3n……プロセッサ群指定回路、
4……プロセッサ群指定バス。
Claims (4)
- 【請求項1】複数のプロセッサをそれぞれプライベート
・キャッシュを介して共有バスおよび共有メモリに接続
し、この共有バスへのアクセスを監視して所定のタイプ
のプロトコールにしたがって上記プライベート・キャッ
シュにおけるデータの操作を実行するマルチプロセッサ
・システムにおいて、 複数種類のプロトコール・タイプのうちから上記所定の
プロトコール・タイプを特定するためのプロトコール・
タイプ信号を受け取るプロトコール・タイプ・バスと、 上記プライベート・キャッシュ毎に設けられるとともに
上記プロトコール・タイプ・バスに共通して接続された
キャッシュ制御機構とを有し、 各制御機構は、 所定の単位のデータの記憶領域毎に割り当てられたプロ
トコール・タイプを記憶するプロトコール・タイプ記憶
手段と、 データがアクセスされたときにそのデータの属する記憶
領域のプロトコール・タイプを上記プロトコール・タイ
プ記憶手段から取り出し、対応するプロトコール・タイ
プ信号を上記プロトコール・タイプ・バスに送出するプ
ロトコール・タイプ信号生成手段と、 上記プロトコール・タイプ・バス上のプロトコール・タ
イプ信号を監視して当該信号に応じたプロトコールで対
応するプライベート・キャッシュにおいてデータの操作
を実行する手段とを有することを特徴とするマルチプロ
セッサ・システム。 - 【請求項2】上記データの記憶領域の単位をページとし
た特許請求の範囲第1項記載のマルチプロセッサ・シス
テム。 - 【請求項3】上記プロトコール・タイプ記憶手段および
プロトコール・タイプ信号生成手段をページ管理機構に
より構成した特許請求の範囲第2項記載のマルチプロセ
ッサ・システム。 - 【請求項4】複数のプロセッサをそれぞれプライベート
・キャッシュを介して共有バスおよび共有メモリに接続
し、この共有バスへのアクセスを監視して所定のタイプ
のプロトコールにしたがって上記プライベート・キャッ
シュにおけるデータの操作を実行するマルチプロセッサ
・システムにおいて、 複数種類のプロトコール・タイプのうちから上記所定の
プロトコール・タイプを特定するためのプロトコール・
タイプ信号を受け取るプロトコール・タイプ・バスと、 特定されたプロトコールに応じてデータの操作を実行す
るプロセッサを限定的に指定するプロセッサ限定信号を
受け取るプロセッサ限定バスと、 上記プライベート・キャッシュ毎に設けられるとともに
上記プロトコール・タイプ・バスおよびプロセッサ限定
バスに共通して接続されたキャッシュ制御機構とを有
し、 各制御機構は、 所定の単位のデータの記憶領域毎に割り当てられたプロ
トコール・タイプを記憶するプロトコール・タイプ記憶
手段と、 データがアクセスされたときにそのデータの属する記憶
領域のプロトコール・タイプを上記プロトコール・タイ
プ記憶手段から取り出し、対応するプロトコール・タイ
プ信号を上記プロトコール・タイプ・バスに送出するプ
ロトコール・タイプ信号生成手段と、 上記プロトコール・タイプ信号が、上記プロセッサを限
定するプロトコール・タイプを表示するときに、上記プ
ロセッサ限定信号を上記プロセッサ限定バスに送出する
プロセッサ限定信号生成手段と、 上記プロトコール・タイプ・バス上のプロトコール・タ
イプ信号および上記プロセッサ限定バス上のプロセッサ
限定信号を監視して、対応するプライベート・キャッシ
ュにおいてデータの操作が必要かどうかを判別するとと
もに、必要なときには上記プロトコール・タイプ信号に
応じたプロトコールで対応するプライベート・キャッシ
ュにおいてデータの操作を実行する手段とを有すること
を特徴とするマルチプロセッサ・システム。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1057761A JPH0721781B2 (ja) | 1989-03-13 | 1989-03-13 | マルチプロセツサ・システム |
| EP19900301886 EP0388032A3 (en) | 1989-03-13 | 1990-02-21 | Storage control in cached multi-processor systems |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1057761A JPH0721781B2 (ja) | 1989-03-13 | 1989-03-13 | マルチプロセツサ・システム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02238534A JPH02238534A (ja) | 1990-09-20 |
| JPH0721781B2 true JPH0721781B2 (ja) | 1995-03-08 |
Family
ID=13064863
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1057761A Expired - Lifetime JPH0721781B2 (ja) | 1989-03-13 | 1989-03-13 | マルチプロセツサ・システム |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP0388032A3 (ja) |
| JP (1) | JPH0721781B2 (ja) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0776942B2 (ja) * | 1991-04-22 | 1995-08-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | マルチプロセッサ・システムおよびそのデータ伝送装置 |
| JPH04337854A (ja) * | 1991-05-15 | 1992-11-25 | Mitsubishi Electric Corp | データ処理装置 |
| FR2707777B1 (fr) * | 1993-07-15 | 1995-08-18 | Bull Sa | Ensemble informatique à mémoire partagée. |
| FR2707776B1 (fr) | 1993-07-15 | 1995-08-18 | Bull Sa | Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé. |
| FR2707774B1 (fr) * | 1993-07-15 | 1995-08-18 | Bull Sa | Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux. |
| FR2707778B1 (fr) * | 1993-07-15 | 1995-08-18 | Bull Sa | NÓoeud de processeurs. |
| US6643759B2 (en) * | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
| US7644237B1 (en) | 2003-06-23 | 2010-01-05 | Mips Technologies, Inc. | Method and apparatus for global ordering to insure latency independent coherence |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6049944B2 (ja) * | 1980-12-29 | 1985-11-06 | 富士通株式会社 | バッファ記憶制御方式 |
| JPS61141054A (ja) * | 1984-12-14 | 1986-06-28 | Nec Corp | 情報処理装置 |
| US4959777A (en) * | 1987-07-27 | 1990-09-25 | Motorola Computer X | Write-shared cache circuit for multiprocessor system |
| JPH02234247A (ja) * | 1989-03-08 | 1990-09-17 | Nec Corp | キャッシュメモリシステム |
-
1989
- 1989-03-13 JP JP1057761A patent/JPH0721781B2/ja not_active Expired - Lifetime
-
1990
- 1990-02-21 EP EP19900301886 patent/EP0388032A3/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| EP0388032A2 (en) | 1990-09-19 |
| EP0388032A3 (en) | 1991-10-23 |
| JPH02238534A (ja) | 1990-09-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6631447B1 (en) | Multiprocessor system having controller for controlling the number of processors for which cache coherency must be guaranteed | |
| JP4085389B2 (ja) | マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法 | |
| JP4082612B2 (ja) | 複数のコヒーレンシ領域およびキャッシュ・パージのないコヒーレンシ領域間ソフトウェア・プロセス移行を備えるマルチプロセッサ・コンピュータ・システム | |
| JP6831788B2 (ja) | キャッシュ保守命令 | |
| EP0301354A2 (en) | Cache consistency protocol for multiprocessor system | |
| JP3473772B2 (ja) | キャッシュ・メモリを利用したデータ処理システム | |
| JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
| JPH03217963A (ja) | マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法 | |
| JPH10320283A (ja) | マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置 | |
| JPH04219852A (ja) | 直接メモリアクセスを行うためのインターフェース装置及び方法 | |
| JPH0272452A (ja) | 無効要求を選別する方法及び装置 | |
| JP2968509B2 (ja) | コンピュータシステム及びキャッシュの内容のコヒーレンシー状態を変更する方法 | |
| JPH0619786A (ja) | キャッシュコヒーレンスを維持する方法及び装置 | |
| JPH0340046A (ja) | キャッシュメモリ制御方式および情報処理装置 | |
| US6587922B2 (en) | Multiprocessor system | |
| JP2003177962A (ja) | キャッシュ装置および方法 | |
| EP0480858A2 (en) | Hardware primary directory lock | |
| JPH06318174A (ja) | キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法 | |
| JPH0721781B2 (ja) | マルチプロセツサ・システム | |
| JPH0519176B2 (ja) | ||
| JP2000339221A (ja) | 変換装置のエントリを無効化するシステム及び方法 | |
| US20060294319A1 (en) | Managing snoop operations in a data processing apparatus | |
| JPWO1998012639A1 (ja) | 計算機システム | |
| JPH04191946A (ja) | スヌープキャッシュメモリ制御方式 | |
| US5901326A (en) | Memory bus address snooper logic for determining memory activity without performing memory accesses |