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

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

Info

Publication number
JP2008176612A
JP2008176612A JP2007010028A JP2007010028A JP2008176612A JP 2008176612 A JP2008176612 A JP 2008176612A JP 2007010028 A JP2007010028 A JP 2007010028A JP 2007010028 A JP2007010028 A JP 2007010028A JP 2008176612 A JP2008176612 A JP 2008176612A
Authority
JP
Japan
Prior art keywords
processor
memory
data
address
cache
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.)
Pending
Application number
JP2007010028A
Other languages
English (en)
Inventor
Yoshinobu Kojin
慶信 講神
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 Electronics Corp
Original Assignee
NEC Electronics 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 Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2007010028A priority Critical patent/JP2008176612A/ja
Publication of JP2008176612A publication Critical patent/JP2008176612A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】マルチプロセッサシステムにおけるキャッシュコヒーレンシを保証しつつ、システムのパフォーマンスを向上させる。
【解決手段】マルチプロセッサシステム100におけるメモリマネージャ200は、プロセッサ120からのリード要求のアドレスが、プロセッサ110のデータキャッシュ116と共有メモリ158との整合性が要求されるアドレスの範囲に含まれることを条件に、データキャッシュ116と共有メモリ158との整合性を保つ整合処理をプロセッサ110に実行せしめる。そして、プロセッサ110による前記整合処理が完了したことを条件にプロセッサ120により要求されたリードを許可する。
【選択図】図1

Description

