説明

マルチプロセッサシステムおよびその制御方法

【課題】キャッシュメモリを有効に活用できるマルチプロセッサシステムおよびマルチプロセッサシステムの制御方法を提供することである。
【解決手段】本発明にかかるマルチプロセッサシステムは、複数のCPU11〜14と、複数のCPU11〜14に対応して設けられた複数のキャッシュメモリ21〜24と、複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部30と、キャッシュメモリ間のキャッシュコヒーレンシを取らない空間52が割り当てられた共有メモリ50と、を備える。CPUにおいて処理される命令のうち所定のCPUと関連づけられた命令は、当該所定のCPUと関連づけられたキャッシュコヒーレンシを取らない空間52において実行される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はマルチプロセッサシステム及びその制御方法に関し、特に共有メモリ型のマルチプロセッサシステム及びその制御方法に関する。
【背景技術】
【0002】
SMP(Symmetrical Multiprocessing)対応のOS(Operating System)は、複数のプロセッサで複数のプロセス及びスレッドを同時に処理できる。また、SMP対応のOSは各プロセッサをなるべく平等に使用するようにスケジューリングするのが一般的である。しかし、キャッシュスラッシングの防止、長時間に及ぶロックを防止するために、プロセス及びスレッドを同じプロセッサ上で実行した方がよい場合がある。このように、プロセス及びスレッドを特定のプロセッサと関連づけられるように制御することをプロセッサ・アフィニティ(プロセッサ・バインディング)と呼ぶ。このプロセッサ・アフィニティ機能を利用して、背景技術にかかるSMP対応のOSは、プロセス及びスレッドがプロセッサ間を頻繁に移動しないように特定プロセッサに割り当てて動作する機能を提供している。
【0003】
図9は関連する技術を説明するための図である。図9に示す共有メモリ型マルチプロセッサシステムは、CPU0(111)〜CPU3(114)と、キャッシュメモリ0(121)〜キャッシュメモリ3(124)と、スヌープ制御部(SCU)130と、バス140と、共有メモリ150とを有する。図9に示す共有メモリ型マルチプロセッサシステムでは、各々のCPU0(111)〜CPU3(114)に対応してキャッシュメモリ0(121)〜キャッシュメモリ3(124)が設けられており、スヌープ制御部130によりキャッシュコヒーレンシを維持している。つまり、スヌープ制御部130は、CPU0(111)〜CPU3(114)間で複数のクライアント共有メモリリソースのキャッシュを保持するとき、キャッシュ内のコヒーレンシを維持する。そして、SMP対応OSを稼働させた場合は、複数のプロセッサで複数のプロセスを同時に処理することができる。スヌープ制御部130と共有メモリ150はバス140を介して接続されている。
【0004】
図10は、図9に示した共有メモリ型マルチプロセッサシステムにおいて、スヌープ制御部130がキャッシュメモリ0(121)とキャッシュメモリ1(122)のコヒーレンシを維持する一例を示している。ここで、キャッシュメモリのデータには、通常のライン情報(データが有効かどうか、データが修正されているかどうか)のほかに、データがほかのキャッシュメモリと共有されているかどうかを表す情報が付加されている。
【0005】
図10の場合、はじめはCPU0(111)に対応したキャッシュメモリ0(121)とCPU1(112)に対応したキャッシュメモリ1(122)とで同じデータ「A」を共有しているので、両方のキャッシュメモリとも該当するラインは「共有」の状態となっている。そして、CPU0(111)がキャッシュメモリ0(121)のデータをAからA'に更新すると(図10の(1))、スヌープ制御部130は「キャッシュメモリ0(121)のデータをAからA'に更新した」という情報をバス140に流し(図10の(2))、同時にラインの共有状態を取り下げる。
【0006】
CPU1(112)に対応したキャッシュメモリ1(122)は、スヌープ制御部130を通してバスを監視しており、キャッシュメモリ0(121)のデータ「A」が更新されたことを検知して、自分の持っているAの乗っているラインを無効化し(図10の(3))、かつラインの共有状態を取り下げる。次に、CPU1(112)がデータAを読み出す(図10の(4))。しかし、この場合はミス・ヒットとなるので、データAの読み出し要求がバス140に送出される(図10の(5))。CPU0(111)はA'のラインが修正済みでかつ共有ではないという状態を示していることから最新のデータA'を持っていることになる。よって、このA'の乗っているラインがCPU1(112)に対応したキャッシュメモリ1(122)に転送される(図10の(6))。
【0007】
このように、マルチプロセッサにおいてスヌープキャッシュを構成する場合は、バスに対する処理要求(バス・トランザクション)として、通常の読み出し/書き込み要求のほかに、更新などの要求が加わる。また、キャッシュの制御に対しても、有効、修正のほかに、共有などの状態が各ラインに付加される。これらのラインの状態が、通常のプロセッサからの読み出し/書き込み要求や、監視しているバスに送出された要求に応じて遷移していく。これらのバス・トランザクションと状態遷移によって、キャッシュの一貫性が維持される。
【0008】
SMP対応OSでは、メモリ上の特定の共有データを複数のスレッドが操作すると、アクセスの競合が起きる。例えば、1つのプロセス内のスレッドが2つのプロセッサに別々に割り当てられ、これらのスレッドがメモリを共有していると、アクセス競合や待ち合わせがおきる。また、別々のプロセッサに割り当てられたスレッド間においてこうした共有データが読み書きされると、キャッシュメモリの一貫性を維持するため、スヌーピング、キャッシュ内容の破棄や更新動作が頻繁に行われる。この問題を避けるためにSMP対応OSは、各プロセッサのキャッシュメモリの内容を活かすためプロセス及びスレッドはなるべく同じプロセッサ上で動作させるプロセッサ・アフィニティ機能を提供している。
【0009】
特許文献1に開示されている技術では、同一のキャッシュメモリを使用するプロセッサをグルーピングして管理する手段と、スレッドがどのプロセッサグループへディスパッチされたかを記憶する手段とを備えることにより、同一キャッシュメモリを使用するプロセッサをグループ化し、スレッドをグループ内の複数のプロセッサへアフィニティ付けしている。これにより、プロセス及びスレッドに対してのプロセッサ・アフィニティ付けが失敗した場合に発生するキャッシュ間データ転送のオーバヘッドを削減することができる。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開平11−259318号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
背景技術で説明したように、SMP対応OSは各プロセッサのキャッシュメモリの内容を活かすために、プロセス及びスレッドはなるべく同じプロセッサ上で動作させるプロセッサ・アフィニティ機能を提供している。プロセッサ・アフィニティ機能を用いた場合は、プロセス及びスレッドが動作するプロセッサが特定されるため、自キャッシュを有効に活用することができる。しかし、プロセッサ・アフィニティ機能を使用したとしても、プロセス及びスレッドが共有メモリ上で動作している限り、共有メモリ領域への書き込みを他のプロセッサが行ったかどうか確認する必要がある。このためバススヌーピングのオーバヘッドが存在することになる。
【0012】
特許文献1に開示されている技術を用いることで、同一のキャッシュメモリを使用するプロセッサをグルーピングしてキャッシュ間の共有データ転送のオーバヘッドを削減することはできる。しかし、プロセッサ・アフィニティ付けされたプロセス及びスレッドは、共有メモリ上で動作していると考えられ、スヌープ制御部(SCU)によるキャッシュコヒーレンシのオーバヘッドが実行効率を低下させてしまうという問題がある。
【課題を解決するための手段】
【0013】
本発明にかかるマルチプロセッサシステムは、複数のCPUと、当該複数のCPUに対応して設けられた複数のキャッシュメモリと、当該複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間が割り当てられた共有メモリと、を備え、前記CPUにおいて処理される命令のうち所定のCPUと関連づけられた命令が、当該所定のCPUと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行される。
【0014】
本発明にかかるマルチプロセッサシステムでは、共有メモリにキャッシュ間のコヒーレンシを取らない空間を割り当て、所定のCPUと関連づけられた命令をキャッシュコヒーレンシを取らない空間において実行している。このため、所定のCPUと関連づけられた命令を他のキャッシュメモリの影響を受けない空間で動作させることがきるので、キャッシュコヒーレンシによるオーバヘッドを削減することができ、キャッシュメモリを有効に活用できる。
【0015】
本発明にかかる、複数のCPUと、当該複数のCPUに対応して設けられた複数のキャッシュメモリと、当該複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、共有メモリと、を備えたマルチプロセッサシステムの制御方法は、前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間を前記共有メモリに割り当て、前記CPUにおいて処理される命令のうち所定のCPUと関連づけられた命令を、当該所定のCPUと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行する。
【0016】
本発明にかかるマルチプロセッサシステムの制御方法は、共有メモリにキャッシュ間のコヒーレンシを取らない空間を割り当て、所定のCPUと関連づけられた命令をキャッシュコヒーレンシを取らない空間において実行している。このため、所定のCPUと関連づけられた命令を他のキャッシュメモリの影響を受けない空間で動作させることがきるので、キャッシュコヒーレンシによるオーバヘッドを削減することができ、キャッシュメモリを有効に活用できる。
【発明の効果】
【0017】
本発明によりキャッシュメモリを有効に活用できるマルチプロセッサシステムおよびマルチプロセッサシステムの制御方法を提供することができる。
【図面の簡単な説明】
【0018】
【図1】実施の形態にかかるマルチプロセッサシステムを示すブロック図である。
【図2】実施の形態にかかるマルチプロセッサシステムの共有メモリを示す図である。
【図3】実施の形態にかかるマルチプロセッサシステムにおけるスレッドの配置を説明するための図である。
【図4】実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。
【図5】実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。
【図6】実施の形態にかかるマルチプロセッサシステムにおける、プロセッサ・アフィニティ付きスレッドが非共有ラインを更新したときの動作を説明するためのフローチャートである。
【図7】実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。
【図8】実施の形態にかかるマルチプロセッサシステムにおける、プロセッサ・アフィニティ付けされていない通常のスレッドが共有ラインを更新したときの動作を説明するためのフローチャートである。
【図9】関連する共有メモリ型マルチプロセッサシステム技術を説明するためのブロック図である。
【図10】図9に示す共有メモリ型マルチプロセッサシステムにおけるキャッシュコヒーレンシの動作を説明するための図である。
【発明を実施するための形態】
【0019】
以下、図面を参照して本発明の実施の形態について説明する。図1は本実施の形態にかかるマルチプロセッサシステムを示すブロック図である。図1に示すマルチプロセッサシステムは共有メモリ型マルチプロセッサシステムである。図1に示すマルチプロセッサシステムは、CPU0(11)〜CPU3(14)と、キャッシュメモリ0(21)〜キャッシュメモリ3(24)と、スヌープ制御部(SCU)30と、バス40と、共有メモリ50とを有する。
【0020】
図1に示すマルチプロセッサシステムでは、各々のCPU0(11)〜CPU3(14)に対応してキャッシュメモリ0(21)〜キャッシュメモリ3(24)が設けられている。キャッシュメモリ0(21)〜キャッシュメモリ3(24)はスヌープ制御部30と接続されている。スヌープ制御部30はバス40を介して共有メモリ50と接続されている。
【0021】
また、共有メモリ50は、キャッシュ間のコヒーレンシを取る空間51とキャッシュ間のコヒーレンシを取らない空間52とを備える。図2は、本実施の形態にかかるマルチプロセッサシステムの共有メモリ50の構成を説明するための図である。図2に示すように、本実施の形態にかかるマルチプロセッサシステムの共有メモリ50は、キャッシュ間のコヒーレンシを取る空間51とキャッシュ間のコヒーレンシを取らない空間52とを備え、キャッシュ間のコヒーレンシを取らない空間52には、各CPU0(11)〜CPU3(14)に対応したプロセッサ・アフィニティ空間がマッピングされている。
【0022】
ここで、プロセッサ・アフィニティ空間とは、特定のプロセッサと関連づけられた命令(以下、プロセス及びスレッドという)が実行される空間である。例えば図2の「アフィニティCPU0」で示される空間は、CPU0(11)と関連づけられたプロセス及びスレッドが実行される空間を示している。
【0023】
仮想記憶をサポートするプロセッサは、それぞれの論理アドレス空間と物理アドレス空間とのマッピング(アドレス変換)を行うメモリマネージメントユニット(MMU:不図示)をハードウェアに内蔵している。図2に示すようなメモリ空間のマッピングはこのメモリマネージメントユニットにより実施することができる。なお、本実施の形態にかかる発明では、キャッシュ間のコヒーレンシを取る空間51は必要に応じて省略することもできる。
【0024】
スヌープ制御部30は、キャッシュメモリ0(21)〜キャッシュメモリ3(24)におけるキャッシュコヒーレンシを保つ機能を有する。つまり、スヌープ制御部30は、各キャッシュメモリが自身や他のCPUのキャッシュメモリのラインの更新状態を把握・管理し、各キャッシュメモリ間で更新状態の情報を交換することで、どのキャッシュに最新のデータが存在するかを把握し、各キャッシュが最新のデータを取得できるようにしたり、ラインを無効化したりする。本実施の形態にかかるマルチプロセッサシステムでは、スヌープ制御部30は共有メモリ50のキャッシュ間のコヒーレンシを取る空間51のデータをスヌープ制御(キャッシュコヒーレンシ制御)の対象としている。
【0025】
次に、本実施の形態にかかるマルチプロセッサシステムの処理フローについて説明する。SMP対応OSは、所定のCPUと関連づけられたプロセス及びスレッド(以下、プロセッサ・アフィニティ付プロセス及びスレッドともいう)が動作するメモリ空間を、キャッシュ間のコヒーレンシを取らない空間52(プロセッサ・アフィニティ空間)として静的にマッピングし管理する。この空間は、キャッシュコヒーレンシの対象とならないメモリ領域として作成する。例えば、既存のマルチプロセッサであるARM社製MPCoreでは、メモリマネージメントユニット(MMU)内で該当ページに共有ビットを設定せずにマッピングをすれば、該当ページはスヌープ制御部30によりキャッシュコヒーレンシが取られない空間として作成できる。よって、各CPU0(11)〜CPU3(14)はプロセッサ・アフィニティ空間をメモリマネージメントユニット内で該当ページに共有ビットを設定せずにマッピングする。一方、それ以外の空間は共有ビットを設定して静的にマッピングし管理する。この空間は、スヌープ制御部30によるキャッシュ間のコヒーレンシをとる空間51となる。
【0026】
SMP対応OSは、プロセッサ・アフィニティ付きプロセス及びスレッドを、スヌープ制御部30によりキャッシュ間のコヒーレンシを取らない空間(プロセッサ・アフィニティ空間)52にロードして実行する。また、SMP対応OSは、プロセッサ・アフィニティが付いていない通常のプロセス及びスレッドを、キャッシュ間のコヒーレンシをとる空間51で動作させる。
【0027】
図3は、SMP対応OSがキャッシュ間のコヒーレンシを取らない空間52とキャッシュ間のコヒーレンシをとる空間51とに分けて共有メモリ50を管理し、各スレッドA〜Dを共有メモリ50にロードして実行する状態を説明するための図である。
図3に示すように、プロセッサ・アフィニティ付きスレッドAは共有メモリ50のアフィニティCPU0空間において実行される。同様に、プロセッサ・アフィニティ付きスレッドDは共有メモリ50のアフィニティCPU2空間において実行される。これに対して、プロセッサ・アフィニティが付いていない通常のスレッドB、Cは、キャッシュ間のコヒーレンシを取る空間51で、スケジューラが選択した任意のプロセッサで実行される。
【0028】
図4は、本実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。図4に示すように、SMP対応OSはキャッシュ間のコヒーレンシを取らない空間52とキャッシュ間のコヒーレンシをとる空間51とに分けて共有メモリ50を管理している。このとき、プロセッサ・アフィニティ付プロセス及びスレッドはキャッシュ間のコヒーレンシを取らない空間52で動作し、通常プロセス及びスレッドはキャッシュ間のコヒーレンシをとる空間51で動作する。
【0029】
図4に示すようにキャッシュ間のコヒーレンシを取らない空間52のアフィニティCPU0空間の番地52_1からCPU0(11)のキャッシュメモリ0(21)のライン21_2に4バイトのデータがコピーされる。同様に、キャッシュ間のコヒーレンシを取らない空間52のアフィニティCPU1空間の番地52_2からCPU1(12)のキャッシュメモリ1(22)のライン22_2に4バイトのデータがコピーされる。また、キャッシュ間のコヒーレンシを取る空間51の番地51_1からキャッシュメモリ0(21)のライン21_1およびキャッシュメモリ1(22)のライン22_1に4バイトのデータがそれぞれコピーされる。
【0030】
このとき、キャッシュメモリ0(21)のキャッシュラインには、スヌープ制御部30によるキャッシュコヒーレンシを取るライン21_1とキャッシュコヒーレンシを取らないライン21_2とが混在している。同様に、キャッシュメモリ1(22)のキャッシュラインには、スヌープ制御部30によるキャッシュコヒーレンシを取るライン22_1とキャッシュコヒーレンシを取らないライン22_2とが混在している。
【0031】
本実施の形態にかかるマルチプロセッサシステムでは、プロセッサ・アフィニティ付けされたプロセス及びスレッド11_2は、キャッシュメモリ0(21)のライン21_2にコピーされたデータを用いて実行される。また、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド11_1は、キャッシュメモリ0(21)のライン21_1にコピーされたデータを用いて実行される。
【0032】
同様に、プロセッサ・アフィニティ付けされたプロセス及びスレッド12_2は、キャッシュメモリ1(22)のライン22_2にコピーされたデータを用いて実行される。また、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド12_1は、キャッシュメモリ1(22)のライン22_1にコピーされたデータを用いて実行される。
【0033】
次に、図5及び図6を用いて、図4に示した本実施の形態にかかるマルチプロセッサシステムにおいて、キャッシュメモリ0のライン21_2のデータが、プロセッサ・アフィニティ付けされたプロセス及びスレッド11_2により更新された場合の動作について説明する。
【0034】
プロセッサ・アフィニティ付けされたプロセス及びスレッド11_2がキャッシュメモリ0(21)のライン21_2のデータの更新を要求した場合、キャッシュメモリ0(21)はライン21_2のデータを更新する。このとき、キャッシュメモリ0(21)とキャッシュメモリ1(22)はキャッシュコヒーレンシを取っている。しかし、キャッシュメモリ0のライン21_2のデータは、キャッシュ間のコヒーレンシを取らない空間52のデータである。よって、スヌープ制御部30がキャッシュコヒーレンシを保つためにキャッシュメモリ0のライン21_2のデータ更新について情報を流すことはない。また、キャッシュメモリ1(22)に同じキャッシュラインが存在することもない。
【0035】
図6は、この場合のCPU0(11)のキャッシュメモリ0(21)とCPU1(12)のキャッシュメモリ1(22)の動作を説明するためのフローチャートである。図6に示すように、CPU0(11)のキャッシュメモリ0(21)のライン21_2(非共有ライン)は、プロセッサ・アフィニティ付けされたプロセス及びスレッド11_2からキャッシュメモリ0(21)のライン21_2のデータ更新の要求があった場合、ライン21_2のデータを更新する(S11)。このとき、CPU1(12)のキャッシュメモリ1(22)のラインは更新されることはない(S21)。
【0036】
次に、図7及び図8を用いて、図4に示した本実施の形態にかかるマルチプロセッサシステムにおいて、キャッシュメモリ0(21)のライン21_1のデータが、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド11_1により更新された場合の動作について説明する。
【0037】
プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド11_1によりキャッシュメモリ0(21)のライン21_1のデータが更新される。このとき、スヌープ制御部30はキャッシュメモリ0(21)とキャッシュメモリ1(22)のキャッシュコヒーレンシを取っている。よって、キャッシュメモリ0(21)のライン21_1と同一のデータを保持していたキャッシュメモリ1(22)のライン22_1は無効にされる。
【0038】
図8は、この場合のCPU0(11)のキャッシュメモリ0(21)とCPU1(12)のキャッシュメモリ1(22)の動作を説明するためのフローチャートである。図8に示すように、CPU0(11)のキャッシュメモリ0(21)のライン21_1(共有ライン)は、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド11_1からライン21_1のデータの更新の要求があった場合、ライン21_1のデータを更新する(S31)。そして、スヌープ制御部30はバス40にキャッシュメモリ0(21)のライン21_1のデータが更新されたという情報を流す(S32)。
【0039】
そして、CPU1(12)のキャッシュメモリ1(22)はキャッシュメモリ0(21)のライン21_1と同一のデータを保持しているライン(共有ライン)が存在するかチェックをする(S41)。同じラインがない場合は処理を終了する。一方、キャッシュメモリ0(21)のライン21_1と同一のデータを保持しているライン(共有ライン)が存在する場合は、該当するキャッシュメモリ1(22)のライン(この場合は、図7の22_1)の共有状態を取り下げる。このとき、CPU1(12)のキャッシュメモリ1(22)はスヌープ制御部30を通してバスを監視しており、キャッシュメモリ0(21)のライン21_1が更新されたことを検知して、キャッシュメモリ1(22)のライン22_1を無効化する(S42)。
【0040】
このように、本実施の形態にかかるマルチプロセッサシステムでは、共有メモリ50にキャッシュ間のコヒーレンシを取る空間51とキャッシュ間のコヒーレンシを取らない空間52を割り当て、プロセッサ・アフィニティ付けされたプロセス及びスレッドをキャッシュ間のコヒーレンシを取らない空間52で動作させている。このため、プロセッサ・アフィニティ付けされたプロセス及びスレッドを、他のCPUのキャッシュメモリの影響を受けない空間(キャッシュ間のコヒーレンシを取らない空間52)で動作させることがきるので、キャッシュメモリを有効に活用でき実行効率を向上することができる。
【0041】
すなわち、従来、SMP対応OSはプロセッサ・アフィニティ付プロセス及びスレッドが動作するプロセッサを管理するのみで、プロセス及びスレッドが動作するメモリ空間についてはアフィニティ付けされてないプロセス及びスレッドと同様にキャッシュ間のコヒーレンシを取る空間で動作させていた。
【0042】
しかし、本実施の形態にかかるマルチプロセッサシステムでは、上述したようにプロセッサ管理だけではなくプロセス及びスレッドが動作するメモリ空間の管理も行うことで、スヌープ制御部によるキャッシュコヒーレンシに起因するオーバヘッドを削減し、キャッシュメモリを有効に活用することを可能にした。
【0043】
また、特許文献1に開示されている技術では、同一のキャッシュメモリを使用するプロセッサをグルーピングして管理することでキャッシュ間データ転送のオーバヘッドの発生を削減することを期待できる。しかし、プロセッサ・アフィニティ付けされたプロセス及びスレッドは共有メモリ上で動作していると考えられるため、スヌープ制御部によるキャッシュコヒーレンシに起因するオーバヘッドがキャッシュメモリの実行効率を低下させている。
【0044】
これに対して、本実施の形態にかかるマルチプロセッサシステムでは、プロセッサ・アフィニティ付けされたプロセス及びスレッドを、他のCPUのキャッシュメモリの影響を受けない空間(キャッシュ間のコヒーレンシを取らない空間52)で動作させることがきるので、キャッシュメモリを有効に活用でき実行効率を向上することができる。
【0045】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【0046】
11〜14 CPU
11_1、12_1 通常のプロセス及びスレッド
11_2、12_2 プロセッサ・アフィニティ付けされたプロセス及びスレッド
21〜24 キャッシュメモリ
21_1、21_2、22_1、22_2 ライン
30 スヌープ制御部
40 バス
50 共有メモリ
51 キャッシュ間のコヒーレンシを取る空間
51_1 番地
52 キャッシュ間のコヒーレンシを取らない空間
52_1、52_2 番地

【特許請求の範囲】
【請求項1】
複数のCPUと、
前記複数のCPUに対応して設けられた複数のキャッシュメモリと、
前記複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、
前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間が割り当てられた共有メモリと、を備え、
前記CPUにおいて処理される命令のうち所定のCPUと関連づけられた命令が、当該所定のCPUと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行される、
マルチプロセッサシステム。
【請求項2】
前記共有メモリは前記キャッシュメモリ間のキャッシュコヒーレンシを取る空間を備える、請求項1に記載のマルチプロセッサシステム。
【請求項3】
前記CPUにおいて処理される命令のうち所定のCPUと関連づけられていない命令が、前記キャッシュコヒーレンシを取る空間において実行される、請求項2に記載のマルチプロセッサシステム。
【請求項4】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取らない空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流さない、請求項1乃至3のいずれか一項に記載のマルチプロセッサシステム。
【請求項5】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取る空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流す、請求項2乃至4のいずれか一項に記載のマルチプロセッサシステム。
【請求項6】
前記他のキャッシュメモリは前記キャッシュメモリと同一のデータを保持しているラインが存在する場合、当該他のキャッシュメモリのラインを無効化する、請求項5に記載のマルチプロセッサシステム。
【請求項7】
複数のCPUと、当該複数のCPUに対応して設けられた複数のキャッシュメモリと、当該複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、共有メモリと、を備えたマルチプロセッサシステムの制御方法であって、
前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間を前記共有メモリに割り当て、
前記CPUにおいて処理される命令のうち所定のCPUと関連づけられた命令を、当該所定のCPUと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行する、
マルチプロセッサシステムの制御方法。
【請求項8】
前記キャッシュメモリ間のキャッシュコヒーレンシを取る空間を前記共有メモリに割り当てる、請求項7に記載のマルチプロセッサシステムの制御方法。
【請求項9】
前記CPUにおいて処理される命令のうち所定のCPUと関連づけられていない命令を、前記キャッシュコヒーレンシを取る空間において実行する、請求項8に記載のマルチプロセッサシステムの制御方法。
【請求項10】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取らない空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流さない、請求項7乃至9のいずれか一項に記載のマルチプロセッサシステムの制御方法。
【請求項11】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取る空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流す、請求項8乃至10のいずれか一項に記載のマルチプロセッサシステムの制御方法。
【請求項12】
前記他のキャッシュメモリは前記キャッシュメモリと同一のデータを保持しているラインが存在する場合、当該他のキャッシュメモリのラインを無効化する、請求項11に記載のマルチプロセッサシステムの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate