(57)【要約】【課題】キャッシュメモリを有効に活用できるマルチプロセッサシステムおよびマルチプロセッサシステムの制御方法を提供することである。【解決手段】本発明にかかるマルチプロセッサシステムは、複数のＣＰＵ１１〜１４と、複数のＣＰＵ１１〜１４に対応して設けられた複数のキャッシュメモリ２１〜２４と、複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部３０と、キャッシュメモリ間のキャッシュコヒーレンシを取らない空間５２が割り当てられた共有メモリ５０と、を備える。ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられた命令は、当該所定のＣＰＵと関連づけられたキャッシュコヒーレンシを取らない空間５２において実行される。【選択図】図１
2011150427.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵと、
前記複数のＣＰＵに対応して設けられた複数のキャッシュメモリと、
前記複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、
前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間が割り当てられた共有メモリと、を備え、
前記ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられた命令が、当該所定のＣＰＵと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行される、
マルチプロセッサシステム。
【請求項２】
前記共有メモリは前記キャッシュメモリ間のキャッシュコヒーレンシを取る空間を備える、請求項１に記載のマルチプロセッサシステム。
【請求項３】
前記ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられていない命令が、前記キャッシュコヒーレンシを取る空間において実行される、請求項２に記載のマルチプロセッサシステム。
【請求項４】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取らない空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流さない、請求項１乃至３のいずれか一項に記載のマルチプロセッサシステム。
【請求項５】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取る空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流す、請求項２乃至４のいずれか一項に記載のマルチプロセッサシステム。
【請求項６】
前記他のキャッシュメモリは前記キャッシュメモリと同一のデータを保持しているラインが存在する場合、当該他のキャッシュメモリのラインを無効化する、請求項５に記載のマルチプロセッサシステム。
【請求項７】
複数のＣＰＵと、当該複数のＣＰＵに対応して設けられた複数のキャッシュメモリと、当該複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、共有メモリと、を備えたマルチプロセッサシステムの制御方法であって、
前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間を前記共有メモリに割り当て、
前記ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられた命令を、当該所定のＣＰＵと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行する、
マルチプロセッサシステムの制御方法。
【請求項８】
前記キャッシュメモリ間のキャッシュコヒーレンシを取る空間を前記共有メモリに割り当てる、請求項７に記載のマルチプロセッサシステムの制御方法。
【請求項９】
前記ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられていない命令を、前記キャッシュコヒーレンシを取る空間において実行する、請求項８に記載のマルチプロセッサシステムの制御方法。
【請求項１０】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取らない空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流さない、請求項７乃至９のいずれか一項に記載のマルチプロセッサシステムの制御方法。
【請求項１１】
前記キャッシュメモリにコピーされた、前記キャッシュコヒーレンシを取る空間のデータが更新された場合、前記スヌープ制御部は前記キャッシュメモリの更新情報を他のキャッシュメモリが接続されているバスに流す、請求項８乃至１０のいずれか一項に記載のマルチプロセッサシステムの制御方法。
【請求項１２】
前記他のキャッシュメモリは前記キャッシュメモリと同一のデータを保持しているラインが存在する場合、当該他のキャッシュメモリのラインを無効化する、請求項１１に記載のマルチプロセッサシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステム及びその制御方法に関し、特に共有メモリ型のマルチプロセッサシステム及びその制御方法に関する。
【背景技術】
【０００２】
ＳＭＰ（Symmetrical Multiprocessing）対応のＯＳ（Operating System）は、複数のプロセッサで複数のプロセス及びスレッドを同時に処理できる。また、ＳＭＰ対応のＯＳは各プロセッサをなるべく平等に使用するようにスケジューリングするのが一般的である。しかし、キャッシュスラッシングの防止、長時間に及ぶロックを防止するために、プロセス及びスレッドを同じプロセッサ上で実行した方がよい場合がある。このように、プロセス及びスレッドを特定のプロセッサと関連づけられるように制御することをプロセッサ・アフィニティ（プロセッサ・バインディング）と呼ぶ。このプロセッサ・アフィニティ機能を利用して、背景技術にかかるＳＭＰ対応のＯＳは、プロセス及びスレッドがプロセッサ間を頻繁に移動しないように特定プロセッサに割り当てて動作する機能を提供している。
【０００３】
図９は関連する技術を説明するための図である。図９に示す共有メモリ型マルチプロセッサシステムは、ＣＰＵ０（１１１）〜ＣＰＵ３（１１４）と、キャッシュメモリ０（１２１）〜キャッシュメモリ３（１２４）と、スヌープ制御部（ＳＣＵ）１３０と、バス１４０と、共有メモリ１５０とを有する。図９に示す共有メモリ型マルチプロセッサシステムでは、各々のＣＰＵ０（１１１）〜ＣＰＵ３（１１４）に対応してキャッシュメモリ０（１２１）〜キャッシュメモリ３（１２４）が設けられており、スヌープ制御部１３０によりキャッシュコヒーレンシを維持している。つまり、スヌープ制御部１３０は、ＣＰＵ０（１１１）〜ＣＰＵ３（１１４）間で複数のクライアント共有メモリリソースのキャッシュを保持するとき、キャッシュ内のコヒーレンシを維持する。そして、ＳＭＰ対応ＯＳを稼働させた場合は、複数のプロセッサで複数のプロセスを同時に処理することができる。スヌープ制御部１３０と共有メモリ１５０はバス１４０を介して接続されている。
【０００４】
図１０は、図９に示した共有メモリ型マルチプロセッサシステムにおいて、スヌープ制御部１３０がキャッシュメモリ０（１２１）とキャッシュメモリ１（１２２）のコヒーレンシを維持する一例を示している。ここで、キャッシュメモリのデータには、通常のライン情報（データが有効かどうか、データが修正されているかどうか）のほかに、データがほかのキャッシュメモリと共有されているかどうかを表す情報が付加されている。
【０００５】
図１０の場合、はじめはＣＰＵ０（１１１）に対応したキャッシュメモリ０（１２１）とＣＰＵ１（１１２）に対応したキャッシュメモリ１（１２２）とで同じデータ「Ａ」を共有しているので、両方のキャッシュメモリとも該当するラインは「共有」の状態となっている。そして、ＣＰＵ０（１１１）がキャッシュメモリ０（１２１）のデータをＡからＡ'に更新すると（図１０の（１））、スヌープ制御部１３０は「キャッシュメモリ０（１２１）のデータをＡからＡ'に更新した」という情報をバス１４０に流し（図１０の（２））、同時にラインの共有状態を取り下げる。
【０００６】
ＣＰＵ１（１１２）に対応したキャッシュメモリ１（１２２）は、スヌープ制御部１３０を通してバスを監視しており、キャッシュメモリ０（１２１）のデータ「Ａ」が更新されたことを検知して、自分の持っているＡの乗っているラインを無効化し（図１０の（３））、かつラインの共有状態を取り下げる。次に、ＣＰＵ１（１１２）がデータＡを読み出す（図１０の（４））。しかし、この場合はミス・ヒットとなるので、データＡの読み出し要求がバス１４０に送出される（図１０の（５））。ＣＰＵ０（１１１）はＡ'のラインが修正済みでかつ共有ではないという状態を示していることから最新のデータＡ'を持っていることになる。よって、このＡ'の乗っているラインがＣＰＵ１（１１２）に対応したキャッシュメモリ１（１２２）に転送される（図１０の（６））。
【０００７】
このように、マルチプロセッサにおいてスヌープキャッシュを構成する場合は、バスに対する処理要求（バス・トランザクション）として、通常の読み出し／書き込み要求のほかに、更新などの要求が加わる。また、キャッシュの制御に対しても、有効、修正のほかに、共有などの状態が各ラインに付加される。これらのラインの状態が、通常のプロセッサからの読み出し／書き込み要求や、監視しているバスに送出された要求に応じて遷移していく。これらのバス・トランザクションと状態遷移によって、キャッシュの一貫性が維持される。
【０００８】
ＳＭＰ対応ＯＳでは、メモリ上の特定の共有データを複数のスレッドが操作すると、アクセスの競合が起きる。例えば、１つのプロセス内のスレッドが２つのプロセッサに別々に割り当てられ、これらのスレッドがメモリを共有していると、アクセス競合や待ち合わせがおきる。また、別々のプロセッサに割り当てられたスレッド間においてこうした共有データが読み書きされると、キャッシュメモリの一貫性を維持するため、スヌーピング、キャッシュ内容の破棄や更新動作が頻繁に行われる。この問題を避けるためにＳＭＰ対応ＯＳは、各プロセッサのキャッシュメモリの内容を活かすためプロセス及びスレッドはなるべく同じプロセッサ上で動作させるプロセッサ・アフィニティ機能を提供している。
【０００９】
特許文献１に開示されている技術では、同一のキャッシュメモリを使用するプロセッサをグルーピングして管理する手段と、スレッドがどのプロセッサグループへディスパッチされたかを記憶する手段とを備えることにより、同一キャッシュメモリを使用するプロセッサをグループ化し、スレッドをグループ内の複数のプロセッサへアフィニティ付けしている。これにより、プロセス及びスレッドに対してのプロセッサ・アフィニティ付けが失敗した場合に発生するキャッシュ間データ転送のオーバヘッドを削減することができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１１−２５９３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
背景技術で説明したように、ＳＭＰ対応ＯＳは各プロセッサのキャッシュメモリの内容を活かすために、プロセス及びスレッドはなるべく同じプロセッサ上で動作させるプロセッサ・アフィニティ機能を提供している。プロセッサ・アフィニティ機能を用いた場合は、プロセス及びスレッドが動作するプロセッサが特定されるため、自キャッシュを有効に活用することができる。しかし、プロセッサ・アフィニティ機能を使用したとしても、プロセス及びスレッドが共有メモリ上で動作している限り、共有メモリ領域への書き込みを他のプロセッサが行ったかどうか確認する必要がある。このためバススヌーピングのオーバヘッドが存在することになる。
【００１２】
特許文献１に開示されている技術を用いることで、同一のキャッシュメモリを使用するプロセッサをグルーピングしてキャッシュ間の共有データ転送のオーバヘッドを削減することはできる。しかし、プロセッサ・アフィニティ付けされたプロセス及びスレッドは、共有メモリ上で動作していると考えられ、スヌープ制御部（ＳＣＵ）によるキャッシュコヒーレンシのオーバヘッドが実行効率を低下させてしまうという問題がある。
【課題を解決するための手段】
【００１３】
本発明にかかるマルチプロセッサシステムは、複数のＣＰＵと、当該複数のＣＰＵに対応して設けられた複数のキャッシュメモリと、当該複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間が割り当てられた共有メモリと、を備え、前記ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられた命令が、当該所定のＣＰＵと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行される。
【００１４】
本発明にかかるマルチプロセッサシステムでは、共有メモリにキャッシュ間のコヒーレンシを取らない空間を割り当て、所定のＣＰＵと関連づけられた命令をキャッシュコヒーレンシを取らない空間において実行している。このため、所定のＣＰＵと関連づけられた命令を他のキャッシュメモリの影響を受けない空間で動作させることがきるので、キャッシュコヒーレンシによるオーバヘッドを削減することができ、キャッシュメモリを有効に活用できる。
【００１５】
本発明にかかる、複数のＣＰＵと、当該複数のＣＰＵに対応して設けられた複数のキャッシュメモリと、当該複数のキャッシュメモリ間のキャッシュコヒーレンシを保つスヌープ制御部と、共有メモリと、を備えたマルチプロセッサシステムの制御方法は、前記キャッシュメモリ間のキャッシュコヒーレンシを取らない空間を前記共有メモリに割り当て、前記ＣＰＵにおいて処理される命令のうち所定のＣＰＵと関連づけられた命令を、当該所定のＣＰＵと関連づけられた前記キャッシュコヒーレンシを取らない空間において実行する。
【００１６】
本発明にかかるマルチプロセッサシステムの制御方法は、共有メモリにキャッシュ間のコヒーレンシを取らない空間を割り当て、所定のＣＰＵと関連づけられた命令をキャッシュコヒーレンシを取らない空間において実行している。このため、所定のＣＰＵと関連づけられた命令を他のキャッシュメモリの影響を受けない空間で動作させることがきるので、キャッシュコヒーレンシによるオーバヘッドを削減することができ、キャッシュメモリを有効に活用できる。
【発明の効果】
【００１７】
本発明によりキャッシュメモリを有効に活用できるマルチプロセッサシステムおよびマルチプロセッサシステムの制御方法を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態にかかるマルチプロセッサシステムを示すブロック図である。
【図２】実施の形態にかかるマルチプロセッサシステムの共有メモリを示す図である。
【図３】実施の形態にかかるマルチプロセッサシステムにおけるスレッドの配置を説明するための図である。
【図４】実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。
【図５】実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。
【図６】実施の形態にかかるマルチプロセッサシステムにおける、プロセッサ・アフィニティ付きスレッドが非共有ラインを更新したときの動作を説明するためのフローチャートである。
【図７】実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。
【図８】実施の形態にかかるマルチプロセッサシステムにおける、プロセッサ・アフィニティ付けされていない通常のスレッドが共有ラインを更新したときの動作を説明するためのフローチャートである。
【図９】関連する共有メモリ型マルチプロセッサシステム技術を説明するためのブロック図である。
【図１０】図９に示す共有メモリ型マルチプロセッサシステムにおけるキャッシュコヒーレンシの動作を説明するための図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施の形態について説明する。図１は本実施の形態にかかるマルチプロセッサシステムを示すブロック図である。図１に示すマルチプロセッサシステムは共有メモリ型マルチプロセッサシステムである。図１に示すマルチプロセッサシステムは、ＣＰＵ０（１１）〜ＣＰＵ３（１４）と、キャッシュメモリ０（２１）〜キャッシュメモリ３（２４）と、スヌープ制御部（ＳＣＵ）３０と、バス４０と、共有メモリ５０とを有する。
【００２０】
図１に示すマルチプロセッサシステムでは、各々のＣＰＵ０（１１）〜ＣＰＵ３（１４）に対応してキャッシュメモリ０（２１）〜キャッシュメモリ３（２４）が設けられている。キャッシュメモリ０（２１）〜キャッシュメモリ３（２４）はスヌープ制御部３０と接続されている。スヌープ制御部３０はバス４０を介して共有メモリ５０と接続されている。
【００２１】
また、共有メモリ５０は、キャッシュ間のコヒーレンシを取る空間５１とキャッシュ間のコヒーレンシを取らない空間５２とを備える。図２は、本実施の形態にかかるマルチプロセッサシステムの共有メモリ５０の構成を説明するための図である。図２に示すように、本実施の形態にかかるマルチプロセッサシステムの共有メモリ５０は、キャッシュ間のコヒーレンシを取る空間５１とキャッシュ間のコヒーレンシを取らない空間５２とを備え、キャッシュ間のコヒーレンシを取らない空間５２には、各ＣＰＵ０（１１）〜ＣＰＵ３（１４）に対応したプロセッサ・アフィニティ空間がマッピングされている。
【００２２】
ここで、プロセッサ・アフィニティ空間とは、特定のプロセッサと関連づけられた命令（以下、プロセス及びスレッドという）が実行される空間である。例えば図２の「アフィニティＣＰＵ０」で示される空間は、ＣＰＵ０（１１）と関連づけられたプロセス及びスレッドが実行される空間を示している。
【００２３】
仮想記憶をサポートするプロセッサは、それぞれの論理アドレス空間と物理アドレス空間とのマッピング（アドレス変換）を行うメモリマネージメントユニット（ＭＭＵ：不図示）をハードウェアに内蔵している。図２に示すようなメモリ空間のマッピングはこのメモリマネージメントユニットにより実施することができる。なお、本実施の形態にかかる発明では、キャッシュ間のコヒーレンシを取る空間５１は必要に応じて省略することもできる。
【００２４】
スヌープ制御部３０は、キャッシュメモリ０（２１）〜キャッシュメモリ３（２４）におけるキャッシュコヒーレンシを保つ機能を有する。つまり、スヌープ制御部３０は、各キャッシュメモリが自身や他のＣＰＵのキャッシュメモリのラインの更新状態を把握・管理し、各キャッシュメモリ間で更新状態の情報を交換することで、どのキャッシュに最新のデータが存在するかを把握し、各キャッシュが最新のデータを取得できるようにしたり、ラインを無効化したりする。本実施の形態にかかるマルチプロセッサシステムでは、スヌープ制御部３０は共有メモリ５０のキャッシュ間のコヒーレンシを取る空間５１のデータをスヌープ制御（キャッシュコヒーレンシ制御）の対象としている。
【００２５】
次に、本実施の形態にかかるマルチプロセッサシステムの処理フローについて説明する。ＳＭＰ対応ＯＳは、所定のＣＰＵと関連づけられたプロセス及びスレッド（以下、プロセッサ・アフィニティ付プロセス及びスレッドともいう）が動作するメモリ空間を、キャッシュ間のコヒーレンシを取らない空間５２（プロセッサ・アフィニティ空間）として静的にマッピングし管理する。この空間は、キャッシュコヒーレンシの対象とならないメモリ領域として作成する。例えば、既存のマルチプロセッサであるＡＲＭ社製ＭＰＣｏｒｅでは、メモリマネージメントユニット（ＭＭＵ）内で該当ページに共有ビットを設定せずにマッピングをすれば、該当ページはスヌープ制御部３０によりキャッシュコヒーレンシが取られない空間として作成できる。よって、各ＣＰＵ０（１１）〜ＣＰＵ３（１４）はプロセッサ・アフィニティ空間をメモリマネージメントユニット内で該当ページに共有ビットを設定せずにマッピングする。一方、それ以外の空間は共有ビットを設定して静的にマッピングし管理する。この空間は、スヌープ制御部３０によるキャッシュ間のコヒーレンシをとる空間５１となる。
【００２６】
ＳＭＰ対応ＯＳは、プロセッサ・アフィニティ付きプロセス及びスレッドを、スヌープ制御部３０によりキャッシュ間のコヒーレンシを取らない空間（プロセッサ・アフィニティ空間）５２にロードして実行する。また、ＳＭＰ対応ＯＳは、プロセッサ・アフィニティが付いていない通常のプロセス及びスレッドを、キャッシュ間のコヒーレンシをとる空間５１で動作させる。
【００２７】
図３は、ＳＭＰ対応ＯＳがキャッシュ間のコヒーレンシを取らない空間５２とキャッシュ間のコヒーレンシをとる空間５１とに分けて共有メモリ５０を管理し、各スレッドＡ〜Ｄを共有メモリ５０にロードして実行する状態を説明するための図である。
図３に示すように、プロセッサ・アフィニティ付きスレッドＡは共有メモリ５０のアフィニティＣＰＵ０空間において実行される。同様に、プロセッサ・アフィニティ付きスレッドＤは共有メモリ５０のアフィニティＣＰＵ２空間において実行される。これに対して、プロセッサ・アフィニティが付いていない通常のスレッドＢ、Ｃは、キャッシュ間のコヒーレンシを取る空間５１で、スケジューラが選択した任意のプロセッサで実行される。
【００２８】
図４は、本実施の形態にかかるマルチプロセッサシステムにおける動作を説明するための図である。図４に示すように、ＳＭＰ対応ＯＳはキャッシュ間のコヒーレンシを取らない空間５２とキャッシュ間のコヒーレンシをとる空間５１とに分けて共有メモリ５０を管理している。このとき、プロセッサ・アフィニティ付プロセス及びスレッドはキャッシュ間のコヒーレンシを取らない空間５２で動作し、通常プロセス及びスレッドはキャッシュ間のコヒーレンシをとる空間５１で動作する。
【００２９】
図４に示すようにキャッシュ間のコヒーレンシを取らない空間５２のアフィニティＣＰＵ０空間の番地５２_１からＣＰＵ０（１１）のキャッシュメモリ０（２１）のライン２１_２に４バイトのデータがコピーされる。同様に、キャッシュ間のコヒーレンシを取らない空間５２のアフィニティＣＰＵ１空間の番地５２_２からＣＰＵ１（１２）のキャッシュメモリ１（２２）のライン２２_２に４バイトのデータがコピーされる。また、キャッシュ間のコヒーレンシを取る空間５１の番地５１_１からキャッシュメモリ０（２１）のライン２１_１およびキャッシュメモリ１（２２）のライン２２_１に４バイトのデータがそれぞれコピーされる。
【００３０】
このとき、キャッシュメモリ０（２１）のキャッシュラインには、スヌープ制御部３０によるキャッシュコヒーレンシを取るライン２１_１とキャッシュコヒーレンシを取らないライン２１_２とが混在している。同様に、キャッシュメモリ１（２２）のキャッシュラインには、スヌープ制御部３０によるキャッシュコヒーレンシを取るライン２２_１とキャッシュコヒーレンシを取らないライン２２_２とが混在している。
【００３１】
本実施の形態にかかるマルチプロセッサシステムでは、プロセッサ・アフィニティ付けされたプロセス及びスレッド１１_２は、キャッシュメモリ０（２１）のライン２１_２にコピーされたデータを用いて実行される。また、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド１１_１は、キャッシュメモリ０（２１）のライン２１_１にコピーされたデータを用いて実行される。
【００３２】
同様に、プロセッサ・アフィニティ付けされたプロセス及びスレッド１２_２は、キャッシュメモリ１（２２）のライン２２_２にコピーされたデータを用いて実行される。また、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド１２_１は、キャッシュメモリ１（２２）のライン２２_１にコピーされたデータを用いて実行される。
【００３３】
次に、図５及び図６を用いて、図４に示した本実施の形態にかかるマルチプロセッサシステムにおいて、キャッシュメモリ０のライン２１_２のデータが、プロセッサ・アフィニティ付けされたプロセス及びスレッド１１_２により更新された場合の動作について説明する。
【００３４】
プロセッサ・アフィニティ付けされたプロセス及びスレッド１１_２がキャッシュメモリ０（２１）のライン２１_２のデータの更新を要求した場合、キャッシュメモリ０（２１）はライン２１_２のデータを更新する。このとき、キャッシュメモリ０（２１）とキャッシュメモリ１（２２）はキャッシュコヒーレンシを取っている。しかし、キャッシュメモリ０のライン２１_２のデータは、キャッシュ間のコヒーレンシを取らない空間５２のデータである。よって、スヌープ制御部３０がキャッシュコヒーレンシを保つためにキャッシュメモリ０のライン２１_２のデータ更新について情報を流すことはない。また、キャッシュメモリ１（２２）に同じキャッシュラインが存在することもない。
【００３５】
図６は、この場合のＣＰＵ０（１１）のキャッシュメモリ０（２１）とＣＰＵ１（１２）のキャッシュメモリ１（２２）の動作を説明するためのフローチャートである。図６に示すように、ＣＰＵ０（１１）のキャッシュメモリ０（２１）のライン２１_２（非共有ライン）は、プロセッサ・アフィニティ付けされたプロセス及びスレッド１１_２からキャッシュメモリ０（２１）のライン２１_２のデータ更新の要求があった場合、ライン２１_２のデータを更新する（Ｓ１１）。このとき、ＣＰＵ１（１２）のキャッシュメモリ１（２２）のラインは更新されることはない（Ｓ２１）。
【００３６】
次に、図７及び図８を用いて、図４に示した本実施の形態にかかるマルチプロセッサシステムにおいて、キャッシュメモリ０（２１）のライン２１_１のデータが、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド１１_１により更新された場合の動作について説明する。
【００３７】
プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド１１_１によりキャッシュメモリ０（２１）のライン２１_１のデータが更新される。このとき、スヌープ制御部３０はキャッシュメモリ０（２１）とキャッシュメモリ１（２２）のキャッシュコヒーレンシを取っている。よって、キャッシュメモリ０（２１）のライン２１_１と同一のデータを保持していたキャッシュメモリ１（２２）のライン２２_１は無効にされる。
【００３８】
図８は、この場合のＣＰＵ０（１１）のキャッシュメモリ０（２１）とＣＰＵ１（１２）のキャッシュメモリ１（２２）の動作を説明するためのフローチャートである。図８に示すように、ＣＰＵ０（１１）のキャッシュメモリ０（２１）のライン２１_１（共有ライン）は、プロセッサ・アフィニティ付けされていない通常のプロセス及びスレッド１１_１からライン２１_１のデータの更新の要求があった場合、ライン２１_１のデータを更新する（Ｓ３１）。そして、スヌープ制御部３０はバス４０にキャッシュメモリ０（２１）のライン２１_１のデータが更新されたという情報を流す（Ｓ３２）。
【００３９】
そして、ＣＰＵ１（１２）のキャッシュメモリ１（２２）はキャッシュメモリ０（２１）のライン２１_１と同一のデータを保持しているライン（共有ライン）が存在するかチェックをする（Ｓ４１）。同じラインがない場合は処理を終了する。一方、キャッシュメモリ０（２１）のライン２１_１と同一のデータを保持しているライン（共有ライン）が存在する場合は、該当するキャッシュメモリ１（２２）のライン（この場合は、図７の２２_１）の共有状態を取り下げる。このとき、ＣＰＵ１（１２）のキャッシュメモリ１（２２）はスヌープ制御部３０を通してバスを監視しており、キャッシュメモリ０（２１）のライン２１_１が更新されたことを検知して、キャッシュメモリ１（２２）のライン２２_１を無効化する（Ｓ４２）。
【００４０】
このように、本実施の形態にかかるマルチプロセッサシステムでは、共有メモリ５０にキャッシュ間のコヒーレンシを取る空間５１とキャッシュ間のコヒーレンシを取らない空間５２を割り当て、プロセッサ・アフィニティ付けされたプロセス及びスレッドをキャッシュ間のコヒーレンシを取らない空間５２で動作させている。このため、プロセッサ・アフィニティ付けされたプロセス及びスレッドを、他のＣＰＵのキャッシュメモリの影響を受けない空間（キャッシュ間のコヒーレンシを取らない空間５２）で動作させることがきるので、キャッシュメモリを有効に活用でき実行効率を向上することができる。
【００４１】
すなわち、従来、ＳＭＰ対応ＯＳはプロセッサ・アフィニティ付プロセス及びスレッドが動作するプロセッサを管理するのみで、プロセス及びスレッドが動作するメモリ空間についてはアフィニティ付けされてないプロセス及びスレッドと同様にキャッシュ間のコヒーレンシを取る空間で動作させていた。
【００４２】
しかし、本実施の形態にかかるマルチプロセッサシステムでは、上述したようにプロセッサ管理だけではなくプロセス及びスレッドが動作するメモリ空間の管理も行うことで、スヌープ制御部によるキャッシュコヒーレンシに起因するオーバヘッドを削減し、キャッシュメモリを有効に活用することを可能にした。
【００４３】
また、特許文献１に開示されている技術では、同一のキャッシュメモリを使用するプロセッサをグルーピングして管理することでキャッシュ間データ転送のオーバヘッドの発生を削減することを期待できる。しかし、プロセッサ・アフィニティ付けされたプロセス及びスレッドは共有メモリ上で動作していると考えられるため、スヌープ制御部によるキャッシュコヒーレンシに起因するオーバヘッドがキャッシュメモリの実行効率を低下させている。
【００４４】
これに対して、本実施の形態にかかるマルチプロセッサシステムでは、プロセッサ・アフィニティ付けされたプロセス及びスレッドを、他のＣＰＵのキャッシュメモリの影響を受けない空間（キャッシュ間のコヒーレンシを取らない空間５２）で動作させることがきるので、キャッシュメモリを有効に活用でき実行効率を向上することができる。
【００４５】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【００４６】
１１〜１４  ＣＰＵ
１１_１、１２_１  通常のプロセス及びスレッド
１１_２、１２_２  プロセッサ・アフィニティ付けされたプロセス及びスレッド
２１〜２４  キャッシュメモリ
２１_１、２１_２、２２_１、２２_２  ライン
３０  スヌープ制御部
４０  バス
５０  共有メモリ
５１  キャッシュ間のコヒーレンシを取る空間
５１_１  番地
５２  キャッシュ間のコヒーレンシを取らない空間
５２_１、５２_２  番地
【図１】
2011150427.tif 000003
【図２】
2011150427.tif 000004
【図３】
2011150427.tif 000005
【図４】
2011150427.tif 000006
【図５】
2011150427.tif 000007
【図６】
2011150427.tif 000008
【図７】
2011150427.tif 000009
【図８】
2011150427.tif 000010
【図９】
2011150427.tif 000011
【図１０】
2011150427.tif 000012