JP3626609B2 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

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
Application number
JP32605098A
Other languages
English (en)
Other versions
JP2000137646A (ja
Inventor
茂幸 愛野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP32605098A priority Critical patent/JP3626609B2/ja
Priority to EP99120889A priority patent/EP0997820B1/en
Priority to CA002287716A priority patent/CA2287716C/en
Priority to US09/429,329 priority patent/US6480940B1/en
Priority to DE69909400T priority patent/DE69909400T2/de
Publication of JP2000137646A publication Critical patent/JP2000137646A/ja
Application granted granted Critical
Publication of JP3626609B2 publication Critical patent/JP3626609B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache 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

【0001】
【発明の属する技術分野】
本発明はマルチプロセッサシステムにおけるキャッシュメモリの制御に関し、特にキャッシュ制御プロトコルの切り替えに関する。
【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)

  1. 各々キャッシュメモリを備え該キャッシュメモリを介して記憶データにアクセスする複数のプロセッサと、該複数のプロセッサで共有される主記憶とを有し、キャッシュメモリの更新時に同時に主記憶も更新するストアスルー方式のキャッシュ制御プロトコルとキャッシュメモリの更新時点では主記憶を更新しないストアイン方式のキャッシュ制御プロトコルとを動的に切り替えるマルチプロセッサシステムにおいて、
    キャッシュメモリを介して前記主記憶の共有データにアクセスを行うプロセスの走行する仮想空間番号を外部より予め設定されて保持する仮想空間番号レジスタと、
    キャッシュメモリを介して前記主記憶の共有データにアクセスを行うプロセス内モジュールの命令コードを格納する命令セグメント番号を外部より予め設定されて保持する命令セグメント番号レジスタと、
    キャッシュメモリを介して記憶データにアクセスするプロセスの仮想空間番号及び命令セグメント番号が、前記仮想空間番号レジスタおよび前記命令セグメント番号レジスタの保持する仮想空間番号および命令セグメント番号と一致するか否かを検出する比較手段とを有し、
    前記比較手段の検出結果に応じて動的にキャッシュ制御プロトコルの切り替えを行うことを特徴とするマルチプロセッサシステム。
JP32605098A 1998-10-30 1998-10-30 マルチプロセッサシステム Expired - Fee Related JP3626609B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP32605098A JP3626609B2 (ja) 1998-10-30 1998-10-30 マルチプロセッサシステム
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
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
DE69909400T DE69909400T2 (de) 1998-10-30 1999-10-28 Verfahren zur Steuerung eines Cache-Speichers in einem Multiprozessorsystem und Multiprozessorsystem

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
JPH07168763A (ja) * 1992-11-13 1995-07-04 Cyrix Corp ライトスルーキャシュ設計のシステムでのライトバックキャシュのコヒーレンシ
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

Also Published As

Publication number Publication date
CA2287716A1 (en) 2000-04-30
EP0997820A1 (en) 2000-05-03
EP0997820B1 (en) 2003-07-09
DE69909400D1 (de) 2003-08-14
US6480940B1 (en) 2002-11-12
DE69909400T2 (de) 2004-04-15
CA2287716C (en) 2005-02-08
JP2000137646A (ja) 2000-05-16

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
US20050198441A1 (en) Multiprocessor system
CN108153683B (zh) 用于在存储器中的地址范围之间传输数据的装置和方法
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) 多重レベル・キャッシュ
JPH05324468A (ja) 階層化キャッシュメモリ
JP3732397B2 (ja) キャッシュシステム
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