(57)【要約】【課題】節電効果の高いデータ処理装置及び共用資源へのアクセス制御方法を提供する。【解決手段】データ処理装置は、共用資源へのアクセスを要求するそれぞれのデータ処理演算を実行する複数のプロセッサ、及び複数のプロセッサを相互接続するパスを有する。アクセス制御機構は、複数のプロセッサによる共用資源へのアクセスを制御する。各プロセッサは、共用資源へのアクセスが必要であるが、アクセス制御機構がそのプロセッサが共用資源にアクセスすることを阻止する場合に、節電モードに入る。更に、各プロセッサは、そのプロセッサが共用資源へアクセスしているときに、共用資源へのアクセスがそのプロセッサにとって最早必要でなくなったときに、パス上に通知を発行する。節電モードにあるプロセッサは、その通知を受信すると、節電モードを脱出して、共用資源へのアクセスをシークするように構成される。【選択図】図１
2010003315.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置において、
共用資源へのアクセスを要求する、それぞれのデータ処理操作を実行する複数のプロセッサと、
複数のプロセッサによる共用資源へのアクセスを制御するアクセス制御機構と、
複数のプロセッサを相互接続するパスと、を含み、
各プロセッサは、前記共用資源へのアクセスを必要とするが、アクセス制御機構がそのプロセッサによる共用資源へのアクセスを阻止する場合に、節電モードに入り、
各プロセッサは、更に、そのプロセッサが共用資源へのアクセスを得ているときに、そのプロセッサにとって共用資源へのアクセスが最早必要でなくなったときに、前記パス上に通知を発行し、
前記節電モードにあるプロセッサは、前記通知を受信すると、前記節電モードから脱出して、供給資源へのアクセスをシークする、
前記データ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、パスは、前記複数のプロセッサ間で前記通知を転送するための専用パスを含んでおり、前記プロセッサの各々は、前記パスに接続されたポートを有している前記データ処理装置。
【請求項３】
請求項１に記載のデータ処理装置において、各プロセッサは、共用資源へのアクセスが最早必要でなくなったときに、前記複数のプロセッサのうちの残りのものに対して通知を放送する前記データ処理装置。
【請求項４】
請求項１に記載のデータ処理装置において、各プロセッサは、前記通知がパスからそのプロセッサに受信されたときにセットされる制御記憶を有している前記データ処理装置。
【請求項５】
請求項１に記載のデータ処理装置において、各プロセッサは、前記共用資源へのアクセスが必要であるが、アクセス制御機構がそのプロセッサによる共用資源へのアクセスを阻止する場合に、通知待機命令を実行して、前記節電モードに入らせる前記データ処理装置。
【請求項６】
請求項４に記載のデータ処理装置において、各プロセッサは、前記共用資源へのアクセスが必要であるが、アクセス制御機構がそのプロセッサによる共用資源へのアクセスを阻止する場合に、前記節電モードを起動させるための通知待機命令を実行し、また通知待機命令を実行するときに、プロセッサは、制御記憶がセットされているかどうかをチェックして、もしそうであれば、節電モードに入ることを中止する前記データ処理装置。
【請求項７】
請求項１に記載のデータ処理装置において、各プロセッサは、共用資源へのアクセスがそのプロセッサにとって最早必要でなくなったときに、前記通知を前記パス上に発行するための通知送信命令を実行する前記データ処理装置。
【請求項８】
請求項１に記載のデータ処理装置において、アクセス制御機構は、共用資源に付随するロックを含んでおり、その共用資源が前記プロセッサの１つによってアクセスされるときに、また共用資源へのアクセスがそのプロセッサにとって最早必要でなくなったときに、そのプロセッサが前記パス上に前記通知を発行する前に、ロックがクリアされる前記データ処理装置。
【請求項９】
請求項８に記載のデータ処理装置において、前記プロセッサの１つが前記共用資源へのアクセスを希望するときに、そのプロセッサは、付随するロックがクリアされているかどうかをチェックする原子操作を実行し、もしそうであれば、付随するロックをセットする前記データ処理装置。
【請求項１０】
請求項９に記載のデータ処理装置において、プロセッサは、プロセッサにロックの値を読み出させ、ロックにセット値を書き込ませ、そして読み出した値から、付随するロックがクリアされているかどうかを判断するためのスワップ命令を実行することによって前記原子操作を実行する前記データ処理装置。
【請求項１１】
請求項９に記載のデータ処理装置において、更に、
複数のプロセッサによるロックへのアクセスを監視するためのモニタ論理を含み、
プロセッサは、
ロックの値を読み出し、またモニタ論理によるロックの監視を開始させるためのロード命令を実行することと、及び
モニタ論理が、ロックの値がロード命令を用いて読み出されたとき以降、他のプロセッサがロックの値を修正していないことを示している場合は、ロックに対してセット値を記憶させるためのストア命令を実行すること、
によって前記原子操作を実行する前記データ処理装置。
【請求項１２】
請求項１に記載のデータ処理装置において、共用資源がデータ構造である前記データ処理装置。
【請求項１３】
請求項１２に記載のデータ処理装置において、データ構造がスレーブ装置内部に設けられる前記データ処理装置。
【請求項１４】
請求項１２に記載のデータ処理装置において、データ構造がメモリ内部に設けられる前記データ処理装置。
【請求項１５】
請求項１に記載のデータ処理装置において、複数の共用資源を含み、アクセス制御機構は、共用資源の各々に対するアクセスを制御する前記データ処理装置。
【請求項１６】
請求項１５に記載のデータ処理装置において、アクセス制御機構は、各共用資源に関してロックを含んでいる前記データ処理装置。
【請求項１７】
請求項１に記載のデータ処理装置において、各プロセッサは、前記節電モードにあるとき、もしそのプロセッサによって例外が受信されれば前記節電モードを脱出する前記データ処理装置。
【請求項１８】
共用資源へのアクセスを要求するそれぞれのデータ処理演算を実行する複数のプロセッサを有し、複数のプロセッサを相互接続するパスが設けられているデータ処理装置における、共用資源へのアクセスを制御する方法において、本方法は、
（ｉ）複数のプロセッサによる共用資源へのアクセスを制御するためのアクセス制御機構を設けることと、
（iｉ）前記プロセッサの１つによって前記共用資源へのアクセスが要求されるものの、アクセス制御機構がそのプロセッサによる共用資源へのアクセスを阻止する場合に、そのプロセッサを節電モードに入れることと、
（ｉｉｉ）前記プロセッサの１つが、共用資源にアクセスしているときに、共用資源へのアクセスがそのプロセッサにとって最早必要でなくなったときに、そのプロセッサに前記パス上へ通知を発行させることと、及び
（ｉｖ）前記節電モードにあるプロセッサに対して、前記通知を受信することによって、前記節電モードから脱出させ、共用資源へのアクセスをシークさせること、
の工程を含む前記方法。
【請求項１９】
請求項１８に記載の方法において、パスは、各々が前記パスへ接続されたポートを有する前記複数のプロセッサ相互間で前記通知を転送するための専用パスを含んでいる前記方法。
【請求項２０】
請求項１８に記載の方法において、前記工程（ｉｉｉ）において、前記複数のプロセッサの残りのものに対して通知が放送される前記方法。
【請求項２１】
請求項１８に記載の方法において、各プロセッサが制御記憶を有しており、本方法は、更に、そのプロセッサによってパスから前記通知が受信されたときに、その制御記憶をセットする工程を含む前記方法。
【請求項２２】
請求項１８に記載の方法において、前記工程（iｉ）は、前記節電モードに入らせるための通知待機命令を実行する工程を含んでいる前記方法。
【請求項２３】
請求項２１に記載の方法において、前記工程（iｉ）は、前記節電モードに入らせるための通知待機命令を実行する工程を含んでおり、また通知待機命令を実行するときに、プロセッサは、制御記憶がセットされているかどうかを判断し、もしそうであれば、節電モードに入ることを中止する前記方法。
【請求項２４】
請求項１８に記載の方法において、前記工程（ｉｉｉ）は、前記通知を前記パス上に発行させる通知送信命令を実行する工程を含んでいる前記方法。
【請求項２５】
請求項１８に記載の方法において、アクセス制御機構は、共用資源に付随するロックを有しており、前記プロセッサの１つによってその共用資源がアクセスされたときは、ロックがセットされ、また共用資源へのアクセスがそのプロセッサにとって最早必要でなくなったときは、前記工程（ｉｉｉ）においてそのプロセッサが前記パス上に前記通知を発行する前に、ロックがクリアされる前記方法。
【請求項２６】
請求項２５に記載の方法において、前記プロセッサの１つが前記共用資源へのアクセスを希望するときに、そのプロセッサは、付随するロックがクリアされているかをチェックするための原子操作を実行し、もしそうであれば、付随するロックをセットする前記方法。
【請求項２７】
請求項２６に記載の方法において、プロセッサは、ロックの値を読み出し、ロックに対してセット値を書き込み、そして読み出した値から付随するロックがクリアされているかどうかを判断するためのスワップ命令を実行することによって前記原子操作を実行する前記方法。
【請求項２８】
請求項２６に記載の方法において、プロセッサは、
ロックの値を読み出すためのロード命令を実行することと、
複数のプロセッサによるロックへのアクセスを監視するためにモニタ論理を起動することと、及び
モニタ論理が、ロックの値がロード命令を用いて読み出されて以降、他のプロセッサがロックの値を修正していないことを示している場合には、ロックに対してセット値を記憶させるためのストア命令を実行すること、
によって前記原子操作を実行する前記方法。
【請求項２９】
請求項１８に記載の方法において、共用資源がデータ構造である前記方法。
【請求項３０】
請求項２９に記載の方法において、データ構造がスレーブ装置内部に設けられる前記方法。
【請求項３１】
請求項２９に記載の方法において、データ構造がメモリ内部に設けられる前記方法。
【請求項３２】
請求項１８に記載の方法において、データ処理装置は、複数の共用資源を含んでおり、アクセス制御機構は、共用資源の各々に対するアクセスを制御する前記方法。
【請求項３３】
請求項３２に記載の方法において、アクセス制御機構は、各共用資源に関するロックを含んでいる前記方法。
【請求項３４】
請求項１８に記載の方法において、各プロセッサは、前記節電モードにあるとき、もしそのプロセッサによって例外が受信されれば、前記節電モードを脱出する前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及びデータ処理装置の共用資源へのアクセスを制御する方法に関するものであって、更に詳細には、共用資源に対してアクセスを必要とするそれぞれのデータ処理演算を実行する複数のプロセッサを有するデータ処理装置においてそのようなアクセスを制御する方法に関する。
【背景技術】
【０００２】
２またはそれ以上のプロセッサ・コアが、１または複数の共用資源、例えば、共用メモリ領域に設けられた１または複数のデータ構造へのアクセスを共用するマルチ・プロセッシング・システムを提供することは既知である。そのようなシステムは、それぞれのデータ処理演算を並列的に実行させるように、異なるプロセッサ・コアを用意することによって、より高いパフォーマンスを得ようとして使用されるのが普通である。そのようなマルチ・プロセッシング能力を有する既知のデータ処理装置には、ＩＢＭ３７０システム及びＳＰＡＲＣマルチ・プロセッシング・システムが含まれる。これらの特別なマルチ・プロセッシング・システムは、高性能システムであり、電力効率及び電力消費にほとんど関心がなく、主たる目的は最大の処理速度である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
複数のプロセッサが共用資源にアクセスするマルチ・プロセッシング・システムにおける重要な関心事は、複数のプロセッサが資源に同時にアクセスすることによって、その資源のデータが矛盾したり、破壊されたりしないように、その共用資源へのアクセスを制御する機構を設けることである。この問題を解決するために、一般的なマルチ・プロセッサ・オペレーティング・システムは、矛盾する変更が行われることによって、共用資源のデータが矛盾したり、破壊されたりすることを防止するために、複数のプロセッサによる同時アクセスから共用資源を保護するためのロッキング機構のようなアクセス制御機構を提供する。もしロックがビジー状態にある、すなわちプロセッサの１つによってセットされていれば、そのロックに関連する共用資源にアクセスする必要がある別のプロセッサは、ロックが解放されるまで、あるいはロックがクリアされるまでは、待つ（ｗａｉｔ）以外に現実としてやることはない。例えば、１つのプロセッサが１つの装置からの割り込みを処理しているときは、それはその装置から受信したデータを共用キュー（ｑｕｅｕｅ）に加える必要がある。もし別のプロセッサがキューからデータを削除しつつあれば、第１のプロセッサは、キューが矛盾ない状態になるまで待機しなければならず、それがロックをセットし、新しいデータをキューに加える前に、ロックは解放されている。それは割り込みハンドラから戻れないので、そのデータがキューに加えられるまでは待たなければならない。
【０００４】
このような状況では、“スピン・ロック（ｓｐｉｎ−ｌｏｃｋ）”機構を設けることが知られている。この機構に従えば、保護されているデータへのアクセスを必要とするプロセッサは、そのロックを手に入れようとする。これには、ロックを読み取って、そのロックが現時点でクリアされていることが読み取り操作で示されれば、そのロックをセットすることが含まれる。もしロックが得られなければ、プロセッサは、そのロックが利用できるようになるまで、タイト・ループ（ｔｉｇｈｔ  ｌｏｏｐ）内で繰り返してそのロックを読み出そうとする。この時点で、プロセッサは、ロックを得ようともう一度試みることができる。
【０００５】
低電力消費が望まれるマルチ・プロセッシング・システムでは、このタイトな読み出しループは望ましくない。というのも、エネルギが消費されているのに有用な効果は得られず、更に、マルチ・スレッドを実行するシステムでは、待機スレッドによるスピン・ロックの実行は、動作性能にとって大いに有害である。
【０００６】
従って、共用資源へのアクセスを制御する進歩した方法を提供することが望まれる。
【課題を解決するための手段】
【０００７】
第１の態様から眺めたとき、本発明はデータ処理装置を提供する。それは、共用資源へのアクセスを必要とするそれぞれのデータ処理演算を実行する複数のプロセッサ；複数のプロセッサによる共用資源へのアクセスを制御するアクセス制御機構；複数のプロセッサを相互接続するパス；前記共用資源へのアクセスを必要とするが、アクセス制御機構がそのプロセッサが共用資源へアクセスするのを阻止する場合に、節電モードに入る各プロセッサ；更に、そのプロセッサが共用資源にアクセスしているときに、共用資源へのアクセスがそのプロセッサにとって最早必要でなくなったときに、前記パス上へ通知（ｎｏｔｉｆｉｃａｔｉｏｎ）を発信する各プロセッサ；前記節電モードにあって、前記通知を受け取ることによって、前記節電モードから脱して（ｅｘｉｔ）、共用資源へのアクセスをシーク（ｓｅｅｋ）するプロセッサ；を含む。
【０００８】
本発明に従えば、もしプロセッサが共用資源へのアクセスをシークするものの、アクセス制御機構によってそうすることを阻止されれば、節電モードに入るように構成される。そのプロセッサは、この節電モードにある間に、共用資源へのアクセスをシークし続けることはないため、そうでない場合と比べて大幅に少ない電力しか消費しない。更に、共用資源にアクセスしているプロセッサは、それが共用資源へのアクセスを最早必要としなくなったときは、通知を発行するように構成されており、その通知は、データ処理装置内で複数のプロセッサを相互接続しているパス上に発行される。節電モードに入っているプロセッサがこの通知を受信すると、そのプロセッサは、節電モードから脱して共用資源へのアクセスをシークし始める。このように、この通知は、節電モードにあるプロセッサをそのモードから“覚醒”させ、共用資源へのアクセスを再びシークさせる機構として用いられる。この方式によって、データ処理装置内部で顕著な節電効果が実現できることが分かった。
【０００９】
パスは多様な形態を取ることができることを理解されよう。しかし、１つの実施の形態では、このパスは、各々が前記パスに接続されたポートを有する複数のプロセッサ相互間で前記通知を転送するための専用パスを含む。これによって通知の伝播に遅延がないことが保証される。
【００１０】
１つの実施の形態では、複数のそのような共用資源が存在する場合は、節電モードに入ろうとするプロセッサは、特定の共用資源に興味を持つことを登録するように構成できることを理解されよう。その情報は、次に、その共用資源に現時点でアクセスしているプロセッサによって用いられて、それが後にその共用資源へのアクセスを最早必要としなくなったときに発行する通知が適切なプロセッサ（単数または複数）に向けて送られることを保証する。しかし、１つの実施の形態では、この方式は用いられない。その代わりに、各プロセッサは、共用資源へのアクセスが最早必要でなくなったときに、前記複数のプロセッサの残りのものに対して通知を放送する。こうすれば実施が簡略化され、通知が放送されるときに、どの共用資源が利用できるようになったかを指示することはしない。もし通知が、節電モードにあるプロセッサが必要とするものとは異なる共用資源に関するものであれば（あるいは、その通知に続いて別のプロセッサがすばやくその資源を入手した場合は）、節電モードから脱しようとして共用資源へのアクセスを獲得するのに失敗したそのプロセッサは、単に節電モードに再び戻って、次の通知を待つことになる。
【００１１】
１つの実施の形態では、各プロセッサは制御記憶（ｃｏｎｔｒｏｌ  ｓｔｏｒａｇｅ）を有し、それは前記通知がパスからそのプロセッサによって受信されたときにセットされる。これにより、通知をプロセッサに一時的に蓄えておくことができるので、プロセッサは、通知を受信したかどうかを制御記憶中のその値から判断できる。これは、その資源に対するアクセスをシークしているプロセッサがそのアクセスが阻止されたと判断した時点と、そのプロセッサが節電モードに入る時点との間に、別のプロセッサがその共用資源へのアクセスを最早必要としないと判断した（従って、通知を発行した）状況で特に有用である。制御記憶を利用すれば、そのような状況において、通知を見逃す可能性が回避される。
【００１２】
共用資源へのアクセスをシークするものの、そのようなアクセスを阻止されたプロセッサが節電モードに入る方法は複数存在することを理解されよう。しかし、１つの実施の形態では、各プロセッサは、前記共用資源へのアクセスが必要ではあるが、アクセス制御機構がそのプロセッサによる前記共用資源へのアクセスを阻止するときは、前記節電モードに入るための通知待機命令を実行する。従って、この実施の形態に従えば、共用資源へのアクセスをシークするが、アクセス制御機構によってその共用資源へのアクセスを阻止されるプロセッサは、節電モードに入るための特別な命令を実行し、通知が受信されるまで待つように構成される。
【００１３】
１つの特別な実施の形態では、各プロセッサ内部に制御記憶が設けられて、プロセッサは、通知待機命令を実行するときに、制御記憶がセットされているかどうかをチェックして、もしそうであれば節電モードに入ることを阻止する。あるいは、制御記憶がセットされていると判断したときは、プロセッサは単に制御記憶をクリアして、直ちに共用資源へのアクセスをシークするように構成できる。こうすれば、プロセッサが不必要に節電モードに入ることを避けることができる。
【００１４】
共用資源にアクセスしているプロセッサが、その資源へのアクセスが最早必要でなくなったときに、通知を発行するやり方は複数存在することを理解されよう。しかし、１つの実施の形態では、各プロセッサは、共用資源へのアクセスがそのプロセッサにとって最早必要なくなったときは、通知送信命令を実行して前記パス上へ前記通知を発行する。すなわち、この実施の形態では、各プロセッサは、現在アクセスしている共用資源へのアクセスが最早必要なくなったときに、通知を発行するための特別な命令を実行するように構成される。
【００１５】
アクセス制御機構は多様な形態を取ることができることは理解されよう。しかし、１つの実施の形態に従えば、アクセス制御機構は、共用資源に付随するロックを含み、その共用資源が前記プロセッサの１つによってアクセスされるときは、ロックがセットされ、また、そのプロセッサにとって共用資源へのアクセスが最早必要でなくなったときは、そのプロセッサが前記通知を前記パス上に発行する前に、ロックがクリアされる。
【００１６】
このようなロックは、典型的には、共用メモリ領域に保持されるので、ロックの値は各種のプロセッサによって必要に応じて読み出すことができるし、またプロセッサが共用資源へのアクセスを獲得したときは、そのプロセッサによってセットできる。
【００１７】
１つの実施の形態では、前記プロセッサの１つが前記共用資源へのアクセスを希望するときに、そのプロセッサは、付随するロックがクリアされているかどうかをチェックするための原子操作（ａｔｏｍｉｃ  ｏｐｅｒａｔｉｏｎ）を実行し、もしそうであれば、付随するロックをセットする。原子操作は、ロックを読み出してそれがクリアされていることを判断する時点と、それがプロセッサによってセットされる時点との間に、ロックの値が別のプロセッサによって変更できないことを保証する。このことは、プロセッサが、クリアされたものの、ロックの“クリア”値を読み出すプロセッサによってロックがセットされる前に、別のプロセッサによってセットされてしまったロックを読まないことを保証するために重要である。
【００１８】
原子操作は多様な方法で実施できる。しかし、１つの実施の形態では、プロセッサは、スワップ（ｓｗａｐ）命令を実行して、プロセッサにロックの値を読み出させ、ロックにセット値を書き込ませ、更に読み出した値から関連するロックがクリアされていることを判断することによって前記原子操作を実行する。スワップ命令それ自体の特性は原子操作が実行されることを保証するものである。これは、スワップ命令は、単一操作の一部として、ロックの値を読み出し、またロックにセット値を書き込むからである。もし読み出されたロックの値がクリアされたものであれば、ロックがこのプロセッサによってセットされることによって、それ以降にロックを読み出すプロセッサはすべてセット値のみを見ることが保証される。同様に、スワップ命令を実行するプロセッサが、読み出した値から、関連するロックが既にセットされていると判断すれば、それがロックにセット値を書き込んでも何も変わらない。この例で、プロセッサは、単にそれが共用資源にアクセスできないと判断するだけであり、従って、節電モードに入って、その共用資源へのアクセスを保有するプロセッサが後にロックをクリアするときに発行されるそのプロセッサからの通知を待つ。
【００１９】
別の１つの実施の形態では、データ処理装置は、更に、複数のプロセッサからロックへのアクセスを監視するモニタ論理を含み、ここでプロセッサは、ロックの値を読み出し、モニタ論理によるロックの監視を開始させるためのロード（ｌｏａｄ）命令の実行；及びもしロックの値がロード命令を使用して読み出されて以降、他のプロセッサのどれもロックの値を修正していないことをモニタ論理が示していれば、ロックにセット値を記憶させるストア（ｓｔｏｒｅ）命令を実行することによって前記原子操作を実行する。そのようなロード及びストア命令は、ここでは排他的な（ｅｘｃｌｕｓｉｖｅ）ロード及びストア命令として理解されよう。これらは組み合わせて実行されたときに原子操作が発生することを保証し、それによって、もしプロセッサがロックの読み出された値からそれがクリアされていると判断すれば、そのプロセッサは、もしその間にロックの値を修正するプロセッサがなかったことが明らかであれば、ロックに対してセット値を記憶させることができるだけである。
【００２０】
共用資源は多様な形態を取ることができる。しかし、１つの実施の形態では、共用資源は１つのデータ構造であり、それは例えば、単一のデータ値あるいは複数のデータ値を含む。
【００２１】
１つの実施の形態では、データ構造はスレーブ装置内部に設けられる。１つの特別な実施の形態では、データ構造はメモリの共用メモリ領域内部に設けられる。
【００２２】
本発明の方法は、単一の共用資源のみを有するデータ処理装置に採用されることは理解されよう。しかし、１つの実施の形態では、データ処理装置は、複数の共用資源、各共用資源へのアクセスを制御するアクセス制御機構を含む。アクセス制御機構は、共用資源のすべてに対して設けられた広域的なアクセス制御機構、あるいは各共用資源に対して設けられた個別アクセス制御機構のいずれでもよい。１つの実施の形態では、アクセス制御機構は、各共用資源に対するロックを含む。
【００２３】
明らかなように、特定の実施の形態では、その他のアクション（通知の受信以外の）を使用してプロセッサを節電モードから脱出させることができることを理解されよう。例えば、１つの実施の形態では、各プロセッサは、前記節電モードにあるときに、もしそのプロセッサによって例外（ｅｘｃｅｐｔｉｏｎ）が受信されれば前記節電モードを脱出する。そのような例外は、例えば、イネーブル（ｅｎａｂｌｅｄ）（すなわち、ノンマスク（ｎｏｎ−ｍａｓｋｅｄ））割り込み、不明確なデータ・アボート（ｉｍｐｒｅｃｉｓｅ  ｄａｔａ  ａｂｏｒｔ）等である。プロセッサが節電モードをこのように脱出することを許容することによって、待ち時間と衝突することなしに、割り込みやその他の例外をプロセッサに処理させることができる。
【００２４】
第２の態様から見ると、本発明は、共用資源に対するアクセスを必要とするそれぞれのデータ処理演算を実行する複数のプロセッサ、複数のプロセッサを相互接続するように設けられたパスを有するデータ処理装置において、共用資源へのアクセスを制御する方法を提供する。本方法は：（ｉ）複数のプロセッサによる共用資源へのアクセスを制御するためのアクセス制御機構を提供すること；（iｉ）前記共用資源へのアクセスが前記プロセッサの１つによって要求されるものの、アクセス制御機構がそのプロセッサによる共用資源へのアクセスを阻止する場合に、プロセッサを節電モードに入れること；（ｉｉｉ）前記プロセッサの１つが共用資源に対するアクセスを有しているときに、共用資源へのアクセスがそのプロセッサにとって最早必要なくなったときに、プロセッサに前記パス上へ通知を発行させること；（ｉｖ）前記節電モードにあるプロセッサに対して、前記通知を受信することによって、前記節電モードを脱出させ、共用資源へのアクセスをシークさせることの工程を含む。
【図面の簡単な説明】
【００２５】
【図１】本発明の１つの実施の形態に従うデータ処理装置のブロック図。
【図２Ａ】本発明の１つの実施の形態に従う、図１のデータ処理装置の各プロセッサによって実行される操作を示すフロー図。
【図２Ｂ】図２Ａのプロセスによって実行されるロック及びアンロックのルーチンを実施するために実行できる命令シーケンスの例を示す図。
【図３】図２Ａのイベント待機操作を実施するために実行される工程のフロー図。
【図４Ａ】本発明の別の実施の形態に従う、図１のデータ処理装置の各プロセッサによって実行される動作を示すフロー図。
【図４Ｂ】図４Ａのプロセスによって実現されるロック及びアンロックのルーチンを実施するために実行される命令シーケンスの例を示す図。
【実施例】
【００２６】
本発明は、単に一例としての添付図面に示すような本発明の好適な実施の形態を参照しながら更に説明する。
図１は、バス５０を介して共用メモリ領域７０と接続された複数のプロセッサ２０，３０，４０を含むデータ処理装置１０のブロック図である。共用メモリ領域７０内には複数の共用データ構造があり、その各々はそれに付随するロックを有する。
【００２７】
プロセッサ２０，３０，４０の１つが共用メモリ７０内のデータ構造の１つにアクセスしようとするときは、付随するロックを入手する必要がある。ロックを得るために、プロセッサは、ロックの現在の値を読んで、データ構造へのアクセスを進めることができるかどうか評価する必要がある。もしできるのであれば、次にロックを更新し、そのアクセスを進める。ロックを読んでそれの現在の内容を評価し、それに続いてロックを適切に更新する操作は、原子操作として発生する必要がある。それは、ロックの値が読み出された時点と、読み出された値に依存してそれが修正された時点との間でロックの値を修正する機会を他のプロセッサが持たないことが重要であるからである。
【００２８】
代表的なシステムでは、一時に１つのプロセッサだけがデータ構造へアクセスすることを許容される。プロセッサが共用データ構造にアクセスしようとすると、ロックに対して他のプロセッサがアクセスしていないことが示されれば、ロックがクリアされていることだけを考慮すればよい。もしそうであれば、そのプロセッサはロックをセットすることができる。このように、ロックがセットされている間は、他のプロセッサは関連するデータ構造にアクセスすることはできない。アクセスしているプロセッサがデータ構造へのアクセスを最早必要としないときは、ロックはクリアされる。
【００２９】
各プロセッサ２０，３０，４０は１組の作業レジスタ２４，３４，４４に接続された実行ユニット２２，３２，４２を含む。各実行ユニットは、作業レジスタ内に保持されているデータ値に対してデータ処理演算を実行することができる。
【００３０】
後にもっと詳しく説明するが、プロセッサが１つの特別なデータ構造に関するロックを入手して、そのデータ構造へのアクセス権を獲得すると、それがその共用データ構造へのアクセスを最早必要としなくなったときには、イベント送信（Ｓｅｎｄ  Ｅｖｅｎｔ）命令を実行して、プロセッサ２０，３０，４０間に確立された専用パス上にイベントを発行するように構成されている。プロセッサ２０，３０，４０の各々は、ポート２６，３６，４６を有し、それらを介してプロセッサはこの専用パスに接続されており、各ポートはイベント出力ピンＥＶＯＵＴ及びイベント入力ピンＥＶＩＮを有している。イベントはプロセッサからそれのＥＶＯＵＴピンを介して発行され、この信号は、次に、他のプロセッサのＥＶＩＮピンを経由して送られる。図１から分かるように、各ＥＶＩＮピンはそれらに付随して、他のプロセッサから発行される各種のイベントを組み合わせるためのＯＲゲート８２，８８，９４を有する。
【００３１】
更に、プロセッサ２０，３０，４０の各々は、もしそれがデータ構造へのアクセスをシークして、付随するロックの現在値がその時点でそれがアクセスできないことを示していれば、そのプロセッサは節電動作モードに入るように、またそれがＥＶＩＮピンにイベントを受信するまで、節電動作モードに留まるように構成される。
【００３２】
図１から明らかなように、各プロセッサ２０，３０，４０は、そこに設けられたイベント・レジスタ２８，３８，４８を有し、それらはプロセッサに付随するＥＶＩＮピンにイベントを受信することによってセットされる。このイベント・レジスタが使用方法については後にもっと詳しく説明する。
【００３３】
更に、図４Ａ及び４Ｂの実施の形態を参照しながら更に詳細に述べるように、データ処理装置１０は、モニタ論理６０を用いて特別なロックへのアクセスを監視し、ロック値のチェック及び後続のそのロックのセットが原子操作として発生することを保証する必要がある。
【００３４】
図２Ａは、プロセッサ２０，３０，４０の各々に対して、共用データ構造にアクセスし、その共用データ構造を使用し、そしてその共用データ構造がそのプロセッサにとって最早必要でなくなったときにそのデータ構造に付随するロックを解放するために実行されるプロセスのフロー図である。工程１００においてプロセスが開始し（ｅｎｔｅｒ）、その後、工程１０２において、プロセスは、共用資源、例えば、図１の共用メモリ７０の共用データ構造の１つへのアクセスが必要かどうかを判断する。もしそうでなければ、プロセスは工程１０４に進み、そこではプロセッサは、工程１０２に戻る前に、その他任意の必要とされる処理関数を実行する。工程１０２において、共用資源に対するアクセスが必要であると一旦判断されれば、プロセスは工程１０５に進み、そこでスワップ操作が実行される。後に図２Ｂを参照しながらもっと詳しく説明するように、これは、関連するロックの現在値をそれの作業レジスタの１つに読み込んで、同時にロック中に作業レジスタの１つ（それは、例えば、ロックの値が読み込まれたのと同じ作業レジスタでもよい）に保持されている値を書き込むスワップ命令を実行するプロセッサを含む。このプロセスの間に、指定された作業レジスタからロックに記憶された値は、ロックがセットされていることを示す値である。
【００３５】
その後、プロセスは工程１１０に進み、そこでは共用資源が現在ロックされているかどうかが判断される。これは、スワップ操作の間にプロセッサの作業レジスタ中に読み込まれたロックの値によって示される。もし工程１１０で資源が現在はロックされていると判断されれば、プロセスは工程１１５に進んで、待機操作が実行される。このプロセスについては、図３を参照して後にもっと詳しく説明するが、基本的には、プロセッサがそれのＥＶＩＮポートに入力イベントを受信する時点まで、プロセッサが節電動作モードに入ることを含む。スワップ操作の一部として、プロセッサがロック中にセット・ロック値を書き込んだという事実は何の役にも立たない。それは、それが既に読み込まれているロックの値と単に一致するだけのことである。
【００３６】
工程１１０で、もしロックから読み出した値から共用資源がロックされていないと判断されれば、スワップ操作は既に、共用資源が今はロックされていることを示すようにロックをセットしている。従って、プロセスはここで工程１２０に進むことができ、そこでは、プロセッサは、共用資源のデータを使用して１または複数の操作を実行する。
【００３７】
プロセッサ２０，３０，４０の各々は、典型的にはそれに付随する書き込みバッファを有しており、そこには共用メモリ７０内のデータへの書き込みアクセスが置かれる。プロセッサが共用資源へのアクセスを必要とする任意の操作の実行を終了するときは、付随するデータ構造を別のプロセッサが使用できるようにそれを解放するために、ロックをクリアするために付随するロックに対して書き込みを実行する必要がある。しかし、いくつかのシステムでは書き込みバッファに保留中の書き込みアクセスの順序を狂わせてしまう機構が設けられているので、データ構造への任意の書き込みアクセスは、そのロックを解放するための付随ロックへの書き込みの前に発生することを保証することが重要である。
【００３８】
従って、ロックに対する書き込みの前に、プロセスは、工程１２０から工程１２５に進み、そこでプロセッサは、それの書き込みバッファをドレイン排出（ｄｒａｉｎ）させる。次に、工程１３０では、ここではロックの解放とも呼ぶが、そのロックをクリアするために、関連するロックに対して書き込み操作を発行する。この時点で、プロセッサは、それのＥＶＯＵＴピンから、各種のプロセッサを相互接続するパス上へイベント（ここでは通知とも呼ぶ）を発行する準備ができているが、これが発生する前にロックの更新が実際に実行されることが保証されなければならない。従って、イベント発行の前に、プロセッサは工程１３５に進み、そこで再びプロセッサはそれの書き込みバッファをドレイン排出させる。その後、工程１４０では、イベントがパスを経由して他のプロセッサに送信され、その後、プロセッサは工程１４５で脱出する。
【００３９】
図２Ｂは、図２Ａを参照しながら説明したロック及びアンロック・ルーチンを実施するためにプロセッサによって実行される一連の命令を示す。ロック・ルーチンは、工程１０５，１１０，１１５によって具体化されると考えることができる。他方、アンロック・ルーチンは、工程１２５，１３０，１３５，１４０によって具体化されると考えることができる。まずロック・ルーチンについて考えると、移動（ｍｏｖｅ）命令を用いてレジスタｒ０に値１を記憶させることができる。その後、スワップ命令を実行して、レジスタｒ０の現在の内容をロック・アドレスによって指定されるロックに移動させ、同時に、ロック・アドレスにあるロックの現在の値をレジスタｒ０に記憶させる。次に、比較（ｃｏｍｐａｒｅ）命令を用意して、ロック・アドレスから読み出されたロックの値がゼロであるかどうかが判断されるようになっている。もしそれがゼロであれば、それはロックが現在はクリアされており、従ってそれに付随する共用資源をプロセッサがアクセス利用できることを示している。従って、もし比較操作においてｒ０がゼロの値を含んでいると判断されれば、そのときは、プロセスは、直接に工程１２０に進んで、共用資源を使用した必要な操作を実行することができる。注意すべきことは、スワップ命令の一部として、関連するロックがセットされるので、この段階でロックをセットするためのそれ以上のアクションは必要ないということである。
【００４０】
しかし、もし比較操作を実行した結果、レジスタｒ０の現在の内容が論理１値であると判断されれば、これは、ロックが既に別のプロセッサによってセットされていて、従ってプロセッサは共用資源への必要なアクセスを進めることができないことを示す。その代わりに、ここでは通知待機命令とも呼ぶイベント待機命令が実行される。この命令を実行する結果として実行される操作については、後に図３を参照しながら説明する。一旦、イベント待機命令が実行を完了すれば、次に分岐（ｂｒａｎｃｈ)命令が実行されて、プロセスはスワップ命令へとループ・バックされる。
【００４１】
一旦、プロセッサが共用資源にアクセスしてしまえば、また共用資源を使用してそれが必要とする必要な操作を実行してしまえば、それはアンロック・ルーチンを実施する必要がある。図２Ｂに示すように、このことは、移動命令を実行して論理０値をレジスタｒ０に記憶させ、その後、書き込みバッファをドレイン排出させる別の命令を実行することによって実施できる。書き込みバッファをドレイン排出させるために使用できる命令が複数存在することは理解されよう。一旦、書き込みバッファがドレイン排出されると、（ロック・アドレスによって指定される）ロックにレジスタｒ０の内容を記憶させるためのストア命令が実行される。この結果、関連するロックがクリアされる。このあと、更に別の命令がもう一度実行されて、書き込みバッファがドレイン排出され、その後で、プロセッサのＥＶＯＵＴポートからイベントを発行するためのイベント発信命令（ここでは通知発信命令とも呼ばれる）が実行される。
【００４２】
図３は、図２Ａの工程１１５においてイベント待機操作を実行するときに実行される工程をより詳細に示すフロー図である。工程２００においてプロセスが開始し、工程２０５ではイベントがプロセッサ２０，３０，４０のイベント・レジスタ２８，３８，４８に登録されているかどうかが判断される。これは、例えば、プロセッサが図２Ａの工程１０５及び１１０を実行中に、もし共用資源をロックしている別のプロセッサがその資源での用が済んで、それのＥＶＯＵＴポートからイベントを発行する場合に相当する。工程２０５でイベントがイベント・レジスタに登録されていると判断された場合は、そのイベント・レジスタは工程２２５でクリアされ、プロセスは工程２３０で脱出する。図２Ａを参照すると、この例では、プロセスが直接、工程１０５に戻り、スワップ操作を再度実行することが分かる。この結果、プロセッサはロックを入手するのに成功し、必要な共用資源にアクセスできる場合もあれば、そうでない場合もある。しかし、もしそうでなければ、図２Ａから分かるように、プロセスは再びループ・バックして、イベント待機操作に戻る。
【００４３】
工程２０５において、もしイベントがイベント・レジスタに登録されていないと判断されれば、プロセスは工程２１０に進んで、プロセッサは節電モードに入る。１つの実施の形態では、この節電モードは、ソフトウエアでの状態復帰なしでも高速な覚醒が可能な範囲でなるべく低い電力状態にプロセッサを置こうとする。その後、プロセスは工程２１５に進んで、プロセッサのＥＶＩＮポートにイベントが受信されているかどうかが判断される。もしそうでなければ、プロセスは工程２１７に進んで、保留中の例外があるかどうか判断される。そのような例外とは、例えば、イネーブル（すなわち、ノンマスク）割り込み、不明確なデータ・アボート等である。そのような工程を含むことが有益であるのは、それによって、プロセッサが、待ち時間と衝突することなしに、割り込みやその他の例外を処理できるようになるためである。そのような例外が工程２１７で検出されない場合には、プロセスは工程２１５に戻る。
【００４４】
一旦、工程２１５においてＥＶＩＮポートにイベントの受信が検出されるか、あるいは工程２１７において保留中の例外が検出されれば、プロセスは工程２２０に進んで、節電モードから脱出（ｅｘｉｔｅｄ）させる。その後、工程２３０ではイベント待機操作から脱出する。図２Ａを参照すると、工程２１５においてイベント受信によって節電モードから脱出されれば、プロセスは工程１０５に戻って、スワップ操作が実行されて、共用資源へのアクセスがシークされることが分かる。この代わりに、工程２１７において、もし保留中の例外が検出され、節電モードから脱出されれば、プロセッサは、例えば、例外ルーチンを走らせることによって、その例外を処理するために必要な関数を実行することができる。一旦、この例外ルーチンが完了すると、プロセッサは、順序通りに、共用資源のロックを要求する元のルーチンの実行に戻る。これが発生すると、プロセッサは、ロックを獲得するためのシーク動作のための工程１０５及び１１０を再度実行する。そしてその時点で資源がまだロックされているときのみ、プロセッサは工程１１５において、イベント待機ルーチンを再度実行する。
【００４５】
工程２１５では、プロセッサは、ＥＶＩＮポートに受信された信号を、まずイベント・レジスタ２８，３８，４８にラッチするのではなくて、直接、受信するように構成されている。しかし、そうでなく、もしＥＶＩＮポートに受信されたすべての信号が最初にイベント・レジスタにラッチされるのであれば、工程２１５においてイベントを検出することによって、２２０において節電モードを脱出する場合に、プロセッサは、工程２３０での脱出に先立って、イベント・レジスタをクリアするようにも構成されるはずである。
【００４６】
このような方法の結果、プロセッサがその間にロックが利用可能になるまでタイト・ループ内で繰り返してロック値を読みに行く従来技術の方法と比べて大幅な電力節約が達成できることを理解されよう。その代わりに、プロセッサは、節電モードに入って、ロックが解放されたことを示すイベントがプロセッサから受信されることによって覚醒させられるまで待機する。
【００４７】
特定の実施の形態では、プロセッサを節電モードから脱出させるためにその他のアクションを利用できることは理解されよう。例えば、プロセッサは、プロセッサがデバッグ・エントリ要求を受信したら節電モードを脱出するように構成することもできる。
【００４８】
図４Ａは、本発明の別の実施の形態で利用できる、先に図２Ａに関連して説明したのと異なる操作手順を示している。工程２９５において、プロセスが開始する。その後、工程３００において、共用資源へのアクセスが要求されているかどうかが判断される。もしそうでなければ、プロセスは工程３００に戻る前に、必要な任意のその他の処理関数を実行する。工程３００において、そのような共用資源へのアクセスが要求されていると判断されたときは、プロセスは工程３０５に進んで、付随するロックの値がプロセッサの作業レジスタの１つにロードされる。図４Ｂに関連してもっと詳細に説明するが、このロードを実行するために用いられるロード命令は、典型的には、モニタ論理６０に作用して、ロック・アドレスに対する任意のその他のアクセスを追跡するための、そのロック・アドレスの監視を開始させる。
【００４９】
工程３１０では、ロック・アドレスからロードされた値を調べることによって、共用資源がロックされているかどうかが判断される。もし資源がロックされていれば、プロセスは工程３１５に進んで、イベント待機操作が実行される。図４Ａの工程３１５は図２Ａの工程１１５と類似しており、従って、この操作は先に図３を参照しながら説明したプロセスを実行することになる。
【００５０】
しかし、もし工程３１０において共用資源がロックされていないと判断されれば、プロセスは工程３２０に進んで、排他的ストア操作が実行される。後に図４Ｂを参照しながら説明するが、もしモニタ論理がロックに対して干渉的な修正（ｉｎｔｅｒｖｅｎｉｎｇ  ｍｏｄｉｆｉｃａｔｉｏｎ）がなされていないことを示していれば、これによってセット・ロック値がロック・アドレスに記憶されることになる。もしモニタ論理がそのような干渉的な修正が行われていることを示せば、ストア操作において、ロック・アドレスにセット値を書き込むことは行われない。
【００５１】
工程３２５では、ストア操作がその実行のための条件をパスしたかどうか、すなわち、ロックに対して干渉的な修正がなされていなかったかどうかが判断される。もしストアがその条件をパスしなければ、従って書き込みが行われなければ、プロセスは工程３０５に戻る。
【００５２】
ストア操作がその条件をパスした、すなわち実行されたと仮定すると、プロセスは、工程３２５から工程３３０に進んで、共用資源を利用する任意の必要な操作が実行される。工程３３０，３３５，３４０，３４５，３５０，３５５は、先に図２Ａに関して説明した工程１２０，１２５，１３０，１３５，１４０，１４５に類似しており、共用資源を利用した必要な操作の実行に続いて、ロックの解放をもたらし、イベントは他のプロセッサに受信されるようにプロセッサによって発行される。
【００５３】
図４Ｂは、図４Ａのロック・ルーチン及びアンロック・ルーチンを実現するために実行することのできる一連の命令の例を示す。工程３３５，３４０，３４５，３５０を含むアンロック・ルーチンは、先に図２Ｂに関連して説明したものと同じであるので、ここでこれ以上説明することはしない。しかし、工程３０５，３１０，３１５，３２０によって構成されるロック・ルーチンは、先に図２Ｂに関連して説明したロック・ルーチンとは異なる。第１に、レジスタｒ１に論理１を記憶させるために移動命令が実行される。その後、排他的ロード命令が実行されて、ロック・アドレスで指定されるロックの値がレジスタｒ０に記憶される。このロード操作はまた、モニタ論理６０によるロック・アドレスの監視を開始させる。
【００５４】
この後、比較命令が実行されて、レジスタｒ０の内容（すなわち、ロック・アドレスから読み出されたロック値）が論理０値であるかどうかが判断される。もしレジスタｒ０の内容がゼロに等しければ、それは、ロックはそれが読み出された時点でクリアされていることを示すので、従って、次に排他的ストア操作が実行されて、ロック・アドレスにレジスタｒ１の内容が記憶される。すなわち、ロック・アドレスに論理１が記憶される。しかし、この排他的ストア命令は、排他的ロード命令によってロック値が読み出された後で、ロック値に対して干渉的な修正がなされていないことをモニタ論理６０が示す場合に限って条件付きで実行される。排他的ストア命令はまた、ストアが行われたかどうかを示す値でレジスタｒ０を更新させる。具体的には、もしロックに対して干渉的修正がなされていない、すなわち、ストアが実行されていれば、ｒ０は論理０値にセットされるし、そうでなくて、ロックに対して干渉的修正がなされている、すなわち、ストアが行われなければ、論理１値にセットされる。
【００５５】
もし先の比較命令の結果がレジスタｒ０の内容がゼロに等しくない（すなわち、ロックが既に別のプロセッサによってセットされていることを示している）ということであれば、排他的ストア命令を実行する代わりに、プロセッサは、イベント待機命令を実行して、それによって先に図３に関連して説明した処理工程を実行させることになる。イベント待機命令の実行が完了する、すなわち、プロセッサがイベント・レジスタをクリアされるか、あるいは節電モードに入り、イベントを受信し、次に節電モードを脱出すると、プロセッサは、排他的ロード命令の実行へループ・バックする分岐命令を実行する。イベント待機命令と分岐命令との間に位置する比較命令は、この場合には実行されない。それは、この比較命令は、前の比較命令の結果がｒ０の内容がゼロに等しいと判断した場合に条件付きで実行されるためである。
【００５６】
しかし、この第２の比較命令は、排他的ストア命令の実行の後で実行される。それは、排他的ストア命令は、第１の比較命令がレジスタｒ０の内容がゼロに等しいと結論付けた場合にのみ実行されるためである。先に説明したように、排他的ストア命令の実行によって、レジスタｒ０の内容は、記憶が実際に発生したかどうかを示す値で更新される。従って、この第２の比較命令は、ｒ０の内容がゼロに等しいかどうかを判断する。これは、記憶が実際に発生したかどうかを、従って、プロセッサが共用資源をロックして資源へのアクセスを得るまでに至ったかどうかを示している。しかし、この第２の比較命令の実行の結果として、ｒ０の内容がゼロに等しくないと判断された場合には、それは記憶が発生しなかったことを示すので、プロセッサは次に排他的ロード命令に戻るための分岐命令を実行する。
【００５７】
以上の説明から明らかなように、本発明の実施の形態の方法は、スピン・ロックを待つプロセッサが低電力モードに入ることを許容する機構を提供する。所望されるスピン・ロックを現時点で保持しているプロセッサは、そのロックを解放するときにイベントを送信する。それによって、待機しているプロセッサは覚醒して再びロックを得ようと試みる。複雑なオペレーティング・システムは、数千の個別ロックを含むことができる。上述の実施の形態では、イベントが送信されたときに、どのロックが解放されたかについては何も指定しようとしなかった。もしイベントが別のロックに関するものであれば（あるいは、別のプロセッサがより迅速にそのロックを得てしまえば）、覚醒したプロセッサはロックの獲得に失敗して、次のイベントを待ちながら再び低電力状態に入る。
【００５８】
本発明の上述の実施の形態の方法は、エネルギ節約を実現するために、ハードウエア及びソフトウエアに依存する。ハードウエアは、１つのプロセッサによって発行されたイベントが、共用資源にアクセスする他のすべてのプロセッサに送られることを可能とするパスを提供するように適合しており、各プロセッサは、更に、そのプロセッサによってイベントが受信されたかどうかを示すようにセットできるレジスタを備えている。２つの新しい命令、すなわちイベント送信命令及びイベント待機命令が追加された。従って、ハードウエアは、イベント待機を低電力状態にするための機構を提供し、またオペレーティング・システム・ソフトウエアは、競合（ｃｏｎｔｅｎｄｅｄ）ロックの待機時及びロック解放時に、それぞれ、イベント待機命令及びイベント送信命令を発行する。
【００５９】
当業者には明らかなように、同じイベント待機及びイベント送信命令を、上に述べた実施の形態のものよりももっと複雑なロック、例えば、読み出し／書き込みロックに対しても使用することができ、同様な節電効果を実現できる。
【００６０】
更に、当業者には明らかなように、本発明の方法は、上の実施の形態の説明で明示的に述べた２種類の原子操作以外の原子操作を用いる実施の形態にも利用できる。
【００６１】
本発明の１つの実施の形態では、ロックを獲得するプロセスをネスト構造とすることができるため、プロセッサが図２Ａの工程１１０あるいは図４Ａの工程３１０でロックを得たときに、図２Ａの工程１２０あるいは図４Ａの工程３３０で実行される後続の操作は、プロセッサが別のロックを得ようとしてシークすること、及びもしそのときにそのロックが利用できなければ、節電モードに入ることを含む。
【００６２】
ここまで特別な実施の形態について説明してきたが、本発明は、それらに限定されることなく、本発明の範囲の中でそれらに対して多くの修正及び追加が可能であることを理解されよう。例えば、本発明の範囲から外れることなしに、特許請求の範囲の従属項の特徴を独立項の特徴と組み合わせることが可能である。
【符号の説明】
【００６３】
１０  データ処理装置
２０，３０，４０  プロセッサ
２２，３２，４２  実行ユニット
２４，３４，４４  作業レジスタ
２６，３６，４６  ポート
２８，３８，４８  イベント・レジスタ
５０  バス
６０  モニタ論理
７０  共用メモリ領域
８２，８８  ＯＲゲート
【図１】
2010003315.tif 000003
【図２Ａ】
2010003315.tif 000004
【図２Ｂ】
2010003315.tif 000005
【図３】
2010003315.tif 000006
【図４Ａ】
2010003315.tif 000007
【図４Ｂ】
2010003315.tif 000008