JP3626609B2 - マルチプロセッサシステム - Google Patents
マルチプロセッサシステム Download PDFInfo
- Publication number
- JP3626609B2 JP3626609B2 JP32605098A JP32605098A JP3626609B2 JP 3626609 B2 JP3626609 B2 JP 3626609B2 JP 32605098 A JP32605098 A JP 32605098A JP 32605098 A JP32605098 A JP 32605098A JP 3626609 B2 JP3626609 B2 JP 3626609B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- main memory
- memory
- processor
- store
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明はマルチプロセッサシステムにおけるキャッシュメモリの制御に関し、特にキャッシュ制御プロトコルの切り替えに関する。
【0002】
【従来の技術】
従来、マルチプロセッサシステムにおけるキャッシュ制御プロトコルとしては、データを更新する場合にキャッシュメモリ内のデータのみを更新し、主記憶への更新データの反映は、キャッシュ内の該当するデータ部が主記憶に掃き出される時に行うストアイン方式と、データの更新時に、キャッシュメモリへの更新データの反映と同時期に、主記憶にも更新データの反映を行うストアスルー方式との2種類がある。
【0003】
マルチプロセッサ環境下においては、ストアイン方式では、データの更新時に、更新データをキャッシュ内にのみ反映させる事から、主記憶へのアクセス回数は少なくてすむ。但し、別のプロセッサがその更新データと同じデータエリアに対してデータ更新する場合は、該データエリアを、最新の更新データを所持しているキャッシュから掃き出させ、別のプロセッサの保持しているキャッシュに移してから、データの更新を行なうことになる。この為、複数のプロセッサで共有している主記憶エリアの更新時は、キャッシュ間でのデータの移送が行われ、性能低下の要因となっている。
【0004】
他方、ストアスルー方式では、データの更新時に、自プロセッサ内のキャッシュのみならず、主記憶にも随時反映させる事から、マルチプロセッサ環境下では、主記憶のアクセス回数が非常に大きくなる。この事から、メモリアクセスに対するレスポンスが遅くなり、性能低下を引き起こしている。
【0005】
このような事情に鑑み、キャッシュメモリの更新時に同時に主記憶も更新するストアスルー方式のキャッシュ制御プロトコルと、キャッシュメモリの更新時点では主記憶を更新しないストアイン方式のキャッシュ制御プロトコルとを動的に切り替えるマルチプロセッサシステムが提案されている。
【0006】
例えば、特開平2−226449号公報および特開平3−210645号公報では、メモリのページ単位にそのページが複数のプロセッサで共有されるページか否かを示すフラグを持たせ、共有ページに対するアクセス時にはストアスルー方式を、それ以外のページに対するアクセス時にはストアイン方式を使用する。また、特開平3−40046号公報では、メモリのページ単位或いはセグメント単位にストアインまたはストアスルー属性を示す識別子を付与しておき、アクセスされるページまたはセグメントの前記識別子によってキャッシュ制御プロトコルをストアスルー方式とストアイン方式との間で動的に切り替える。
【0007】
【発明が解決しようとする課題】
上述した従来の技術によれば、ストアイン方式とストアスルー方式の各々の欠点を補うことができ、マルチプロセッサ環境下において、主記憶へのアクセス頻度を低下させたままで、共有メモリ領域のキャッシュ間での移送も抑えることができ、性能を向上させることが可能となる。
【0008】
しかしながら、何れの従来技術も、アクセス先の領域に基づいて、キャッシュ制御プロトコルの切り替えを行っている。キャッシュ制御プロトコルをアクセス先の領域に基づいて切り替える場合、アーキテクチャの変更が必要になり、従来装置との互換性が取れなくなるという問題がある。つまり、キャッシュ制御プロトコルをアクセス先の領域に基づいて変更する場合、前記の各公報に記載されるように、セグメント記述子やページ記述子などのアクセス先領域の属性を示す構造体にストアイン方式かストアスルー方式かを区別するフラグを付加する必要があるが、セグメント記述子等はその構造がアーキテクチャで規定されているからである。
【0009】
そこで本発明の目的は、セグメント記述子やページ記述子などのアクセス先領域の属性を示す構造体に手を入れずにキャッシュ制御プロトコルの動的な切り替えを可能にすることにある。
【0010】
【課題を解決するための手段】
本発明のマルチプロセッサシステムは、キャッシュメモリを介して記憶データにアクセスするプロセスの仮想空間番号及び命令セグメント番号が、仮想空間番号レジスタおよび命令セグメント番号レジスタに保持される仮想空間番号および命令セグメント番号と一致するか否かを検出し、その検出結果に応じて動的にキャッシュ制御プロトコルの切り替えを行う。つまり、主記憶上の共有メモリ領域へのアクセスを行うプロセスであるときは、キャッシュメモリの更新時に同時に主記憶も更新するストアスルー方式のキャッシュ制御プロトコルで制御し、そうでないときはキャッシュメモリの更新時点では主記憶を更新しないストアイン方式のキャッシュ制御プロトコルで制御を行う。
【0012】
このように、主記憶上の共有メモリ領域へのアクセスを行うソフトウェアモジュールか否かを検出してキャッシュ制御プロトコルを切り替えることにより、セグメント記述子やページ記述子などのアクセス先領域の属性を示す構造体に手を入れずにキャッシュ制御プロトコルの動的な切り替えが可能となる。
【0013】
【発明の実施の形態】
次に本発明の実施の形態の例について図面を参照して詳細に説明する。
【0014】
図1は本発明を適用したマルチプロセッサシステムの一例を示すブロック図である。この例のマルチプロセッサシステムは、2つのプロセッサ1,2が1つの主記憶3をシステムバス4および主記憶制御部5を介して共有している。なお、ここではプロセッサの台数を2台としたが、本発明は3台以上のプロセッサが主記憶を共有するマルチプロセッサシステムに適用可能である。
【0015】
各々のプロセッサ1,2には、図示しない演算部などに加えて、主記憶3の一部のコピーを保持するキャッシュメモリ11,21と、キャッシュメモリ11,21を制御するキャッシュ制御部12,22と、モジュール検出手段13,23とが含まれている。
【0016】
モジュール検出手段13,23は、主記憶3上の共有メモリ領域へのアクセスを行うソフトウェアモジュールの実行を検出する手段である。モジュール検出手段13の構成例を図2に示す。モジュール検出手段23も同様の構成とすることができる。
【0017】
図2において、仮想空間番号レジスタ131は、プロセッサ1において現にメモリアクセスを行おうとしているプロセスの仮想空間番号がセットされるレジスタであり、命令セグメント番号レジスタ132は、プロセッサ1において現に実行されているプロセス内モジュールの命令コードを格納している命令セグメントの番号がセットされるレジスタである。
【0018】
他方、仮想空間番号レジスタ133は、主記憶3上の共有メモリ領域へのアクセスを行うプロセスの走行する仮想空間番号が事前に設定されているレジスタであり、命令セグメント番号レジスタ134は、主記憶3上の共有メモリ領域へのアクセスを行うプロセス内モジュールの命令コードを格納している命令セグメントの番号が事前に設定されているレジスタである。これらのレジスタ133,134は、ソフトウェアビジブルなレジスタであり、所望の値をソフトウェア命令によって外部より設定することができる。
【0019】
仮想空間番号レジスタ131中の仮想空間番号と仮想空間番号レジスタ133中の仮想空間番号とは比較器135で比較され、命令セグメント番号レジスタ132中の命令セグメント番号と命令セグメント番号レジスタ134中の命令セグメント番号とは比較器136で比較される。比較器135,136の双方で一致が検出された場合、つまり、プロセッサ1において現にメモリアクセスを行おうとしているプロセス内モジュールが、主記憶3上の共有メモリ領域へのアクセスを行うものとして事前に登録されたモジュールである場合は、アンド回路137から出力されるキャッシュ制御方式指示ビット138が、キャッシュメモリの更新時に同時に主記憶も更新するストアスルー方式のキャッシュ制御プロトコルを指示する論理値1となり、それ以外は、キャッシュメモリの更新時点では主記憶を更新しないストアイン方式のキャッシュ制御プロトコルを指示する論理値0となる。
【0020】
キャッシュ制御部12,22は、メモリアクセス要求時、モジュール検出手段13,23からのキャッシュ制御方式指示ビット138が論理値1を示すときは、ストアスルー方式のキャッシュ制御プロトコルで制御を行い、キャッシュ制御方式指示ビット138が論理値0を示すときは、ストアイン方式のキャッシュ制御プロトコルで制御を行う。
【0021】
従って、オペレーティングシステム(OS)の或る特定モジュール(例えばシステムトレースモジュール)のみが主記憶3上の共有メモリ領域に対してアクセスする場合、仮想空間番号レジスタ133にOSが走行する仮想空間番号を事前にセットすると共に、命令セグメント番号レジスタ134にOS内の前記特定モジュールの命令コードを格納している命令セグメントの番号を事前にセットしておけば、OSの前記特定モジュール内で行われるメモリアクセスについては、ストアスルー方式のキャッシュ制御プロトコルで制御され、それ以外のモジュール(つまり共有メモリ領域をアクセスしないモジュール)内で行われるメモリアクセスについては、ストアイン方式のキャッシュ制御プロトコルで制御される。
【0022】
図2の構成では、主記憶3の共有メモリ領域をアクセスするモジュールを1つしか検出できないが、仮想空間番号レジスタ133,命令セグメント番号レジスタ134,比較器135,136およびアンド回路137の組をN個設け、各組のアンド回路137の出力の論理和をとるオア回路を設ければ、主記憶3の共有メモリ領域をアクセスするモジュールをN個まで検出することが可能である。従って、共有メモリ領域へアクセスするOSモジュールが複数存在する場合にも対応することができる。また、共有メモリ領域へアクセスするのは一般的にOSの特定モジュールと考えられ、アプリケーションジョブが共有メモリ領域へアクセスする頻度は小さいが、若し、アプリケーションジョブの中に共有メモリ領域へアクセスするモジュールがあれば、そのようなモジュールも検出対象に含めることができる。
【0023】
なお、上記の例では、仮想空間番号と命令セグメント番号とからどのプロセスのどのモジュールが実行されているかを検出しているが、上記以外の方法でも、特定プロセス内の特定モジュールの走行を検出することは可能である。例えば、単一の仮想空間しかない場合、仮想空間番号の比較は省略できる。
【0024】
ストアスルー方式のキャッシュ制御プロトコルは、キャッシュメモリの更新時に同時に主記憶も更新するプロトコルであればどのようなものでも良く、ストアイン方式のキャッシュ制御プロトコルは、キャッシュメモリの更新時点では主記憶を更新しないプロトコルであればどのようなものでも良いが、以下にストアイン方式およびストアスルー方式のキャッシュ制御プロトコルの例を示す。以下のストアイン方式およびストアスルー方式のキャッシュ制御プロトコルは、何れも、キャッシュ自身が能動的にコヒーレンスを維持するスヌープ(snoop)キャッシュ法、つまり、各キャッシュがシステムバスを流れる全てのメモリトランザクションを監視し、自分自身に影響を及ぼすトランザクションを検出するとコヒーレンスを維持するために必要な適切な処置をとる方式である。また、或るキャッシュでミスヒットが起き、かつ、最新データが主記憶になく他のキャッシュに存在する場合、キャッシュ間転送によって最新データを保持するキャッシュからミスヒットを起こしたキャッシュに直接にコピーを送ると共に主記憶にも同時に書き戻す方式である。
【0025】
図3及び図4はそのようなキャッシュ制御プロトコルにおけるキャッシュブロックの状態遷移図であり、図3はストアイン方式、図4はストアスルー方式に対応している。キャッシュブロックはメモリとキャッシュ間の転送単位(例えば64バイト)であり、各々のキャッシュブロックの状態は3値で制御される。1つは、主記憶やキャッシュが同じデータを持っている状態(この状態をShardと呼ぶ)、他の1つは自キャッシュ内にのみ最新の更新データを持っている状態(この状態をDirtyと呼ぶ)、残りの1つは自キャッシュ内に該当するキャッシュブロックを保持していない状態(この状態をInvalidと呼ぶ)である。図中の矢印は、矢印の根の状態のキャッシュブロックに対して、矢印で示される様なアクセスが行われた場合に、矢印の矢の示すキャッシュブロックの状態に遷移する事を示している。各キャッシュ制御プロトコルでは、具体的には以下のような状態遷移となる。
【0026】
(A)ストアイン方式のキャッシュ制御プロトコル(図3)
Invalidの状態のキャッシュブロックに対して自プロセッサからリードリクエストが発行された場合は、該当するキャッシュブロックの最新値を主記憶または他プロセッサ内のキャッシュから読み出し、Shardの状態に遷移する(図3の(8))。また、Invalidの状態のキャッシュブロックに対して自プロセッサからライトリクエストが発行された場合は、該当するキャッシュブロックの最新値を主記憶または他プロセッサ内のキャッシュから読み出し、データの更新を行って、Dartyの状態に遷移する(図3の(7))。
【0027】
Shardの状態のキャッシュブロックに対しては、自プロセッサからリードリクエストが来たら、該当するデータを自プロセッサに返却し、状態の遷移は行わない(図3の(1))。Shardの状態のキャッシュブロックに対するライトリクエストの場合は、リクエスト発行元が自プロセッサであった場合は、更新データを自キャッシュ内のみに反映し、状態をDirtyに遷移する(図3の(2))。ライトリクエストの発行元が他プロセッサであった場合は、キャッシュブロックの状態をInvalidに遷移する(図3の(3))。
【0028】
Dirtyの状態のキャッシュブロックに対しては、自プロセッサからのリクエストの場合は、リードリクエスト、ライトリクエスト共に、自キャッシュ内でアクセスを処理し、状態の遷移は行わない(図3の(5))。他プロセッサからのリードリクエストの場合は、リクエストのあったキャッシュブロックをリクエスト発行元のプロセッサ内のキャッシュと主記憶に転送し、状態をShardに遷移する(図3の(4))。他プロセッサからのリクエストがライトリクエストの場合は、リクエストのあったキャッシュブロックをリクエスト発行元のプロセッサ内のキャッシュと主記憶に掃き出し、状態をInvalidに遷移する(図3の(6))。
【0029】
(B)ストアスルー方式のキャッシュ制御プロトコル(図4)
Invalidの状態のキャッシュブロックに対して、自プロセッサからのリクエストの場合は、リードリクエスト、ライトリクエスト共に、該当するキャッシュブロックの最新値を主記憶または他プロセッサ内のキャッシュから読み出し、自キャッシュ内に格納してからデータへのアクセスを行い、状態をShardに遷移する(図4の(14))。この際、ライトリクエストの場合は、更新データを自キャッシュ内に反映すると共に、メモリ及び他プロセッサ内のキャッシュにも反映させる。
【0030】
Shardの状態のキャッシュブロックに対して、自プロセッサからのリクエストの場合は、リードリクエスト、ライトリクエスト共に、自キャッシュ内のキャッシュブロックにアクセスし、状態遷移は行わない(図4の(11))。この際、ライトリクエストの場合は、更新データを自キャッシュ内に反映すると共に、メモリ及び他プロセッサ内のキャッシュにも反映させる。他プロセッサからのライトリクエストに対しては、システムバス経由で送られてくる他プロセッサからの更新データを自キャッシュ内に反映させて、状態遷移は行わない(図4の(11))。
【0031】
Dirtyの状態のキャッシュブロックに対するリードリクエストに関しては、リクエストの発行元が自プロセッサであれ、他プロセッサであれ、リクエストのあったキャッシュブロックを主記憶とリクエスト発行元の他プロセッサ内のキャッシュに転送し、状態をShardに遷移する(図4の(12))。ライトリクエストの場合は、リクエスト発行元が自プロセッサの場合は、リクエストされたキャッシュブロックをシステムバスに送出し、Dirty状態のキャッシュブロックを主記憶に先ず反映させ、キャッシュの状態をShardに遷移する。次に、自キャッシュに更新データを反映させると共に、システムバス経由で、主記憶と他プロセッサ内のキャッシュに更新データを反映させる(図4の(12))。ライトリクエストの発行元が他プロセッサの場合は、リクエストのあったキャッシュブロックを主記憶と他プロセッサ内のキャッシュに掃き出し、状態をInvalidに遷移する(図4の(13))。
【0032】
図5に示すキャッシュブロックの状態遷移図は、図3の状態遷移図に、図4の状態遷移図を付け加えたものである。図3のストアイン方式のキャッシュ制御プロトコルと図4のストアスルー方式のキャッシュ制御プロトコルとを動的に切り替える場合、キャッシュブロックは図5のように状態が遷移する。なお、図5の文章中、「ストアイン方式の」とあるリクエストはキャッシュ制御方式指示ビットが0であるリクエストに対応し、「ストアスルー方式の」とあるリクエストはキャッシュ制御方式指示ビットが1であるリクエストに対応している。
【0033】
図6は、図3および図4に示したキャッシュ制御プロトコルを採用した実施例において、プロセッサ1内に設けられるキャッシュメモリ周辺のハードウェア構成例を示すブロック図である。プロセッサ2内にも同様なハードウェアが設けられる。
【0034】
図6において、レジスタ131およびレジスタ132は図2のレジスタ131,132に相当し、プロセッサ1内において現に実行されているプロセスが走行する仮想空間番号をレジスタ131が保持し、そのプロセスの現に実行されているモジュールの命令コードを格納している命令セグメントの番号をレジスタ132が保持する。他方、レジスタ601は図2のレジスタ133および134に相当し、特定プロセスの仮想空間番号およびそのプロセス内の特定モジュールの命令コードを格納している命令セグメントの番号が事前に設定されている。チェック回路602は図2の比較器135,136およびアンド回路137に相当し、プロセッサ1において現に実行されているプロセス内モジュールが事前に設定されたプロセス内モジュールであるときは、キャッシュ制御方式指示ビット138をストアスルー方式のキャッシュ制御プロトコルを指示する論理値1とし、それ以外はストアイン方式のキャッシュ制御プロトコルを指示する論理値0とする。
【0035】
チェック回路602から出力されるキャッシュ制御方式指示ビット138は、プロセッサ1内でメモリリクエストが発生した場合、キャッシュに対するリクエストアドレス603およびリクエストコマンド604と一緒にセレクタ605を介してレジスタ606にセットされる。
【0036】
レジスタ606の情報は、キャッシュメモリ11の検索に供されると共にキャッシュ制御部12の制御に使用される。キャッシュメモリ11の検索は、キャッシュメモリ11に格納されているキャッシュブロック毎にその主記憶3上でのアドレスの写しを保持するアドレスアレイ607を用いて行われる。また、アドレスアレイ607には、各キャッシュブロックの状態がInvalid,Shard,Dirtyの何れであるかを示すキャッシュ状態ビットも格納されており、キャッシュ制御部12から参照される。
【0037】
キャッシュ制御部12は、レジスタ606中のキャッシュ制御方式指示ビットの値が1であれば、ストアスルー方式のキャッシュ制御プロトコルで制御を行い、レジスタ606中のリクエストアドレスで指示されたキャッシュブロックに対して、レジスタ606中のリクエストコマンドに応じて、図4に記述した動作と状態遷移を行う。この時、レジスタ606で保持している情報を信号線608でシステムバス4に出力し、システムバス4経由で、主記憶制御部5と他プロセッサ2内のキャッシュ制御部22に通知する。また、キャッシュメモリ11からレジスタ606の情報に応じて読み出したキャッシュブロックは、図4で記述した動作に応じて、主記憶3または他プロセッサ2内のキャッシュメモリ21に転送する必要があれば、信号線609でシステムバス4に出力し、システムバス4経由で、主記憶制御部5と他プロセッサ2内のキャッシュ制御部22に転送する。主記憶3または他プロセッサ2内のキャッシュへのキャッシュブロックの転送が必要でないのであれば、信号線610を通して、自プロセッサの演算部に転送を行う。
【0038】
他方、レジスタ606のキャッシュ制御方式指示ビットが論理値0であれば、キャッシュ制御部12は、ストアイン方式のキャッシュ制御プロトコルで制御を行い、レジスタ606のリクエストアドレスで指示されたキャッシュブロックに対して、レジスタ606のリクエストコマンドに応じて、図3に記述した動作と状態遷移を行う。レジスタ606が保持している情報とキャッシュメモリ11から読み出したキャッシュブロックは、図3に記述した動作に応じて、必要であれば、信号線608,609で、システムバス4に出力し、システムバス4経由で、主記憶制御部5と他プロセッサ2内のキャッシュ制御部22に通知し、自プロセッサ内の演算部へは信号線610を通してキャッシュブロックを転送する。
【0039】
また、他プロセッサからのキャッシュブロックに対するリクエストは、レジスタ606の情報と同様に、キャッシュに対するリクエストアドレス、リクエストコマンド、キャッシュ制御方式指示ビットからなり、システムバス4を経由して、信号線611で受け取られ、FIFOで制御するバッファ612に格納される。バッファ612に格納された他プロセッサからのリクエストは、FIFO制御により、順次、信号線613およびセレクタ605を経由して、レジスタ606に格納され、キャッシュメモリ11のアクセス、キャッシュ制御部12によるキャッシュ制御に供される。
【0040】
図7および図8はプロセッサの処理例を示すフローチャートである。以下、本実施例の動作を説明する。なお、プロセッサ1を中心に説明する。
【0041】
プロセッサ1において、或るプロセス内モジュールより記憶データに対するメモリアクセスが発生すると、チェック回路602において、メモリアクセスにかかるリクエストを出したプロセス内モジュールがレジスタ601に事前に設定されたプロセス内モジュールか否か、つまり、仮想空間番号およびセグメント番号が一致するか否かがチェックされる(S101)。仮想空間番号およびセグメント番号が一致する場合、レジスタ606には、リクエストアドレス603およびリクエストコマンド604に加えストアスルー方式を指示する論理値1のキャッシュ制御指示ビットがセットされ、ストアスルー方式のキャッシュ制御プロトコルに従って制御が実施される。また、仮想空間番号およびセグメント番号の何れか一方が一致しない場合、レジスタ606には、リクエストアドレス603およびリクエストコマンド604に加えストアイン方式を指示する論理値0のキャッシュ制御指示ビットがセットされ、ストアイン方式のキャッシュ制御プロトコルに従って制御が実施される。
【0042】
(1)ストアスルー方式の場合
キャッシュ制御部12は、リクエストされたデータがキャッシュメモリ11内にあるか否かを調べる(S102)。キャッシュヒットした場合(S102でYES)、ヒットしたキャッシュブロックの状態がShardかDirtyかを判別する(S103)。Shardの場合(S103でYES)、リードリクエストであれば(S111でYES)、当該キャッシュブロックからデータを読み出して返却する(S112)。この場合、当該キャッシュブロックの状態はShardのままである(図4の(11))。ライトリクエストであれば(S111でNO)、更新データを当該キャッシュブロックに反映する(S113)。そして、ストアスルー方式なので、主記憶3および他プロセッサ2のキャッシュメモリ21のコピーを更新すべく、更新データをライトリクエスト(付随するキャッシュ制御方式指示ビットは1)でシステムバス4に送出する(S114)。この場合、プロセッサ1における当該キャッシュブロックの状態はShardのままである(図4の(11))。他方、ステップS114でプロセッサ1からシステムバス4に送出されたライトリクエストを受けたプロセッサ2は、該当するキャッシュブロックのコピーを保持していれば、それを更新し(図4の(11))、また主記憶制御部5も前記ライトリクエストに応答して主記憶3上の該当するデータを更新する。
【0043】
キャッシュヒットしたキャッシュブロックの状態がDirtyの場合は(S103でNO)、キャッシュ制御部12は、まず、該当キャッシュブロックをライトリクエスト(付随するキャッシュ制御方式指示ビットは1)でシステムバス4に送出して(S104)、図4の状態遷移(12)に従って当該キャッシュブロックの状態をShardに変更する(S105)。このとき主記憶制御部5は上記ライトリクエストに従って主記憶3上の当該キャッシュブロックに対応するデータブロックを更新する。次に、キャッシュ制御部12はリードリクエストの場合は(S111でYES)、当該キャッシュブロックからデータを読み出して返却する(S112)。また、ライトリクエストの場合は(S111でNO)、更新データを当該キャッシュブロックに反映し(S113)、更にストアスルー方式なので、主記憶3を更新すべく、更新データをライトリクエスト(付随するキャッシュ制御方式指示ビットは1)でシステムバス4に送出する(S114)。
【0044】
他方、キャッシュミスヒットした場合(S102でNO)、キャッシュメモリ11に新たなキャッシュブロックを読み込む空き領域があるか否かを調べる(S106)。空き領域がなければ(S106でNO)、空き領域を生成した後(S107)、空き領域があれば(S106でYES)直ちに、リクエストされたデータを含むキャッシュブロックのリードリクエスト(付随するキャッシュ制御方式指示ビットは1)をシステムバス4に送出する(S108)。このリードリクエストに対して、当該キャッシュブロックの最新値を主記憶3が保持している場合、主記憶制御部5がそれをシステムバス4に送出し、当該キャッシュブロックに対応するデータブロックの主記憶3における状態をShardとする。また、最新値が主記憶3になく、他プロセッサ2が有していた場合は、プロセッサ2が上記リードリクエストに応じて、図4の状態遷移に従い、リクエストされたキャッシュブロックをシステムバス4に送出してプロセッサ2内での当該キャッシュブロックの状態をShardに変更する(図4の(12))。このとき主記憶制御部5はプロセッサ2からシステムバス4に送出されたキャッシュブロックで主記憶3の該当するデータブロックを更新する。
【0045】
次にキャッシュ制御部12は、ステップS108で発行したリードリクエストに対するキャッシュブロックをシステムバス4より受信し(S109)、キャッシュメモリ11の前記空き領域に当該データを格納すると共に、図4の状態遷移(14)に従ってそのキャッシュブロックの状態をShardとする(S110)。そして、リクエストがリードリクエストであれば(S111でYES)、当該キャッシュブロックからデータを読み出して返却し(S112)、ライトリクエストであれば(S111でNO)、更新データを当該キャッシュブロックに反映し(S113)、更新データをライトリクエスト(付随するキャッシュ制御方式指示ビットは1)でシステムバス4に送出する(S114)。
【0046】
ステップS107の空き領域の生成処理では、例えば以下のような処理が行われる。キャッシュ制御部12は、LRU等の周知のアルゴリズムに従って、掃き出し対象とするキャッシュブロックを1つ選択する。次に、この選択したキャッシュブロックの状態がInvalidであれば、そのキャッシュブロックが格納されていた領域を空き領域とする。選択したキャッシュブロックの状態がDirtyであれば、キャッシュブロックの内容をシステムバス4を介して主記憶3に掃き出し、主記憶3の該当するデータブロックの状態をDirtyにさせ、そのキャッシュブロックが格納されていた領域を空き領域とする。選択したキャッシュブロックの状態がShardであれば、システムバス4を介して主記憶制御部5に通知を出して該当するデータブロックの状態をDirtyにさせ、そのキャッシュブロックが格納されていた領域を空き領域とする。
【0047】
(2)ストアイン方式の場合
キャッシュ制御部12は、リクエストされたデータがキャッシュメモリ11内にあるか否かを調べる(S121)。キャッシュヒットした場合(S121でYES)、ヒットしたキャッシュブロックの状態がShardかDirtyかを判別する(S131)。Shardの場合(S131でYES)、リードリクエストであれば(S127でYES)、当該キャッシュブロックからデータを読み出して返却する(S128)。この場合、当該キャッシュブロックの状態はShardのままである(図3の(1))。他方、ライトリクエストであれば(S127でNO)、更新データを当該キャッシュブロックに反映する(S129)。そして、ストアイン方式なので、図3の状態遷移(2)に従い、当該キャッシュブロックの状態をDirtyとする(S130)。なお、ステップS130では、当該ライトリクエストがシステムバス4を介して主記憶制御部5および他プロセッサ2に通知され、主記憶制御部5は該当データブロックの状態がShardであればそれをInvalidとし、プロセッサ2は該当キャッシュブロックの状態がShardであれば図3の状態遷移(3)に従いInvalidとする。
【0048】
キャッシュヒットしたキャッシュブロックの状態がDirtyの場合(S131でNO)、キャッシュ制御部12は、リードリクエストであれば(S132でYES)、当該キャッシュブロックからデータを読み出して返却し(S133)、ライトリクエストであれば(S132でNO)、更新データを当該キャッシュブロックに反映する(S134)。ストアイン方式なので、主記憶3への掃き出しはない。また、何れの場合も当該キャッシュブロックの状態の遷移はない(図3の(5))。
【0049】
他方、キャッシュミスヒットした場合(S121でNO)、キャッシュ制御部12は、キャッシュメモリ11に新たなキャッシュブロックを読み込む空き領域があるか否かを調べる(S122)。空き領域がなければ(S122でNO)、ステップS107と同様にして空き領域を生成した後(S123)、空き領域があれば(S122でYES)直ちに、リクエストされたデータを含むキャッシュブロックのリードリクエスト(付随するキャッシュ制御方式指示ビットは0)をシステムバス4に送出する(S124)。このリードリクエストに対して、当該キャッシュブロックの最新値を主記憶3が保持している場合、主記憶制御部5がそれをシステムバス4に送出し、当該キャッシュブロックに対応するデータブロックの主記憶3における状態をShardとする。また、最新値が主記憶3になく、他プロセッサ2が有していた場合は、プロセッサ2が上記リードリクエストに応じて、図3の状態遷移に従い、リクエストされたキャッシュブロックをシステムバス4に送出してプロセッサ2内での当該キャッシュブロックの状態をShardに変更する(図3の(4))。このとき主記憶制御部5はプロセッサ2からシステムバス4に送出されたキャッシュブロックで主記憶3の該当するデータブロックを更新する。
【0050】
次にキャッシュ制御部12は、ステップS124で発行したリードリクエストに対するキャッシュブロックをシステムバス4より受信し(S125)、キャッシュメモリ11の前記空き領域に当該データを格納すると共に、そのキャッシュブロックの状態をShardとする(S126)。そして、リクエストがリードリクエストであれば(S127でYES)、当該キャッシュブロックからデータを読み出して返却する(S128)。この場合、当該キャッシュブロックの状態は最終的にShardである(図3の(8))。また、ライトリクエストであれば(S127でNO)、更新データを当該キャッシュブロックに反映し(S129)、図3の状態遷移(7)に従い、当該キャッシュブロックの状態をDirtyとする(S130)。なお、ステップS130では、前述したように、当該ライトリクエストがシステムバス4を介して主記憶制御部5および他プロセッサ2に通知され、主記憶制御部5は該当データブロックの状態がShardであればそれをInvalidとし、プロセッサ2は該当キャッシュブロックの状態がShardであれば図3の状態遷移(3)に従いInvalidとする。
【0051】
【発明の効果】
以上説明したように本発明によれば、アクセス先の領域を検出してキャッシュ制御プロトコルの切り替えを行うのではなく、主記憶上の共有メモリ領域へのアクセスを行うソフトウェアモジュールか否かを検出してキャッシュ制御プロトコルを切り替えるものであり、セグメント記述子やページ記述子などのアクセス先領域の属性を示す構造体に手を入れずにキャッシュ制御プロトコルの動的な切り替えが可能となる。
【0052】
また、事前に設定する情報は主記憶上の共有メモリ領域へのアクセスを行うソフトウェアモジュールを特定する仮想空間番号,命令セグメント番号といった少量の情報で済み、大量のセグメント記述子やページ記述子の各々に対して制御情報を設定しなければならない従来技術に比べて事前の処理が格段に簡便化される。
【図面の簡単な説明】
【図1】本発明を適用したマルチプロセッサシステムの一例を示すブロック図である。
【図2】モジュール検出手段の構成例を示すブロック図である。
【図3】ストアイン方式のキャッシュ制御プロトコルにおけるキャッシュブロックの状態遷移図である。
【図4】ストアスルー方式のキャッシュ制御プロトコルにおけるキャッシュブロックの状態遷移図である。
【図5】図3の状態遷移図に図4の状態遷移図を付け加えた状態遷移図である。
【図6】図3および図4に示したキャッシュ制御プロトコルを採用した実施例において、プロセッサ内に設けられるキャッシュメモリ周辺のハードウェア構成例を示すブロック図である。
【図7】プロセッサの処理例を示すフローチャートである。
【図8】プロセッサの処理例を示すフローチャートである。
【符号の説明】
1,2…プロセッサ
3…主記憶
4…システムバス
5…主記憶制御部
11,21…キャッシュメモリ
12,22…キャッシュ制御部
13,23…モジュール検出手段
131,133…仮想空間番号レジスタ
132,134…命令セグメント番号レジスタ
135,136…比較器
137…アンド回路
138…キャッシュ制御方式指示ビット
601,606…レジスタ
602…チェック回路
603…リクエストアドレス
604…リクエストコマンド
605…セレクタ
607…アドレスアレイ
608,609,610,611,613…信号線
612…バッファ
Claims (1)
- 各々キャッシュメモリを備え該キャッシュメモリを介して記憶データにアクセスする複数のプロセッサと、該複数のプロセッサで共有される主記憶とを有し、キャッシュメモリの更新時に同時に主記憶も更新するストアスルー方式のキャッシュ制御プロトコルとキャッシュメモリの更新時点では主記憶を更新しないストアイン方式のキャッシュ制御プロトコルとを動的に切り替えるマルチプロセッサシステムにおいて、
キャッシュメモリを介して前記主記憶の共有データにアクセスを行うプロセスの走行する仮想空間番号を外部より予め設定されて保持する仮想空間番号レジスタと、
キャッシュメモリを介して前記主記憶の共有データにアクセスを行うプロセス内モジュールの命令コードを格納する命令セグメント番号を外部より予め設定されて保持する命令セグメント番号レジスタと、
キャッシュメモリを介して記憶データにアクセスするプロセスの仮想空間番号及び命令セグメント番号が、前記仮想空間番号レジスタおよび前記命令セグメント番号レジスタの保持する仮想空間番号および命令セグメント番号と一致するか否かを検出する比較手段とを有し、
前記比較手段の検出結果に応じて動的にキャッシュ制御プロトコルの切り替えを行うことを特徴とするマルチプロセッサシステム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32605098A JP3626609B2 (ja) | 1998-10-30 | 1998-10-30 | マルチプロセッサシステム |
DE69909400T DE69909400T2 (de) | 1998-10-30 | 1999-10-28 | Verfahren zur Steuerung eines Cache-Speichers in einem Multiprozessorsystem und Multiprozessorsystem |
US09/429,329 US6480940B1 (en) | 1998-10-30 | 1999-10-28 | Method of controlling cache memory in multiprocessor system and the multiprocessor system based on detection of predetermined software module |
EP99120889A EP0997820B1 (en) | 1998-10-30 | 1999-10-28 | Method of controlling cache memory in multiprocessor system and the multiprocessor system |
CA002287716A CA2287716C (en) | 1998-10-30 | 1999-10-28 | Method of controlling cache memory in multiprocessor system and the multiprocessor system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP32605098A JP3626609B2 (ja) | 1998-10-30 | 1998-10-30 | マルチプロセッサシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000137646A JP2000137646A (ja) | 2000-05-16 |
JP3626609B2 true JP3626609B2 (ja) | 2005-03-09 |
Family
ID=18183557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32605098A Expired - Fee Related JP3626609B2 (ja) | 1998-10-30 | 1998-10-30 | マルチプロセッサシステム |
Country Status (5)
Country | Link |
---|---|
US (1) | US6480940B1 (ja) |
EP (1) | EP0997820B1 (ja) |
JP (1) | JP3626609B2 (ja) |
CA (1) | CA2287716C (ja) |
DE (1) | DE69909400T2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958025B2 (en) | 2000-08-04 | 2011-06-07 | Goldman Sachs & Co. | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering objects |
US7139844B2 (en) * | 2000-08-04 | 2006-11-21 | Goldman Sachs & Co. | Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients |
US7958251B2 (en) * | 2000-08-04 | 2011-06-07 | Goldman Sachs & Co. | Method and system for processing raw financial data streams to produce and distribute structured and validated product offering data to subscribing clients |
JP4408692B2 (ja) * | 2003-12-19 | 2010-02-03 | 富士通株式会社 | 通信装置管理プログラム |
DE102005037248A1 (de) * | 2005-08-08 | 2007-02-15 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Steuerung eines Speicherzugriffs bei einem Rechnersystem mit wenigsterns zwei Ausführungseinheiten |
GB2434219B (en) * | 2005-11-15 | 2010-11-24 | P G Drives Technology Ltd | Networked modules |
CN112100093B (zh) * | 2020-08-18 | 2023-11-21 | 海光信息技术股份有限公司 | 保持多处理器共享内存数据一致性的方法和多处理器系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6042971B2 (ja) | 1977-09-22 | 1985-09-26 | 日本電気株式会社 | 情報処理装置 |
US5091846A (en) * | 1986-10-03 | 1992-02-25 | Intergraph Corporation | Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency |
JPS63223849A (ja) | 1987-03-12 | 1988-09-19 | Fujitsu Ltd | 多重仮想空間方式 |
EP0343567A3 (en) * | 1988-05-25 | 1991-01-09 | Hitachi, Ltd. | Multi-processing system and cache apparatus for use in the same |
JPH02226449A (ja) | 1989-02-28 | 1990-09-10 | Toshiba Corp | キャッシュメモリ制御方式 |
US5287484A (en) * | 1989-06-21 | 1994-02-15 | Hitachi, Ltd. | Multi-processor system for invalidating hierarchical cache |
JPH0340046A (ja) | 1989-07-06 | 1991-02-20 | Hitachi Ltd | キャッシュメモリ制御方式および情報処理装置 |
JP2508280B2 (ja) | 1989-07-28 | 1996-06-19 | 日本電気株式会社 | 分岐ヒストリテ―ブル制御方式 |
JPH03210645A (ja) | 1990-01-12 | 1991-09-13 | Mitsubishi Electric Corp | キヤツシユ制御方式 |
US5325504A (en) * | 1991-08-30 | 1994-06-28 | Compaq Computer Corporation | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system |
US5469555A (en) * | 1991-12-19 | 1995-11-21 | Opti, Inc. | Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system |
EP0600626A1 (en) * | 1992-11-13 | 1994-06-08 | Cyrix Corporation | Coherency for write-back cache in a system designed for write-through cache |
US5561783A (en) * | 1992-11-16 | 1996-10-01 | Intel Corporation | Dynamic cache coherency method and apparatus using both write-back and write-through operations |
JP2976780B2 (ja) * | 1992-12-07 | 1999-11-10 | 松下電器産業株式会社 | 情報記録再生装置 |
US5555398A (en) * | 1994-04-15 | 1996-09-10 | Intel Corporation | Write back cache coherency module for systems with a write through cache supporting bus |
-
1998
- 1998-10-30 JP JP32605098A patent/JP3626609B2/ja not_active Expired - Fee Related
-
1999
- 1999-10-28 DE DE69909400T patent/DE69909400T2/de not_active Expired - Fee Related
- 1999-10-28 CA CA002287716A patent/CA2287716C/en not_active Expired - Fee Related
- 1999-10-28 EP EP99120889A patent/EP0997820B1/en not_active Expired - Lifetime
- 1999-10-28 US US09/429,329 patent/US6480940B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000137646A (ja) | 2000-05-16 |
CA2287716A1 (en) | 2000-04-30 |
US6480940B1 (en) | 2002-11-12 |
EP0997820B1 (en) | 2003-07-09 |
DE69909400D1 (de) | 2003-08-14 |
EP0997820A1 (en) | 2000-05-03 |
CA2287716C (en) | 2005-02-08 |
DE69909400T2 (de) | 2004-04-15 |
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 | |
US5155824A (en) | System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address | |
JP4447580B2 (ja) | 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
CN108153683B (zh) | 用于在存储器中的地址范围之间传输数据的装置和方法 | |
US20050198441A1 (en) | Multiprocessor system | |
US20020053004A1 (en) | Asynchronous cache coherence architecture in a shared memory multiprocessor with point-to-point links | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
JPH08185359A (ja) | メモリサブシステム | |
KR20030097871A (ko) | 캐시에서의 라인들을 추론적으로 무효화하는 방법 및 시스템 | |
JPS6135584B2 (ja) | ||
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US6587922B2 (en) | Multiprocessor system | |
JP2000250883A (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
JP4162493B2 (ja) | 下位レベルのキャッシュを含むアクセスを促進するためのリバースディレクトリ | |
JP3626609B2 (ja) | マルチプロセッサシステム | |
JPH04230549A (ja) | 多重レベル・キャッシュ | |
JP3732397B2 (ja) | キャッシュシステム | |
US7213109B1 (en) | System and method for providing speculative ownership of cached data based on history tracking | |
JP2001249846A (ja) | キャッシュメモリ装置及びデータ処理システム | |
JPH1091521A (ja) | 二重ディレクトリー仮想キャッシュ及びその制御方法 | |
JPH03230238A (ja) | キャッシュメモリ制御方式 | |
US20090013130A1 (en) | Multiprocessor system and operating method of multiprocessor system | |
JP3507314B2 (ja) | メモリコントローラおよびコンピュータシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041203 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071210 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081210 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091210 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101210 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111210 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111210 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121210 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121210 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131210 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |