(57)【要約】本発明は、プロセスを並列に実行する少なくとも２つのプロセッサと、それぞれ別個のプロセッサに関連し且つ接続された少なくとも２つのキャッシュメモリユニットと、前記プロセッサと前記キャッシュメモリユニットとを接続する接続バスと、前記接続線に接続され、前記プロセッサが実行するための利用可能なプロセスのプロセスリストを記憶するプロセスリストユニットとを具備してなるマルチプロセッサコンピュータシステムに関する。実行プロセスが利用可能な場合に高速の起動手順を保証する一方で、そのような利用可能な実行プロセスがない場合に節電を可能とするために、本発明によれば、前記プロセッサは、前記プロセスリストへのプロセスのプロセス付加を通知するグローバル起動変数をそれらの関連するキャッシュメモリユニットにロードし、前記プロセッサが実行するプロセスが前記プロセスリストに含まれていない場合には低電力モードに切替わり、前記起動変数が前記プロセスリストへのプロセスの付加を通知する場合には通常電力モードに切替わるように適合化されることが提案される。そのため、本発明によれば、実行されるプロセスの利用可能性を伝達しかつ通知するためのキャッシュ一貫性プロトコルを用いる。
2005531860.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサコンピュータシステムであって、
プロセスを並列に実行する少なくとも２つのプロセッサと、
それぞれ別個のプロセッサに関連し且つ接続された少なくとも２つのキャッシュメモリユニットと、
前記プロセッサと前記キャッシュメモリユニットとを接続する接続バスと、
前記接続線に接続され、前記プロセッサが実行するための利用可能なプロセスのプロセスリストを記憶するプロセスリストユニットと、を備え、
前記プロセッサは、前記プロセスリストへのプロセスのプロセス付加を通知するグローバル起動変数をそれらの関連するキャッシュメモリユニットにロードし、前記プロセッサが実行するプロセスが前記プロセスリストに含まれていない場合には低電力モードに切替わり、前記起動変数が前記プロセスリストへプロセス付加を通知する場合には通常電力モードに切替わるように適合化されている、マルチプロセッサコンピュータシステム。
【請求項２】
関連するキャッシュメモリユニットに保持されている起動変数が前記プロセスリストへのプロセスの付加に起因して変化すると、前記プロセッサは通常電力モードに切替わるように適合化されている、請求項１に記載のマルチプロセッサコンピュータシステム。
【請求項３】
前記プロセッサは、前記プロセスリストへプロセスを付加する際に、前記起動変数に対する記憶コマンドを実行するように適合化されている、請求項１に記載のマルチプロセッサコンピュータシステム。
【請求項４】
前記プロセッサは、前記プロセスリストへプロセスを付加する際に、他のプロセッサに対してそれらの関連するキャッシュメモリユニットから前記起動変数を消去する要求を送るように適合化されている、請求項１に記載のマルチプロセッサコンピュータシステム。
【請求項５】
前記コンピュータシステムは、無効化に基づくキャッシュ一貫性プロトコルを実施するように適合化されている、請求項１に記載のマルチプロセッサコンピュータシステム。
【請求項６】
プロセスを並列に実行する少なくとも２つのプロセッサと、
それぞれ別個のプロセッサに関連し且つ接続された少なくとも２つのキャッシュメモリユニットと、
前記プロセッサと前記キャッシュメモリユニットとを接続する接続バスと、
前記接続線に接続され、前記プロセッサが実行するための利用可能なプロセスのプロセスリストを記憶するプロセスリストユニットと、を備えるマルチプロセッサコンピュータシステムにおいて使用されるプロセッサであって、
前記プロセスリストにプロセスが付加されるプロセス付加を通知するグローバル起動変数をその関連するキャッシュメモリユニットにロードし、自身が実行するプロセスが前記プロセスリストに含まれていない場合には低電力モードに切替わり、前記起動変数が前記プロセスリストへプロセスの付加を通知する場合には通常電力モードに切替わるように適合化されている、プロセッサ。
【請求項７】
プロセスを並列に実行する少なくとも２つのプロセッサと、
それぞれ別個のプロセッサに関連し且つ接続された少なくとも２つのキャッシュメモリユニットと、
前記プロセッサと前記キャッシュメモリユニットとを接続する接続バスと、
前記接続線に接続され、前記プロセッサが実行するための利用可能なプロセスのプロセスリストを記憶するプロセスリストユニットと、を備えるマルチプロセッサコンピュータシステムにおいてプロセスの実行をスケジューリングする方法であって、
プロセッサによって前記プロセスリストへのプロセスのプロセス付加を通知するグローバル起動変数をその関連するキャッシュメモリユニットにロードするステップと、
前記プロセスリストにプロセスを付加するステップと、
前記プロセスリストへのプロセスの前記付加を通知する起動変数を変化させ、これにより前記プロセッサを低電力モードから通常電力モードへ切替えさせるステップと、
を備える、方法。
【請求項８】
プロセスを並列に実行する少なくとも２つのプロセッサと、
それぞれ別個のプロセッサに関連し且つ接続された少なくとも２つのキャッシュメモリユニットと、
前記プロセッサと前記キャッシュメモリユニットとを接続する接続バスと、
前記接続線に接続され、前記プロセッサが実行するための利用可能なプロセスのプロセスリストを記憶するプロセスリストユニットと、を備えるマルチプロセッサコンピュータシステムにおいてプロセッサによりプロセスを実行する方法であって、
前記プロセスリストへのプロセスのプロセス付加を通知するグローバル起動変数を、関連するキャッシュメモリユニットにロードするステップと、
前記プロセスリストが前記プロセッサによって実行されるプロセスを含んでいない場合に低電力モードに切替えるステップと、
前記起動変数が前記プロセスリストへのプロセスの付加を通知する場合に通常電力モードに切替えるステップと、
前記プロセスリストへアクセスし、前記付加されたプロセスを獲得して実行するステップと、
を備える、方法。
【請求項９】
請求項７または８に記載された方法をコンピュータによって実行する場合、前記コンピュータに前記方法のステップを実行させるコンピュータプログラムコード手段を備えるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、
プロセスを並列に実行する少なくとも２つのプロセッサと、
それぞれ別個のプロセッサに関連し且つ接続された少なくとも２つのキャッシュメモリユニットと、
前記プロセッサと前記キャッシュメモリユニットとを接続する接続バスと、
前記接続線に接続され、前記プロセッサが実行するための利用可能なプロセスのプロセスリストを記憶するプロセスリストユニットと、を備えるマルチプロセッサコンピュータシステムに関する。
【０００２】
また、本発明は、対応するプロセッサ、プロセスの実行をスケジューリングする方法、およびこのようなマルチプロセッサコンピュータシステムにおいてプロセッサによりプロセスを実行する方法に関する。さらに、本発明は、前記方法を実施するコンピュータプログラムに関する。
【背景技術】
【０００３】
マルチプロセッサコンピュータシステムは複数のプロセスを並列に実行する。各プロセッサは、実行可能な状態のプロセスを繰り返し選択し、プロセスがブロックするまで、または割込みスケジューリングの場合には実行中のプロセスのタイムスライスが終了するまで実行する。プロセッサまたは特にその関連するスケジューラが選択できるプロセスがない場合、プロセッサまたはそのスケジューラは、実行可能なレディープロセス（ｒｅａｄｙ  ｐｒｏｃｅｓｓ）がプロセスリストで利用可能となるまで、それぞれスピンループで待機する。レディープロセスは、他のプロセッサで実施されているプロセスが実行するブロック解除操作、例えばＶセマフォー操作によって利用可能になる。
【０００４】
電力消費を節約するためには、レディープロセスが利用可能になるまでプロセッサを回転させておくのではなく、プロセッサを低電力またはスリープモードに切替えることが好ましい。しかし、大きな経費をかけずに他のプロセッサがスリープ状態のプロセッサを起動できることが重要である。プロセッサをスリープモードから起動させる標準的な方法は、プロセッサに割り込みを送ることである。この方法では、細粒度の同期を有する多くの並列アプリケーションの場合に経費が大きくなる場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、本発明の目的は、プロセスを高速で効率的に実行する方法を提供し、非常に短い時間で且つ大きな経費をかけることなく、プロセッサを低電力モードと通常電力モードとの間で切替えることができるマルチプロセッサコンピュータシステム、対応するプロセッサ、プロセスの実行をスケジューリングする方法、および前記システムにおいてプロセッサによりプロセスを実行する方法を提供することである。
【課題を解決するための手段】
【０００６】
この目的は、本発明によって請求項１に記載されているマルチプロセッサコンピュータシステムにより達成され、前記プロセッサは、前記プロセスリストへのプロセスのプロセス付加を通知するグローバル起動変数をそれらの関連するキャッシュメモリユニットにロードし、前記プロセッサが実行するプロセスが前記プロセスリストに含まれていない場合には低電力モードに切替わり、前記起動変数が前記プロセスリストへプロセス付加を通知する場合には通常電力モードに切替わるように適合化されている。
【０００７】
本発明は、キャッシュ一貫性プロトコルを用いてスリープ状態のプロセッサを起動するという考えに基づいている。キャッシュ一貫性プロトコルは割り込みよりもはるかに速く伝達するように設計されているため、非常に効率的に且つ高速でスリープ状態のプロセッサを起動ことが可能となる。本発明によれば、グローバル起動変数が導入され、これはプロセッサのキャッシュメモリユニットによって保持される。前記起動変数は、プロセスリストへプロセスが付加されたか否かを通知する。プロセッサがプロセスリストにプロセスを付加すると、これは直ちにキャッシュ一貫性プロトコルを介してプロセッサのキャッシュメモリユニットに通知されて、プロセッサが低電力モードから通常電力モードに切替わる。
【０００８】
本発明の好ましい実施の態様は従属請求項に記載されている。このようなマルチプロセッサコンピュータシステムにおいて使用されるプロセッサは請求項６に記載されている。プロセスの実行をスケジューリングする方法は請求項７に記載されている。プロセッサによりプロセスを実行する方法は請求項８に記載されている。前記方法を実行するコンピュータプログラムは請求項９に記載されている。尚、これらの装置および方法、並びにコンピュータプログラムを、請求項１の従属請求項に記載されているものと同様のまたは同一の方法でさらに発展させることができる点に留意されたい。
【０００９】
請求項２に記載されている第１の好ましい実施の態様によれば、プロセッサの通常電力モードへの切替えは、プロセスリストにプロセスを付加することに起因する起動変数の変化によって行われる。従って、プロセスリストにプロセスを付加するプロセッサは、例えば、請求項３の好ましい実施の態様に記載されているような記憶コマンドを実行し、前記変数に何らかの新たな値を書き込むことによって起動変数を変化させるだけでよい。これは前記起動変数を保持しているすべてのキャッシュメモリユニットに直ちに通知され、これにより、関連するプロセッサが低電力モードから通常電力モードに切替わる。
【００１０】
本発明の他の側面によれば、プロセッサは、前記プロセスリストにプロセスを付加する際に、他のプロセッサに対してそれらの関連するキャッシュメモリユニットから起動変数を消去する要求を送るように適合化されている。このようにしても、他のプロセッサには、プロセスリストに新たなプロセスが付加されたことが直ちに通告されるので、プロセスリストからプロセスを獲得して実行することを試みる通常電力モードに切替わる。
【００１１】
無効化に基づくキャッシュ一貫性プロトコルが、本発明によるマルチプロセッサコンピュータシステムにおいて実施されることが好ましい。即ち、メモリユニットからの読み出しコマンドでは、他のキャッシュメモリユニットがメモリユニットよりも最新バージョンのデータを含んでいるか否かについて確認される。含んでいる場合には、より最新バージョンのデータを保持しているプロセッサはそれをメモリに供給する。キャッシュメモリユニットへのデータの書き込みコマンドでは、他のプロセッサが同一のデータ項目をキャッシュしているか否かについて確認される。キャッシュしている場合は、他のプロセッサはそのデータ項目を無効とし、即ちそれらのキャッシュメモリユニットからそのデータ項目を除去する。キャッシュ一貫性プロトコル、特に無効化に基づくキャッシュ一貫性プロトコルのさらなる詳細に関しては、Ｊｏｈｎ  Ｌ．  Ｈｅｎｎｅｓｓｙ  ａｎｄ  Ｄａｖｉｄ  Ａ．  Ｐａｔｔｅｒｓｏｎ，  ”Ｃｏｍｐｕｔｅｒ  ａｒｃｈｉｔｅｃｔｕｒｅ，  ａ  ｑｕａｎｔｉｔａｔｉｖｅ  ａｐｐｒｏａｃｈ”，  Ｍｏｒｇａｎ  Ｋａｕｆｍａｎ  Ｐｕｂｌｉｓｈｅｒｓ，  ｓｅｃｏｎｄ  ｅｄｉｔｉｏｎ、特に第８．３章を参照されたい。
【発明を実施するための最良の形態】
【００１２】
図面を参照して本発明をより詳細に説明する。  
図１は、既知のマルチプロセッサコンピュータシステムのブロック図を示している。前記コンピュータシステムはいくつかの、本例においては４つのプロセッサ１、いわゆる中央演算処理装置（ＣＰＵ）を備え、各プロセッサにはキャッシュメモリユニット２が関連し且つ接続されている。さらに、前記プロセッサ１によって実行されるプロセスのリストを含む共有メモリユニット３、例えばランダムアクセスメモリユニットが設けられている。プロセッサ１はキャッシュメモリユニット２を介してバス等の相互接続線４に相互接続され、この相互接続線４には、プロセスリストユニットをも含むであろうと考えられるメモリユニット３も接続されている。
【００１３】
このようなマルチプロセッサコンピュータシステムにおいてプロセスの実行をスケジューリングする既知の方法が、図２にフローチャートとして示されている。レディープロセス、即ちプロセッサによる実行の準備ができているプロセスを選択することは、「プロセスリスト」と呼ばれるレディープロセスのリストにプロセスが現れるまで待機することからなる（ステップＳ１０）。複数のプロセッサがこれを待機することができ、プロセスリストは、プロセッサがリストからレディープロセスを取り出す前に他のプロセッサに取られてしまう可能性があるので、ロックによって保護される（Ｓ１１）。レディープロセスはステップＳ１２においてリストから取り出され、その後、プロセスを獲得して実行することを試みる他のプロセッサがアクセスするためにプロセスリストは再びロック解除される（Ｓ１３）。プロセッサは、プロセスリストから実行するプロセスを獲得することに成功した場合（Ｓ１４）、このプロセスを実行し、成功しなかった場合には初めに戻って、プロセスリストからプロセスを獲得することを試みる状態に設定される。従って、現在プロセスを実行していないプロセッサは、待機状態またはスピンループの一種として、プロセスリストが空になっているか否かを連続的に確認する（Ｓ１０）。
【００１４】
図３は、フローチャートの形態の本発明によるプロセスの実行をスケジューリングする方法の実施の形態を示している。本発明によれば、プロセスリストへの付加を通知するために用いられるグローバル変数「起動」が導入される。初めは、プロセッサは通常電力モードにあり、レディープロセスを探索していると仮定する。第１のステップ２０において、プロセッサは、通常ロード命令を用いて起動変数を含むキャッシュラインがまだ取り入れられていない場合には、それをそのキャッシュメモリにロードする。次に、プロセッサは、プロセスリストが空であるか否かを確認する（Ｓ２１）。プロセッサは、ステップ２１においてプロセスリストにレディープロセスを発見した場合、ステップ２２においてまずプロセスリストをロックして、他のプロセッサが前記プロセスリストにアクセスすることを防止する。次に、プロセッサはプロセスリストからプロセスを獲得し（Ｓ２３）、その後プロセスリストは再びロック解除される（Ｓ２４）。
【００１５】
ステップ２３が成功した場合、プロセッサは取り出したプロセスを実行する（Ｓ２５）。そのプロセスの内容は復元され、プロセスは実行を継続する。  
ステップ２３が成功しなかった場合、いわゆるｓｌｅｅｐ−ｗｈｉｌｅ−ｃａｃｈｅｄ（ｓｗｃ）命令が起動変数をパラメータとして実行される（Ｓ２７）。即ち、プロセッサはその通常電力モードからその低電力モード、即ちある種のスリープモードへ切替わり、起動変数がその関連するキャッシュメモリユニットにある限り、より正確には、そのキャッシュメモリユニットのキャッシュラインが起動変数を保持している限りその状態が維持される。ステップ２１で肯定的な結果を出した場合、即ちプロセスリストが空であることが判明した場合、同一のｓｗｃ命令が実行される（Ｓ２６）。
【００１６】
図４に示されているように、他のプロセッサがプロセスリストにプロセスを添加して実行する場合、まずプロセスリストをロックし（Ｓ３０）、その後で実際にプロセスを添加する（Ｓ３１）。プロセスリストを再びロック解除した後（Ｓ３２）、起動変数に対して記憶コマンドが実行され、即ち起動変数に新たな値が割り当てられる（Ｓ３３）。これによって、プロセスリストに新たなプロセスが付加されたことが低電力モードにあるすべてのプロセッサに直ちに通知され、このようなプロセッサのキャッシュメモリユニットにおいてはキャッシュラインが無効にされ、その結果プロセッサは低電力モードから通常電力モードに戻るように切替えられ、再度ステップ２０を開始する（図３を参照）。
【００１７】
この方法によって、プロセスを実行していないプロセッサは通常電力モードにおいてスピンループで待機せず、低電力モードに切替えられるので、多くの電力を節約することができる。しかし、本発明によれば、スリープ状態のプロセッサのキャッシュメモリユニットに保持されている前記起動変数を用いてプロセスリストにプロセスが付加されたことを通知するためのキャッシュ一貫性プロトコルを使用するので、起動手順は非常に高速になり、特に割り込みを用いる場合よりも高速となる。
【００１８】
本発明が実施されるマルチプロセッサコンピュータシステムのブロック図が図５に示されている。本発明によれば、プロセッサ１とキャッシュメモリユニット２との間に、通常のデータ経路６の他にさらなる通信線７、８が付加されている。通信線７を用いてプロセッサ１からキャッシュメモリユニット２へ起動アドレスが伝達され、即ちｓｗｃ命令によって指定されたアドレスがキャッシュメモリユニット２へ送られる。指定されたアドレスがキャッシュメモリユニットから消えた際に、通信線８を用いてキャッシュメモリユニット２からプロセッサ１へ起動信号を伝達して、プロセッサ１を低電力モードから通常電力モードへ切替える。
【００１９】
図４のステップ３３においてプロセッサが通常記憶命令である起動変数に対する任意の値を記憶している場合、以下のことが発生する。他のプロセッサがレディープロセスを探索している場合、そのプロセッサはそのキャッシュメモリユニット内に起動変数を有し、即ちキャッシュには起動変数が記憶されているメモリブロックに対応するキャッシュラインが含まれている。他のプロセッサが起動変数をキャッシュしている場合、起動変数に対する任意の値を記憶しようとしているプロセッサは、キャッシュ一貫性プロトコルに防止されるので、このような記憶命令によって起動変数を変更することはできない。記憶動作を行うために、そのプロセッサは他のすべてのプロセッサに対して、それらのキャッシュメモリユニットから起動変数を消去することを要求するブロードキャストを送る。特にＭＳＩ、ＭＥＳＩまたはＭＯＥＳＩ型のキャッシュ一貫性プロトコルに関しては、プロセッサは共有または無効状態から変更状態へ遷移する。これによって、ｓｗｃ命令の後にスリープ状態であったプロセッサは起動し、通常電力モードに切替わる。その後これらのプロセッサはプロセスリストを確認し、それらのうちのいずれかが付加されたばかりのプロセスを獲得することに成功する。他のプロセッサはｓｗｃ命令に従って低電力モードに戻るように切替わる。
【００２０】
尚、プロセッサはプロセスリストからプロセスを獲得することを試みる前に起動変数をロードする点に留意されたい。これを逆の順番で行うと、プロセスリストにレディープロセスがあっても、プロセッサが低電力モードに切替わるという状況が起こる可能性がある。
【００２１】
プロセススケジューラにおいて電力を節約することの他に、上述のような本発明によるｓｗｃ命令は、プロセッサ間での高速同期化が必要とされる他の目的でも有用である可能性がある。多くのプロセッサが低電力スリープモードに切替わる命令を有しているが、非常に高速で効率的な解決策を提供する本発明によって提案されたようなキャッシュ一貫性トランザクションによって起動し且つ通常電力モードに切替わることができる既知のプロセッサおよびマルチプロセッサコンピュータシステムはない。
【図面の簡単な説明】
【００２２】
【図１】既知のマルチプロセッサコンピュータシステムのブロック図を示している。
【図２】プロセスの実行をスケジューリングする既知の方法のフローチャートを示している。
【図３】本発明によるプロセスの実行をスケジューリングする方法のフローチャートを示している。
【図４】本発明によるプロセスリストにプロセスを付加する方法のフローチャートを示している。
【図５】本発明によるマルチプロセッサコンピュータシステムのブロック図を示している。
【図１】
2005531860.tif 000003
【図２】
2005531860.tif 000004
【図３】
2005531860.tif 000005
【図４】
2005531860.tif 000006
【図５】
2005531860.tif 000007
【国際調査報告】
2005531860.tif 000008
2005531860.tif 000009
2005531860.tif 000010