JP5737290B2 - データ処理装置および方法、そのプロセッサユニット - Google Patents

データ処理装置および方法、そのプロセッサユニット Download PDF

Info

Publication number
JP5737290B2
JP5737290B2 JP2012520264A JP2012520264A JP5737290B2 JP 5737290 B2 JP5737290 B2 JP 5737290B2 JP 2012520264 A JP2012520264 A JP 2012520264A JP 2012520264 A JP2012520264 A JP 2012520264A JP 5737290 B2 JP5737290 B2 JP 5737290B2
Authority
JP
Japan
Prior art keywords
cache
data
unit
instruction
control section
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012520264A
Other languages
English (en)
Other versions
JPWO2011158441A1 (ja
Inventor
堀川 隆
隆 堀川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012520264A priority Critical patent/JP5737290B2/ja
Publication of JPWO2011158441A1 publication Critical patent/JPWO2011158441A1/ja
Application granted granted Critical
Publication of JP5737290B2 publication Critical patent/JP5737290B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Description

本発明は、マルチプロセッサ構成のデータ処理装置に関し、特に、排他制御区間内で処理を行うデータ処理装置および方法、そのプロセッサユニット、に関する。
複数のスレッドを並行して実行するように構成されたデータ処理装置では、実行しているスレッドの任意の時点で他のスレッドの実行が割り込むことがある。これらのスレッドが実行している処理の間に関連性がない場合は、このような割り込みが発生しても得られる結果に変わりはないため、問題となることはない。
しかし、スレッド処理途中に、そのスレッドが実行している処理と関連性のある処理を実行するスレッドの割り込みが発生すると、割り込みが発生しなかった場合とは異なる結果が得られるという問題が発生する可能性があるため、その問題に対して何らかの対策が必要となる。
例として、二つのスレッドが同一の変数に1を加える処理、すなわち、その変数を読み込んで1を加え、その結果を書き戻す処理を行うことを考える。問題となるのは、あるスレッドが変数を読み込んでから1を加えた結果を書き戻すまでの間に、もう一つのスレッド処理(変数に1を加える処理)が割り込んだ場合である。
このような割り込みが発生すると、最初に実行されていた処理は、割り込んだ第二の処理による変数の更新を感知することなく、当初の値に1を加えた値を変数に書き戻すことになる。
スレッド処理の割り込みが生じない場合は、二つのスレッドが各々変数に1を加える操作を行い、その結果として変数は2増加する。各スレッドは変数に1を加える操作を行い、かつ、二つのスレッドがその処理を行っていることから考えると、正しい処理結果は当初の変数値に2が加わった値である。
しかしながら、前述したようにスレッド処理途中に他スレッド処理が割り込むという順で処理が進められると、二つのスレッドが変数に1を加える操作を行ったにも関わらず変数は1増加するだけであり、正しい結果は得られない。
このように、処理の途中で他処理に割り込まれると問題が発生する処理区間(上記の例では、データを読み込んでから加工した結果を書き戻すまでの区間)を排他制御区間などと呼び、他のスレッド処理が割り込まないようにするための制御を明示的に行うことになっている。本明細書では、以降、これを排他制御区間と呼称する。
プログラム実行を担うプロセッサユニットが一個であれば、排他制御区間に入る時点で他処理への切り換えを禁止し、そこから出る時点で他処理への切り換えを許可することで、その期間中に他処理が割り込まないことを保証できる。
プロセッサユニットが一個の場合、あるプログラムをスレッドとして実行中に他プログラムの実行(スレッド)が割り込むのは、最初のスレッド実行中にスレッド切り換えの契機となる何らかの事象が発生し、オペレーティングシステムがスレッド切り換えを行うためである。
従って、オペレーティングシステムに対して他処理(スレッド)への切り換えを禁止するように指示しておくことにより、スレッド切り換え禁止状態においてスレッド切り換えの契機となる何らかの事象が発生しても、その時点ではスレッド切り換えを行わず、最初のプログラムが他処理(スレッド)への切り換えを許可した時点でスレッド切り換えを行うように制御することが可能だからである。
これに対し、マルチプロセッサシステムでは、他処理への切り換え禁止だけでは正しい処理結果が得られることを保証できない。他処理への切り換え禁止は、そのプログラムを実行しているプロセッサユニットに対しては有効であるが、他プロセッサユニットによるプログラム実行には影響を与えないからである。
他プロセッサユニットによるプログラム実行が排他制御区間に入らないようにするための方法として一般的に行われているのは、排他制御区間を実行中のスレッドが存在するか否かを示すフラグ(以降、lock wordと呼称する)を用意する、という対処である。
スレッドは排他制御区間に入る時点でlock wordを確認し、1)それが「未使用を示す値(以降、unlockedと表記)」であれば、lock wordを「使用中を示す値(以降、lockedと表記)」に変更して排他制御区間の処理を実行する、2)それがlockedであれば、そのlock wordがunlockedになるまで待った後、それをlockedに変更して排他制御区間の処理を実行する。
また、排他制御区間の実行を終了した時点でlock wordをunlockedに戻す。以上の制御を行うことにより、他プロセッサユニットが実行する処理と自プロセッサユニットが実行する処理が排他制御区間上で競合するという問題は発生しない。排他制御区間は、複数スレッドによる処理の正しさに関係していることに加え、データ処理装置の性能の上限を決めるボトルネック要素となる可能性がある。
なぜなら、マルチプロセッサ構成のデータ処理装置では、あるスレッドが排他制御区間を実行(以下、他の資源と合わせるため「使用」と表記する)していると、その排他制御区間を使用する必要のある他のスレッドは、使用中のスレッドが退去するまで待つという操作が必要となる場合が生じるからである。
これは、プロセッサユニットやdiskといった物理資源と同様、排他制御区間に対して待ち行列が形成されることを意味している。従って、負荷の増大により排他制御区間の使用率が他の資源よりも先に100%に近づく場合は、排他制御区間がシステム性能の上限を決めるボトルネックとなる。
排他制御区間の使用率は、単位時間当たりの使用回数と1回の使用時間の積となる。このため、データ処理装置の処理のスループット性能が飽和している状態で、かつ、排他制御区間がボトルネック、すなわち、その使用率が100%となっている状況では、上記二つの要因は反比例の関係になる。
なぜなら、排他制御区間がボトルネックになると、その単位時間当たりの使用回数がデータ処理装置のスループット性能に対応するようになると考えられるためである。このような状況下でデータ処理装置のスループット性能の上限を増大させるには、排他制御区間1回の使用時間を短くすることが必要となる。
排他制御区間1回の使用時間は、排他制御区間に進入してから退去するまでのプログラム実行時間であり、1)その間に実行する命令数、2)1命令当たりのクロック数(CPI: Clock Per Instruction)、3)1クロック・サイクルの時間、の積となる。
このうち、1)と3)の削減は容易ではなく、固定値として扱うことが多い。1)は排他制御区間で保護して行う処理の内容、すなわち、プログラムで実装しているアルゴリズムで決まる要因であり、3)はデータ処理装置のハードウェアで決まる要因だからである。
一方、2)には、プロセッサユニットの命令実行アーキテクチャやキャッシュメモリのアーキテクチャといったさまざまな要素が関与しており、チューニングの余地は大きい。
排他制御区間の実現に関する従来技術は以下の通りである。重要な点は、スレッドが排他制御区間に入る時点で行う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レジスタ)とレジスタ・オペランドとメモリ・オペランドの3オペランドを使用する命令であり、1)メモリ・オペランドの値をプロセッサユニットに読み込む、2−1)その値がeaxレジスタの値と一致する場合は外部メモリにレジスタ・オペランドの値を書き込む、2−2)その値がeaxレジスタの値と一致しない場合はその値をeaxレジスタに書き込む、という一連の操作をアトミックに行うものである。
ここでのアトミックは、1)のメモリ読み込み操作と2−1)のメモリ書込操作の間に、他のプロセッサユニットが外部メモリにアクセスしないことがハードウェア動作によって保証されていることを意味する。なお、このcmpxchg命令が行う操作をCompare And Swap(CAS命令)と称することが多い。
上記CAS命令を用いてlock操作を行うには、eaxレジスタにunlocked、レジスタ・オペランドにlockedを入れ、メモリ・オペランドをlock wordとしてCAS命令を実行する。
Lock wordがunlockedの場合は上記2−1)が実行されるので、lock wordはlockedに書き換えられ、eaxレジスタの値は変化しない。一方、lock wordがlockedの場合は上記2−2)が実行されるので、lock wordへの書き込みは行われず、eaxレジスタにはlockedが設定される。
CAS命令を実行したスレッドは、CAS命令の実行後のeaxレジスタの値を調べることで、lock操作が成功したか失敗したかを調べることができる、すなわち、排他制御区間を実行するか、lock wordにunlockedが設定されるのを待つ状態に入るのかの判断を行うことができる。
現在、上述のようなデータ処理装置として各種の提案がある(下記特許文献1から4参照)。
特開2000−305844号公報 特開2006−276901号公報 特開2007−272681号公報 特開平11−259362号公報
ところで、マルチプロセッサ構成のデータ処理装置において、排他制御区間が性能上のボトルネックとなる場合、その性能を向上させるためには、プログラム実行が排他制御区間に進入してから退去するまでの時間を短くする必要がある。しかしながら、排他制御区間内で行う処理の量を削減する方法は実現が困難なため、そのような動作状況にあるデータ処理装置の性能を向上させることは困難である。
マルチプロセッサ構成のデータ処理装置において、排他制御区間が性能上のボトルネックとなる場合、データ処理装置のスループット性能の上限は、プログラム実行が排他制御区間に進入してから退去するまでの時間によって決まる。
しかし、排他制御区間内で行う処理はプログラムで実装しているアルゴリズムによって決まっているため、それを変更するためにはアルゴリズム全体の変更を要する。このような理由から、上述したように、排他制御区間内で行う処理量を削減することは困難である。
本発明は上述のような課題に鑑みてなされたものであり、プログラム実行が排他制御区間に進入してから退去するまでの時間を短縮することができるデータ処理装置および方法、そのプロセッサユニット、を提供するものである。
本発明の第1の態様に係るデータ処理装置は、命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、複数のプロセッサユニットの各々が、命令やデータを一時保持するキャッシュメモリと、キャッシュメモリを経由して外部メモリから命令やデータを読み出して命令を実行する命令実行部と、この命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、ボトルネックとなることが予め特定されている排他制御区間からスレッドが退去したことを検出する終了検出部と、開始検出部と終了検出部とによる検出結果からボトルネックとなる排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、命令実行部が外部メモリにアクセスする際に実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグをセットし、命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、排他制御区間で利用したデータをキャッシュメモリに残す。
本発明の第2の態様に係るデータ処理方法は、命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、上記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出し、当該排他制御区間からスレッドが退去したことを検出し、上記のような検出結果から当該排他制御区間の処理を実行しているスレッドが存在しているかどうかを実行中フラグに反映し、上記命令実行部が外部メモリにアクセスする際に当該実行中フラグがセットされている場合、上記キャッシュメモリに保持される各キャッシュエントリであって、上記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、上記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、上記排他制御区間で利用したデータをキャッシュメモリに残す。
本発明の第3の態様に係るプロセッサユニットは、命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載され、命令やデータを一時保持するキャッシュメモリと、キャッシュメモリを経由して外部メモリから命令やデータを読み出して命令を実行する命令実行部と、命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、上記排他制御区間からスレッドが退去したことを検出する終了検出部と、開始検出部と終了検出部とによる検出結果から上記排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、当該プロセッサユニットは、命令実行部が外部メモリにアクセスする際に実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグをセットし、命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、排他制御区間で利用したデータをキャッシュメモリに残す。
なお、本発明の各構成要素は、その機能を実現するように形成されていればよく、例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ処理装置、コンピュータプログラムによりデータ処理装置に実現された所定の機能、これらの任意の組み合わせ、等として実現することができる。
また、本発明の各構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
また、本発明のデータ処理方法は、複数の処理および動作を順番に記載してあるが、複数の処理および複数の動作を実行する順番は、その記載の順番に限定されない。このため、本発明のデータ処理方法を実施するときには、その複数の処理および複数の動作の順番は内容的に支障しない範囲で変更することができる。
さらに、本発明のデータ処理方法は、複数の処理および複数の動作が個々に相違するタイミングで実行されることに限定されない。このため、ある処理および動作の実行中に他の処理および動作が発生すること、ある処理および動作の実行タイミングと他の処理および動作の実行タイミングとの一部ないし全部が重複していてもよい。
また、本発明で云うデータ処理装置は、コンピュータプログラムを読み取って対応する処理動作を実行できるように、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、I/F(Interface)ユニット、等の汎用デバイスで構築されたハードウェア、所定の処理動作を実行するように構築された専用の論理回路、これらの組み合わせ、等として実現することができる。
上述の各態様によれば、事後も排他制御区間で利用する可能性の高いデータをキャッシュメモリに残すことができ、それ以降の排他制御区間実行時におけるキャッシュヒット率を高め、その結果として、排他制御区間の実行時間を短くすることができる。これにより、排他制御区間が性能上のボトルネックとなっているマルチプロセッサ構成のデータ処理装置の性能を、排他制御区間で実行する処理を変更することなく、向上させることができる。
本発明の実施の第一の形態のデータ処理装置の構成を示す模式的なブロック図である。 本発明の実施例のデータ処理装置の構成を示す模式的なブロック図である。 プロセッサユニットの要部の構成を示す模式的なブロック図である。 プロセッサユニットの要部の構成を示す模式的なブロック図である。 プロセッサユニットの命令実行部とキャッシュメモリとの関係を示す模式的なブロック図である。 プロセッサユニットのアトミックアクセスが成功した場合を示すタイムチャートである。 プロセッサユニットの書き込みアクセスを示すタイムチャートである。 ボトルネックである排他制御区間の処理を示すフローチャートである。
本発明の実施の第一の形態を図1を参照して以下に説明する。本実施の形態のデータ処理装置100は、図示するように、命令や命令実行に必要なデータを保持している外部メモリ110と複数のプロセッサユニット200とを有する。
本実施の形態のデータ処理装置100では、複数のプロセッサユニット200の各々が、命令やデータを一時保持するキャッシュメモリ210と、キャッシュメモリ210を経由して外部メモリ110から命令やデータを読み出して命令を実行する命令実行部220と、ボトルネックとなることが予め特定されている排他制御区間にスレッドが進入したことを検出する開始検出部230と、上記排他制御区間からスレッドが退去したことを検出する終了検出部240と、開始検出部230と終了検出部240とによる検出結果から上記排他制御区間の処理を実行しているスレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグ250と、を有する。
ここで、スレッドとは、命令実行部220がプログラム(上記命令)を実行することにより実現される任意の処理単位を意味し、プロセス、タスク等と同意である。本実施形態は、この処理単位を制限するものではない。
キャッシュメモリ210は、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持する。命令実行部220が外部メモリ110にアクセスする際に実行中フラグ250がセットされている場合、アクセス対象のキャッシュエントリに属する優先フラグがセットされる。
本実施の形態のデータ処理装置100は、命令実行部220による外部メモリ110へのアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、優先フラグを利用することで、排他制御区間で利用したデータをキャッシュメモリ210に残す。
より詳細には、キャッシュメモリ210は、データとアドレスと追い出し候補決定情報からなる複数のキャッシュエントリ211、入れ換え対象となるキャッシュエントリを決定する犠牲(victim)エントリ決定部212、キャッシュ入れ換え制御部213から構成されている。
命令実行部220は、一般的なプロセッサの処理と同様に、キャッシュメモリ210を経由して外部メモリ110から実行すべき命令や命令実行に必要なデータを読み出してその読み出された命令を実行する。命令実行に伴って外部メモリ110へのデータ書込操作が必要となった場合は、キャッシュメモリ210を経由してそのデータが書き込まれる。
さらに、プロセッサユニット200には、排他制御を実現するためのCAS命令が用意されており、外部メモリ110に存在するlock wordに対してアトミックなアクセスを行うようになっている。
これらはそれぞれ概略つぎのように動作する。まず、命令実行部220は、一般的なプロセッサの処理と同様に、キャッシュメモリ210を経由して外部メモリ110から実行すべき命令や命令実行に必要なデータを読み出してその読み出された命令を実行する。
命令実行に伴って外部メモリ110へのデータ書込操作が必要となった場合は、キャッシュメモリ210を経由してそのデータが書き込まれる。さらに、プロセッサユニット200には、排他制御を実現するためのCAS命令が用意されており、外部メモリ110に存在するlock wordに対してアトミックなアクセスが行われる。
開始検出部230は、命令実行部220により実行されているプログラムが予め指定された排他制御区間の実行を開始したという事象を検出し、実行中フラグ250をセットする。即ち、開始検出部230は、排他制御区間実行開始検出部と表記することもできる。
同様に、終了検出部240は、命令実行部220により実行されているプログラムが予め指定された排他制御区間の実行を終了したという事象を検出し、実行中フラグ250をリセットする。即ち、終了検出部240は、排他制御区間実行終了検出部と表記することもできる。
実行中フラグ250は、命令実行部220によるプログラム実行中に行われるキャッシュメモリ210経由の外部メモリ110へのアクセスの際に参照され、このフラグがセットされている場合は、アクセス対象のキャッシュエントリ211内の優先フラグがセットされる。即ち、実行中フラグ250は、排他制御区間実行中フラグと表記することもできる。また、優先フラグは、排他制御区間優先フラグと表記することもできる。
命令実行部220による外部メモリ110へのアクセスがキャッシュミスとなった場合、すなわち、アクセス対象のデータがキャッシュメモリ210中に存在していない場合は、キャッシュメモリ210は、そのデータを置くことのできる複数のキャッシュエントリ211から入れ換え対象のキャッシュエントリを決め、そのエントリにアクセス対象のデータを配置すると共に、命令実行部220に対してそのデータを供給する。
入れ換え対象エントリを決める操作は、命令実行部220の要求したデータを置くことのできる複数のキャッシュエントリ211についての追い出し候補決定情報(優先フラグの情報を含む)を入力として、犠牲エントリ決定部212が以下のように行う。
まず、優先フラグがセットされているキャッシュエントリと優先フラグがセットされていない(リセット状態の)キャッシュエントリが混在している場合は、犠牲エントリ決定部212は、優先フラグがセットされていないキャッシュエントリに含まれる優先フラグ以外の追い出し候補決定情報に基づいて入れ換え対象のキャッシュエントリを選ぶ。
また、命令実行部220が要求しているデータを置くことのできる複数のキャッシュエントリ211総ての優先フラグが同じ値(セットされている、または、リセット状態)の場合は、犠牲エントリ決定部212は、それらのエントリに含まれる優先フラグ以外の追い出し候補決定情報から入れ換え対象のキャッシュエントリを選ぶ。
ここで、優先フラグ以外の追い出し候補決定情報からキャッシュ入れ換え対象エントリを選ぶ操作は、一般的なキャッシュ入れ換え対象エントリの決定手法と同様である。また、優先フラグ以外の追い出し候補決定情報は、周知であるため、ここでは説明を省略する。
キャッシュ入れ換え制御部213は、上述のように入れ換え対象のキャッシュエントリが選択されると、以下のようなキャッシュエントリの入れ換え操作を行う。キャッシュエントリ211の入れ換え操作では、1)データ部には、命令実行部220の要求するデータの存在するデータブロックが外部メモリ110から読み込まれて、その読み込まれたデータブロックが設定され、2)アドレス部には、アクセス対象のアドレスが設定され、3)追い出し候補決定情報のうち、優先フラグ以外の部分には、一般的なキャッシュメモリと同様に、追い出し候補決定用の情報が設定され、4)優先フラグには、実行中フラグ250の値が設定される。
本実施の形態の特徴は、1)命令実行部220により実行されているプログラムが予め指定された排他制御区間を実行しているか否かを実行中フラグ250に反映させること、2)命令実行部220によるキャッシュメモリ210を経由した外部メモリ110へのアクセスが、a)キャッシュヒットした場合は実行中フラグ250の値をアクセス対象のデータが存在するキャッシュエントリ211に設定し、b)キャッシュミスとなった場合は優先フラグの情報を利用してキャッシュ入れ換え対象エントリを決める、という点である。
本実施の形態のデータ処理装置100は、上述のように事後も排他制御区間で利用する可能性の高いデータをキャッシュメモリ210に残すことにより、それ以降の排他制御区間実行時におけるキャッシュヒット率を高め、その結果として、排他制御区間の実行時間を短くすることができる。
これにより、排他制御区間が性能上のボトルネックとなっているマルチプロセッサ構成のデータ処理装置100の性能を、排他制御区間で実行する処理を変更することなく、向上させることができる。
[第一の実施例]
つぎに、具体的な実施例を用いて本発明を実施するための形態の動作を説明する。図2に示すように、本実施例におけるプロセッサユニット300は、LWアドレスレジスタ310を有する。
また、開始検出部230および終了検出部240は、命令実行部220とキャッシュメモリ210との間でアクセスされる外部メモリ110のアドレスやデータを受け渡すための内部バス320、および、LWアドレスレジスタ310に接続されている。
LWアドレスレジスタ310が保持する値は命令実行部220から設定されるようになっており、LWアドレスレジスタ310は、ボトルネックである排他制御区間に対応するlock wordのアドレスを保持するようになっている。
なお、このプロセッサユニット300上で動作するプログラムのボトルネックである排他制御区間に対応するlock wordのアドレスは、このプロセッサユニット300上で実行されるプログラムの開発者やシステムの運用者による事前のプロファイリングなどにより、予め判明しており、プログラムの実行直前またはプログラム起動直後の初期化操作時にLWアドレスレジスタ310に設定されているものとする。
また、本実施例のプロセッサユニット300では、lock wordの値が0のときはunlocked状態(対応する排他制御区間を実行中のスレッドは存在しない状態)、0以外の値のときはlocked状態(対応する排他制御区間を実行しているスレッドが存在する状態)を示すものとする。
図3に示すように、開始検出部230は、LWアドレスレジスタ310と内部バス320のアドレスを入力とするアドレス比較部231、内部バス320のデータ部、Lock信号、書込信号、完了信号を入力とするlock状態検出部232、アドレス比較部231とlock状態検出部232の出力を入力とするset信号作成部233を含む。
図4に示すように、終了検出部240は、LWアドレスレジスタ310と内部バス320のアドレスを入力とするアドレス比較部241、内部バス320のデータ部、Lock信号、書込信号、完了信号を入力とするunlock状態検出部242、アドレス比較部241とunlock状態検出部242の出力を入力とするreset信号作成部243を含む。
開始検出部230のset信号、および、終了検出部240のreset信号は、図2に示したとおり、実行中フラグ250に送られる。
また、図5に示すように、データ転送を行う内部バス320には、アドレス、データ、書込信号、読出信号、完了信号、Lock信号がある。これらは、従来技術によるバスと同様に動作する。
本実施例における排他制御区間の実行開始時は、プロセッサユニット300は、以下のように動作する。排他制御区間に進入できるのは、プロセッサユニット300によるアトミックなアクセスによりlock wordを0から0以外の値に書き換える操作が成功した場合である。
このアトミックなアクセスは、命令実行部220からキャッシュメモリ210を経由した外部メモリ110へのアクセスによって行われる。その際、内部バス320のアドレス部分では、lock wordのアドレスを命令実行部220からキャッシュメモリ210に送る操作が行われ、データ部分では、外部メモリ110の値を命令実行部220に送る操作、命令実行部220が外部メモリ110に書き込む値をキャッシュメモリ210に送る操作が行われる。
図6に、上記のアトミックアクセスが成功した場合のタイムチャートを示す。このアトミックアクセスでは、読み出し操作の開始時に、命令実行部220が、Lock信号と読み出し信号を有効とすると同時に、アドレス・バス経由でアクセス対象であるlock wordのアドレスを送出する。
これらの信号を受け取ったキャッシュメモリ210は、必要に応じて外部メモリ110にアクセスしてlock wordの値(この場合は0)を取得すると、その値をデータ・バス経由で命令実行部220に送るとともに、完了信号を有効に設定する。
完了信号は、命令実行部220が値0を受け取って読み出し信号を無効に設定したことをキャッシュメモリ210が検出することにより、無効に戻される。つぎに、命令実行部220は、読み込んだデータと実行中の命令で規定されるレジスタの値を比較する。
両者が一致しない場合、命令実行部220は、Lock信号を無効に戻すと共に命令実行を終了し、命令の実行結果を失敗に設定する。逆に、両者が一致した場合、命令実行部220は、実行中の命令で規定される0以外の値をデータ・バス経由でキャッシュメモリ210に送るとともに書込信号を有効レベルに設定する。
この操作により、キャッシュメモリ210は送られた0以外の値をlock wordに書き込む。この書き込みが完了すると、キャッシュメモリ210は完了信号を有効に設定する。
命令実行部220は、完了信号が有効に設定されたことを検出すると、書込信号とLock信号を無効レベルに設定すると共に、アドレス・バスへのlock wordのアドレス送出、データ・バスへの0以外の値の送出を完了し、それを検出したキャッシュメモリ210は完了信号を無効に設定する。
以上の操作が完了すると、命令実行部220は、命令実行を終了し、命令の実行結果を成功に設定する。なお、Lock信号が有効レベルに設定されるのは、アトミックアクセス実行時のみであり、アトミックアクセスではない外部メモリ110に対する通常の読み出し操作や書込操作では、Lock信号は無効レベルのままである。
上記の操作において、開始検出部230のlock状態検出部232は、書込信号、完了信号、Lock信号が総て有効であり、かつ、内部バス320のデータを介して0以外の値が転送されている状態を検出し、総ての条件が合致した場合にlock状態検出部232の出力を有効にする。
また、アドレス比較部231は、内部バス320のアドレスを介して送られる外部メモリ110のアドレスと、予めLWアドレスレジスタ310に設定されている値を比較し、一致する場合にアドレス比較部231の出力を有効にする。
lock信号検出部とアドレス比較部231の出力が両方とも有効の場合に開始検出部230の出力であるset信号は有効になる。すなわち、set信号が有効になるのは、書込信号、完了信号、Lock信号が総て有効、かつ、内部バス320のデータを介して0以外の値が転送されている状態、かつ、内部バス320のアドレスを介して送られる外部メモリ110のアドレスが予めLWアドレスレジスタ310に設定されている値と一致する場合、すなわち、ボトルネックである排他制御区間に対応するlock wordにアクセスしてロックを獲得する操作が成功した場合である。これにより、set信号を入力とする実行中フラグ250は、あるスレッドがボトルネックである排他制御区間に進入すると有効に設定されることになる。
また、本実施例における排他制御区間の終了開始時は、以下の通りに動作する。Lock wordによる排他制御により、対応する排他制御区間に同時に進入できるスレッド数は1であるため、lock wordを0以外の値から0に書き換える操作の実施を許されるのは、プログラムが正しく作られている限り、排他制御区間に進入しているスレッドのみである。
従って、この書き換えのための外部メモリ110へのアクセスは、アトミックアクセスでない通常の書込操作、すなわち、命令実行部220からキャッシュメモリ210を経由した外部メモリ110への書込操作によって実施することができる。
その際、内部バス320のアドレス部分では、lock wordのアドレスが命令実行部220からキャッシュメモリ210に送られる操作が行われ、データ部分では、外部メモリ110の値が命令実行部220に送られる操作、及び、命令実行部220が外部メモリ110に書き込む値がキャッシュメモリ210に送られる操作、が行われる。
図7に、上記書き込みアクセスのタイムチャートを示す。命令実行部220は、書込操作の開始時、命令実行部220が内部バス320のアドレス経由でアクセスする対象であるlock wordのアドレス、及び値0をデータ・バス経由でキャッシュメモリ210に送るとともに、書込信号を有効レベルに設定する。
この操作により、キャッシュメモリ210は送られた値0をlock wordに書き込む。この書き込みが完了すると、キャッシュメモリ210は完了信号を有効に設定する。それを命令実行部220は、完了信号が有効に設定されたことを検出すると、書込信号とLock信号を無効レベルに設定すると共に、アドレス・バスへのlock wordのアドレス送出、データ・バスへの0以外の値の送出を完了し、それを検出したキャッシュメモリ210は完了信号を無効に設定する。以上の操作が完了すると、命令実行部220は命令実行を終了する。
上記の操作において、終了検出部240のunlock状態検出部242は、書込信号と完了信号が有効であり、かつ、内部バス320のデータを介して値0が転送されている状態を検出し、総ての条件が合致した場合にunlock状態検出部242の出力を有効にする。
また、アドレス比較部241では、内部バス320のアドレスを介して送られる外部メモリ110のアドレスと、予めLWアドレスレジスタ310に設定されている値を比較し、一致する場合にアドレス比較部241の出力を有効にする。
unlock状態検出部242とアドレス比較部241の出力が両方とも有効の場合に終了検出部240の出力であるreset信号は有効になる。すなわち、reset信号が有効になるのは、書込信号と完了信号が有効、かつ、内部バス320のデータを介して値0が転送されている状態、かつ、内部バス320のアドレスを介して送られる外部メモリ110のアドレスが予めLWアドレスレジスタ310に設定されている値と一致する場合、すなわち、ボトルネックである排他制御区間に対応するlock wordに値0を書き込んでロックを解放する操作を実施した場合である。
これより、reset信号を入力とする実行中フラグ250は、あるスレッドがボトルネックである排他制御区間から退去すると無効に設定されることになる。実行中フラグ250の値を入力するキャッシュメモリ210の動作は、発明を実施するための形態に記載した通りである。
[第二の実施例]
つぎに、本発明の第二の実施例を説明する。この実施例の特徴は、図1の命令実行部220が実行する命令に、実行中フラグ250のセット命令と実行中フラグ250のリセット命令と、が追加されている点である。
また、この実施例における開始検出部230は、命令実行部220が実行中フラグ250のセット命令を実行するとset信号を有効とし、終了検出部240は、命令実行部220が実行中フラグ250のリセット命令を実行するとreset信号を有効とするようになっている。
実行中フラグ250のセット命令と実行中フラグ250のリセット命令は、実行プログラムのコーディング、コンパイル、または、リンク時の時点で実行プログラムに埋め込まれる。
この命令埋め込みは、具体的には、ボトルネックである排他制御区間の実行開始時の処理への実行中フラグ250のセット命令、排他制御区間の実行終了時の処理への実行中フラグ250のリセット命令の埋め込みである。
図8に、実行中フラグ250のセット命令と実行中フラグ250のリセット命令が埋め込まれた、プロセッサユニット300上で動作するプログラムで実現される、ボトルネックである排他制御区間の処理フローを示す。ロック獲得操作では、プロセッサユニット300は、CAS命令によりlock wordの値を0から0以外の値に変更する。その操作が失敗した場合は、プロセッサユニット300は、CAS命令のステップを繰返す。
逆に、CAS命令の操作が成功すると、プロセッサユニット300は、実行中フラグ250のセット命令を実行した後、排他制御区間で行うべき処理を実行する。その処理が完了すると、プロセッサユニット300は、実行中フラグ250のリセット命令を実行した後、lock wordに値0を書き込むことによりロックを解放し、排他制御に関する処理を終了する。
ここで、実行中フラグ250のセット命令と実行中フラグ250のリセット命令とは、実行プログラム作成時などの段階で予め埋め込まれた命令である。
上記、開始検出部230と終了検出部240の動作から明らかなように、実行中フラグ250のセット命令が実行されるとset信号が有効になり、実行中フラグ250がセットされる。また、実行中フラグ250のリセット命令が実行されるとreset信号が有効になり、実行中フラグ250がリセットされる。
従って、実行中フラグ250は、実行中フラグ250のセット命令が実行されてから実行中フラグ250のリセット命令が実行されるまでの期間、すなわち、スレッドが排他制御区間で行うべき処理を実行している期間で有効となり、それ以外の区間では無効となる。実行中フラグ250の値を入力するキャッシュメモリ210の動作は、発明を実施するための形態に記載した通りである。
なお、本発明は本実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で各種の変形を許容する。また、上述した実施の形態および実施例では、各部の構造などを具体的に説明したが、その構造などは本願発明を満足する範囲で各種に変更することができる。
この出願は、2010年6月17日に出願された日本出願特願2010−138051号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
(付記1)
命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、
前記複数のプロセッサユニットの各々が、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記複数のプロセッサユニットの各々は、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理装置。
(付記2)
前記各プロセッサユニットは、排他制御を実現するためのCAS(Compare And Swap)命令を実行可能であり、前記外部メモリに存在するlock wordに対してアトミックなアクセスを行う付記1に記載のデータ処理装置。
(付記3)
前記開始検出部及び前記終了検出部は、
前記命令実行部の処理により実現されたスレッドが予め指定された前記排他制御区間を実行しているか否かを前記実行中フラグに反映させ、
前記キャッシュメモリは、
前記命令実行部による前記キャッシュメモリを経由した前記外部メモリへのアクセスが、キャッシュヒットした場合には、前記実行中フラグの値を前記優先フラグとしてアクセス対象のデータが存在するキャッシュエントリに設定し、前記外部メモリへのアクセスがキャッシュミスとなった場合には、前記優先フラグを利用してキャッシュ入れ換え対象エントリを決める、
付記1または2に記載のデータ処理装置。
(付記4)
前記キャッシュメモリは、
複数のキャッシュエントリと、
入れ換え対象のキャッシュエントリを決定する犠牲エントリ決定部と、
キャッシュ入れ換え制御部と、を有し、
前記キャッシュエントリは、前記優先フラグを含む前記追い出し候補決定情報と、データと、アドレスとを含み、
前記犠牲エントリ決定部は、前記複数のキャッシュエントリの前記追い出し候補決定情報を取得し、前記優先フラグがセットされているキャッシュエントリと前記優先フラグがセットされていないキャッシュエントリとが混在している場合は、前記優先フラグがセットされていないキャッシュエントリに含まれる前記優先フラグ以外の追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選び、前記命令実行部が要求しているデータを置くことのできる複数のキャッシュエントリ総ての前記優先フラグが同じ値の場合は、それらのキャッシュエントリに含まれる前記優先フラグ以外の前記追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選ぶ、
付記1ないし3の何れか一つに記載のデータ処理装置。
(付記5)
前記キャッシュ入れ換え制御部は、前記キャッシュエントリの入れ換え操作において、前記命令実行部の要求するデータの存在するデータブロックを前記外部メモリから読み込み、該読み込まれたデータブロックを前記キャッシュエントリのデータとして設定し、前記キャッシュエントリのアドレスにアクセス対象のアドレスを設定し、
前記追い出し候補決定情報のうち前記優先フラグ以外の部分には前記追い出し候補決定用の情報を設定し、前記優先フラグには前記実行中フラグの値を設定する、
付記4に記載のデータ処理装置。
(付記6)
前記複数のプロセッサユニットの各々は、
前記開始検出部および前記終了検出部に接続されており、前記排他制御区間に対応するlock wordのアドレスが前記命令実行部から設定されるLWアドレスレジスタを、
さらに有する付記1ないし5の何れか一つに記載のデータ処理装置。
(付記7)
前記開始検出部は、
前記LWアドレスレジスタと内部バスのアドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部とLock信号と書込信号と完了信号とを入力とするlock状態検出部と、
前記アドレス比較部と前記lock状態検出部との出力を入力とするset信号作成部と、を含み、
前記終了検出部は、
前記LWアドレスレジスタと前記内部バスの前記アドレスとを入力とするアドレス比較部と、
前記内部バスのデータ部と前記Lock信号と前記書込信号と前記完了信号とを入力とするunlock状態検出部と、
前記アドレス比較部と前記unlock状態検出部の出力を入力とするreset信号作成部と、を含み、
前記開始検出部のset信号、および、前記終了検出部のreset信号は、前記実行中フラグに送られ、
前記内部バスで、前記アドレスと前記データと前記書込信号と読出信号と前記完了信号と前記Lock信号とが伝送される付記6に記載のデータ処理装置。
(付記8)
前記命令実行部が実行する命令に、前記実行中フラグのセット命令と前記実行中フラグのリセット命令と、が含まれ、
前記開始検出部は、前記命令実行部が前記セット命令を実行すると前記実行中フラグをセットし、
前記終了検出部は、前記命令実行部が前記リセット命令を実行すると前記実行中フラグをリセットする、
付記1ないし7の何れか一つに記載のデータ処理装置。
(付記9)
命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出し、
前記排他制御区間から前記スレッドが退去したことを検出し、
前記検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを実行中フラグに反映し、
前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、前記キャッシュメモリに保持される各キャッシュエントリであって、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、
前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
データ処理方法。
(付記10)
命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載されるプロセッサユニットであって、
前記命令や前記データを一時保持するキャッシュメモリと、
前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
前記命令実行部の処理により実現されたスレッドが、ボトルネックとなることが予め特定されている排他制御区間に進入したことを検出する開始検出部と、
前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、
前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグと、を有し、
前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
前記プロセッサユニットは、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、
前記プロセッサユニットは、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
プロセッサユニット。