本発明は、マルチプロセッサに関し、特にマルチプロセッサシステムにおいてキャッシュコヒーレンシを制御する技術に関する。
マルチプロセッサシステムにおけるキャッシュコヒーレンシ(一貫性)を保証するために、スヌープ方式と呼ばれる手法が知られている(例えば特許文献1)。スヌープ方式では、キャッシュ間で更新状態を交換することで、各プロセッサのキャッシュは自身や他のプロセッサのキャッシュのライン更新状態を把握し、どのキャッシュに最新のデータが存在するかを知り、必要なときに最新のデータを取得できるようにラインのパージなどを行う。
スヌープ方式による手法は、各プロセッサのキャッシュタグと同数のスヌープタグが必要であり、組込用途のマルチプロセッサシステムに実装するにはコストが高いという問題があるため、組込用途のマルチプロセッサシステムではスヌープ方式を用いずにソフトウェアによりキャッシュコヒーレンシを保証することが多く行われている。
特開平10−320283号公報
スヌープ方式を用いずにソフトウェアによりマルチシステムにおけるキャッシュコヒーレンシを保証するために、例えば、共有記憶型のマルチプロセッサシステムにおいては下記の手法が考えられる。図12は、この手法が用いられるマルチプロセッサシステムを示す。このシステムは、プロセッサA、プロセッサB、プロセッサAとプロセッサBがアクセス可能な共有メモリ58、割込マネージャ52、メモリマネージャ54、メモリコントローラ56、割込バス30、メモリバス40を有する。割込マネージャ52、メモリマネージャ54、メモリコントローラ56は、プロセッサAとプロセッサBが共有メモリ58へのアクセスに関連する種々の処理を行う。
プロセッサAは、演算ユニット11、MMU(メモリ・マネージメント・ユニット)12、データキャッシュ16、キャッシュコントローラ13、BIU(バス・インタフェース・ユニット)14、割込コントローラ17を備える。
演算ユニット11は、演算を実行するものであり、MMU12は、プロセッサAの仮想アドレスや実アドレスを管理する。
キャッシュコントローラ13は、データキャッシュ16へのアクセスを制御するものであり、例えばMMU12からのアクセスがキャッシュに対するアクセスである場合には、データキャッシュ16へのアクセスを行わせ、キャッシュがミスヒットしたり外部メモリ(ここでは共有メモリ58)のリードまたはライトが必要な場合にはBIU14にリードまたはライトを要求する。
BIU14は、メモリバス40と接続され、プロセッサAが外部メモリのリードまたはライトを行うためのインタフェースであり、WTB(ライト・トランザクション・バッファ)15を備える。一般にプロセッサ内部のクロックよりもメモリバスのクロックのほうが遅く、WTB15は、プロセッサAから共有メモリ58へライトを行う際にこのクロックの差を緩衝するためのものである。具体的には、例えば、キャッシュコントローラ13が外部メモリへのライト要求があったときに、キャッシュコントローラ13はBIU14にライト要求を出力し、BIU14のWTB15は、メモリバス40が空いているタイミングでメモリバス40へライト要求を出力する。
割込コントローラ17は、割込バス30と接続され、割込バス30からプロセッサAへの割込信号を受信してそれに応じた処理をプロセッサAに行わせたり、プロセッサAからの割込信号を割込バス30に出力するなどの処理をする。
プロセッサBは、プロセッサAと同じ構成を有するため、それの各機能ブロックの詳細説明について省略する。
割込マネージャ52は、いずれのプロセッサに割込信号を出力するなど、割込バス30に出力された割込信号を管理する。メモリマネージャ54は、共有メモリ58へ対していずれのプロセッサからのアクセス要求を許可するかの制御をし、メモリコントローラ56はメモリマネージャ54により許可されたアクセス要求に応じたリードまたはライトを行う。
ここで、プロセッサAが共有メモリ58にライトしたデータをプロセッサBがリードする場合に、図12のマルチプロセッサシステムにおいて行われる処理の一例を示す。プロセッサBが共有メモリ58のデータをリードする際に、プロセッサAが共有メモリ58にライトしたデータは共有メモリ58に反映されているという保証は無い。データキャッシュ16の内容が共有メモリ58に反映されていない場合や、タイミングによってはWTB15までは到達しているもののメモリバス40に乗る手前の段階の場合もある。そのためプロセッサBはプロセッサAによるデータの更新が共有メモリ58に反映したことを確認した後にリードしなければならない。
図13は、この処理の流れを示すフローチャートである。プロセッサBは、共有メモリ58からデータをリードする際に、キャッシュコヒーレンシを保つために、まずプロセッサAにデータの更新要求を出力する(S10)。プロセッサAは、プロセッサBからの更新要求を受信すると、データキャッシュ16にあるデータを共有メモリ58にライトバックすると共に、ライトバックの完了時に更新完了通知をプロセッサBに送信する(S20、S30)。プロセッサBは、プロセッサAからの更新完了通知を受信すると、共有メモリ58からデータをリードする(S40)。
図14と図15を用いてフローチャートの各ステップの内容を具体的に説明する。ここで、プロセッサBが図14に示す共有メモリ58のデータ記憶領域63からデータをリードする場合を例にする。データ記憶領域63中のデータは、プロセッサAによりデータキャッシュ16経由で管理されている。また、共有メモリ58には、コマンドを記憶するためのコマンド記憶領域61と、リードアドレスを記憶するリードアドレス記憶領域62が設けられており、それぞれのアドレスが(X)、(Y)である。データ記憶領域63のアドレスを(Z)とする。
図15に移る。図15の最も上の欄に示すように、プロセッサBは、データ記憶領域63のデータの更新をプロセッサAに要求するために、メモリマネージャ54に更新要求を出す。具体的には、コマンド記憶領域61のアドレス(X)に更新要求のコマンド(Data Write)を書くことと、リードアドレス記憶領域62にデータ記憶領域63を示すアドレス(Z)を書くことを行う。そのため、図15の右上欄に示すように、メモリバス40上を、コマンド記憶領域61のアドレス(X)、リードアドレス記憶領域62にライトするコマンド(Data Write)、リードアドレス記憶領域62にアドレス(Z)を書くためのコマンド(コマンド「Data Write」およびアドレス(Z))が流れる。
そして、プロセッサBは、割込マネージャ52にコマンドを書いたことを割込信号で通知する。これは割込バス30を介してプロセッサBから割込マネージャ52に出力される。
割込マネージャ52は、プロセッサBからの割込信号を受信すると、プロセッサAにデータを更新させるための割込信号を出力する。
プロセッサAは、割込マネージャ52からの割込信号を受信すると、コマンド記憶領域61にあるコマンド内容と、リードアドレス記憶領域62に書き込まれたアドレスを読む。そのために、メモリバス40上を、コマンド記憶領域61のアドレス(X)、コマンド(Data Read)、リードアドレス記憶領域62のアドレス(Y)、コマンド(Data Read)が流れる。
プロセッサAは、そしてメモリマネージャ54を介してデータ記憶領域63に記憶されたデータを更新する。メモリバス40上を、データ記憶領域63のアドレス(Z)と、データ記憶領域63に対応するデータキャッシュ16中のデータ(Data write)が流れる。
プロセッサAは、データが更新されたことを確認するために続いてデータ記憶領域63内のデータを読む要求をメモリマネージャ54に出す。そのため、メモリバス40上を、データ記憶領域63のアドレス(Z)とデータ(Data read)が流れる。
データ記憶領域63内のデータが更新されたことを確認できたら、プロセッサAは、メモリマネージャ54を介してコマンド記憶領域61にコマンド(Data write)を書き込む。そして割込マネージャ52に割込信号を出力する。そのため、メモリバス40上をコマンド記憶領域61のアドレス(X)とコマンド(Data Write)が流れ、割込バス30上を割込信号が流れる。
割込マネージャ52は、プロセッサAからの割込信号を受信すると、プロセッサBにデータ更新が完了したことを示す割込信号を出力する。
プロセッサBは、この割込信号に応じて、メモリマネージャ54に、コマンド記憶領域61とリードアドレス記憶領域62のデータのリード要求をする。そのため、メモリバス40上を、コマンド記憶領域61のアドレス(X)とコマンド(Data read)、リードアドレス記憶領域62のアドレス(Y)とコマンド(Data read)が流れる。
そして、プロセッサBは、リードアドレス記憶領域62に記憶されたデータ記憶領域63のアドレス(Z)に記憶されたデータのリードをメモリマネージャ54を介して行う。そのため、メモリバス40上を、データ記憶領域63のアドレス(Z)およびデータ(Data read)が流れる。
なお、コマンド内容(cmd_id)のリードやライトはデータキャッシュ16を介さずに非キャッシュで行われる。これは(cmd_id)そのものが共有メモリ58にライトされたかどうかを確認する手続きを省略するためである。
スヌープ方式を用いていないので、キャッシュコヒーレンシの保証は、プロセッサ間のハンドシェクに頼ることになる。そのため、プロセッサ間のプロトコルが確立した後に上記一連の処理がソフトウェアを介して行われることになり、メモリバス40バス上を流れるデータ量が多くなり、処理が遅くなるという問題がある。結果として、システム全体の効率が悪くなる。
本発明の一つの態様は、マルチプロセッサシステムである。このシステムは、共有メモリと、第1のプロセッサと、第2のプロセッサと、メモリマネージャを備える。第1のプロセッサは、キャッシュメモリを有し、該キャッシュメモリを経由してデータを共有メモリにライトしうる。第2のプロセッサは、メモリマネージャにリード要求を出すことによって共有メモリからデータをリードする。メモリマネージャは、第2のプロセッサからのリード要求のアドレスが、第1のプロセッサのキャッシュメモリと共有メモリとの整合性が要求されるアドレスの範囲に含まれることを条件に、キャッシュメモリと共有メモリとの整合性を保つ整合処理を第1のプロセッサに実行せしめ、その後、第1のプロセッサによる整合処理が完了したことを条件に第2のプロセッサにより要求されたリードを許可する。
なお、上記態様を方法、装置、またはプログラムとして表現したものも、本発明の態様としては有効である。
本発明の技術によれば、キャッシュコヒーレンシを保証しつつマルチプロセッサシステムの処理効率を向上させることができる。
以下、図面を参照して本発明の実施の形態について説明する。
<第1の実施の形態>
図1は、本発明の第1の実施の形態にかかるマルチプロセッサシステム100を示す。マルチプロセッサシステム100は、共有記憶型のマルチプロセッサシステムであり、プロセッサ110、プロセッサ120、プロセッサ110とプロセッサ120がアクセス可能な共有メモリ158、割込マネージャ152、メモリマネージャ200、メモリコントローラ156、割込バス130、メモリバス140を備える。割込マネージャ152、メモリマネージャ200、メモリコントローラ156は、プロセッサ110とプロセッサ120が共有メモリ158へのアクセスに関連する種々の処理を行い、メモリマネージャ200は、メモリバス140との接続以外に、割込信号線160によって割込バス130とも接続されている。
プロセッサ110は、演算ユニット111、MMU112、データキャッシュ116、キャッシュコントローラ113、BIU114、割込コントローラ117を備える。
演算ユニット111は、演算を実行するものであり、MMU112は、プロセッサ110の仮想アドレスや実アドレスを管理する。
キャッシュコントローラ113は、データキャッシュ116へのアクセスを制御するものであり、例えばMMU112からのアクセスがキャッシュに対するアクセスである場合には、データキャッシュ116へのアクセスを行わせ、キャッシュがミスヒットしたり外部メモリ(ここでは共有メモリ158)のリードまたはライトが必要な場合にはBIU114にリードまたはライトを要求する。
BIU114は、メモリバス140と接続され、プロセッサ110が外部メモリのリードまたはライトを行うためのインタフェースであり、WTB(ライト・トランザクション・バッファ)115を備える。
割込コントローラ117は、割込バス130と接続され、割込バス130を介してプロセッサ110への割込信号を受信してそれに応じた処理をプロセッサ110に行わせたり、プロセッサ110からの割込信号を割込バス130に出力するなどの処理をする。
プロセッサ120は、プロセッサ110と同じ構成を有するため、それの各機能ブロックの詳細説明について省略する。
図2は、メモリマネージャ200をより詳細に示している。図示のように、メモリマネージャ200は、整合処理制御部210と、メモリアクセス制御部220と、リードアドレス記憶部230と、アドレス範囲記憶部240を備える。
リードアドレス記憶部230は、いずれかのプロセッサが共有メモリ158から読み出そうとするデータのアドレスを記憶するものであり、プロセッサがリードを行うとリードアドレスが書き込まれる。
アドレス範囲記憶部240は例えばI/Oレジスタであり、プロセッサ110のデータキャッシュ116と共有メモリ158との整合性すなわちコヒーレンシが要求されるアドレスの範囲、およびプロセッサ120のデータキャッシュ126と共有メモリ158とのコヒーレンシが要求されるアドレスの範囲を記憶している。
マルチプロセッサシステムにおいて、プロセッサ間で通信を行う場合、各プロセッサの全てのアドレス空間を対象にキャッシュのコヒーレンシを制御する必要が無い。例えばシステムLSIではメモリに対する変数領域の配置とその用途が予め限定されており、プロセッサ間で共有しなければいけない領域はアドレス空間に一部に限定されている。すなわち、この限定されたアドレス空間に対してキャッシュのコヒーレンシを制御することによってシステムのキャッシュコヒーレンシを保証するができる。
図3は、アドレス範囲記憶部240に記憶されたアドレスの範囲の態様を示す。通常、プロセッサ間で共有しなければいけない領域のアドレス空間は連続しているので、番地の上限と下限によって規定することができる。図3に示すように、アドレス範囲記憶部240には、プロセッサ110とプロセッサ120毎に、キャッシュコヒーレンシの制御が必要なアドレス範囲として、アドレス上限とアドレス下限が記憶されている。なお、アドレス範囲記憶部240に記憶された内容は、予め例えばいずれかのプロセッサによりアドレス範囲記憶部240にライトすることによって設定される。
メモリアクセス制御部220は、いずれのプロセッサからキャッシュアドレスへのリード要求があったときに、整合処理制御部210にデータの更新を要求する。
整合処理制御部210は、メモリアクセス制御部220からデータの更新要求を受信すると、アドレス範囲記憶部240に記憶されたアドレス範囲を参照し、リードの対象となるデータがキャッシュコヒーレンシを保証する必要があるものかを判断する。そして、判断の結果、キャッシュコヒーレンシを保証する必要が無い場合には直ちにデータのリードを許可するが、キャッシュコヒーレンシを保証する必要がある場合には、該当プロセッサによるキャッシュコヒーレンシを保証する処理すなわち整合処理が行われるように該当するプロセッサに整合処理を行わせるための割込信号を出力する。例えば、データを更新すべき対象がプロセッサ110なら、整合処理制御部210からの割込信号は割込信号線160と割込バス130を介してプロセッサ110に出力される。
その後、整合処理制御部210は、該当するプロセッサが整合処理を行い、整合処理の完了をもって出力した割込信号を受信するとメモリアクセス制御部220にデータ更新が完了することを通知する。
メモリアクセス制御部220は、この通知を受信してリードを許可する。
図4のフローチャートを参照して、マルチプロセッサシステム100においてプロセッサが共有メモリ158へアクセスする際に行われる処理を説明する。
プロセッサが共有メモリ158へのアクセスはリードとライトに分けられ、アクセスするプロセッサがアクセス要求をメモリマネージャ200に出力する。メモリマネージャ200におけるメモリアクセス制御部220は、プロセッサが受信したアクセス要求がライト要求であれば(S100:ライト)、メモリコントローラ156へライト要求をし、データのライトを実行する(S112、S114)。
一方、プロセッサからのアクセス要求がリード要求である場合(S100:リード)には、メモリアクセス制御部220は、リード要求がされたデータのアドレスがプロセッサ110またはプロセッサ120のキャッシュアドレスであるか否かを判断し、キャッシュアドレスではなければ(S120:No)、メモリコントローラ156へリード要求をし、メモリコントローラ156によりリードが実行される(S92、S94、S96)。一方、リード要求がされたデータのアドレスがキャッシュアドレスである場合には(S120:Yes)、メモリアクセス制御部220は、リード要求を保留し、リード要求がされたアドレスをリードアドレス記憶部230に格納して整合処理制御部210にデータ更新を要求する(S130)。
整合処理制御部210は、リード要求されたアドレス(キャッシュアドレス)が、プロセッサ110とプロセッサ120に対してアドレス範囲記憶部240に記憶されたアドレス上限とアドレス下限の範囲内であるか否かを判別する(S140)。リード要求されたアドレスが、アドレス範囲記憶部240に記憶されたプロセッサ110のアドレス上限と下限の範囲内であれば(S150:Yes)、割込信号線160と割込バス130を介して割込信号をプロセッサ110に出力する(S162)。
プロセッサ110がこの割込信号を受信すると、整合処理(その詳細については後述する)を行う。整合処理が完了すると、整合処理制御部210にデータ更新完了を示す割込信号を出力する。この間、整合処理制御部210はプロセッサ110からの割込信号を待ち(S164)、割込信号を受信すると、メモリアクセス制御部220にデータ更新が完了したことを通知する。それに応じて、ステップS100において要求されたリードが許可され、ステップS92からの処理が行われる。
ステップS150において、リード要求されたアドレスが、アドレス範囲記憶部240に記憶されたプロセッサ120のアドレス上限と下限の範囲内であれば(S150:No、S170:Yes)、整合処理制御部210は、割込信号線160と割込バス130を介して割込信号をプロセッサ120に出力し(S182)、プロセッサ120からの割込信号を待つ(S184)。そして、整合処理制御部210は、プロセッサ120から割込信号を受信すると、メモリアクセス制御部220にデータ更新が完了したことを通知する。それに応じて、ステップS100において要求されたリードが許可され、ステップS92からの処理が行われる。
ステップS164またはステップS184で整合処理制御部210がプロセッサからの割込信号を待っている間にプロセッサにより行われる整合処理について説明する。整合処理は、プロセッサに組み込まれた割込ハンドラ(図示せず)により行われる。
通常のプロセッサでは、共有メモリへのアクセスとしてキャッシュ経由のメモリアクセスとメモリへのダイレクトアクセスの両方がサポートされている。キャッシュ経由の場合は、プロセッサのキャッシュコントローラがライトスルー方式で動作するか、ライトバック方式で動作するかによって処理は異なる。 ライトスルー方式は、CPUがメモリ書込を行ったら、データキャッシュにストアすると同時に共有メモリに書き戻す方式である。この方式の場合、ライト・トランザクション・バッファが空であれば、データキャッシュの内容と共有メモリの対応する領域の内容が一致する。
ライトバック方式は、CPUがメモリ書込を行っても、条件が整わない限りデータキャッシュに留まり共有メモリへの書き戻しをしない方式である。書き戻す条件は、例えば対象エントリにウェイ数以上のフレームアドレスのリード/ライトが行われる、他のプロセッサが対象エントリに対して更新要求があったなどである。この方式の場合、データキャッシュの内容と共有メモリの対応する領域の内容を一致させるためにはデータキャッシュに残っているデータを共有メモリへの書戻を行う必要があり、その後ライト・トランザクション・バッファが空になったことをもって書戻の完了を確認できる。
プロセッサ110を例にする。ライトスルー方式の場合、WTB115が空になっているか否かの確認方法は、さらにメモリマネージャ200の仕様によって異なる。例えば、メモリマネージャ200は、WTB115が空にならないとリード要求を受け付けない仕様になっている場合、プロセッサ110はリードアドレス記憶部230に記憶されたリードアドレスを一度リードし、このリードができたことをもってWTB115が空になっているすなわちコヒーレンシが保証されたことを確認できる。この場合の整合処理のフローチャートを図5に示す。
図5に示すように、プロセッサ110は、整合処理制御部210から割込信号を受信すると、リードアドレス記憶部230に格納されたリードアドレスをリードする(S210)。このリードがメモリマネージャ200により受け付けられ、リードができたことを条件に(S212:Yes)、プロセッサ110は、キャッシュコヒーレンシが保証されたとして割込信号を整合処理制御部210に出力する(S214)。
メモリマネージャ200は、WTB115の状態とは無関係にリード要求を受け付ける場合には、プロセッサ110は共有メモリ158から直接リード(非キャッシュアドレスのリード)をすることにより整合処理を行う。この場合の処理のフローチャートを図6に示す。
図6に示すように、プロセッサ110は、整合処理制御部210から割込信号を受信すると、リードアドレス記憶部230に格納されたリードアドレスをリードして(S220)、非キャッシュアドレスに変換する(S222)。そして、この非キャッシュアドレスをリードし、リードができたことを条件に(S224、S226:Yes)、キャッシュコヒーレンシが保証されたとして割込信号を整合処理制御部210に出力する(S228)。
図7は、ライトバック方式の場合の整合処理の流れを示すフローチャートである。図示のように、プロセッサ110は、整合処理制御部210から割込信号を受信すると、リードアドレス記憶部230に格納されたリードアドレスをリードする(S230)。そして、キャッシュコントローラ113に対して、このリードアドレスのデータをデータキャッシュ116から共有メモリ158にライトバックすることを命令する(S232)。その後、WTB115は空になったことを確認できたことを条件に(S234:Yes)、キャッシュコヒーレンシが保証されたとして割込信号を整合処理制御部210に出力する(S236)。なお、WTB115が空であるか否かの確認(ステップS234)は、ライトスルー方式の場合と同じようにメモリマネージャ200の仕様に依存し、ここで詳細な説明を省略する。
プロセッサ110がキャッシュ経由で管理するアドレスに対して、プロセッサ120がリードを行う場合にバス上を流れるデータを説明する。ここで例として、このアドレスがアドレス範囲記憶部240に記憶された、プロセッサ110のアドレス上限とアドレス下限の範囲内にあるアドレス(Z)とする。
図8に示すように、プロセッサ120は、アドレス(Z)のデータをリードするのに当たり、まずメモリマネージャ200にリード要求を出す。この場合、メモリバス140上を、アドレス(Z)が流れる。
メモリマネージャ200具体的にはメモリアクセス制御部220は、プロセッサ120からリード要求されたアドレス(Z)をリードアドレス記憶部230に書くと共に、整合処理制御部210にデータの更新を要求する。
整合処理制御部210は、プロセッサ110にデータ更新を要求する割込信号を出力する。このとき、割込バス130上を割込信号が流れる。
プロセッサ110は、整合処理制御部210からの割込信号を受信すると、整合処理を行うためにリードアドレス記憶部230に記憶された共有メモリ158のリードアドレスのリードをメモリアクセス制御部220に要求する。このとき、メモリバス140上を、リードアドレス記憶部230のアドレスと、プロセッサ110がライトすべきアドレス(アドレス(Z))が流れる。
そして、プロセッサ110は、キャッシュコヒーレンシを保証するために共有メモリ158上のアドレス(Z)にデータを書くことをメモリアクセス制御部220に要求し、アドレス(Z)にデータを書く。メモリバス140上を、アドレス(Z)と、ライトされるデータが流れる。
次にプロセッサ110は、データがアドレス(Z)に書かれたことを確認するためにアドレス(Z)のリード要求をメモリアクセス制御部220に対して行う。このとき、メモリバス140上をアドレス(Z)と、リードしたデータが流れる。
データがアドレス(Z)に書かれたことを確認できれば、プロセッサ110は、整合処理制御部210に割込信号を出力し、データ更新が完了したことを通知する。このとき、割込バス130上を割込信号が流れる。
整合処理制御部210はプロセッサ110からの割込信号に応じて、メモリアクセス制御部220にデータ更新が完了したことを通知する。
そして、メモリアクセス制御部220は、プロセッサ120からのリード要求を許可する。このとき、メモリバス140上を、プロセッサ120からのリード要求に対してリードしたデータが流れる。
このように、本実施の形態のマルチプロセッサシステム100によれば、各プロセッサのアドレスに対して、キャッシュアドレスと非キャッシュアドレス、キャッシュアドレスに対してはさらにキャッシュコヒーレンシを保証する必要のあるアドレスと必要の無いアドレスに分け、キャッシュコヒーレンシを保証する必要のあるアドレスからのリード要求に対してのみ、該当プロセッサに整合処理を行わせる。そのため、図15と図8を比較すると明らかなように、キャッシュコヒーレンシを保証するための処理が簡潔になり、メモリバス上を流れるデータ量が少なく、システム全体の処理効率を向上させることができる。
また、図12に示すようなシステムでは、プロセッサ間のプロトコルが確立された後に図15に示すような一連の手順でプロセッサ間で通信を交わす必要がある。そのため、システムの開発者は、キャッシュコントローラの挙動、ライト・トランザクション・バッファの挙動、メモリバスの挙動について熟知していなければ、開発が困難である。それに対して、本実施の形態のマルチプロセッサシステム100では、通信プロトコルが確立された後に、プロセッサ間の通信に頼らず、プロセッサとメモリマネージャ200間の割込によってキャッシュコヒーレンシを保証するための処理を実現しているので、ソフトウェアの構成が単純で、開発者の負担が小さい。
<第2の実施の形態>
図9は、本発明の第2の実施の形態のマルチプロセッサシステム300を示す。マルチプロセッサシステム300は、メモリマネージャ400の機能がマルチプロセッサシステム100のメモリマネージャ200の機能と異なる点、および信号線170と信号線180が追加された点を除き、他の各部分が同じであり、マルチプロセッサシステム100と同様の構成または機能を有する部分に対して図9において同一の符号を付与し、それらの詳細な説明を省略する。
信号線170は、プロセッサ110のキャッシュコントローラ113の動作モード(ライトスルーかライトバック)、およびWTB115の状態(空かどうか)をメモリマネージャ400に通知するために設けられたものであり、信号線180は、プロセッサ120のキャッシュコントローラ123の動作モード、およびWTB125の状態をメモリマネージャ400に通知するために設けられたものである。図10は、例えば信号線170上を流れる信号を示す。図示のように、キャッシュコントローラ113がライトバックモードで動作するときに、WTB115の状態と関係なく信号線170上を流れる信号が常に「High」である。一方、キャッシュコントローラ113がライトスルーで動作するときに、WTB115が「空」であれば信号が「LOW」であり、WTB115が「空」ではなければ「High」である。信号線180に関しても同じである。
メモリマネージャ400は、マルチプロセッサシステム100におけるメモリマネージャ200と基本的に同じ動作をするが、信号線を流れる信号が「High」である場合においてのみ対応するプロセッサに整合処理を行わせる。具体的には、信号線170を流れる信号が「Low」であれば、図4のフローチャートのステップS150において、リードアドレスがプロセッサ110のアドレス範囲内であっても(S150:Yes)、キャッシュのコヒーレンシが保証されているとして、プロセッサ110へ割込信号を出力せず、直接ステップS92の処理へ進む。同様に、信号線180を流れる信号が「Low」であれば、図4のフローチャートのステップS170において、リードアドレスがプロセッサ120のアドレス範囲内であっても(S170:Yes)、キャッシュのコヒーレンシが保証されているとして、プロセッサ120へ割込信号を出力せず、直接ステップS92の処理へ進む。
このような構成によって、リード要求されたアドレスが整合処理を必要とする場合であっても、該当信号線を流れる信号が「Low」であれば、既にキャッシュコヒーレンシが保証されていることになるので、メモリマネージャ400はプロセッサに整合処理を実行させずに済む。そのため、システムのパフォーマンスがさらに向上する。
<第3の実施の形態>
本発明の第3の実施の形態もマルチプロセッサシステムであり、このマルチプロセッサシステムでは、メモリマネージャがマルチプロセッサシステム100におけるメモリマネージャ200と異なる点を除き、他の各部分が同じであるため、ここでマルチプロセッサシステム100と同様の構成または機能を有する部分について図示および説明を省略する。
図11は、本発明の第3の実施の形態にかかるマルチプロセッサシステムにおけるメモリマネージャ500を示す。メモリマネージャ500は、整合処理制御部210、メモリアクセス制御部520、リードアドレス記憶部230、アドレス範囲記憶部240、割込抑制用データ記憶部560を備える。整合処理制御部210、リードアドレス記憶部230、アドレス範囲記憶部240は、マルチプロセッサシステム100における当該部分と同様なものである。
メモリマネージャ500は、マルチプロセッサシステム100におけるメモリマネージャ200と基本的に同じ動作をするが、リード要求されたアドレスが整合処理を必要とする場合であっても、該当プロセッサへ整合処理を行わせるための割込を抑制する機能を備える。この抑制は、割込抑制用データ記憶部560に記憶された割込抑制用データに基づいて行われる。
一般的に、データキャッシュのデータを共有メモリへライトすることはバースト・ライトであり、共有メモリからのデータのリードはシングル・リードである。そのため、整合処理を行う際にプロセッサが共有メモリへライトしたデータの量は、リードされるデータの量より多い。
プロセッサからキャッシュのデータを共有メモリへのライトは、キャッシュライン単位で行われる。キャッシュラインは、キャッシュの1エントリの容量のことであり、CPUとシステムの仕様によって異なるが、例えば32ビットのCPUではキャッシュラインが128ビットまたは256ビットの場合がある。
それに対して、共有メモリからのリードはシングル・リードである。同じキャッシュラインに含まれる異なるデータに対して連続したリードが行われる際に、一度目のリード時に整合処理が行われると、リード要求されたデータのみならず、同じキャッシュラインのデータが更新されているので、その後の所定時間内にはキャッシュコヒーレンシが保証された状態になる。
メモリマネージャ500は、このような事情に基づいてプロセッサへの割込を抑制する。
割込抑制用データ記憶部560は例えばI/Oレジスタであり、図11に示すように、各プロセッサのキャッシュタグサイズ、割込抑制カウンタ、リードアドレス履歴が記憶されている。キャッシュタグサイズと割込抑制カウンタは、いずれかのプロセッサにより予め設定されるものであり、リードアドレス履歴は、処理の進行に伴ってメモリマネージャ500により更新される。
割込抑制カウンタは、一度の整合処理後に、キャッシュ中のデータと共有メモリ中のデータのキャッシュコヒーレンシが保たれている時間範囲内のバスクロック数である。以下、割込抑制カウンタの値をnとする。
メモリマネージャ500は、リード要求があり、このリード要求に応じて該当プロセッサによる整合処理が実行された場合に、このリードアドレスをリードアドレス履歴として記憶する。同じキャッシュタグが同じキャッシュラインを示すので、メモリマネージャ500はその後、割込抑制用カウンタn以内に、このリードアドレスと同じキャッシュタグを有するリードアドレスへのリード要求があった際に、当該プロセッサへの割込を抑制し、整合処理を行わせない。
このような構成によって、マルチプロセッサシステム100と同じ効果を得ることができるとともに、キャッシュコヒーレンシを保証しつつ、プロセッサへの割込およびそれに応じてプロセッサが行う整合処理が格段に減り、システム全体のパフォーマンスがさらに向上する。
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
本発明の第1の実施の形態にかかるマルチプロセッサシステムを示す図である。 図1に示すマルチプロセッサシステムにおけるメモリマネージャを詳細に示す図である。 図2に示すメモリマネージャにおけるアドレス範囲記憶部の記憶内容を示す図である。 図1に示すマルチプロセッサシステムにおける共有メモリへのアクセスに伴う処理を示すフローチャートである。 ライトスルー方式で動作するプロセッサの整合処理を示すフローチャートである(その1)。 ライトスルー方式で動作するプロセッサの整合処理を示すフローチャートである(その2)。 ライトバック方式で動作するプロセッサの整合処理を示すフローチャートである。 図1に示すマルチプロセッサシステムにおいてプロセッサによるリードに伴う処理の詳細内容を示す図である。 本発明の第2の実施の形態にかかるマルチプロセッサシステムを示す図である。 図9に示すマルチプロセッサシステムにおけるメモリマネージャの動作を説明するための図である。 本発明の第3の実施の形態にかかるマルチプロセッサシステムにおけるメモリマネージャを詳細に示す図である。 共有記憶型のマルチプロセッサシステムの一例を示す図である。 図12に示すマルチプロセッサシステムにおけるリード処理の流れを示すフローチャートである。 図12に示すマルチプロセッサシステムにおけるリード処理を説明するための図である。 図12に示すマルチプロセッサシステムにおけるリード処理の詳細内容を示す図である。
符号の説明
A プロセッサ B プロセッサ
11 演算ユニット 12 MMU
13 キャッシュコントローラ 14 BIU
15 WTB 16 データキャッシュ
17 割込コントローラ 21 演算ユニット
22 MMU 23 キャッシュコントローラ
24 BIU 25 WTB
26 データキャッシュ 27 割込コントローラ
30 割込バス 40 メモリバス
52 割込マネージャ 54 メモリマネージャ
56 メモリコントローラ 58 共有メモリ
61 コマンド記憶領域 62 リードアドレス記憶領域
63 データ記憶領域 100 マルチプロセッサシステム
110 プロセッサ 111 演算ユニット
112 MMU 113 キャッシュコントローラ
114 BIU 115 WTB
116 データキャッシュ 117 割込コントローラ
120 プロセッサ 121 演算ユニット
122 MMU 123 キャッシュコントローラ
124 BIU 125 WTB
126 データキャッシュ 127 割込コントローラ
130 割込バス 140 メモリバス
152 割込マネージャ 156 メモリコントローラ
158 共有メモリ 160 割込信号線
170 信号線 180 信号線
200 メモリマネージャ 210 整合処理制御部
220 メモリアクセス制御部 230 リードアドレス記憶部
240 アドレス範囲記憶部 300 マルチプロセッサシステム
400 メモリマネージャ 500 メモリマネージャ
510 整合処理制御部 520 メモリアクセス制御部
560 割込抑制用データ記憶部

Claims (4)

  1. 共有メモリと、
    キャッシュメモリを有し、該キャッシュメモリを経由してデータを前記共有メモリにライトしうる第1のプロセッサと、
    前記共有メモリからデータをリードする第2のプロセッサと、
    メモリマネージャとを備え、
    該メモリマネージャは、前記第2のプロセッサからのリード要求のアドレスが、前記第1のプロセッサのキャッシュメモリと共有メモリとの整合性が要求されるアドレスの範囲に含まれることを条件に、前記キャッシュメモリと前記共有メモリとの整合性を保つ整合処理を前記第1のプロセッサに実行せしめ、
    前記第1のプロセッサによる前記整合処理が完了したことを条件に前記第2のプロセッサにより要求されたリードを許可することを特徴とするマルチプロセッサシステム。
  2. 前記メモリマネージャは、前記第2のプロセッサに割込命令を送信することによって前記整合処理を実行せしめることを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. 前記メモリマネージャは、前回のリード要求に応じて前記第1のプロセッサに整合処理を実行せしめた後のリード要求に対して、該リード要求が前記前回のリード要求から所定の時間範囲内であり、かつ要求されるデータが前回のリード要求が要求されるデータと同じキャッシュラインに含まれることを条件に、前記整合処理を実行させないことを特徴とする請求項1または2に記載のマルチプロセッサシステム。
  4. 前記第1のプロセッサは、ライト・トランザクション・バッファを介して前記キャッシュメモリのデータを共有メモリにライトするものであり、ライトスルーモードで動作するか否か、および前記ライト・トランザクション・バッファが空であるか否かを前記メモリマネージャに通知し、
    前記メモリマネージャは、前記第1のプロセッサがライトスルーモードで動作し、かつ前記ライト・トランザクション・バッファが空であることを条件に、前記整合処理を実行させないことを特徴とする請求項1から3のいずれか1項に記載のマルチプロセッサシステム。
JP2007010028A 2007-01-19 2007-01-19 マルチプロセッサシステム Pending JP2008176612A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007010028A JP2008176612A (ja) 2007-01-19 2007-01-19 マルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007010028A JP2008176612A (ja) 2007-01-19 2007-01-19 マルチプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2008176612A true JP2008176612A (ja) 2008-07-31

Family

ID=39703580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007010028A Pending JP2008176612A (ja) 2007-01-19 2007-01-19 マルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP2008176612A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015504205A (ja) * 2011-12-16 2015-02-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム
JP2016091509A (ja) * 2014-11-11 2016-05-23 ファナック株式会社 プログラマブルコントローラに適したマルチプロセッサシステム
JP7474061B2 (ja) 2019-03-01 2024-04-24 キヤノン株式会社 インタフェース装置、データ処理装置、キャッシュ制御方法、及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015504205A (ja) * 2011-12-16 2015-02-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プロセッサによるメモリの共有のための方法、システム、およびコンピュータ・プログラム
JP2016091509A (ja) * 2014-11-11 2016-05-23 ファナック株式会社 プログラマブルコントローラに適したマルチプロセッサシステム
JP7474061B2 (ja) 2019-03-01 2024-04-24 キヤノン株式会社 インタフェース装置、データ処理装置、キャッシュ制御方法、及びプログラム

Similar Documents

Publication Publication Date Title
US7600078B1 (en) Speculatively performing read transactions
JP5153172B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
US9665488B2 (en) Technique to share information among different cache coherency domains
US7984244B2 (en) Method and apparatus for supporting scalable coherence on many-core products through restricted exposure
CN101853227B (zh) 改进存储器映射输入/输出请求处理的方法和处理器
US20110173393A1 (en) Cache memory, memory system, and control method therefor
US20050204088A1 (en) Data acquisition methods
JP4803983B2 (ja) 演算処理装置
CN101097545A (zh) 独占所有权探听过滤器
JP4673585B2 (ja) メモリシステム制御装置およびメモリシステム制御方法
JP2009223759A (ja) 情報処理装置,メモリ制御方法およびメモリ制御装置
JP5587539B2 (ja) ローカルメモリデータのコヒーレントなキャッシュ処理
JP2008176612A (ja) マルチプロセッサシステム
KR20140038075A (ko) 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
CN110716887B (zh) 一种支持写暗示的硬件高速缓存数据装入方法
US7502892B2 (en) Decoupling request for ownership tag reads from data read operations
US20060041706A1 (en) Apparatus And Related Method For Maintaining Read Caching Data of South Bridge With North Bridge
US11360906B2 (en) Inter-device processing system with cache coherency
JP2007207004A (ja) プロセッサ及び計算機
CN112559434B (zh) 一种多核处理器及核间数据转发方法
JP4404807B2 (ja) マルチプロセッサシステム及びそれに用いるプリフェッチリクエスト制御方法並びにそのプログラム
JPWO2007110898A1 (ja) マルチプロセッサシステムおよびマルチプロセッサシステムの動作方法
US8230173B2 (en) Cache memory system, data processing apparatus, and storage apparatus
JP2000227877A (ja) 待ち時間を低減した非同期入出力キャッシュ
JP2011150427A (ja) マルチプロセッサシステムおよびその制御方法