(57)【要約】プロセッサユニット（２００）は、キャッシュメモリ（２１０）と、命令実行部（２２０）と、ボトルネックとなることが予め特定されている排他制御区間にスレッドが進入したことを検出する処理部（２３０）と、排他制御区間からスレッドが退去したことを検出する処理部（２４０）と、それら検出結果から排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す実行中フラグ（２５０）と、を有し、キャッシュメモリ（２１０）は、各キャッシュエントリに排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、プロセッサユニット（２００）は、実行中フラグ（２５０）がセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグをセットし、キャッシュミスとなった際に優先フラグを利用して入れ換え対象のキャッシュエントリを決めることで、排他制御区間で利用したデータをキャッシュメモリに残す。
2011158441.tif 000002
【特許請求の範囲】
【請求項１】
命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、
前記複数のプロセッサユニットの各々が、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記複数のプロセッサユニットの各々は、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理装置。
【請求項２】
前記各プロセッサユニットは、排他制御を実現するためのＣＡＳ(Compare And Swap)命令を実行可能であり、前記外部メモリに存在するlock wordに対してアトミックなアクセスを行う請求項１に記載のデータ処理装置。
【請求項３】
前記開始検出部及び前記終了検出部は、
前記命令実行部の処理により実現されたスレッドが予め指定された前記排他制御区間を実行しているか否かを前記実行中フラグに反映させ、
前記キャッシュメモリは、
前記命令実行部による前記キャッシュメモリを経由した前記外部メモリへのアクセスが、キャッシュヒットした場合には、前記実行中フラグの値を前記優先フラグとしてアクセス対象のデータが存在するキャッシュエントリに設定し、前記外部メモリへのアクセスがキャッシュミスとなった場合には、前記優先フラグを利用してキャッシュ入れ換え対象エントリを決める、
請求項１または２に記載のデータ処理装置。
【請求項４】
前記キャッシュメモリは、
複数のキャッシュエントリと、
入れ換え対象のキャッシュエントリを決定する犠牲エントリ決定部と、
キャッシュ入れ換え制御部と、を有し、
前記キャッシュエントリは、前記優先フラグを含む前記追い出し候補決定情報と、データと、アドレスとを含み、
前記犠牲エントリ決定部は、前記複数のキャッシュエントリの前記追い出し候補決定情報を取得し、前記優先フラグがセットされているキャッシュエントリと前記優先フラグがセットされていないキャッシュエントリとが混在している場合は、前記優先フラグがセットされていないキャッシュエントリに含まれる前記優先フラグ以外の追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選び、前記命令実行部が要求しているデータを置くことのできる複数のキャッシュエントリ総ての前記優先フラグが同じ値の場合は、それらのキャッシュエントリに含まれる前記優先フラグ以外の前記追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選ぶ、
請求項１ないし３の何れか一項に記載のデータ処理装置。
【請求項５】
前記キャッシュ入れ換え制御部は、前記キャッシュエントリの入れ換え操作において、前記命令実行部の要求するデータの存在するデータブロックを前記外部メモリから読み込み、該読み込まれたデータブロックを前記キャッシュエントリのデータとして設定し、前記キャッシュエントリのアドレスにアクセス対象のアドレスを設定し、
前記追い出し候補決定情報のうち前記優先フラグ以外の部分には前記追い出し候補決定用の情報設定し、前記優先フラグには前記実行中フラグの値を設定する、
請求項４に記載のデータ処理装置。
【請求項６】
前記複数のプロセッサユニットの各々は、
前記開始検出部および前記終了検出部に接続されており、前記排他制御区間に対応するlock wordのアドレスが前記命令実行部から設定されるＬＷアドレスレジスタを、
さらに有する請求項１ないし５の何れか一項に記載のデータ処理装置。
【請求項７】
前記開始検出部は、
前記ＬＷアドレスレジスタと内部バスのアドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部とLock信号と書込信号と完了信号とを入力とするlock状態検出部と、
前記アドレス比較部と前記lock状態検出部との出力を入力とするset信号作成部と、を含み、
前記終了検出部は、
前記ＬＷアドレスレジスタと前記内部バスの前記アドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部と前記Lock信号と前記書込信号と前記完了信号とを入力とするunlock状態検出部と、
前記アドレス比較部と前記unlock状態検出部の出力を入力とするreset信号作成部と、を含み、
前記開始検出部のset信号、および、前記終了検出部のreset信号は、前記実行中フラグに送られ、
前記内部バスで、前記アドレスと前記データと前記書込信号と読出信号と前記完了信号と前記Lock信号とが伝送される請求項６に記載のデータ処理装置。
【請求項８】
前記命令実行部が実行する命令に、前記実行中フラグのセット命令と前記実行中フラグのリセット命令と、が含まれ、
前記開始検出部は、前記命令実行部が前記セット命令を実行すると前記実行中フラグをセットし、
前記終了検出部は、前記命令実行部が前記リセット命令を実行すると前記実行中フラグをリセットする、
請求項１ないし７の何れか一項に記載のデータ処理装置。
【請求項９】
命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出し、
前記排他制御区間から前記スレッドが退去したことを検出し、
前記検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを実行中フラグに反映し、
前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、前記キャッシュメモリに保持される各キャッシュエントリであって、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、
前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理方法。
【請求項１０】
命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載されるプロセッサユニットであって、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記プロセッサユニットは、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、
前記プロセッサユニットは、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
プロセッサユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサ構成のデータ処理装置に関し、特に、排他制御区間内で処理を行うデータ処理装置および方法、そのプロセッサユニット、に関する。
【背景技術】
【０００２】
複数のスレッドを並行して実行するように構成されたデータ処理装置では、実行しているスレッドの任意の時点で他のスレッドの実行が割り込むことがある。これらのスレッドが実行している処理の間に関連性がない場合は、このような割り込みが発生しても得られる結果に変わりはないため、問題となることはない。【０００３】
しかし、スレッド処理途中に、そのスレッドが実行している処理と関連性のある処理を実行するスレッドの割り込みが発生すると、割り込みが発生しなかった場合とは異なる結果が得られるという問題が発生する可能性があるため、その問題に対して何らかの対策が必要となる。【０００４】
例として、二つのスレッドが同一の変数に１を加える処理、すなわち、その変数を読み込んで１を加え、その結果を書き戻す処理を行うことを考える。問題となるのは、あるスレッドが変数を読み込んでから１を加えた結果を書き戻すまでの間に、もう一つのスレッド処理（変数に１を加える処理）が割り込んだ場合である。【０００５】
このような割り込みが発生すると、最初に実行されていた処理は、割り込んだ第二の処理による変数の更新を感知することなく、当初の値に１を加えた値を変数に書き戻すことになる。【０００６】
スレッド処理の割り込みが生じない場合は、二つのスレッドが各々変数に１を加える操作を行い、その結果として変数は２増加する。各スレッドは変数に１を加える操作を行い、かつ、二つのスレッドがその処理を行っていることから考えると、正しい処理結果は当初の変数値に２が加わった値である。【０００７】
しかしながら、前述したようにスレッド処理途中に他スレッド処理が割り込むという順で処理が進められると、二つのスレッドが変数に１を加える操作を行ったにも関わらず変数は１増加するだけであり、正しい結果は得られない。【０００８】
このように、処理の途中で他処理に割り込まれると問題が発生する処理区間（上記の例では、データを読み込んでから加工した結果を書き戻すまでの区間）を排他制御区間などと呼び、他のスレッド処理が割り込まないようにするための制御を明示的に行うことになっている。本明細書では、以降、これを排他制御区間と呼称する。【０００９】
プログラム実行を担うプロセッサユニットが一個であれば、排他制御区間に入る時点で他処理への切り換えを禁止し、そこから出る時点で他処理への切り換えを許可することで、その期間中に他処理が割り込まないことを保証できる。【００１０】
プロセッサユニットが一個の場合、あるプログラムをスレッドとして実行中に他プログラムの実行（スレッド）が割り込むのは、最初のスレッド実行中にスレッド切り換えの契機となる何らかの事象が発生し、オペレーティングシステムがスレッド切り換えを行うためである。【００１１】
従って、オペレーティングシステムに対して他処理（スレッド）への切り換えを禁止するように指示しておくことにより、スレッド切り換え禁止状態においてスレッド切り換えの契機となる何らかの事象が発生しても、その時点ではスレッド切り換えを行わず、最初のプログラムが他処理（スレッド）への切り換えを許可した時点でスレッド切り換えを行うように制御することが可能だからである。【００１２】
これに対し、マルチプロセッサシステムでは、他処理への切り換え禁止だけでは正しい処理結果が得られることを保証できない。他処理への切り換え禁止は、そのプログラムを実行しているプロセッサユニットに対しては有効であるが、他プロセッサユニットによるプログラム実行には影響を与えないからである。【００１３】
他プロセッサユニットによるプログラム実行が排他制御区間に入らないようにするための方法として一般的に行われているのは、排他制御区間を実行中のスレッドが存在するか否かを示すフラグ（以降、lock wordと呼称する）を用意する、という対処である。【００１４】
スレッドは排他制御区間に入る時点でlock wordを確認し、１）それが「未使用を示す値（以降、unlockedと表記）」であれば、lock wordを「使用中を示す値（以降、lockedと表記）」に変更して排他制御区間の処理を実行する、２）それがlockedであれば、そのlock wordがunlockedになるまで待った後、それをlockedに変更して排他制御区間の処理を実行する。【００１５】
また、排他制御区間の実行を終了した時点でlock wordをunlockedに戻す。以上の制御を行うことにより、他プロセッサユニットが実行する処理と自プロセッサユニットが実行する処理が排他制御区間上で競合するという問題は発生しない。排他制御区間は、複数スレッドによる処理の正しさに関係していることに加え、データ処理装置の性能の上限を決めるボトルネック要素となる可能性がある。【００１６】
なぜなら、マルチプロセッサ構成のデータ処理装置では、あるスレッドが排他制御区間を実行（以下、他の資源と合わせるため「使用」と表記する）していると、その排他制御区間を使用する必要のある他のスレッドは、使用中のスレッドが退去するまで待つという操作が必要となる場合が生じるからである。【００１７】
これは、プロセッサユニットやdiskといった物理資源と同様、排他制御区間に対して待ち行列が形成されることを意味している。従って、負荷の増大により排他制御区間の使用率が他の資源よりも先に１００％に近づく場合は、排他制御区間がシステム性能の上限を決めるボトルネックとなる。【００１８】
排他制御区間の使用率は、単位時間当たりの使用回数と１回の使用時間の積となる。このため、データ処理装置の処理のスループット性能が飽和している状態で、かつ、排他制御区間がボトルネック、すなわち、その使用率が１００％となっている状況では、上記二つの要因は反比例の関係になる。【００１９】
なぜなら、排他制御区間がボトルネックになると、その単位時間当たりの使用回数がデータ処理装置のスループット性能に対応するようになると考えられるためである。このような状況下でデータ処理装置のスループット性能の上限を増大させるには、排他制御区間１回の使用時間を短くすることが必要となる。【００２０】
排他制御区間１回の使用時間は、排他制御区間に進入してから退去するまでのプログラム実行時間であり、１）その間に実行する命令数、２）１命令当たりのクロック数（CPI: Clock Per Instruction）、３）１クロック・サイクルの時間、の積となる。【００２１】
このうち、１）と３）の削減は容易ではなく、固定値として扱うことが多い。１）は排他制御区間で保護して行う処理の内容、すなわち、プログラムで実装しているアルゴリズムで決まる要因であり、３）はデータ処理装置のハードウェアで決まる要因だからである。【００２２】
一方、２）には、プロセッサユニットの命令実行アーキテクチャやキャッシュメモリのアーキテクチャといったさまざまな要素が関与しており、チューニングの余地は大きい。【００２３】
排他制御区間の実現に関する従来技術は以下の通りである。重要な点は、スレッドが排他制御区間に入る時点で行うlock wordの値確認（読み込み）とunlockedだった場合のlockedへの変更（書き込み）の二操作は排他制御区間と同様の扱いが必要となることである。【００２４】
このため、マルチプロセッサ向けの機能を有するプロセッサユニットには、この操作を行うための命令が用意されている。例えば、インテル(登録商標)のx86プロセッサユニットには、cmpxchg命令（Intel(登録商標) 64 and IA-32 Architectures Software Developer's Manual Volume 2A: Instruction Set Reference、 A-M、 http://www.intel.com/Assets/PDF/manual/253666.pdf）が用意されている。【００２５】
これは、命令で予約されたレジスタ（eaxレジスタ）とレジスタ・オペランドとメモリ・オペランドの３オペランドを使用する命令であり、１）メモリ・オペランドの値をプロセッサユニットに読み込む、２−１）その値がeaxレジスタの値と一致する場合は外部メモリにレジスタ・オペランドの値を書き込む、２−２）その値がeaxレジスタの値と一致しない場合はその値をeaxレジスタに書き込む、という一連の操作をアトミックに行うものである。【００２６】
ここでのアトミックは、１）のメモリ読み込み操作と２−１）のメモリ書込操作の間に、他のプロセッサユニットが外部メモリにアクセスしないことがハードウェア動作によって保証されていることを意味する。なお、このcmpxchg命令が行う操作をCompare And Swap（ＣＡＳ命令）と称することが多い。【００２７】
上記ＣＡＳ命令を用いてlock操作を行うには、eaxレジスタにunlocked、レジスタ・オペランドにlockedを入れ、メモリ・オペランドをlock wordとしてＣＡＳ命令を実行する。【００２８】
Lock wordがunlockedの場合は上記２−１）が実行されるので、lock wordはlockedに書き換えられ、eaxレジスタの値は変化しない。一方、lock wordがlockedの場合は上記２−２）が実行されるので、lock wordへの書き込みは行われず、eaxレジスタにはlockedが設定される。【００２９】
ＣＡＳ命令を実行したスレッドは、ＣＡＳ命令の実行後のeaxレジスタの値を調べることで、lock操作が成功したか失敗したかを調べることができる、すなわち、排他制御区間を実行するか、lock wordにunlockedが設定されるのを待つ状態に入るのかの判断を行うことができる。【００３０】
現在、上述のようなデータ処理装置として各種の提案がある（下記特許文献１から４参照）。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】特開２０００−３０５８４４号公報
【特許文献２】特開２００６−２７６９０１号公報
【特許文献３】特開２００７−２７２６８１号公報
【特許文献４】特開平１１−２５９３６２号公報
【発明の概要】
【００３２】
ところで、マルチプロセッサ構成のデータ処理装置において、排他制御区間が性能上のボトルネックとなる場合、その性能を向上させるためには、プログラム実行が排他制御区間に進入してから退去するまでの時間を短くする必要がある。しかしながら、排他制御区間内で行う処理の量を削減する方法は実現が困難なため、そのような動作状況にあるデータ処理装置の性能を向上させることは困難である。
【００３３】
マルチプロセッサ構成のデータ処理装置において、排他制御区間が性能上のボトルネックとなる場合、データ処理装置のスループット性能の上限は、プログラム実行が排他制御区間に進入してから退去するまでの時間によって決まる。
【００３４】
しかし、排他制御区間内で行う処理はプログラムで実装しているアルゴリズムによって決まっているため、それを変更するためにはアルゴリズム全体の変更を要する。このような理由から、上述したように、排他制御区間内で行う処理量を削減することは困難である。
【００３５】
本発明は上述のような課題に鑑みてなされたものであり、プログラム実行が排他制御区間に進入してから退去するまでの時間を短縮することができるデータ処理装置および方法、そのプロセッサユニット、を提供するものである。
【００３６】
本発明の第１の態様に係るデータ処理装置は、命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、複数のプロセッサユニットの各々が、命令やデータを一時保持するキャッシュメモリと、キャッシュメモリを経由して外部メモリから命令やデータを読み出して命令を実行する命令実行部と、この命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、ボトルネックとなることが予め特定されている排他制御区間からスレッドが退去したことを検出する終了検出部と、開始検出部と終了検出部とによる検出結果からボトルネックとなる排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、命令実行部が外部メモリにアクセスする際に実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグをセットし、命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、排他制御区間で利用したデータをキャッシュメモリに残す。
【００３７】
本発明の第２の態様に係るデータ処理方法は、命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、上記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出し、当該排他制御区間からスレッドが退去したことを検出し、上記のような検出結果から当該排他制御区間の処理を実行しているスレッドが存在しているかどうかを実行中フラグに反映し、上記命令実行部が外部メモリにアクセスする際に当該実行中フラグがセットされている場合、上記キャッシュメモリに保持される各キャッシュエントリであって、上記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、上記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、上記排他制御区間で利用したデータをキャッシュメモリに残す。
【００３８】
本発明の第３の態様に係るプロセッサユニットは、命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載され、命令やデータを一時保持するキャッシュメモリと、キャッシュメモリを経由して外部メモリから命令やデータを読み出して命令を実行する命令実行部と、命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、上記排他制御区間からスレッドが退去したことを検出する終了検出部と、開始検出部と終了検出部とによる検出結果から上記排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、当該プロセッサユニットは、命令実行部が外部メモリにアクセスする際に実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグをセットし、命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、排他制御区間で利用したデータをキャッシュメモリに残す。
【００３９】
なお、本発明の各構成要素は、その機能を実現するように形成されていればよく、例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ処理装置、コンピュータプログラムによりデータ処理装置に実現された所定の機能、これらの任意の組み合わせ、等として実現することができる。
【００４０】
また、本発明の各構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【００４１】
また、本発明のデータ処理方法は、複数の処理および動作を順番に記載してあるが、複数の処理および複数の動作を実行する順番は、その記載の順番に限定されない。このため、本発明のデータ処理方法を実施するときには、その複数の処理および複数の動作の順番は内容的に支障しない範囲で変更することができる。
【００４２】
さらに、本発明のデータ処理方法は、複数の処理および複数の動作が個々に相違するタイミングで実行されることに限定されない。このため、ある処理および動作の実行中に他の処理および動作が発生すること、ある処理および動作の実行タイミングと他の処理および動作の実行タイミングとの一部ないし全部が重複していてもよい。
【００４３】
また、本発明で云うデータ処理装置は、コンピュータプログラムを読み取って対応する処理動作を実行できるように、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、Ｉ／Ｆ（Interface）ユニット、等の汎用デバイスで構築されたハードウェア、所定の処理動作を実行するように構築された専用の論理回路、これらの組み合わせ、等として実現することができる。
【００４４】
上述の各態様によれば、事後も排他制御区間で利用する可能性の高いデータをキャッシュメモリに残すことができ、それ以降の排他制御区間実行時におけるキャッシュヒット率を高め、その結果として、排他制御区間の実行時間を短くすることができる。これにより、排他制御区間が性能上のボトルネックとなっているマルチプロセッサ構成のデータ処理装置の性能を、排他制御区間で実行する処理を変更することなく、向上させることができる。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施の第一の形態のデータ処理装置の構成を示す模式的なブロック図である。
【図２】本発明の実施例のデータ処理装置の構成を示す模式的なブロック図である。
【図３】プロセッサユニットの要部の構成を示す模式的なブロック図である。
【図４】プロセッサユニットの要部の構成を示す模式的なブロック図である。
【図５】プロセッサユニットの命令実行部とキャッシュメモリとの関係を示す模式的なブロック図である。
【図６】プロセッサユニットのアトミックアクセスが成功した場合を示すタイムチャートである。
【図７】プロセッサユニットの書き込みアクセスを示すタイムチャートである。
【図８】ボトルネックである排他制御区間の処理を示すフローチャートである。
【発明を実施するための形態】
【００４６】
本発明の実施の第一の形態を図１を参照して以下に説明する。本実施の形態のデータ処理装置１００は、図示するように、命令や命令実行に必要なデータを保持している外部メモリ１１０と複数のプロセッサユニット２００とを有する。
【００４７】
本実施の形態のデータ処理装置１００では、複数のプロセッサユニット２００の各々が、命令やデータを一時保持するキャッシュメモリ２１０と、キャッシュメモリ２１０を経由して外部メモリ１１０から命令やデータを読み出して命令を実行する命令実行部２２０と、ボトルネックとなることが予め特定されている排他制御区間にスレッドが進入したことを検出する開始検出部２３０と、上記排他制御区間からスレッドが退去したことを検出する終了検出部２４０と、開始検出部２３０と終了検出部２４０とによる検出結果から上記排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグ２５０と、を有する。
【００４８】
ここで、スレッドとは、命令実行部２２０がプログラム（上記命令）を実行することにより実現される任意の処理単位を意味し、プロセス、タスク等と同意である。本実施形態は、この処理単位を制限するものではない。
【００４９】
キャッシュメモリ２１０は、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持する。命令実行部２２０が外部メモリ１１０にアクセスする際に実行中フラグ２５０がセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグがセットされる。
【００５０】
本実施の形態のデータ処理装置１００は、命令実行部２２０による外部メモリ１１０へのアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、排他制御区間で利用したデータをキャッシュメモリ２１０に残す。
【００５１】
より詳細には、キャッシュメモリ２１０は、データとアドレスと追い出し候補決定情報からなる複数のキャッシュエントリ２１１、入れ換え対象となるキャッシュエントリを決定する犠牲（victim）エントリ決定部２１２、キャッシュ入れ換え制御部２１３から構成されている。
【００５２】
命令実行部２２０は、一般的なプロセッサの処理と同様に、キャッシュメモリ２１０を経由して外部メモリ１１０から実行すべき命令や命令実行に必要なデータを読み出してその読み出された命令を実行する。命令実行に伴って外部メモリ１１０へのデータ書込操作が必要となった場合は、キャッシュメモリ２１０を経由してそのデータが書き込まれる。
【００５３】
さらに、プロセッサユニット２００には、排他制御を実現するためのＣＡＳ命令が用意されており、外部メモリ１１０に存在するlock wordに対してアトミックなアクセスを行うようになっている。
【００５４】
これらはそれぞれ概略つぎのように動作する。まず、命令実行部２２０は、一般的なプロセッサの処理と同様に、キャッシュメモリ２１０を経由して外部メモリ１１０から実行すべき命令や命令実行に必要なデータを読み出してその読み出された命令を実行する。
【００５５】
命令実行に伴って外部メモリ１１０へのデータ書込操作が必要となった場合は、キャッシュメモリ２１０を経由してそのデータが書き込まれる。さらに、プロセッサユニット２００には、排他制御を実現するためのＣＡＳ命令が用意されており、外部メモリ１１０に存在するlock wordに対してアトミックなアクセスが行われる。
【００５６】
開始検出部２３０は、命令実行部２２０により実行されているプログラムが予め指定された排他制御区間の実行を開始したという事象を検出し、実行中フラグ２５０をセットする。即ち、開始検出部２３０は、排他制御区間実行開始検出部と表記することもできる。
【００５７】
同様に、終了検出部２４０は、命令実行部２２０により実行されているプログラムが予め指定された排他制御区間の実行を終了したという事象を検出し、実行中フラグ２５０をリセットする。即ち、終了検出部２４０は、排他制御区間実行終了検出部と表記することもできる。
【００５８】
実行中フラグ２５０は、命令実行部２２０によるプログラム実行中に行われるキャッシュメモリ２１０経由の外部メモリ１１０へのアクセスの際に参照され、このフラグがセットされている場合は、アクセス対象のキャッシュエントリ２１１内の優先フラグがセットされる。即ち、実行中フラグ２５０は、排他制御区間実行中フラグと表記することもできる。また、優先フラグは、排他制御区間優先フラグと表記することもできる。
【００５９】
命令実行部２２０による外部メモリ１１０へのアクセスがキャッシュミスとなった場合、すなわち、アクセス対象のデータがキャッシュメモリ２１０中に存在していない場合は、キャッシュメモリ２１０は、そのデータを置くことのできる複数のキャッシュエントリ２１１から入れ換え対象のキャッシュエントリを決め、そのエントリにアクセス対象のデータを配置すると共に、命令実行部２２０に対してそのデータを供給する。
【００６０】
入れ換え対象エントリを決める操作は、命令実行部２２０の要求したデータを置くことのできる複数のキャッシュエントリ２１１についての追い出し候補決定情報（優先フラグの情報を含む）を入力として、犠牲エントリ決定部２１２が以下のように行う。
【００６１】
まず、優先フラグがセットされているキャッシュエントリと優先フラグがセットされていない（リセット状態の）キャッシュエントリが混在している場合は、犠牲エントリ決定部２１２は、優先フラグがセットされていないキャッシュエントリに含まれる優先フラグ以外の追い出し候補決定情報に基づいて入れ換え対象のキャッシュエントリを選ぶ。
【００６２】
また、命令実行部２２０が要求しているデータを置くことのできる複数のキャッシュエントリ２１１総ての優先フラグが同じ値（セットされている、または、リセット状態）の場合は、犠牲エントリ決定部２１２は、それらのエントリに含まれる優先フラグ以外の追い出し候補決定情報から入れ換え対象のキャッシュエントリを選ぶ。
【００６３】
ここで、優先フラグ以外の追い出し候補決定情報からキャッシュ入れ換え対象エントリを選ぶ操作は、一般的なキャッシュ入れ換え対象エントリの決定手法と同様である。また、優先フラグ以外の追い出し候補決定情報は、周知であるため、ここでは説明を省略する。
【００６４】
キャッシュ入れ換え制御部２１３は、上述のように入れ換え対象のキャッシュエントリが選択されると、以下のようなキャッシュエントリの入れ換え操作を行う。キャッシュエントリ２１１の入れ換え操作では、１）データ部には、命令実行部２２０の要求するデータの存在するデータブロックが外部メモリ１１０から読み込まれて、その読み込まれたデータブロックが設定され、２）アドレス部には、アクセス対象のアドレスが設定され、３）追い出し候補決定情報のうち、優先フラグ以外の部分には、一般的なキャッシュメモリと同様に、追い出し候補決定用の情報が設定され、４）優先フラグには、実行中フラグ２５０の値が設定される。
【００６５】
本実施の形態の特徴は、１）命令実行部２２０により実行されているプログラムが予め指定された排他制御区間を実行しているか否かを実行中フラグ２５０に反映させること、２）命令実行部２２０によるキャッシュメモリ２１０を経由した外部メモリ１１０へのアクセスが、ａ）キャッシュヒットした場合は実行中フラグ２５０の値をアクセス対象のデータが存在するキャッシュエントリ２１１に設定し、ｂ）キャッシュミスとなった場合は優先フラグの情報を利用してキャッシュ入れ換え対象エントリを決める、という点である。
【００６６】
本実施の形態のデータ処理装置１００は、上述のように事後も排他制御区間で利用する可能性の高いデータをキャッシュメモリ２１０に残すことにより、それ以降の排他制御区間実行時におけるキャッシュヒット率を高め、その結果として、排他制御区間の実行時間を短くすることができる。
【００６７】
これにより、排他制御区間が性能上のボトルネックとなっているマルチプロセッサ構成のデータ処理装置１００の性能を、排他制御区間で実行する処理を変更することなく、向上させることができる。
【００６８】
［第一の実施例］
つぎに、具体的な実施例を用いて本発明を実施するための形態の動作を説明する。図２に示すように、本実施例におけるプロセッサユニット３００は、ＬＷアドレスレジスタ３１０を有する。
【００６９】
また、開始検出部２３０および終了検出部２４０は、命令実行部２２０とキャッシュメモリ２１０との間でアクセスされる外部メモリ１１０のアドレスやデータを受け渡すための内部バス３２０、および、ＬＷアドレスレジスタ３１０に接続されている。
【００７０】
ＬＷアドレスレジスタ３１０が保持する値は命令実行部２２０から設定されるようになっており、ＬＷアドレスレジスタ３１０は、ボトルネックである排他制御区間に対応するlock wordのアドレスを保持するようになっている。
【００７１】
なお、このプロセッサユニット３００上で動作するプログラムのボトルネックである排他制御区間に対応するlock wordのアドレスは、このプロセッサユニット３００上で実行されるプログラムの開発者やシステムの運用者による事前のプロファイリングなどにより、予め判明しており、プログラムの実行直前またはプログラム起動直後の初期化操作時にＬＷアドレスレジスタ３１０に設定されているものとする。
【００７２】
また、本実施例のプロセッサユニット３００では、lock wordの値が０のときはunlocked状態（対応する排他制御区間を実行中のスレッドは存在しない状態）、０以外の値のときはlocked状態（対応する排他制御区間を実行しているスレッドが存在する状態）を示すものとする。
【００７３】
図３に示すように、開始検出部２３０は、ＬＷアドレスレジスタ３１０と内部バス３２０のアドレスを入力とするアドレス比較部２３１、内部バス３２０のデータ部、Lock信号、書込信号、完了信号を入力とするlock状態検出部２３２、アドレス比較部２３１とlock状態検出部２３２の出力を入力とするset信号作成部２３３を含む。
【００７４】
図４に示すように、終了検出部２４０は、ＬＷアドレスレジスタ３１０と内部バス３２０のアドレスを入力とするアドレス比較部２４１、内部バス３２０のデータ部、Lock信号、書込信号、完了信号を入力とするunlock状態検出部２４２、アドレス比較部２４１とunlock状態検出部２４２の出力を入力とするreset信号作成部２４３を含む。
【００７５】
開始検出部２３０のset信号、および、終了検出部２４０のreset信号は、図２に示したとおり、実行中フラグ２５０に送られる。
【００７６】
また、図５に示すように、データ転送を行う内部バス３２０には、アドレス、データ、書込信号、読出信号、完了信号、Lock信号がある。これらは、従来技術によるバスと同様に動作する。
【００７７】
本実施例における排他制御区間の実行開始時は、プロセッサユニット３００は、以下のように動作する。排他制御区間に進入できるのは、プロセッサユニット３００によるアトミックなアクセスによりlock wordを０から０以外の値に書き換える操作が成功した場合である。
【００７８】
このアトミックなアクセスは、命令実行部２２０からキャッシュメモリ２１０を経由した外部メモリ１１０へのアクセスによって行われる。その際、内部バス３２０のアドレス部分では、lock wordのアドレスを命令実行部２２０からキャッシュメモリ２１０に送る操作が行われ、データ部分では、外部メモリ１１０の値を命令実行部２２０に送る操作、命令実行部２２０が外部メモリ１１０に書き込む値をキャッシュメモリ２１０に送る操作が行われる。
【００７９】
図６に、上記のアトミックアクセスが成功した場合のタイムチャートを示す。このアトミックアクセスでは、読み出し操作の開始時に、命令実行部２２０が、Lock信号と読み出し信号を有効とすると同時に、アドレス・バス経由でアクセス対象であるlock wordのアドレスを送出する。
【００８０】
これらの信号を受け取ったキャッシュメモリ２１０は、必要に応じて外部メモリ１１０にアクセスしてlock wordの値（この場合は０）を取得すると、その値をデータ・バス経由で命令実行部２２０に送るとともに、完了信号を有効に設定する。
【００８１】
完了信号は、命令実行部２２０が値０を受け取って読み出し信号を無効に設定したことをキャッシュメモリ２１０が検出することにより、無効に戻される。つぎに、命令実行部２２０は、読み込んだデータと実行中の命令で規定されるレジスタの値を比較する。
【００８２】
両者が一致しない場合、命令実行部２２０は、Lock信号を無効に戻すと共に命令実行を終了し、命令の実行結果を失敗に設定する。逆に、両者が一致した場合、命令実行部２２０は、実行中の命令で規定される０以外の値をデータ・バス経由でキャッシュメモリ２１０に送るとともに書込信号を有効レベルに設定する。
【００８３】
この操作により、キャッシュメモリ２１０は送られた０以外の値をlock wordに書き込む。この書き込みが完了すると、キャッシュメモリ２１０は完了信号を有効に設定する。
【００８４】
命令実行部２２０は、完了信号が有効に設定されたことを検出すると、書込信号とLock信号を無効レベルに設定すると共に、アドレス・バスへのlock wordのアドレス送出、データ・バスへの０以外の値の送出を完了し、それを検出したキャッシュメモリ２１０は完了信号を無効に設定する。
【００８５】
以上の操作が完了すると、命令実行部２２０は、命令実行を終了し、命令の実行結果を成功に設定する。なお、Lock信号が有効レベルに設定されるのは、アトミックアクセス実行時のみであり、アトミックアクセスではない外部メモリ１１０に対する通常の読み出し操作や書込操作では、Lock信号は無効レベルのままである。
【００８６】
上記の操作において、開始検出部２３０のlock状態検出部２３２は、書込信号、完了信号、Lock信号が総て有効であり、かつ、内部バス３２０のデータを介して０以外の値が転送されている状態を検出し、総ての条件が合致した場合にlock状態検出部２３２の出力を有効にする。
【００８７】
また、アドレス比較部２３１は、内部バス３２０のアドレスを介して送られる外部メモリ１１０のアドレスと、予めＬＷアドレスレジスタ３１０に設定されている値を比較し、一致する場合にアドレス比較部２３１の出力を有効にする。
【００８８】
lock信号検出部とアドレス比較部２３１の出力が両方とも有効の場合に開始検出部２３０の出力であるset信号は有効になる。すなわち、set信号が有効になるのは、書込信号、完了信号、Lock信号が総て有効、かつ、内部バス３２０のデータを介して０以外の値が転送されている状態、かつ、内部バス３２０のアドレスを介して送られる外部メモリ１１０のアドレスが予めＬＷアドレスレジスタ３１０に設定されている値と一致する場合、すなわち、ボトルネックである排他制御区間に対応するlock wordにアクセスしてロックを獲得する操作が成功した場合である。これにより、set信号を入力とする実行中フラグ２５０は、あるスレッドがボトルネックである排他制御区間に進入すると有効に設定されることになる。
【００８９】
また、本実施例における排他制御区間の終了開始時は、以下の通りに動作する。Lock wordによる排他制御により、対応する排他制御区間に同時に進入できるスレッド数は１であるため、lock wordを０以外の値から０に書き換える操作の実施を許されるのは、プログラムが正しく作られている限り、排他制御区間に進入しているスレッドのみである。
【００９０】
従って、この書き換えのための外部メモリ１１０へのアクセスは、アトミックアクセスでない通常の書込操作、すなわち、命令実行部２２０からキャッシュメモリ２１０を経由した外部メモリ１１０への書込操作によって実施することができる。
【００９１】
その際、内部バス３２０のアドレス部分では、lock wordのアドレスが命令実行部２２０からキャッシュメモリ２１０に送られる操作が行われ、データ部分では、外部メモリ１１０の値が命令実行部２２０に送られる操作、及び、命令実行部２２０が外部メモリ１１０に書き込む値がキャッシュメモリ２１０に送られる操作、が行われる。
【００９２】
図７に、上記書き込みアクセスのタイムチャートを示す。命令実行部２２０は、書込操作の開始時、命令実行部２２０が内部バス３２０のアドレス経由でアクセスする対象であるlock wordのアドレス、及び値０をデータ・バス経由でキャッシュメモリ２１０に送るとともに、書込信号を有効レベルに設定する。
【００９３】
この操作により、キャッシュメモリ２１０は送られた値０をlock wordに書き込む。この書き込みが完了すると、キャッシュメモリ２１０は完了信号を有効に設定する。それを命令実行部２２０は、完了信号が有効に設定されたことを検出すると、書込信号とLock信号を無効レベルに設定すると共に、アドレス・バスへのlock wordのアドレス送出、データ・バスへの０以外の値の送出を完了し、それを検出したキャッシュメモリ２１０は完了信号を無効に設定する。以上の操作が完了すると、命令実行部２２０は命令実行を終了する。
【００９４】
上記の操作において、終了検出部２４０のunlock状態検出部２４２は、書込信号と完了信号が有効であり、かつ、内部バス３２０のデータを介して値０が転送されている状態を検出し、総ての条件が合致した場合にunlock状態検出部２４２の出力を有効にする。
【００９５】
また、アドレス比較部２４１では、内部バス３２０のアドレスを介して送られる外部メモリ１１０のアドレスと、予めＬＷアドレスレジスタ３１０に設定されている値を比較し、一致する場合にアドレス比較部２４１の出力を有効にする。
【００９６】
unlock状態検出部２４２とアドレス比較部２４１の出力が両方とも有効の場合に終了検出部２４０の出力であるreset信号は有効になる。すなわち、reset信号が有効になるのは、書込信号と完了信号が有効、かつ、内部バス３２０のデータを介して値０が転送されている状態、かつ、内部バス３２０のアドレスを介して送られる外部メモリ１１０のアドレスが予めＬＷアドレスレジスタ３１０に設定されている値と一致する場合、すなわち、ボトルネックである排他制御区間に対応するlock wordに値０を書き込んでロックを解放する操作を実施した場合である。
【００９７】
これより、reset信号を入力とする実行中フラグ２５０は、あるスレッドがボトルネックである排他制御区間から退去すると無効に設定されることになる。実行中フラグ２５０の値を入力するキャッシュメモリ２１０の動作は、発明を実施するための形態に記載した通りである。
【００９８】
［第二の実施例］
つぎに、本発明の第二の実施例を説明する。この実施例の特徴は、図１の命令実行部２２０が実行する命令に、実行中フラグ２５０のセット命令と実行中フラグ２５０のリセット命令と、が追加されている点である。
【００９９】
また、この実施例における開始検出部２３０は、命令実行部２２０が実行中フラグ２５０のセット命令を実行するとset信号を有効とし、終了検出部２４０は、命令実行部２２０が実行中フラグ２５０のリセット命令を実行するとreset信号を有効とするようになっている。
【０１００】
実行中フラグ２５０のセット命令と実行中フラグ２５０のリセット命令は、実行プログラムのコーディング、コンパイル、または、リンク時の時点で実行プログラムに埋め込まれる。
【０１０１】
この命令埋め込みは、具体的には、ボトルネックである排他制御区間の実行開始時の処理への実行中フラグ２５０のセット命令、排他制御区間の実行終了時の処理への実行中フラグ２５０のリセット命令の埋め込みである。
【０１０２】
図８に、実行中フラグ２５０のセット命令と実行中フラグ２５０のリセット命令が埋め込まれた、プロセッサユニット３００上で動作するプログラムで実現される、ボトルネックである排他制御区間の処理フローを示す。ロック獲得操作では、プロセッサユニット３００は、ＣＡＳ命令によりlock wordの値を０から０以外の値に変更する。その操作が失敗した場合は、プロセッサユニット３００は、ＣＡＳ命令のステップを繰返す。
【０１０３】
逆に、ＣＡＳ命令の操作が成功すると、プロセッサユニット３００は、実行中フラグ２５０のセット命令を実行した後、排他制御区間で行うべき処理を実行する。その処理が完了すると、プロセッサユニット３００は、実行中フラグ２５０のリセット命令を実行した後、lock wordに値０を書き込むことによりロックを解放し、排他制御に関する処理を終了する。
【０１０４】
ここで、実行中フラグ２５０のセット命令と実行中フラグ２５０のリセット命令とは、実行プログラム作成時などの段階で予め埋め込まれた命令である。
【０１０５】
上記、開始検出部２３０と終了検出部２４０の動作から明らかなように、実行中フラグ２５０のセット命令が実行されるとset信号が有効になり、実行中フラグ２５０がセットされる。また、実行中フラグ２５０のリセット命令が実行されるとreset信号が有効になり、実行中フラグ２５０がリセットされる。
【０１０６】
従って、実行中フラグ２５０は、実行中フラグ２５０のセット命令が実行されてから実行中フラグ２５０のリセット命令が実行されるまでの期間、すなわち、スレッドが排他制御区間で行うべき処理を実行している期間で有効となり、それ以外の区間では無効となる。実行中フラグ２５０の値を入力するキャッシュメモリ２１０の動作は、発明を実施するための形態に記載した通りである。
【０１０７】
なお、本発明は本実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で各種の変形を許容する。また、上述した実施の形態および実施例では、各部の構造などを具体的に説明したが、その構造などは本願発明を満足する範囲で各種に変更することができる。
【０１０８】
この出願は、２０１０年６月１７日に出願された日本出願特願２０１０−１３８０５１号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011158441.tif 000003
【図２】
2011158441.tif 000004
【図３】
2011158441.tif 000005
【図４】
2011158441.tif 000006
【図５】
2011158441.tif 000007
【図６】
2011158441.tif 000008
【図７】
2011158441.tif 000009
【図８】
2011158441.tif 000010
【手続補正書】
【提出日】平成24年12月14日(2012.12.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、
前記複数のプロセッサユニットの各々が、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、を有し、
前記複数のプロセッサユニットの各々は、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理装置。
【請求項２】
前記複数のプロセッサユニットの各々が、前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグをさらに有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記複数のプロセッサユニットの各々は、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
請求項１記載のデータ処理装置。
【請求項３】
前記各プロセッサユニットは、排他制御を実現するためのＣＡＳ(Compare And Swap)命令を実行可能であり、前記外部メモリに存在するlock wordに対してアトミックなアクセスを行う請求項２に記載のデータ処理装置。
【請求項４】
前記開始検出部及び前記終了検出部は、
前記命令実行部の処理により実現されたスレッドが前記排他制御区間を実行しているか否かを前記実行中フラグに反映させ、
前記キャッシュメモリは、
前記命令実行部による前記キャッシュメモリを経由した前記外部メモリへのアクセスが、キャッシュヒットした場合には、前記実行中フラグの値を前記優先フラグとしてアクセス対象のデータが存在するキャッシュエントリに設定し、前記外部メモリへのアクセスがキャッシュミスとなった場合には、前記優先フラグを利用してキャッシュ入れ換え対象エントリを決める、
請求項３に記載のデータ処理装置。
【請求項５】
前記キャッシュメモリは、
複数のキャッシュエントリと、
入れ換え対象のキャッシュエントリを決定する犠牲エントリ決定部と、
キャッシュ入れ換え制御部と、を有し、
前記キャッシュエントリは、前記優先フラグを含む前記追い出し候補決定情報と、データと、アドレスとを含み、
前記犠牲エントリ決定部は、前記複数のキャッシュエントリの前記追い出し候補決定情報を取得し、前記優先フラグがセットされているキャッシュエントリと前記優先フラグがセットされていないキャッシュエントリとが混在している場合は、前記優先フラグがセットされていないキャッシュエントリに含まれる前記優先フラグ以外の追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選び、前記命令実行部が要求しているデータを置くことのできる複数のキャッシュエントリ総ての前記優先フラグが同じ値の場合は、それらのキャッシュエントリに含まれる前記優先フラグ以外の前記追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選ぶ、
請求項２ないし４の何れか一項に記載のデータ処理装置。
【請求項６】
前記キャッシュ入れ換え制御部は、前記キャッシュエントリの入れ換え操作において、前記命令実行部の要求するデータの存在するデータブロックを前記外部メモリから読み込み、該読み込まれたデータブロックを前記キャッシュエントリのデータとして設定し、前記キャッシュエントリのアドレスにアクセス対象のアドレスを設定し、
前記追い出し候補決定情報のうち前記優先フラグ以外の部分には前記追い出し候補決定用の情報を設定し、前記優先フラグには前記実行中フラグの値を設定する、
請求項５に記載のデータ処理装置。
【請求項７】
前記複数のプロセッサユニットの各々は、
前記開始検出部および前記終了検出部に接続されており、前記排他制御区間に対応するlock wordのアドレスが前記命令実行部から設定されるＬＷアドレスレジスタを、
さらに有する請求項２ないし６の何れか一項に記載のデータ処理装置。
【請求項８】
前記開始検出部は、
前記ＬＷアドレスレジスタと内部バスのアドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部とLock信号と書込信号と完了信号とを入力とするlock状態検出部と、
前記アドレス比較部と前記lock状態検出部との出力を入力とするset信号作成部と、を含み、
前記終了検出部は、
前記ＬＷアドレスレジスタと前記内部バスの前記アドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部と前記Lock信号と前記書込信号と前記完了信号とを入力とするunlock状態検出部と、
前記アドレス比較部と前記unlock状態検出部の出力を入力とするreset信号作成部と、を含み、
前記開始検出部のset信号、および、前記終了検出部のreset信号は、前記実行中フラグに送られ、
前記内部バスで、前記アドレスと前記データと前記書込信号と読出信号と前記完了信号と前記Lock信号とが伝送される請求項７に記載のデータ処理装置。
【請求項９】
前記命令実行部が実行する命令に、前記実行中フラグのセット命令と前記実行中フラグのリセット命令と、が含まれ、
前記開始検出部は、前記命令実行部が前記セット命令を実行すると前記実行中フラグをセットし、
前記終了検出部は、前記命令実行部が前記リセット命令を実行すると前記実行中フラグをリセットする、
請求項２ないし８の何れか一項に記載のデータ処理装置。
【請求項１０】
命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、
前記命令実行部の処理により実現されたスレッドが、排他制御区間に進入したことを検出し、
前記排他制御区間から前記スレッドが退去したことを検出し、
前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理方法。
【請求項１１】
前記複数のプロセッサユニットの各々が、
前記検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを実行中フラグに反映し、
前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、前記キャッシュメモリに保持される各キャッシュエントリであって、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、
前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
請求項１０に記載のデータ処理方法。
【請求項１２】
命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載されるプロセッサユニットであって、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、を有し、
前記プロセッサユニットは、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
プロセッサユニット。
【請求項１３】
請求項１２記載のプロセッサユニットであって、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグをさらに有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記プロセッサユニットは、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
プロセッサユニット。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０８
【補正方法】変更
【補正の内容】
【０１０８】
この出願は、２０１０年６月１７日に出願された日本出願特願２０１０−１３８０５１号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
（付記１）
命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、
前記複数のプロセッサユニットの各々が、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記複数のプロセッサユニットの各々は、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理装置。
（付記２）
前記各プロセッサユニットは、排他制御を実現するためのＣＡＳ(Compare And Swap)命令を実行可能であり、前記外部メモリに存在するlock wordに対してアトミックなアクセスを行う付記１に記載のデータ処理装置。
（付記３）
前記開始検出部及び前記終了検出部は、
前記命令実行部の処理により実現されたスレッドが予め指定された前記排他制御区間を実行しているか否かを前記実行中フラグに反映させ、
前記キャッシュメモリは、
前記命令実行部による前記キャッシュメモリを経由した前記外部メモリへのアクセスが、キャッシュヒットした場合には、前記実行中フラグの値を前記優先フラグとしてアクセス対象のデータが存在するキャッシュエントリに設定し、前記外部メモリへのアクセスがキャッシュミスとなった場合には、前記優先フラグを利用してキャッシュ入れ換え対象エントリを決める、
付記１または２に記載のデータ処理装置。
（付記４）
前記キャッシュメモリは、
複数のキャッシュエントリと、
入れ換え対象のキャッシュエントリを決定する犠牲エントリ決定部と、
キャッシュ入れ換え制御部と、を有し、
前記キャッシュエントリは、前記優先フラグを含む前記追い出し候補決定情報と、データと、アドレスとを含み、
前記犠牲エントリ決定部は、前記複数のキャッシュエントリの前記追い出し候補決定情報を取得し、前記優先フラグがセットされているキャッシュエントリと前記優先フラグがセットされていないキャッシュエントリとが混在している場合は、前記優先フラグがセットされていないキャッシュエントリに含まれる前記優先フラグ以外の追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選び、前記命令実行部が要求しているデータを置くことのできる複数のキャッシュエントリ総ての前記優先フラグが同じ値の場合は、それらのキャッシュエントリに含まれる前記優先フラグ以外の前記追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選ぶ、
付記１ないし３の何れか一つに記載のデータ処理装置。
（付記５）
前記キャッシュ入れ換え制御部は、前記キャッシュエントリの入れ換え操作において、前記命令実行部の要求するデータの存在するデータブロックを前記外部メモリから読み込み、該読み込まれたデータブロックを前記キャッシュエントリのデータとして設定し、前記キャッシュエントリのアドレスにアクセス対象のアドレスを設定し、
前記追い出し候補決定情報のうち前記優先フラグ以外の部分には前記追い出し候補決定用の情報を設定し、前記優先フラグには前記実行中フラグの値を設定する、
付記４に記載のデータ処理装置。
（付記６）
前記複数のプロセッサユニットの各々は、
前記開始検出部および前記終了検出部に接続されており、前記排他制御区間に対応するlock wordのアドレスが前記命令実行部から設定されるＬＷアドレスレジスタを、
さらに有する付記１ないし５の何れか一つに記載のデータ処理装置。
（付記７）
前記開始検出部は、
前記ＬＷアドレスレジスタと内部バスのアドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部とLock信号と書込信号と完了信号とを入力とするlock状態検出部と、
前記アドレス比較部と前記lock状態検出部との出力を入力とするset信号作成部と、を含み、
前記終了検出部は、
前記ＬＷアドレスレジスタと前記内部バスの前記アドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部と前記Lock信号と前記書込信号と前記完了信号とを入力とするunlock状態検出部と、
前記アドレス比較部と前記unlock状態検出部の出力を入力とするreset信号作成部と、を含み、
前記開始検出部のset信号、および、前記終了検出部のreset信号は、前記実行中フラグに送られ、
前記内部バスで、前記アドレスと前記データと前記書込信号と読出信号と前記完了信号と前記Lock信号とが伝送される付記６に記載のデータ処理装置。
（付記８）
前記命令実行部が実行する命令に、前記実行中フラグのセット命令と前記実行中フラグのリセット命令と、が含まれ、
前記開始検出部は、前記命令実行部が前記セット命令を実行すると前記実行中フラグをセットし、
前記終了検出部は、前記命令実行部が前記リセット命令を実行すると前記実行中フラグをリセットする、
付記１ないし７の何れか一つに記載のデータ処理装置。
（付記９）
命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出し、
前記排他制御区間から前記スレッドが退去したことを検出し、
前記検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを実行中フラグに反映し、
前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、前記キャッシュメモリに保持される各キャッシュエントリであって、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、
前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理方法。
（付記１０）
命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載されるプロセッサユニットであって、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記プロセッサユニットは、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、
前記プロセッサユニットは、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
プロセッサユニット。
【国際調査報告】
2011158441.tif 000011
2011158441.tif 000012