Claims (13)

  1. 命令や命令実行に必要なデータを保持している外部メモリと複数のプロセッサユニットとを有するデータ処理装置であって、
    前記複数のプロセッサユニットの各々が、
    前記命令や前記データを一時保持するキャッシュメモリと、
    前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
    前記命令実行部の処理により実現されたスレッドが、排他制御区間に進入したことを検出する開始検出部と、
    前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、を有し
    記複数のプロセッサユニットの各々は、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
    データ処理装置。
  2. 前記複数のプロセッサユニットの各々が、前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグをさらに有し、
    前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
    前記複数のプロセッサユニットの各々は、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
    請求項1記載のデータ処理装置。
  3. 前記各プロセッサユニットは、排他制御を実現するためのCAS(Compare And Swap)命令を実行可能であり、前記外部メモリに存在するlock wordに対してアトミックなアクセスを行う請求項に記載のデータ処理装置。
  4. 前記開始検出部及び前記終了検出部は、
    前記命令実行部の処理により実現されたスレッドが前記排他制御区間を実行しているか否かを前記実行中フラグに反映させ、
    前記キャッシュメモリは、
    前記命令実行部による前記キャッシュメモリを経由した前記外部メモリへのアクセスが、キャッシュヒットした場合には、前記実行中フラグの値を前記優先フラグとしてアクセス対象のデータが存在するキャッシュエントリに設定し、前記外部メモリへのアクセスがキャッシュミスとなった場合には、前記優先フラグを利用してキャッシュ入れ換え対象エントリを決める、
    請求項に記載のデータ処理装置。
  5. 前記キャッシュメモリは、
    複数のキャッシュエントリと、
    入れ換え対象のキャッシュエントリを決定する犠牲エントリ決定部と、
    キャッシュ入れ換え制御部と、を有し、
    前記キャッシュエントリは、前記優先フラグを含む前記追い出し候補決定情報と、データと、アドレスとを含み、
    前記犠牲エントリ決定部は、前記複数のキャッシュエントリの前記追い出し候補決定情報を取得し、前記優先フラグがセットされているキャッシュエントリと前記優先フラグがセットされていないキャッシュエントリとが混在している場合は、前記優先フラグがセットされていないキャッシュエントリに含まれる前記優先フラグ以外の追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選び、前記命令実行部が要求しているデータを置くことのできる複数のキャッシュエントリ総ての前記優先フラグが同じ値の場合は、それらのキャッシュエントリに含まれる前記優先フラグ以外の前記追い出し候補決定情報に基づいて、入れ換え対象のキャッシュエントリを選ぶ、
    請求項ないしの何れか一項に記載のデータ処理装置。
  6. 前記キャッシュ入れ換え制御部は、前記キャッシュエントリの入れ換え操作において、前記命令実行部の要求するデータの存在するデータブロックを前記外部メモリから読み込み、該読み込まれたデータブロックを前記キャッシュエントリのデータとして設定し、前記キャッシュエントリのアドレスにアクセス対象のアドレスを設定し、
    前記追い出し候補決定情報のうち前記優先フラグ以外の部分には前記追い出し候補決定用の情報設定し、前記優先フラグには前記実行中フラグの値を設定する、
    請求項に記載のデータ処理装置。
  7. 前記複数のプロセッサユニットの各々は、
    前記開始検出部および前記終了検出部に接続されており、前記排他制御区間に対応するlock wordのアドレスが前記命令実行部から設定されるLWアドレスレジスタを、
    さらに有する請求項ないしの何れか一項に記載のデータ処理装置。
  8. 前記開始検出部は、
    前記LWアドレスレジスタと内部バスのアドレスとを入力とするアドレス比較部と、
    前記内部バスのデータ部とLock信号と書込信号と完了信号とを入力とするlock状態検出部と、
    前記アドレス比較部と前記lock状態検出部との出力を入力とするset信号作成部と、を含み、
    前記終了検出部は、
    前記LWアドレスレジスタと前記内部バスの前記アドレスとを入力とするアドレス比較部と、
    前記内部バスのデータ部と前記Lock信号と前記書込信号と前記完了信号とを入力とするunlock状態検出部と、
    前記アドレス比較部と前記unlock状態検出部の出力を入力とするreset信号作成部と、を含み、
    前記開始検出部のset信号、および、前記終了検出部のreset信号は、前記実行中フラグに送られ、
    前記内部バスで、前記アドレスと前記データと前記書込信号と読出信号と前記完了信号と前記Lock信号とが伝送される請求項に記載のデータ処理装置。
  9. 前記命令実行部が実行する命令に、前記実行中フラグのセット命令と前記実行中フラグのリセット命令と、が含まれ、
    前記開始検出部は、前記命令実行部が前記セット命令を実行すると前記実行中フラグをセットし、
    前記終了検出部は、前記命令実行部が前記リセット命令を実行すると前記実行中フラグをリセットする、
    請求項ないしの何れか一項に記載のデータ処理装置。
  10. 命令やデータを一時保持するキャッシュメモリと、当該キャッシュメモリを経由して外部メモリから命令やデータを読み出して当該命令を実行する命令実行部と、をそれぞれ含む複数のプロセッサユニットの各々が、
    前記命令実行部の処理により実現されたスレッドが、排他制御区間に進入したことを検出し、
    前記排他制御区間から前記スレッドが退去したことを検出し
    記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
    データ処理方法。
  11. 前記複数のプロセッサユニットの各々が、
    前記検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを実行中フラグに反映し、
    前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、前記キャッシュメモリに保持される各キャッシュエントリであって、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグが一時保持される追い出し候補を決定するための追い出し候補決定情報を含む、各キャッシュエントリのうち、アクセス対象のキャッシュエントリに属する優先フラグをセットし、
    前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
    請求項10に記載のデータ処理方法。
  12. 命令や命令実行に必要なデータを保持している外部メモリを有するデータ処理装置に複数が搭載されるプロセッサユニットであって、
    前記命令や前記データを一時保持するキャッシュメモリと、
    前記キャッシュメモリを経由して前記外部メモリから前記命令や前記データを読み出して前記命令を実行する命令実行部と、
    前記命令実行部の処理により実現されたスレッドが、排他制御区間に進入したことを検出する開始検出部と、
    前記排他制御区間から前記スレッドが退去したことを検出する終了検出部と、を有し
    記プロセッサユニットは、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
    プロセッサユニット。
  13. 請求項12記載のプロセッサユニットであって、
    前記開始検出部と前記終了検出部とによる検出結果から前記排他制御区間の処理を実行している前記スレッドが存在しているかどうかを示す二値フラグを保持する実行中フラグをさらに有し、
    前記キャッシュメモリは、各キャッシュエントリに含まれる追い出し候補を決定するための追い出し候補決定情報に、前記排他制御区間を実行中に使用するデータかどうかを示す優先フラグを一時保持し、
    前記プロセッサユニットは、前記命令実行部が前記外部メモリにアクセスする際に前記実行中フラグがセットされている場合、アクセス対象のキャッシュエントリに属する前記優先フラグをセットし、前記命令実行部によるメモリアクセスがキャッシュミスとなったことにより入れ換え対象のキャッシュエントリを決める際に、前記優先フラグを利用することで、前記排他制御区間で利用したデータを前記キャッシュメモリに残す、
    プロセッサユニット。
