(57)【要約】【課題】  複数の論理的または物理的なプロセッサ間の排他制御のためのスピンループに起因する消費電力やプロセッサ資源の無駄を削減する。【解決手段】  排他制御のための共有変数［Ａ］の監視等のために、目的の共有変数［Ａ］のロード試行およびストア事象の監視開始契機を設定するLOAD-WITH-LOOKUP命令を設けた。ＣＰＵ１では、ＣＡＳ［Ａ］による獲得失敗後にLOAD-WITH-LOOKUP命令を発行して、ロック変数［Ａ］へのストア（他のＣＰＵ２からの解放アクセス）を監視するとともにＳＵＰＥＮＤにて休止状態に移行し、他のＣＰＵ２からのロック変数［Ａ］に対するストア可能性の検出を契機としてＣＰＵ１を復帰させてロック変数［Ａ］の再獲得を試行させることが可能になり、無駄なスピンループ（空転待ち）を行わせる必要がなくなる。【選択図】図１
2005316854.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報を読み出すとともに、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させる第１ステップと、
前記プロセッサを休止状態に移行させる第２ステップと、
前記更新アクセスの発生を契機として前記休止状態を解除する第３ステップと、
を含むことを特徴とするプロセッサの制御方法。
【請求項２】
キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第１命令および前記アドレスまたはアドレス範囲の情報の読み出しを行う第２命令の少なくとも一方からなる命令列を検出する第１ステップと、
前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させるとともに、前記プロセッサを休止状態に移行させる第２ステップと、
前記アドレスまたはアドレス範囲への他のプロセッサからの前記更新アクセスの発生を契機として前記休止状態を解除する第３ステップと、
を含むことを特徴とするプロセッサの制御方法。
【請求項３】
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域の監視開始契機を設定する監視契機設定機能と、を含むことを特徴とする情報処理装置。
【請求項４】
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域を監視し前記特定記憶領域への情報の書き込みが生じる可能性を検出する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
【請求項５】
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記命令制御部を休止状態に移行させるとともに前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域への前記情報の書き込み可能性の検出を契機として前記休止状態を解除する休止命令と、を含むことを特徴とする情報処理装置。
【請求項６】
共有メモリ上の特定領域の特定情報の書き換えによって、前記共有メモリに対する複数の命令制御部のアクセスの排他制御を行う排他制御機構を備えた情報処理装置であって、
一つの前記命令制御部が他の前記命令制御部による前記特定情報の書き換え契機を待つ間に当該命令制御部に対するクロック供給を停止するクロック供給制御機能を含むことを特徴とする情報処理装置。
【請求項７】
論理的または物理的な複数の命令制御部と、前記命令制御部と記憶装置との間に介在し、複数の前記命令制御部にて共有されるキャッシュメモリと、一つの前記命令制御部による前記記憶装置の特定記憶領域への情報の書き込みが行われたことを他の前記命令制御部に通知する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
【請求項８】
キャッシュメモリを介して記憶装置にアクセスし前記記憶装置からの情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置の特定記憶領域の書き換えの有無の監視開始契機を設定する特定命令とを含む命令セットを具備したことを特徴とするプロセッサ。
【請求項９】
キャッシュメモリを介して記憶装置の情報にアクセスする情報処理装置であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第１命令、および前記アドレスまたはアドレス範囲の情報の読み出しを行う第２命令の少なくとも一方からなる命令列を検出する第１機能と、
前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他の情報処理装置からの更新アクセスの有無の監視を行うとともに前記情報処理装置を休止状態に移行させる第２機能と、
前記アドレスまたはアドレス範囲への他の情報処理装置からの前記更新アクセスの発生を契機として前記休止状態を解除する第３機能と、
を含むことを特徴とする情報処理装置。
【請求項１０】
命令制御部と記憶装置との間に介在し、前記記憶装置と前記命令制御部との間で授受される情報が一時的に格納されるキャッシュメモリであって、
前記記憶装置から前記命令制御へ前記情報の読み出しを行うロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域における前記情報の書き込みが生じる可能性を検出する書き込み事象検出機能を備えたことを特徴とするキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理技術に関し、特に、複数のプロセッサが結合されたＳＭＰ（symmetrical multiprocessor）やｃｃ−ＮＵＭＡ（Non-Uniform Memory Architecture）構成などの共有メモリを持つシステム等に関わる命令処理技術に関する。
【背景技術】
【０００２】
マルチプロセッサによる共有メモリのシステムでは、排他権を確保するために、ｍｕｔｅｘ−ｌｏｃｋなどのロックによる手法が知られている。ロックを獲得するための代表的な方法の一つにスピンループがある。これは、主記憶上に「ロック変数」を設け、個々のプロセッサはロック確保のための「ロック変数」の参照／更新試行とスピンループ（空転待機）を反復し、ロックを取った場合にはロック表示をロック期間中だけ表示し、ロックを解除する場合にはロック解除を表示することで、複数のプロセッサ間にて排他権を確保する手法である。
【０００３】
参考技術のスピンループ命令列の例を以下に示す。ここで前記「ロック変数」に対応するものは主記憶の［ｌｏｃｋ］で示されるアドレスのブロック（４バイト）である。この中身が０であればロック解除状態、自分のＩＤ（それぞれのプロセスが属する［ＩＤ］の中身）であればそのプロセスがロック中であることを示す。
【０００４】
以下の例では、ＳＰＡＲＣ  Ｖ９命令セットを使用して説明するが、特定の命令セットに固有の話ではなく一般に通用するものである。
最も単純なスピンループの例としては、図２２のような命令列とすることが考えられる。なお、図２２において各命令の作用はその右側にコメントとして記載されている。ところで、この図２２の構成の命令列では、ｃａｓ命令にはストアの可能性が常にあるために常にキャッシュブロックの排他権を獲得するよう動作する。このため、同一ロック変数を複数のプロセッサで取り合う状況になると、キャッシュ間競合が激しくなる。
【０００５】
この問題を改善した命令列の例が図２３の命令列である。この図２３のようにすることで、ロック変数が書き変わらない間（ロックを獲得しているプロセッサがロックを保持し続けている間）は、キャッシュは共有状態で保持されるので、前述のキャッシュ間競合はなくなる。
【０００６】
ところが、このような構成でもループをまわって常時チェックすることになるが、近年のプロセッサの高速化は、メモリシステムの高速化よりも激しく、相対的な速度はどんどん乖離する傾向にある。
【０００７】
このような状況では、スピンループによる空転回数が非常に多くなるにもかかわらず、そのあいだはスピンループ命令列を解釈して実行するものの、実質的には何も仕事をしておらず、消費電力の無駄が問題になっている。特に大規模なＳＭＰシステムでは、ある一つのロック変数を集中して取り合う事象は少なくなく、この場合、ある一つのＣＰＵ以外は全くの無駄なことをしていることになり、システム運用に掛る電力コストが大きな問題となる。
【０００８】
また、マルチスレッド処理方式を採用したプロセッサコアでは、あるスレッド処理部分でこのスピンループが発生していると、実質の仕事のないスピンループ処理による空転がプロセッサコアの他のスレッド処理の進行を阻害するという悪影響を与えてしまう。
【０００９】
同様の問題はロック変数を用いる他の処理、たとえばバリア同期などのプロセッサ間同期処理（同期待ち）など一般的なプロセッサ間同期やＩ／Ｏ同期や、アイドルループなどでも生じる。
【００１０】
なお、マルチプロセッサシステムにおける従来の排他制御や同期制御技術としては、特許文献１、特許文献２および特許文献３が知られている。
すなわち、特許文献１では、主記憶上に共有変数を格納して当該主記憶上で集中監視することで排他制御を実現する機構が開示されている。近年のようなキャッシュメモリを持つプロセッサでは、キャッシュ内での書き換えが主記憶上に即座に反映されるわけではない。特にライトバックキャッシュ方式においては、書き換え事象が反映されるにはかなりの時間が掛るのが普通である。また、ライトスルーキャッシュであっても現代のプロセッサではメモリレイテンシが非常に長く、反映ロスが長くなり性能が低下する。
【００１１】
したがって、特許文献１のように主記憶メモリを集中監視するだけでは、上述のようなスピンループの諸問題は解消されず、メモリレイテンシが影響しないキャッシュメモリ内での解決方法が望まれている。
【００１２】
特許文献２では、複数のＣＰＵで共有されるシステムバスの他に、ＣＰＵ間の排他制御のためのアクセス制御信号線（ピン）を設けてＣＰＵ間の共有メモリに対する排他制御を実現しようとする技術が開示されている。近年ではプロセッサ間接続（たとえばＬＳＩの入出力ピン数）はコストが高く、１ピンを排他制御専用に使うよりも、むしろデータ線として利用したほうが性能向上に有効な状況であり、さもなければ、１ピンでも削減したほうがＣＰＵの製作費の削減に寄与することができる。したがってピン増加なしにＣＰＵ間の排他制御を実現する方法が求められる。
【００１３】
特許文献３では、主従関係があるプロセッサとコプロセッサとの間での同期制御を行うための同期制御回路が開示されているが、ＳＭＰ（対称型マルチプロセッサ）やｃｃ−ＮＵＭＡのように、個々のプロセッサが対等に共有メモリを扱うシステムには適用が困難である。
【００１４】
すなわち、プロセッサは、コプロセッサに対して命令を発動する立場にある関係上、コプロセッサの動作状況を自発的に把握可能であるが、ＳＭＰシステムでは個々のプロセッサが他のプロセッサの動作状況に関する情報を原理的に保持していないため特許文献３の技術をスピンループの上述の問題に適用することは困難である。
【００１５】
本願発明はかかる事情に鑑みてなされたものである。もちろん、逆に本願発明をコプロセッサシステムに適用することは可能である。
【特許文献１】特開平３−１６４９６４号公報
【特許文献２】特開昭６１−２２９１５０号公報
【特許文献３】特開２００２−４１４８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
本発明の目的は、複数の論理的または物理的なプロセッサ間の排他制御のためのスピンループに起因する消費電力やプロセッサ資源の無駄を削減することにある。
本発明の他の目的は、一つの物理プロセッサコアに複数のハードウェアスレッドを持ち、論理的に複数のプロセッサがあるかのように動作可能なマルチプロセッサシステムにおいて、一つの論理プロセッサのスピンループに起因する他の論理プロセッサの性能低下を防止することにある。
【００１７】
本発明の他の目的は、マルチプロセッサシステムにおいて、既存のプログラムからの書き換えが容易で、ソフトウェアの移行コストの低い排他制御機構の実装を実現することにある。
【課題を解決するための手段】
【００１８】
本発明では、メモリアクセスの排他制御のためのロック変数の書き換え事象の可能性を予見し、従来では解放待ちのためにスピンループになる部分でプロセッサまたはスレッドを停止させることで、上記課題を解決する。
【００１９】
すなわち、本発明では、ロック変数の書き換え事象の可能性予見を実現するために、ロード対象メモリブロックを含む範囲のメモリブロックの監視開始契機を設定する機能を持つ新規なロード命令（以下、LOAD-WITH-LOOKUP命令と記す）と、メモリブロックの監視を行う書き込み事象検出機能とを設け、LOAD-WITH-LOOKUP命令と書き込み事象検出機能の検出結果に連動してＳＵＳＰＥＮＤ命令等の休止命令を実行／解除することでプロセッサの停止および再開を実現する。
【００２０】
すなわち、図１（ｂ）のように、従来では、記憶装置上のロック変数［Ａ］のロック獲得に際して、ＣＡＳ［Ａ］による獲得失敗後にＬＤ［Ａ］を繰り返してロック変数［Ａ］の変化（他のプロセッサからの解放）を確認するための無駄なスピンループが実行される。
【００２１】
これに対して、本発明の場合には、図１（ａ）のように、ＣＰＵ１では、ＣＡＳ［Ａ］による獲得失敗後にLOAD-WITH-LOOKUP命令を発行して、ロック変数［Ａ］へのストア事象（他のＣＰＵ２からの解放の可能性）を監視するとともにＳＵＰＥＮＤにて休止状態に移行し、他のＣＰＵ２からのロック変数［Ａ］に対するストア可能性の検出を契機としてＣＰＵ１を復帰させてロック変数［Ａ］の再獲得を試行させることが可能になり、無駄なスピンループを行わせる必要がなくなる。
【００２２】
すなわち、一般的には、図２のように、ＣＰＵ１で、LOAD-WITH-LOOKUP命令にて、目的のロック変数［Ａ］の監視を開始させた後、ＳＵＳＰＥＮＤ（休止状態）に移行し、他のＣＰＵ２からのロック変数［Ａ］の解放のためのアクセスを検出したら、ＣＰＵ１は休止状態から復帰して後続の命令実行を開始する。
【００２３】
また、本発明では、既存のプログラムの命令列を解析してスピンループの発生部位の予見、プロセッサの停止／再開を実現する。すなわち、既存の命令列からロック変数の書き換え事象の可能性を見つけるためのスピンループとなる命令列を見いだすステップと、従来のスピンループの代わりに当該プロセッサあるいは当該ハードウェアスレッドを停止させるステップとを実行する。
【００２４】
ただし、近年のプロセッサはキャッシュを構成することが当然のようになっており、そのまま主記憶を監視するのは非常に困難を伴う。従って、本発明では、キャッシュメモリ内にロック変数の書き換え事象の可能性を監視して検出する書き込み事象検出機能を備える。
【００２５】
すなわち、図３に示されるように、ロック変数［Ａ］の書き換え事象の可能性を見いだす方法としては、ロック中のＣＰＵ２側からのロック変数［Ａ］のキャッシュメモリ上における無効化を検出契機とし、ＣＰＵ１側を休止状態から復帰させる。
【００２６】
なお、図４に示されるように、LOAD-WITH-LOOKUP命令から休止状態に移行するまでの間に、ロック変数［Ａ］のキャッシュメモリ上での無効化（解放）が検出される可能性もある。その場合には、休止状態には移行せず、そのまま、ロック変数［Ａ］へのアクセスを続行する。
【００２７】
ロック変数の書き換え可能性の検出精度が高ければ高いほど、プロセッサの使用効率が高くなる。また、不当なハングアップに陥らないよう、実際に書き換えが起こっているにもかかわらず検出できないような事態を回避するよう構成する。
【００２８】
また、アドレス監視をせずに従来の割り込みでの再開のみを許すサスペンド手法を使いたい状況は当然ある。したがって、サスペンド命令を使用する際にこれを選択できるように構成すると利便が良い。
【００２９】
既存の命令セットに対し追加命令を作成できない場合や、旧命令コードから改版することが出来ない（あるいは困難な）プログラムが存在する場合が、当然存在する。このような場合、上記命令の追加では何の恩恵を預かることもできない。したがって、これらに対しても恩恵があるべく、命令の追加をせずに解決する方法が希望される。
【００３０】
上述の例で見る通り、典型的なロックルーチンでは、ロックが確保できなかった場合には数十命令の実行範囲内に、メモリアクセス命令が図５のように観察される。運が悪くても図６のように観察される。
【００３１】
あるいはＳＰＡＲＣ−Ｖ９  ＭａｎｕａｌのＡｐｐｅｎｄｉｘ．Ｊ．６の例では、ｔｒｙルーチンとｌｏｏｐルーチンが逆に配される（とりあえずｔｒｙして失敗したらｌｏｏｐで廻る）方式が紹介されている。この場合だと図７のように観察されることになる。
【００３２】
ここで共通するのは、ロック獲得に失敗した場合、スピンループに突入するのは、図８のように、同一アドレスへアクセスする二つの命令が近接して出てくることである。すなわち、この二つの命令の近接を検出する機能と、検出した場合に、サスペンドする機能と、ｃａｓ時点で監視を開始し他系からの書き換えがあったことを認識する機能があれば、LOAD-WITH-LOOKUPとＳＵＳＰＥＮＤ命令の組み合わせに近い従来の問題を改善する手法が得られる。
【００３３】
なお、原始的な例で示した場合であれば図９のようになるが、このように同一アドレスへのｃａｓ命令の連続に適用しても良い。また同一アドレスへのｌｄ命令の連続に適用してもよい。
【００３４】
なお、このようなハードウェア補助機構が期待しない動作になるケース（たとえば「セマフォ機構」でもｃａｓを用いるからスピンループと誤認識する危険がある）があり得る。そのため、期待しない動作をなくす、或いは減らすために、期待される動作でも動作しないような状況が発生せざるを得ない。
【００３５】
真に改善されるためにはLOAD-WITH-LOOKUP命令を追加し、その追加した命令を用いて明示的に指示される方がより望ましいと言える。つまり、LOAD-WITH-LOOKUP命令を追加する方式と、既存の命令列を解析する方式はどちらも従来手法からは明確に改善されるが、組み合わせられるのが最も良い。
【００３６】
従来のスピンループの問題は本発明のLOAD-WITH-LOOKUP（ｌｌｋｕｐ）命令を用いることで改善される。改善するための一例を図１０に示す。すなわち、ｌｌｋｕｐ命令にてロック変数［ｌｏｃｋ］をレジスタ％ｌ０にロードするとともに当該ロック変数［ｌｏｃｋ］のストア可能性の監視を開始させ、ｔｓｔ命令でレジスタ％ｌ０の内容を評価し、その内容が０で無い場合（他のプロセッサが排他権を持った状態）には、ｌｏｏｐ：に分岐しようとするが、直後の、ロック変数［ｌｏｃｋ］へのストア可能性の検出で復帰するｓｕｓｐｅｎｄ命令が実行されるので待機状態となり、ストア可能性が検出された契機で、再び、ｃａｓ命令等でロック変数［ｌｏｃｋ］へのアクセスを試行する。これにより、スピンループにおちいることなく、ロック変数［ｌｏｃｋ］の獲得のための待機が可能となる。
【００３７】
このように、既存のコードの書き換えが非常に少なくて済むのも本発明の大きな利点である。
【発明の効果】
【００３８】
本発明によれば、複数の論理的または物理的なプロセッサ間の排他制御のためのスピンループに起因する消費電力やプロセッサ資源の無駄を削減することができる。
また、一つの物理プロセッサコアに複数のハードウェアスレッドを持ち、論理的に複数のプロセッサがあるかのように動作可能なマルチプロセッサシステムにおいて、一つの論理プロセッサのスピンループに起因する他の論理プロセッサの性能低下を防止することができる。
【００３９】
また、マルチプロセッサシステムにおいて、既存のプログラムからの書き換えが容易で、ソフトウェアの移行コストの低い排他制御機構を実装することができる。
【発明を実施するための最良の形態】
【００４０】
以下、図面を参照しながら、本発明の実施の形態について詳細に説明する。
図１１は、本発明の一実施の形態である情報処理装置の制御方法を実施する情報処理装置の構成の一例を示す概念図である。
【００４１】
本実施の形態の情報処理装置は、複数の命令制御部１０と、この命令制御部１０がアクセスするデータが格納される記憶装置３０と、この記憶装置３０と個々の命令制御部１０との間に介在し、両者間で授受されるデータを一時的に保持するとともに、記憶装置３０よりも高速なデータアクセスが可能なキャッシュメモリ２０を備えている。
【００４２】
すなわち、命令制御部１０の配下に、（一次オペランド）キャッシュ等のキャッシュメモリ２０、二次キャッシュあるいは主記憶などの下位メモリとしての記憶装置３０が接続されている。記憶装置３０は、複数の命令制御部１０で共有されている。
【００４３】
ここで、個々の命令制御部１０は命令の解釈実行と演算を担当しレジスタを持つ部分である。そして、キャッシュメモリ２０に対して、メモリアクセス命令５１およびアドレス５１ａの発行、記憶装置３０に格納すべきストアデータ５２の出力、記憶装置３０からキャッシュメモリ２０を介して読み出したフェッチデータ５３の入力を行う機能を備えている。
【００４４】
また、キャッシュメモリ２０と記憶装置３０の間では、キャッシュメモリ２０から記憶装置３０に発行されるデータ要求５１ｂ、キャッシュメモリ２０上のデータを記憶装置３０に反映させるためのライトバック／コピーバックデータ５２ａ、記憶装置３０からキャッシュメモリ２０に読み込まれるデータ５３ａ、等の情報の授受が行われる。
【００４５】
本実施の形態の場合、メモリアクセス命令５１として、後述のようなLOAD-WITH-LOOKUP命令５４（以下、ｌｌｋｕｐ命令５４と記す）、キャッシュメモリ２０内の特定データの無効化を指示する無効化要求５５、等の制御インターフェイスを備えている。
【００４６】
すなわち、本実施の形態の命令制御部１０における命令セット１２には、ｌｌｋｕｐ命令５４が含まれている。さらに、命令セット１２には、後述のストア可能性検出信号５６の検出を契機に休止状態から復帰する特定ＳＵＳＰＥＮＤ命令１２ａと、従来の割り込みでの再開のみを許す通常ＳＵＳＰＥＮＤ命令１２ｂを備えていて、必要に応じて使い分けることができる構成となっている。
【００４７】
キャッシュメモリ２０には、図１２に例示されるように、命令制御部１０と記憶装置３０との間で授受されるデータが、たとえばライン等の単位で一時的に格納されるキャッシュデータ部２１と、このキャッシュデータ部２１内に格納されたデータを管理するためのキャッシュタグ部２２が設けられている。キャッシュタグ部２２は、キャッシュデータ部２１におけるライン等のデータ格納単位毎に、そのステータス２２ａ、記憶装置３０におけるアドレス２２ｃ、その他の管理情報２２ｄが設定されている。
【００４８】
さらに、本実施の形態の場合、キャッシュメモリ２０には、ストア監視論理４０が設けられている。このストア監視論理４０は、命令制御部１０からの上述のｌｌｋｕｐ命令５４の受領を契機に、当該ｌｌｋｕｐ命令５４の記憶装置３０のアクセス領域に対応したキャッシュメモリ２０内のデータが、当該ｌｌｋｕｐ命令５４を発行した命令制御部１０とは別の命令制御部１０によって書き換えられたか否かを監視し、ストア可能性検出信号５６を命令制御部１０に応答する機能を備えている。
【００４９】
一次キャッシュ等のキャッシュメモリ２０は本実施の形態においてはオペランドキャッシュ部分が重要であり、キャッシュ構成がユニファイドであるかセパレート、つまり命令キャッシュとオペランドキャッシュ（データキャッシュ）が分割された構成、であるかに関わらず、ロード命令（フェッチ命令）などの対象メモリアクセスを扱えるキャッシュであることを意味する。また、キャッシュメモリ２０はライトバック（ストアイン）キャッシュであってもライトスルー（ストアスルー）であってもよいが、ここではライトバックキャッシュであるとして説明する。
【００５０】
本実施の形態の動作原理を説明する。ＳＭＰあるいはｃｃ−ＮＵＭＡなどの共有メモリ型システムにおいては、プロセッサ（命令制御部１０）間の共有メモリの取り扱いに際し不具合が起こらないよう、ストアオーダに制限を加え、またキャッシュコヒーレントを保つ。
【００５１】
ストアオーダについては、たとえば、サンマイクロシステムズ社のＳＰＡＲＣ  Ｖ９ではＴＳＯと呼ばれる順序規定があり（他の順序規定もあるがこれしか実際には使われない）、端的には、ストアはストアした順番通りに他の観察者から観察されるように動く規定（それだけではないが）である。
【００５２】
この状況でキャッシュコヒーレントを保つ場合、ストアを行う時点でそのストアを行うプロセッサが、そのストア対象メモリ域に対して排他権（書き込み権と言い換えても良い。自分のプロセッサ以外がキャッシュ上にそのメモリ域を保持していない状態、したがってこれでストアを行えばストア順序規定を守ることができる）を獲得する必要がある。
【００５３】
そのために、キャッシュタグ部２２のステータス２２ａにはＭＣＩ（Modified、Clean、Invalid），ＭＥＳＩ（Modified、Exclusive、Sharable、Invalid）やＭＯＥＳＩ（Modified、Owned、Exclusive、Sharable、Invalid）等のキャッシュ状態を保持する構成が知られている。本質的には「共有している（Ｃ）（自分しか持っていないかも知れないので排他権を持っていないのと同値）」「排他権を持っている（Ｍ）」「持っていない（Ｉ）」の３状態であり、ＭＥＳＩ，ＭＯＥＳＩはこれに対して付加的な状態を持たせているだけであるので、以降ＭＣＩで説明する。ＭＥＳＩ，ＭＯＥＳＩについてもＥ，Ｍが排他権を持つ状態であり、Ｏ，Ｓは共有状態であるとして、ＭＣＩと同じに扱える。
【００５４】
キャッシュコヒーレントを保つために、ストアを実行する際に実行プロセッサのキャッシュメモリ２０では、当該メモリ域へ排他権を獲得する。獲得された時点では、他のプロセッサの当該メモリ域は「持っていない（ｉｎｖａｌｉｄ）」状態になる。
【００５５】
したがって、メモリの書き換え事象（ストア）が起こるときには、書き換え事象を起こすキャッシュメモリ２０以外には、そのメモリ域を持っていた場合には必ず当該メモリ域への保持権の放棄（無効化）が行われる。本実施の形態では、このキャッシュメモリ２０の制御の仕組みを利用して、複数の命令制御部１０にて共有される記憶装置３０上に設定されたロック変数等のデータの更新による排他制御における当該ロック変数へのアクセス動作を制御する。
【００５６】
すなわち、このキャッシュメモリ２０の制御の基本原理に従い、上述のように、命令制御部１０とキャッシュメモリ２０との間にｌｌｋｕｐ命令５４（LOAD-WITH-LOOKUP命令５４）を新設する。そして、このｌｌｋｕｐ命令５４が実行された場合等に、（１）指定されたメモリ域へのロードを行う、（２）前項（１）に付随して自身のキャッシュメモリ２０への登録（通常は共有型［Ｃ］で）を行う、（３）このメモリ域をストア監視論理４０が監視するとともに、特定ＳＵＳＰＥＮＤ命令１２ａを実行して命令制御部１０は休止状態に移行する、（４）ｌｌｋｕｐ命令５４で指定されたメモリ域が何らかの形で保持できなくなった場合にストア可能性があったと見做し、ストア可能性検出信号５６がｌｌｋｕｐ命令５４の発行元の命令制御部１０に応答され、（５）このストア可能性検出信号５６の受信を契機に命令制御部１０が休止状態から復帰する、という制御動作を行う。
【００５７】
ストア監視論理４０によるメモリ域の監視手段は、キャッシュタグ上に実現しても良いし、レジスタで実現しても良い。
キャッシュタグ上で実現する方法を図１２に示す。通常、上述のように、キャッシュタグ部２２はデータと対になっており、ステータス２２ａで示されるキャッシュ状態（前述のＭ，Ｃ，Ｉ等）、アドレス２２ｃとその他の管理情報２２ｄ（特権フラグやコンテキストなど）がある。ここに、ＬＯＯＫフラグ情報を設ける。すなわち、本実施の形態の場合、キャッシュタグ部２２には、各データ格納単位毎に、上述のｌｌｋｕｐ命令５４のためのＬＯＯＫフラグ２２ｂが設けられている。
【００５８】
通常のロード実行時に起こるようなキャッシュ登録時はこのＬＯＯＫフラグ２２ｂはセットしないようにしておき、ｌｌｋｕｐ命令５４が実行された場合には、（１）対応するデータをキャッシュデータ部２１上に保持していた場合には、キャッシュタグ部２２の当該ラインのＬＯＯＫフラグ２２ｂをセット、（２）対応するデータをキャッシュデータ部２１上に保持していなかった場合には、キャッシュタグ部２２に当該ラインのデータを登録するに伴い当該ラインのＬＯＯＫフラグ２２ｂをセットして、ｌｌｋｕｐ命令５４に付随するロード処理を実行する。
【００５９】
他のプロセッサからのストア可能性の判断は、このＬＯＯＫフラグ２２ｂがセットされているキャッシュラインが無効になることで判断する。一般的なケースとしては、（１）キャッシュラインがリプレース対象となる、（２）他のプロセッサの排他権獲得要求などにより、自プロセッサの外から無効化要求が来る、等の事象で判断する。特に上記だけとは限らず、無効化されることはつまりキャッシュ状態（ステータス２２ａ）がＭないしＣ（他のキャッシュ状態方式であればＳ，Ｏ，Ｅ等もあり得るがとにかく保持している状態全般）から、Ｉに遷移することに等しいので、キャッシュタグ部２２の書き換えを行う。ストア監視論理４０は、この時にＬＯＯＫフラグ２２ｂを確認して、フラグがセットされているのであれば監視状態であることを意味し、ストア可能性の検出対象であるのだから、これをもって検出と判断し、ストア可能性検出信号５６をｌｌｋｕｐ命令５４の発行元の命令制御部１０に応答する。
【００６０】
なおキャッシュ方式には、ストア管理においてライトスルー／ライトバック方式、キャッシュヒット率改善のためのセットアソシアティブ方式などの連想方式や、アドレス管理の仕方（ＶＩＰＴ：Virtually Indexed Physically Tagged ，ＰＩＰＴ：Physically Indexed Physically Tagged）等いくつかの種類の方式があるが、本願においてその組み合わせの差異が影響を与えることはなく、全く同じように実現できる。
【００６１】
ストア監視論理４０をレジスタで実現する回路構成を図１３に、その動作のタイミングチヤートを図１４に示す。すなわち、キャッシュタグ部２２にＬＯＯＫフラグ２２ｂを設けるかわりにレジスタ４１を準備し、ｌｌｋｕｐ命令５４の実行によってアドレス５１ａをセットする。その後、無効化要求５５にてキャッシュ無効化オペレーションが実行されるときに、そのアドレスと、セットされたレジスタ４１の内容を比較器４２で比較し、比較器４２から出力される比較結果と無効化要求５５との論理制御回路４３による論理積の出力をストア可能性検出信号５６として命令制御部１０に応答する。
【００６２】
このようにしてｌｌｋｕｐ命令５４の発行とストア可能性検出信号５６の応答とを組み合わせることで、記憶装置３０上の共有変数（ロック変数）の参照／更新による排他制御において、命令制御部１０のスピンループを回避することができる。
【００６３】
より精密にはアドレス範囲をレジスタ４１に設定するようにしても良い。たとえば対象フェッチサイズが４バイトのｌｌｋｕｐ命令５４であれば指定されたアドレス範囲４バイトと記録すればよい。また複数のｌｌｋｕｐ命令５４が実行されたらその範囲を記録する形でも良い。
【００６４】
ここでは簡単のため、キャッシュラインサイズをその範囲とする。キャッシュラインが６４バイトであれば、ｌｌｋｕｐ命令５４がたとえ４バイトフェッチであっても対象アドレス範囲は６４バイトと見做すことにする（複数のプロセッサで共有しないキャッシュなら全く問題ない。特に小さいアドレス範囲が意味をなすのは複数プロセッサで共有する場合である。）。
【００６５】
「範囲４バイト」のようにアドレス範囲を取れる方式は、図１５に例示されるように、一つのキャッシュメモリ２０に対して複数の（論理的）プロセッサ（命令制御部１０Ａ、命令制御部１０Ｂ）が共有可能であるような構成であるときに大いに意味をなす。たとえばＧＢＳ（global buffer storage）方式、ＣＭＰ（chip multi-processor）方式やハードウェアマルチスレッド方式（このときの一つのハードウェアスレッドを実行するプロセッサを論理プロセッサと呼ぶ）である。アドレス範囲を取る場合には、前述の無効化に伴うアドレスマッチ判定に加えて、共有している論理プロセッサが実行するストアによるアドレス範囲判定が加わる。もちろん、必ずしも範囲をこのように制限しておく必要はなく、キャッシュラインによるアドレスマッチ判定でも良い。精度の高い判定を行うか簡易に可能性を判定するかの違いであり、コストとのトレードオフである。
【００６６】
前述した通りのストア監視論理４０やＬＯＯＫフラグ２２ｂ等のストア可能性検出手段を用いることで、サスペンドからの復活（レジューム）をする例を示す。そのために簡便なのは先ずサスペンド状態になる方法としてサスペンド状態へ遷移を指示するＳＵＳＰＥＮＤ命令を作り、その実行をもってサスペンドする方法である。つまり、命令があれば、その命令を解釈して実行したらサスペンドを実施する。模式的には図１６のようにクロック制御系（省電力制御部６０）を構成し、図１７のタイミングチャートのように動作させる。
【００６７】
すなわち、クロック供給源７０から命令制御部１０、キャッシュメモリ２０および記憶装置３０に動作クロック７１を与えるクロック制御系において、命令制御部１０に対する動作クロック７１の供給経路に省電力制御部６０を介在させる。この省電力制御部６０は、命令制御部１０からのサスペンド実行信号５７をセット入力（ＳＥＴ）とし、キャッシュメモリ２０のストア監視論理４０からのストア可能性検出信号５６をリセット入力（ＲＳＴ）とするフリップフロップ回路６１と、フリップフロップ回路６１のＱ出力を論理反転回路６２で論理反転された信号と動作クロック７１の論理積をとって動作クロック７１ａとして命令制御部１０に入力する論理積回路６３で構成されている。
【００６８】
これにより、図１７のタイミングチャートのように、サスペンドする時点で実行制御部のクロック供給を停止し、ストア可能性があった時点でクロック供給を復帰することができる。また既知のサスペンド／レジューム手法を組み合わせることが可能である。
【００６９】
ところで、ＳＵＳＰＥＮＤ命令とストア可能性検出信号５６の実行の順序関係は、保証されていないため、１．ｌｌｋｕｐ命令の実行〜監視開始、２．ｓｕｓｐｅｎｄ命令実行、３．ストア可能性検出、の実行順序を期待する（図３の場合）ところが、実際には、１．ｌｌｋｕｐ命令の実行〜監視開始、２．ストア可能性検出、３．ｓｕｓｐｅｎｄ命令実行、というように順序が逆転する（図４の場合）可能性がある。特に監視対象を複数設定すればするほど、この逆転の可能性は高くなる。したがってこれを考慮した制御が必要になる。それを示したのが図１８の省電力制御部６０Ａおよび図１９のタイミングチャートである。
【００７０】
この省電力制御部６０Ａでは、上述の図１６のフリップフロップ回路６１のリセット入力の経路に、ｌｌｋｕｐ命令５４の実行信号をセット入力（ＳＥＴ）とし、サスペンド実行信号５７をリセット入力（ＲＳＴ）とするフリップフロップ回路６６と、このフリップフロップ回路６６のＱ出力を反転する論理反転回路６７と配置している。さらに、フリップフロップ回路６１と論理反転回路６２の間には、フリップフロップ回路６１のＱ出力を反転する論理反転回路６４と、この論理反転回路６４の出力と、ＳＵＳＰＥＮＤの実行中は常に真となるＳＵＳＰＥＮＤ実行中信号５７ａの論理積をとる論理積回路６５を介在させた構成となっている。
【００７１】
これにより、図１９（ａ）のように、ＳＵＳＰＥＮＤ実行後にストア可能性検出信号５６が検出された通常の場合には、ＳＵＳＰＥＮＤ実行中は、命令制御部１０に入力される動作クロック７１ａは停止する。一方、図１９（ｂ）のように、ＳＵＳＰＥＮＤ実行前にストア可能性検出信号５６が検出された場合には、ＳＵＳＰＥＮＤ実行中は、命令制御部１０に入力される動作クロック７１ａは停止せず、命令制御部１０は動作し続ける。
【００７２】
また、省電力制御部６０Ａにおいて、フリップフロップ回路６１のＱ出力は、必要に応じて、ＳＵＳＰＥＮＤ実行前にストア可能性検出信号５６が検出された事象を検知するための早期ストア検出信号６８として使用することができる。
【００７３】
このように、ｌｌｋｕｐ命令５４の発行を契機として、排他制御のための共有変数の、他の命令制御部１０のアクセスによる変化をストア監視論理４０で監視を開始させるとともに、特定ＳＵＳＰＥＮＤ命令１２ａにて命令制御部１０をＳＵＳＰＥＮＤ（動作クロック停止）状態に移行させ、共有変数の変化が予想されたならばストア可能性検出信号５６の省電力制御部６０への入力を契機として命令制御部１０を復帰させることで、従来のスピンループのような命令制御部１０の空転待ちによる消費電力の無駄が回避される。
【００７４】
上述の説明では、省電力の観点からの本実施の形態の効用を説明したが、一つの物理チップ内に複数の論理プロセッサを実装した構成では、個々の論理プロセッサの空転待ちは、ハードウェアを共有する他の論理プロセッサの停止を意味し、従って、空転待ちになるプロセッサを的確に休止させる本実施の形態の技術の適用は、省電力の観点だけでなく個々の論理プロセッサの処理能力（プロセッサ資源）の有効利用にも寄与できる。
【００７５】
すなわち、一つの物理チップ内に複数の論理プロセッサを実装したかのように見せかけることで処理性能の向上を図るハードウェアマルチスレッドに対応したプロセッサに応用した場合には、省電力だけでなく、プロセッサの処理能力（プロセッサ資源）の有効利用を実現できる。
【００７６】
たとえばＶＭＴ（vertical multi-thread）方式であれば時分割でスレッド処理を行うが、本実施の形態の場合には、排他制御のための空転待ちの代わりにスレッド（論理プロセッサ）をｓｕｓｐｅｎｄさせるので、ｓｕｓｐｅｎｄしたならば、そのスレッドの命令処理は休止すれば良く、他のスレッド処理を優先して実行できる。ＳＭＴ（simultaneous multi-thread）でも同様である。
【００７７】
ｌｌｋｕｐ／ｓｕｓｐｅｎｄ命令がない場合、あるいは使わずにスピンループなどを検出して同種の作用を実現することについて述べる。前述においてｌｌｋｕｐ命令５４によってＬＯＯＫフラグ２２ｂを設定するかわりに、スピンループの検出結果で動作させれば良いので、フラグ設定以降については割愛する。
【００７８】
スピンループの検出の仕方であるが、上述の図５、図６、図７の説明で述べたように、スピンループになる状況に特徴的なキャッシュアクセス（命令列）を検出する。その特徴は図５、図６、図７で示した通りであり、その特徴を捉えるためのスピンループ判別部８０の一例を図２０に示す。
【００７９】
すなわち、スピンループ判別部８０は、メモリアクセス命令５１に随伴するアドレス５１ａが保持されるレジスタ８１、命令制御部１０内のデコード部１１から出力されるロード命令検出信号５８ａおよびコンペア＆スワップ命令検出信号５８ｃの論理和をとる論理和回路８２、レジスタ８１の保持内容と、アドレス５１ａを比較する比較器８３、比較器８３の出力と論理和回路８２の出力の論理積をとり、スピン検出信号８７ａとして出力する論理積回路８７、比較器８３の出力を反転させる論理反転回路８４、論理反転回路８４の出力と論理和回路８２の出力の論理積をとる論理積回路８５、論理積回路８５の出力とデコード部１１のストア命令検出信号５８ｂの論理和をとり、スピン解除信号８６ａとして出力する論理和回路８６と、スピン検出信号８７ａでカウトアップされ、スピン解除信号８６ａでリセットされるカウンタ８８を備えている。
【００８０】
そして、図２１のタイミングチヤートのように、コンペア＆スワップ命令検出信号５８ｃの検出タイミングでレジスタ８１にアドレス５１ａが取り込まれ、ロード命令検出信号５８ａの検出タイミングでレジスタ８１の内容と当該ロード命令に随伴するアドレス５１ａが一致するとスピン検出信号８７ａが出力され、ストア命令検出信号５８ｂの検出、あるいは、ロード命令検出信号５８ａまたはコンペア＆スワップ命令検出信号５８ｃの検出時に、アドレス５１ａとレジスタ８１の保持内容が不一致の場合に、スピン解除信号８６ａが出力される。
【００８１】
そして、スピン検出信号８７ａをもってカウンタ８８をカウントアップし、一定値（１でもよい）に到達したら、その時点のｌｄ／ｃａｓ命令をｌｌｋｕｐ命令相当と見做す。これより大きい一定値まで（継続し）カウントに到達したらその時点のｌｄ／ｃａｓ命令の完了をもってｓｕｓｐｅｎｄ相当に扱う。スピン解除信号８６ａを検出したらカウンタ８８はリセットすることで、誤検出を押さえる。また、ひとたびサスペンドに遷移したらカウンタ８８をリセットしておく。さもないとサスペンドから復帰したら即座に次のサスペンド状態に遷移しようとしてしまう。
【００８２】
このようなスピンループ判別部８０を設けることで、ｌｌｋｕｐ命令５４の実装の有無に関わらずスピンループの検出することができる。また、ｓｕｓｐｅｎｄ命令の有無に関わらず省電力の制御などを実現できる。
【００８３】
以上で示した通り、本発明の実施の形態によれば、スピンループの無駄な空転をなくすことで、プロセッサコアの他のスレッド処理への悪影響をなくすことができる。また、ロック獲得待ちの間、プロセッサコアを停止させ、空転待ち等の無駄な動作を低減させることで電力コストを低減でき、動作コストを抑えられる。さらに、LOAD-WITH-LOOKUP命令を備えたプロセッサにソフトウェアを移行させる作業等において、既存命令コードによるプログラムからの書き換えが簡単であり、ソフトウェアの移行コストを抑制することができる。
【００８４】
すなわち、プロセッサの無駄な動作コストを抑えられ、著しい性能向上を達成できる。また、いかなる情報処理装置にも適用可能であり、その適用可能範囲は広い。さらに、LOAD-WITH-LOOKUP命令による既存命令コードからの書き換えも簡単であり、その点でもまた有用である。
【００８５】
（付記１）
キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報を読み出すとともに、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させる第１ステップと、
前記プロセッサを休止状態に移行させる第２ステップと、
前記更新アクセスの発生を契機として前記休止状態を解除する第３ステップと、
を含むことを特徴とするプロセッサの制御方法。
【００８６】
（付記２）
前記第１ステップと前記第２ステップとの間に前記更新アクセスの発生が検出された場合には、前記第２ステップの実行を抑止することを特徴とする付記１記載のプロセッサの制御方法。
【００８７】
（付記３）
前記キャッシュメモリを管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を設け、前記第１ステップでアクセスされた前記記憶装置の前記アドレスまたはアドレス範囲に対応した前記キャッシュメモリ上の前記記憶領域に前記識別情報を付与して監視対象とし、前記第３ステップでは、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域の情報の無効化または書き換えが発生したことを契機として前記休止状態を解除することを特徴とする付記１記載のプロセッサの制御方法。
【００８８】
（付記４）
前記第２ステップでは、前記プロセッサへのクロック供給を停止し、前記第３ステップでは、前記クロック供給を再開することを特徴とする付記１記載のプロセッサの制御方法。
【００８９】
（付記５）
キャッシュメモリを介して記憶装置の情報にアクセスするプロセッサの制御方法であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第１命令および前記アドレスまたはアドレス範囲の情報の読み出しを行う第２命令の少なくとも一方からなる命令列を検出する第１ステップと、
前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他のプロセッサからの更新アクセスの有無の監視を開始させるとともに、前記プロセッサを休止状態に移行させる第２ステップと、
前記アドレスまたはアドレス範囲への他のプロセッサからの前記更新アクセスの発生を契機として前記休止状態を解除する第３ステップと、
を含むことを特徴とするプロセッサの制御方法。
【００９０】
（付記６）
前記キャッシュメモリを管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を設け、前記第１ステップでアクセスされた前記記憶装置の前記アドレスまたはアドレス範囲に対応した前記キャッシュメモリ上の前記記憶領域に前記識別情報を付与して監視対象とし、前記第３ステップでは、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域の情報の無効化または書き換えが発生したことを契機として前記休止状態を解除することを特徴とする付記５記載のプロセッサの制御方法。
【００９１】
（付記７）
前記第２ステップでは、前記プロセッサへのクロック供給を停止し、前記第３ステップでは、前記クロック供給を再開することを特徴とする付記５記載のプロセッサの制御方法。
【００９２】
（付記８）
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域の監視開始契機を設定する監視契機設定機能と、を含むことを特徴とする情報処理装置。
【００９３】
（付記９）
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域を監視し前記特定記憶領域への情報の書き込みが生じる可能性を検出する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
【００９４】
（付記１０）
前記キャッシュメモリを管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を備え、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域を前記書き込み事象検出機能による監視対象とすることを特徴とする付記９記載の情報処理装置。
【００９５】
（付記１１）
前記書き込み事象検出機能は、少なくとも一つのレジスタを備え、前記レジスタに前記特定記憶領域内を指す監視アドレスを設定し、前記監視アドレスと、全キャッシュメモリへのアクセスアドレスとを比較することで、前記特定記憶領域の監視を行うことを特徴とする付記９記載の情報処理装置。
【００９６】
（付記１２）
前記キャッシュメモリ上の前記特定記憶領域に対応して格納された情報の無効化指示または前記情報の書き換え指示が発生した場合に、前記特定記憶領域へ書き込みが生じる可能性有りと判定することを特徴とする付記９から付記１１のいずれか１項記載の情報処理装置。
【００９７】
（付記１３）
命令制御部と、前記命令制御部と記憶装置との間に介在するキャッシュメモリと、前記記憶装置から前記命令制御部への情報の読み出しを行うロード命令と、前記命令制御部を休止状態に移行させるとともに前記ロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域への前記情報の書き込み可能性の検出を契機として前記休止状態を解除する休止命令と、を含むことを特徴とする情報処理装置。
【００９８】
（付記１４）
前記休止命令による前記休止状態への移行および前記休止状態の解除に同期して、前記命令制御部に対するクロック供給停止およびクロック供給再開を行うクロック供給制御機能をさらに含むことを特徴とする付記１３記載の情報処理装置。
【００９９】
（付記１５）
共有メモリ上の特定領域の特定情報の書き換えによって、前記共有メモリに対する複数の命令制御部のアクセスの排他制御を行う排他制御機構を備えた情報処理装置であって、
一つの前記命令制御部が他の前記命令制御部による前記特定情報の書き換え契機を待つ間に当該命令制御部に対するクロック供給を停止するクロック供給制御機能を含むことを特徴とする情報処理装置。
【０１００】
（付記１６）
論理的または物理的な複数の命令制御部と、前記命令制御部と記憶装置との間に介在し、複数の前記命令制御部にて共有されるキャッシュメモリと、一つの前記命令制御部による前記記憶装置の特定記憶領域への情報の書き込みが行われたことを他の前記命令制御部に通知する書き込み事象検出機能と、を含むことを特徴とする情報処理装置。
【０１０１】
（付記１７）
個々の前記命令制御部は、当該命令制御部を休止状態に移行させ、前記書き込み事象検出機能からの通知を契機として前記休止状態を解除する休止命令を備えたことを特徴とする付記１６記載の情報処理装置。
【０１０２】
（付記１８）
キャッシュメモリを介して記憶装置にアクセスし前記記憶装置からの情報の読み出しを行うロード命令と、前記ロード命令によるアクセス対象領域を含む前記記憶装置の特定記憶領域の書き換えの有無の監視開始契機を設定する特定命令とを含む命令セットを具備したことを特徴とするプロセッサ。
【０１０３】
（付記１９）
キャッシュメモリを介して記憶装置の情報にアクセスする情報処理装置であって、
前記記憶装置の目的のアドレスまたはアドレス範囲に格納された情報の読み出しおよび更新を一括して行う第１命令、および前記アドレスまたはアドレス範囲の情報の読み出しを行う第２命令の少なくとも一方からなる命令列を検出する第１機能と、
前記命令列の検出を契機に、前記アドレスまたはアドレス範囲への他の情報処理装置からの更新アクセスの有無の監視を行うとともに前記情報処理装置を休止状態に移行させる第２機能と、
前記アドレスまたはアドレス範囲への他の情報処理装置からの前記更新アクセスの発生を契機として前記休止状態を解除する第３機能と、
を含むことを特徴とする情報処理装置。
【０１０４】
（付記２０）
命令制御部と記憶装置との間に介在し、前記記憶装置と前記命令制御部との間で授受される情報が一時的に格納されるキャッシュメモリであって、
前記記憶装置から前記命令制御へ前記情報の読み出しを行うロード命令によるアクセス対象領域を含む前記記憶装置上の特定記憶領域における前記情報の書き込みが生じる可能性を検出する書き込み事象検出機能を備えたことを特徴とするキャッシュメモリ。
【０１０５】
（付記２１）
前記キャッシュメモリに一時的に格納された情報を管理するキャッシュ管理情報の一部に、前記記憶装置の前記特定記憶領域に対応した前記キャッシュメモリ上の記憶領域を識別する識別情報を備え、前記識別情報が付与された前記キャッシュメモリ上の前記記憶領域を前記書き込み事象検出機能による監視対象とすることを特徴とする付記２０記載のキャッシュメモリ。
【０１０６】
（付記２２）
前記書き込み事象検出機能は、少なくとも一つのレジスタを備え、前記レジスタに前記特定記憶領域内を指す監視アドレスを設定し、前記監視アドレスと、全キャッシュメモリへのアクセスアドレスとを比較することで、前記特定記憶領域の監視を行うことを特徴とする付記２１記載のキャッシュメモリ。
【０１０７】
（付記２３）
キャッシュメモリを持つ情報処理装置上に実装される、（主記憶から値を読み出す）ロード命令を持つ命令セットアーキテクチャにおいて、ロード対象メモリブロックを含む範囲のメモリブロックを監視開始する機能を持つ方式およびアーキテクチャ。
【０１０８】
（付記２４）
ロード対象メモリブロックを含む範囲のメモリブロックを監視開始する機能を持つロード命令（LOAD-WITH-LOOKUP命令）を持つ方式およびアーキテクチャ。
【０１０９】
（付記２５）
付記２４記載の該メモリブロック監視範囲に（他の論理プロセッサやＩ／Ｏデバイスなどからの）ストア事象が生じた可能性を検出する手段を持つ処理方式および情報処理装置。
【０１１０】
（付記２６）
付記２５記載の検出手段に関して、特にキャッシュタグ上に監視中であることを識別するフラグを設け、該フラグが設定されているキャッシュラインについて監視対象とする方式および装置。
【０１１１】
（付記２７）
付記２５記載の検出手段に関して、特にレジスタを一つ以上設けて監視アドレスを設定し、この設定アドレスに基づいてアドレス範囲チェックすることで監視対象とする方式および装置。
【０１１２】
（付記２８）
キャッシュメモリを持つ処理方式および装置で、付記２５記載の該検出手段として、キャッシュの監視対象アドレスに対して、キャッシュにデータを保持し、キャッシュライン無効化指示（Ｂｕｆｆｅｒ  ＩｎｖａｌｉｄａｔｅまたはＣｏｐｙｂａｃｋ  ａｎｄ  Ｉｎｖａｌｉｄａｔｅ）が来た場合にストア可能性が生じたと判断する方式および装置。
【０１１３】
（付記２９）
キャッシュメモリを持つ処理方式および装置で、付記２５記載の該検出手段として、キャッシュの監視対象アドレスに対して、キャッシュにデータを保持し、リプレースが発生した場合に、ストア可能性が生じたと判断する方式および装置。
【０１１４】
（付記３０）
論理プロセッサ（論理ＣＰＵ）を休止させる命令（以下ＳＵＳＰＥＮＤ  命令と呼ぶ）を備え、該休止から回復する手段として、付記２５記載のストア可能性検出手段により、回復可能とする方式、アーキテクチャ。
【０１１５】
（付記３１）
付記３０において、アドレス監視が不要な一時休止を行う場合のために、該ＳＵＳＰＥＮＤ命令にアドレス監視不要であることを指示する手段を設けることで、アドレス監視による再開をしないようにする方式および装置。
【０１１６】
（付記３２）
ｓｕｓｐｅｎｄするよりも前にストア可能性を検出した場合にはｓｕｓｐｅｎｄ遷移後すぐ回復するか、もしくはｓｕｓｐｅｎｄをｎｏ−ｏｐｅｒａｔｉｏｎ扱いで動作する方式および装置。
【０１１７】
（付記３３）
共有キャッシュ（ＧＢＳ方式）、一つの物理チップに複数のプロセッサコアが含まれるもの（ＣＭＰ方式）、一つの物理プロセッサコアに複数のハードウェアスレッド（ストランド）を持ち論理的に複数のプロセッサがあるように動作可能なもの（ＭＴ方式、ＨＭＴ，ＳＭＴ，ＶＭＴなどの複数の実装がある）のように、一つのキャッシュを複数の論理プロセッサで共有可能な構成において、ある論理プロセッサが該共有キャッシュの付記２４記載の該メモリブロック監視範囲に書き込みを行った場合を検出する機構を持つ付記２５記載のストア可能性検出手段。
【０１１８】
（付記３４）
付記２３記載の方式および装置において、付記２４記載のようなLOAD-WITH-LOOKUP／ＳＵＳＰＥＮＤ命令のかわりに（あっても良いが）、同一アドレスブロックを操作するｆｅｔｃｈ  ＆  ｓｔｏｒｅ命令（ｃａｓ命令など、メモリからのロードとメモリへのストアをアトミックに行う命令）とｌｏａｄ命令の組を、該当監視／休止するものと見做して動作する方式および装置。
【０１１９】
（付記３５）
付記２３記載の方式および装置において、付記３０記載のＳＵＳＰＥＮＤ命令のかわりに（あっても良いが）、付記３４記載の組のｆｅｔｃｈ  ＆  ｓｔｏｒｅ命令の実行をLOAD-WITH-LOOKUP相当と見做す方式および装置。
【０１２０】
（付記３６）
付記２３記載の方式および装置において、付記３０記載のＳＵＳＰＥＮＤ命令のかわりに（あっても良いが）、付記３４記載の組のｌｏａｄ命令の実行をＳＵＳＰＥＮＤ相当と見做す方式および装置。
【０１２１】
（付記３７）
付記２３記載の方式および装置において、付記２４記載のようなLOAD-WITH-LOOKUP／ＳＵＳＰＥＮＤ命令のかわりに（あっても良いが）、同一アドレスブロックを操作する複数の近接したｆｅｔｃｈ  ＆  ｓｔｏｒｅ命令（ｃａｓ命令など）がメモリブロックの監視／休止に該当するものと見做して動作する方式および装置。
【０１２２】
（付記３８）
付記２３記載の方式および装置において、付記３０記載のＳＵＳＰＥＮＤ命令のかわりに（あっても良いが）、付記３７記載の組の１つめのｆｅｔｃｈ  ＆  ｓｔｏｒｅ命令の実行をLOAD-WITH-LOOKUP相当と見做す方式および装置。
【０１２３】
（付記３９）
付記２３記載の方式および装置において、付記３０記載のＳＵＳＰＥＮＤ命令のかわりに（あっても良いが）、付記３７記載の組の２つめのｆｅｔｃｈ  ＆  ｓｔｏｒｅ命令の実行をＳＵＳＰＥＮＤ相当と見做す方式および装置。
【図面の簡単な説明】
【０１２４】
【図１】（ａ）および（ｂ）は、本発明の情報処理装置の制御方法と従来技術とを比較対照した説明図である。
【図２】本発明の一実施の形態である情報処理装置の作用の一例を示す説明図である。
【図３】本発明の一実施の形態である情報処理装置の作用の一例を示す説明図である。
【図４】本発明の一実施の形態である情報処理装置の作用の一例を示す説明図である。
【図５】本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。
【図６】本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。
【図７】本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。
【図８】本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。
【図９】本発明の情報処理装置の制御方法で取り扱う命令列の一例を示す説明図である。
【図１０】本発明の情報処理装置に備えられたLOAD-WITH-LOOKUP命令の使用例を含む命令列の説明図である。
【図１１】本発明の一実施の形態である情報処理装置の制御方法を実施する情報処理装置の構成の一例を示す概念図である。
【図１２】図１１の情報処理装置の構成の一部をより詳細に例示した概念図である。
【図１３】図１１の情報処理装置に備えられたストア監視論理の構成の一例を示す回路図である。
【図１４】図１３のストア監視論理の作用を示すタイミングチャートである。
【図１５】本発明の一実施の形態である情報処理装置の変形例を示す概念図である。
【図１６】本発明の一実施の形態である情報処理装置に備えられた省電力制御部の構成の一例を示す回路図である。
【図１７】図１６の省電力制御部の動作を示すタイミングチャートである。
【図１８】本発明の一実施の形態である情報処理装置に備えられた省電力制御部の構成の変形例を示す回路図である。
【図１９】（ａ）および（ｂ）は、図１８の省電力制御部の動作を示すタイミングチャートである。
【図２０】本発明の一実施の形態である情報処理装置に備えられたスピンループ判別部の構成の一例を示す回路図である。
【図２１】図２０のスピンループ判別部の動作を示すタイミングチャートである。
【図２２】参考技術の排他制御における命令列を示す説明図である。
【図２３】参考技術の排他制御における命令列を示す説明図である。
【符号の説明】
【０１２５】
１０  命令制御部
１０Ａ  命令制御部
１０Ｂ  命令制御部
１１  デコード部
１２  命令セット
２０  キャッシュメモリ
２１  キャッシュデータ部
２２  キャッシュタグ部
２２ａ  ステータス
２２ｂ  ＬＯＯＫフラグ
２２ｃ  アドレス
２２ｄ  その他の管理情報
３０  記憶装置
４０  ストア監視論理
４１  レジスタ
４２  比較器
４３  論理制御回路
５１  メモリアクセス命令
５１ａ  アドレス
５１ｂ  データ要求
５２  ストアデータ
５２ａ  ライトバック／コピーバックデータ
５３  フェッチデータ
５３ａ  データ
５４  LOAD-WITH-LOOKUP命令
５５  無効化要求
５６  ストア可能性検出信号
５７  サスペンド実行信号
５７ａ  ＳＵＳＰＥＮＤ実行中信号
５８ａ  ロード命令検出信号
５８ｂ  ストア命令検出信号
５８ｃ  コンペア＆スワップ命令検出信号
６０  省電力制御部
６０Ａ  省電力制御部
６１  フリップフロップ回路
６２  論理反転回路
６３  論理積回路
６４  論理反転回路
６５  論理積回路
６６  フリップフロップ回路
６７  論理反転回路
６８  早期ストア検出信号
７０  クロック供給源
７１  動作クロック
７１ａ  動作クロック
８０  スピンループ判別部
８１  レジスタ
８２  論理和回路
８３  比較器
８４  論理反転回路
８５  論理積回路
８６  論理和回路
８６ａ  スピン解除信号
８７  論理積回路
８７ａ  スピン検出信号
８８  カウンタ
【図１】
2005316854.tif 000003
【図２】
2005316854.tif 000004
【図３】
2005316854.tif 000005
【図４】
2005316854.tif 000006
【図５】
2005316854.tif 000007
【図６】
2005316854.tif 000008
【図７】
2005316854.tif 000009
【図８】
2005316854.tif 000010
【図９】
2005316854.tif 000011
【図１０】
2005316854.tif 000012
【図１１】
2005316854.tif 000013
【図１２】
2005316854.tif 000014
【図１３】
2005316854.tif 000015
【図１４】
2005316854.tif 000016
【図１５】
2005316854.tif 000017
【図１６】
2005316854.tif 000018
【図１７】
2005316854.tif 000019
【図１８】
2005316854.tif 000020
【図１９】
2005316854.tif 000021
【図２０】
2005316854.tif 000022
【図２１】
2005316854.tif 000023
【図２２】
2005316854.tif 000024
【図２３】
2005316854.tif 000025