JP2012520264A 2010-06-17 2011-05-25 データ処理装置および方法、そのプロセッサユニット Expired - Fee Related JP5737290B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012520264A JP5737290B2 (ja) 2010-06-17 2011-05-25 データ処理装置および方法、そのプロセッサユニット

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010138051 2010-06-17
JP2010138051 2010-06-17
JP2012520264A JP5737290B2 (ja) 2010-06-17 2011-05-25 データ処理装置および方法、そのプロセッサユニット
PCT/JP2011/002901 WO2011158441A1 (ja) 2010-06-17 2011-05-25 データ処理装置および方法、そのプロセッサユニット

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015080912A Division JP5999216B2 (ja) 2010-06-17 2015-04-10 データ処理装置

Publications (2)

Publication Number Publication Date
JPWO2011158441A1 JPWO2011158441A1 (ja) 2013-08-19
JP5737290B2 true JP5737290B2 (ja) 2015-06-17

Family

ID=45347858

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012520264A Expired - Fee Related JP5737290B2 (ja) 2010-06-17 2011-05-25 データ処理装置および方法、そのプロセッサユニット
JP2015080912A Expired - Fee Related JP5999216B2 (ja) 2010-06-17 2015-04-10 データ処理装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015080912A Expired - Fee Related JP5999216B2 (ja) 2010-06-17 2015-04-10 データ処理装置

Country Status (3)

Country Link
US (2) US9158542B2 (ja)
JP (2) JP5737290B2 (ja)
WO (1) WO2011158441A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11086791B2 (en) * 2019-08-29 2021-08-10 Micron Technology, Inc. Methods for supporting mismatched transaction granularities
US11442731B2 (en) * 2019-10-17 2022-09-13 Arm Limited Data processing systems including an intermediate buffer with controlled data value eviction
CN115526760A (zh) * 2021-06-25 2022-12-27 英特尔公司 用于动态地改变高速缓存中的数据优先级的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03237554A (ja) * 1990-02-14 1991-10-23 Nec Corp マルチプロセッサ制御方式
JP2004145780A (ja) * 2002-10-28 2004-05-20 Mitsubishi Electric Corp マルチプロセッサ・キャッシュ装置
JP2008257594A (ja) * 2007-04-06 2008-10-23 Hitachi Ltd 情報処理装置および情報処理方法
WO2009122694A1 (ja) * 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3381079B2 (ja) * 1993-03-16 2003-02-24 日本電信電話株式会社 キャッシュメモリを用いた排他制御システム
JPH11259362A (ja) 1998-03-13 1999-09-24 Nec Corp キャッシュメモリ制御方法及び装置
JP2000305844A (ja) 1999-04-26 2000-11-02 Mitsubishi Electric Corp キャッシュ制御装置
US7287122B2 (en) * 2004-10-07 2007-10-23 International Business Machines Corporation Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing
JP2006276901A (ja) 2005-03-25 2006-10-12 Nec Corp マルチプロセッサ計算機、そのキャッシュコヒーレンシ保証方法及びキャッシュコヒーレンシ保証プログラム
JP2007272681A (ja) 2006-03-31 2007-10-18 Nec Electronics Corp キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03237554A (ja) * 1990-02-14 1991-10-23 Nec Corp マルチプロセッサ制御方式
JP2004145780A (ja) * 2002-10-28 2004-05-20 Mitsubishi Electric Corp マルチプロセッサ・キャッシュ装置
JP2008257594A (ja) * 2007-04-06 2008-10-23 Hitachi Ltd 情報処理装置および情報処理方法
WO2009122694A1 (ja) * 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム

Also Published As

Publication number Publication date
JPWO2011158441A1 (ja) 2013-08-19
JP2015158936A (ja) 2015-09-03
US9158542B2 (en) 2015-10-13
WO2011158441A1 (ja) 2011-12-22
JP5999216B2 (ja) 2016-09-28
US20130103930A1 (en) 2013-04-25
US20150370565A1 (en) 2015-12-24
US9389864B2 (en) 2016-07-12

Similar Documents

Publication Publication Date Title
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
KR101968711B1 (ko) 저장된 원자적 절차를 사용하는 프로그램 가능한 원자적 메모리
EP2332043B1 (en) Virtualizable advanced synchronization facility
US20080040524A1 (en) System management mode using transactional memory
KR20120061938A (ko) 시스템 관리 모드의 프로세서에 상태 스토리지를 제공하기 위한 장치, 방법 및 시스템
US9575816B2 (en) Deadlock/livelock resolution using service processor
JP2009157542A (ja) 情報処理装置及びそのスタックポインタ更新方法
JP5451579B2 (ja) 適応的最適化された比較/交換オペレーション
WO2012067904A1 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
US20120304185A1 (en) Information processing system, exclusive control method and exclusive control program
JP5999216B2 (ja) データ処理装置
JP4893427B2 (ja) マイクロコンピュータシステム
US7137118B2 (en) Data synchronization hardware primitive in an embedded symmetrical multiprocessor computer
JP2009175960A (ja) 仮想マルチプロセッサシステム
EP1789876B1 (en) Method and apparatus for modifying an information unit using an atomic operation in a system with a mixed architecture
JP7236811B2 (ja) 情報処理装置
EP1901171A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
CN102455939A (zh) 系统管理中断机制
JP2011118756A (ja) 排他制御プログラム、排他制御方法、及び情報処理システム
JP5828324B2 (ja) マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
US7765383B2 (en) Data processing unit and data processing apparatus using data processing unit
JP4370227B2 (ja) プロセッサ
JPH02280248A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140403

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150406

R150 Certificate of patent or registration of utility model

Ref document number: 5737290

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees