JP2013168103A - Information processor and information processing method - Google Patents
Information processor and information processing method Download PDFInfo
- Publication number
- JP2013168103A JP2013168103A JP2012032474A JP2012032474A JP2013168103A JP 2013168103 A JP2013168103 A JP 2013168103A JP 2012032474 A JP2012032474 A JP 2012032474A JP 2012032474 A JP2012032474 A JP 2012032474A JP 2013168103 A JP2013168103 A JP 2013168103A
- Authority
- JP
- Japan
- Prior art keywords
- shared resource
- processor
- variable
- update
- resource
- 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.)
- Granted
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
Description
本発明は、情報処理に関し、特に、複数の処理部からアクセスする資源(リソース)管理に関する。 The present invention relates to information processing, and more particularly, to management of resources accessed from a plurality of processing units.
情報処理システム、又は、情報処理装置は、各処理を実行する複数の処理単位(例えば、処理装置、プロセッサ、又は、プロセス。以下、これら処理単位をまとめてプロセッサと言う)が動作している。このように、複数(マルチ)のプロセッサを含むシステムは、マルチプロセッサシステムを言われる。マルチプロセッサシステムは、複数のプロセッサがアクセスする(共有する)資源(リソース)の整合性を保つため、排他制御の機能を備える。 In the information processing system or the information processing apparatus, a plurality of processing units (for example, a processing apparatus, a processor, or a process. These processing units are collectively referred to as a processor) are operating. Thus, a system including multiple (multi) processors is referred to as a multiprocessor system. The multiprocessor system has an exclusive control function in order to maintain consistency of resources (resources) accessed (shared) by a plurality of processors.
ここで、共有リソースは、例えば、ホストメモリ、外部記憶装置、出力装置、又は、入力装置である。 Here, the shared resource is, for example, a host memory, an external storage device, an output device, or an input device.
共有リソースの排他制御として用いられる同期の基本(プリミティブ)構造としては、ミューテックスやセマフォのようなロックを用いた不可分(アトミック)操作がある。(例えば、特許文献1及び特許文献2を参照)
上記の特許文献1及び特許文献2のシステムのプロセッサは、共有リソースを使用する場合、次のように動作する。
As the basic (primitive) structure of synchronization used for exclusive control of shared resources, there is an atomic operation using a lock such as a mutex or a semaphore. (For example, see Patent Document 1 and Patent Document 2)
When the shared resources are used, the processors of the systems disclosed in Patent Literature 1 and Patent Literature 2 operate as follows.
まず、プロセッサは、共有リソースのロックの有無を確認する。 First, the processor confirms whether or not the shared resource is locked.
ロックされていない(解除状態の)場合、プロセッサは、共有リソースのロックを取得する。そして、プロセッサは、共有リソースを処理し、処理後ロックを解除する。 If not locked (released), the processor obtains a lock on the shared resource. Then, the processor processes the shared resource and releases the lock after processing.
ロックされている(ロック設定の)場合、プロセッサは、ロックが解除されるまで待ち、ロック解除後に共有リソースのロックを取得し、処理を継続する。 If it is locked (lock setting), the processor waits until the lock is released, acquires the shared resource lock after the lock is released, and continues the processing.
あるいは、マルチプロセッサシステムを構成するプロセッサ、特に個別の命令を処理するCPU(Central Processing Unit)が、アトミック性を備えた特別な命令を備え、アトミックな操作を実現し、排他制御を実現する。このような命令は、例えば、テスト・アンド・セット(TAS:Test And Set)命令やコンペア・アンド・スワップ(CAS:Compare And Swap)命令である。 Alternatively, a processor constituting the multiprocessor system, particularly a CPU (Central Processing Unit) that processes individual instructions, includes a special instruction having atomicity, realizes an atomic operation, and realizes exclusive control. Such an instruction is, for example, a test and set (TAS) instruction or a compare and swap (CAS) instruction.
上記のTAS命令やCAS命令を用いるシステムは、これらの命令を備えた特別なCPU又はハードウェアが必要であるという問題点があった。 The system using the above TAS instruction and CAS instruction has a problem that a special CPU or hardware provided with these instructions is required.
また、特許文献1及び特許文献2に記載のシステムは、アクセスの内容に関係せずに、共有リソースの処理においてロック取得が必要である問題点があった。 In addition, the systems described in Patent Literature 1 and Patent Literature 2 have a problem that it is necessary to acquire a lock in the processing of shared resources regardless of the contents of access.
この問題点のため、特許文献1及び特許文献2に記載のシステムは、ロック取得の競合が増加し、次のような性能低下を発生させる問題点があった。 Because of this problem, the systems described in Patent Document 1 and Patent Document 2 have a problem in that competition for lock acquisition increases and the following performance degradation occurs.
(1)ロックの競合が増加すると、ロック取得の失敗の頻度が高くなる。その結果、プロセッサは、ロック待ちとなる場合が増加する。 (1) When lock contention increases, the frequency of lock acquisition failures increases. As a result, the number of cases where the processor is waiting for a lock increases.
(2)ロック待ちが増加すると、キャッシュがページアウトされて無効(インバリッド)となる頻度が高くなる。つまり、キャッシュミス率が高くなる。その結果、プロセッサは、処理におけるページインの頻度が高くなり、処理時間が多くなる。 (2) When the lock wait time increases, the frequency at which the cache is paged out and invalidated (invalid) increases. That is, the cache miss rate increases. As a result, the processor has a high page-in frequency in processing, and processing time increases.
(3)共有リソースを参照するプロセッサが並列に処理できない。 (3) Processors that reference shared resources cannot process in parallel.
これらの問題点は、大規模マルチプロセッサの構成において、特に著しい性能悪化の原因となる。 These problems cause significant performance deterioration particularly in a large-scale multiprocessor configuration.
本発明の目的は、上記問題点を解決し、特別な命令を用いずに、性能の低下を削減した共有リソースの利用を実現する、情報処理装置、及び、情報処理方法を提供することにある。 An object of the present invention is to provide an information processing apparatus and an information processing method that solves the above-described problems and realizes use of a shared resource with reduced performance reduction without using a special instruction. .
本発明の情報処理装置は、共有資源の更新状態を示す制御情報を保持する資源制御部と、前記共有資源を更新する前に前記資源制御部の制御情報を更新し、前記共有資源を更新後に前記資源制御部の制御情報をさらに更新する第1の処理部と、前記資源制御部の制御情報を基に前記第1の処理部が前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記資源制御部の制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する第2の処理部とを含む。 An information processing apparatus according to the present invention includes a resource control unit that holds control information indicating an update state of a shared resource, and updates the control information of the resource control unit before updating the shared resource, and after updating the shared resource A first processing unit that further updates control information of the resource control unit, and a determination as to whether or not the first processing unit is updating the shared resource based on the control information of the resource control unit. If the update is not in progress, the shared resource is referred to.If the update is in progress, the shared resource is referred to after the update is completed. After the shared resource is referred to, the reference is made based on the control information of the resource control unit. And a second processing unit that performs a second determination, which is a determination as to whether or not the update of the shared resource has occurred, and refers to the shared resource again when the update has occurred.
本発明の情報処理方法は、共有資源の更新状態を示す制御情報を保持し、前記共有資源を更新する場合、前記共有資源を更新する前に前記制御情報を更新し、前記共有資源を更新後に前記制御情報をさらに更新し、前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する。 The information processing method of the present invention holds control information indicating an update state of a shared resource, and when updating the shared resource, updates the control information before updating the shared resource, and after updating the shared resource. When the control information is further updated and the shared resource is referred to, a first determination is made as to whether or not the shared resource is being updated based on the control information. If the update is in progress, the shared resource is referred to after the update is completed, and after the reference to the shared resource, it is determined whether the shared resource is updated during the reference based on the control information. A second determination is made and if an update occurs, the shared resource is referenced again.
本発明のプログラムは、共有資源の更新状態を示す制御情報を保持する処理と、前記共有資源を更新する場合、前記共有資源の更新の前に前記制御情報を更新し、前記共有資源の更新後に前記制御情報をさらに更新する処理と、前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する処理とをコンピュータに実行させる。 The program of the present invention includes a process for holding control information indicating an update state of a shared resource, and, when updating the shared resource, updates the control information before updating the shared resource, and after updating the shared resource. When the process further updates the control information and the shared resource is referenced, a first determination is made as to whether or not the shared resource is being updated based on the control information. Refer to the shared resource, and if the update is in progress, refer to the shared resource after the update is completed, and after the reference to the shared resource, determine whether the update of the shared resource occurs during the reference based on the control information When the update occurs, the computer is caused to execute a process of referring to the shared resource again.
本発明によれば、特別な命令を用いずに、性能の低下を削減した共有リソースの利用を実現できる。 According to the present invention, it is possible to realize use of shared resources with reduced performance reduction without using a special instruction.
次に、本発明の実施形態について図面を参照して説明する。 Next, embodiments of the present invention will be described with reference to the drawings.
なお、各図面は、本発明の実施形態を説明するものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明は、省略する場合がある。 Each drawing explains an embodiment of the present invention. Therefore, the present invention is not limited to the description of each drawing. Moreover, the same number is attached | subjected to the same structure of each drawing, and the repeated description may be abbreviate | omitted.
(第1の実施形態)
図1は、本発明おける第1の実施形態に係る情報処理装置10の構成の一例を示すブロック図である。なお、図1において、本実施形態の説明に関係しない構成(例えば、入出力部)は、省略した。
(First embodiment)
FIG. 1 is a block diagram showing an example of the configuration of the
情報処理装置10は、プロセッサ20aと、プロセッサ20bと、資源制御部30とを含む。
The
プロセッサ20aとプロセッサ20bとをまとめて、プロセッサ20と言う。
The
プロセッサ20は、資源制御部30を用いて、図示しない共有リソースを使用する。
The
より詳細な動作は、後ほど説明するが、プロセッサ20は、資源制御部30を、次のように用いる。
Although more detailed operation will be described later, the
プロセッサ20は、共有リソースを更新(例えば、データを更新)する場合、資源制御部30が含む情報(以下、「制御情報30a」と言う)を更新して変更処理を進める。つまり、プロセッサ20は、制御情報30aの変化に基づいて、共有リソースの更新を検出できる。
When updating the shared resource (for example, updating data), the
なお、図1において、プロセッサ20a及びプロセッサ20bを2つ示した例示である。情報処理装置10は、3つ以上のプロセッサ20を含んでも良い。
In FIG. 1, two
また、プロセッサ20は、情報処理装置10の処理の単位の一例である。プロセッサ20は、CPUのように単独のプロセッサでもよく、CPUとROM(Read Only Memory)とRAM(Random Access Memory)と記憶装置と含むコンピュータのような装置でもよく、CPU上で実行されるプロセス、スレッド又はタスクでもよい。そのため、プロセッサ20は、「処理部」と言うこともできる。
The
資源制御部30は、共有リソースに対応する制御情報30aを保持する。既に説明しているが、制御情報30aは、共有リソースの更新の状態を示す情報である。なお、制御情報30aは、更新を示す情報として変数(制御用の変数)を含む。
The
なお、情報処理装置10は、共有資源(リソース)毎に資源制御部30を含んでも良い。あるいは、資源制御部30は、複数の共有リソースに対応しても良い。
Note that the
ただし、以下では、説明を明確にするため、資源制御部30及び対象となる共有リソースを1つとして説明する。
However, in the following description, the
次に、本実施形態の情報処理装置10の動作について説明する。
Next, the operation of the
本実施形態の資源制御部30の制御情報30aが含む制御用の変数に特に制限はない。ただし、本実施形態は、図2に示すように、制御情報30aとして開始変数31と終了変数32とを含むとして説明する。
There is no particular limitation on the control variables included in the
共有リソースを更新するプロセッサ20は、更新処理の開始時に開始変数31を更新する。
The
また、共有リソースを更新するプロセッサ20は、更新処理の終了時に終了変数32を更新する。
The
なお、開始変数31及び終了変数32の更新内容は、予め、情報処理装置10において、共有リソースを参照するプロセッサ20が判別できるように決めておけば特に制限はない。本実施形態の説明では、一例として、開始変数31及び終了変数32の初期値をどちらも「0」とし、更新を「1加算」として説明する。つまり、開始変数31と終了変数32は、更新中ではない場合、同じ値となり、更新中の場合、異なる値となる。
The update contents of the
また、共有リソースの変更及び参照は、いずれのプロセッサ20が行っても良い。ただし、以下、説明の便宜のため、特に断らない限り、プロセッサ20aが共有リソースを更新し、プロセッサ20bが共有リソースを参照する。
In addition, any
まず、共有リソースの更新動作について説明する。 First, the shared resource update operation will be described.
プロセッサ20aは、共有リソースを更新する場合、共有リソースが他のプロセッサから更新されることを防ぐため、排他機構を用いて占有する。この占有は、特に制限はない。例えば、プロセッサ20aは、資源制御部30を占有(ロック設定)しても良い。あるいは、プロセッサ20aは、一般的な排他機構(例えば、共有リソースのロック機構)を用いてもよい。そのため、共有リソースの占有についての詳細な説明は、省略する。
When updating the shared resource, the
そして、プロセッサ20aは、共有リソースを更新するときに、次に説明する動作を行う。
Then, the
図3は、本実施形態の情報処理装置10の更新動作の一例を示すフローチャートである。
FIG. 3 is a flowchart illustrating an example of the update operation of the
プロセッサ20aは、開始変数31を更新(1加算)する(ステップ101)。
The
次に、プロセッサ20aは、共有リソースの仕様を基に更新に必要な保護機構を設定する(ステップ102)。プロセッサ20aは、この動作を、共有リソースの仕様に従って行う。例えば、共有リソースがメモリの場合、プロセッサ20aは、メモリの順序性を保障するメモリバリア(メモリフェンス)を設定する。なお、既にプロセッサ20aが、共有リソースを占有しているため、更なる保護機構が不要な場合、プロセッサ20aは、ステップ102を省略しても良い。
Next, the
保護を設定後、プロセッサ20aは、共有リソースを更新する(ステップ103)。
After setting the protection, the
更新後、プロセッサ20aは、保護機構を解除する(ステップ104)。なお、ステップ102を省略した場合、プロセッサ20aは、ステップ104を省略する。
After the update, the
その後、プロセッサ20aは、終了変数32を更新(1加算)する(ステップ105)。
Thereafter, the
全ての更新が終了すると、プロセッサ20aは、共有リソースの占有を解除(ロック解除)する。
When all the updates are completed, the
図4は、情報処理装置10の更新動作の一例のシーケンス図である。図4において、共有リソースの保護機能についての動作を省略した。
FIG. 4 is a sequence diagram illustrating an example of the update operation of the
プロセッサ20aは、開始変数31を更新する(1001)。
The
そして、プロセッサ20aは、共有リソースを更新する(1002)。
Then, the
その後、プロセッサ20aは、終了変数32を更新する(1003)。
Thereafter, the
このような動作を基に、情報処理装置10は、共有リソースの更新に関して、次の状態を実現する。
Based on such an operation, the
(1)更新中、開始変数31の値と終了変数32の値とが異なる。
(1) During update, the value of the
(2)更新の後の開始変数31及び終了変数32の値が、更新前の開始変数31及び終了変数32の値と異なる。
(2) The values of the
このように、共有リソースを更新するプロセッサ20aは、更新の前に開始変数31を更新し、更新終了後に終了変数32を更新する。
As described above, the
なお、図4には、参考として、プロセッサ20bが、共有リソースを更新する場合のシーケンス(1004−1006)も示している。プロセッサ20bは、プロセッサ20aのロック解除後、共有リソースのロックを設定してから、図4に示す動作を実行する。
FIG. 4 also shows, as a reference, a sequence (1004 to 1006) when the
次に、本実施形態の情報処理装置10が、共有リソースを参照する場合の動作について説明する。
Next, an operation when the
図5は、情報処理装置10の参照動作の一例を示すフローチャートである。
FIG. 5 is a flowchart illustrating an example of a reference operation of the
共有リソースを参照するプロセッサ20bは、参照の前に開始変数31と終了変数32(以下、合わせて「両変数」と言う)を読み出す(ステップ201)。以下、ステップ201で読み出した変数を「第1の変数」と言う。
The
プロセッサ20bは、第1の開始変数31と第1の終了変数32との値を確認する(ステップ202)。具体的には、プロセッサ20bは、第1の開始変数31と第1の終了変数32とが同じか否かを判定する。この判定は、上記のとおり、共有リソースが更新中であるか否かの判定である。
The
第1の開始変数31と第1の終了変数32とが異なる、つまり、更新中の場合(ステップ202でNO)、プロセッサ20bは、ステップ201に戻り、更新が終了するまで待つ。プロセッサ20bは、この待ちを、ステップ201と202との繰り返し(スピンロック)として待つ。ただし、本実施形態の情報処理装置10は、スピンロックに限る必要はない。例えば、プロセッサ20bは、図示しないウェイト管理機構を備え、ウェイト状態として再開を待っても良い。
When the
第1の開始変数31と第1の終了変数32とが一致、つまり更新中でない場合(ステップ202でYES)、プロセッサ20bは、共有データを参照、例えば、データを読み出す(ステップ203)。
If the
参照が終了すると、プロセッサ20bは、両変数を読み出す(ステップ204)。ステップ204で読み出した変数を「第2の変数」と言う。
When the reference is completed, the
次に、プロセッサ20bは、第1の終了変数32と第2の終了変数32とを確認する(ステップ205)。具体的には、プロセッサ20bは、第1の終了変数32と第2の終了変数32とが同じか否かを判定する。この判定は、第1の両変数を読み出した後、終了した更新処理が発生したか否かの判定である。
Next, the
第1の終了変数32と第2の終了変数32が異なる、つまり、終了した更新が発生した場合(ステップ205でNO)、プロセッサ20bは、ステップ201に戻り、最初から参照動作を始める。ステップ201に戻るのは、共有リソースが更新されているため、ステップ203での参照が無効の可能性があるためである。
When the
第1の終了変数32と第2の終了変数32とが同じ場合(ステップ205でYES)、プロセッサ20bは、第2の開始変数31と第2の終了変数32とを確認する(ステップ206)。具体的には、プロセッサ20bは、第2の開始変数31と第2の終了変数32が同じか否かを判定する。この判定は、新しい更新動作中であるか否かの判定である。
If the
第2の開始変数31と第2の終了変数32とが異なる、つまり、更新中の場合(ステップ206でNO)、プロセッサ20bは、ステップ201に戻り、最初から参照動作を始める。ステップ201に戻るのは、共有リソースの更新が開始されているため、ステップ203での参照が無効の可能性があるためである。
When the
第2の開始変数31と第2の終了変数32とが同じ場合(ステップ206でYES)、プロセッサ20bは、参照動作を終了する。その後、プロセッサ20bは、適宜、次の動作に移る。
If the
なお、ステップ205とステップ206は、どちらも変数の判定の動作である。そのため、情報処理装置10は、この動作を分けず、1つの判定動作としても良い。
Step 205 and step 206 are both variable determination operations. Therefore, the
このように、共有リソースを参照するプロセッサ20bは、共有リソースに排他機構を設定されているか否かに係わらず、開始変数31と終了変数32とを基に、共有リソースを参照できる。
As described above, the
次に、情報処理装置10が、適切に共有リソースを参照できることを、図6−図9を参照して説明する。なお、図面の煩雑さを避けるため、図6−図9において、図5のステップ205とステップ206との判断は、1つの判断として示す。
Next, the fact that the
まず、共有リソースの更新動作と参照動作とが重ならない場合について説明する。 First, a case where the shared resource update operation and the reference operation do not overlap will be described.
図6は、プロセッサ20aが共有リソースの更新後に、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
FIG. 6 is a sequence diagram when the
プロセッサ20bは、第1の両変数を読み出す(2001)。この場合、第1の開始変数31及び終了変数32は、同じ値(図6では「01」)となる。
The
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(2002)。
Therefore, the determination (
そして、プロセッサ20bは、共有リソースを参照する(2003)。
Then, the
参照後、プロセッサ20bは、第2の両変数を読み出す(2004)。この場合、第2の開始変数31及び終了変数32は、第1の開始変数31及び終了変数32と同じ値(図6では「01」)となる。
After the reference, the
そのため、ステップ205及び206に対応する変数の判定は、どちらもYESとなる(2005)。
Therefore, the determination of the variables corresponding to
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
As a result, the
次に、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合について説明する。
Next, a case where the
図7は、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
FIG. 7 is a sequence diagram when the
プロセッサ20bは、第1の両変数を読み出す(3001)。この場合、プロセッサ20aは、更新中である。そのため、第1の開始変数31及び第1の終了変数32は、異なる値(図7では、開始変数31が「01」、終了変数32が「00」)となる。
The
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、NOとなる(3002)。
Therefore, the determination (
プロセッサ20aの更新動作が終了するまで、第1の開始変数31と終了変数32とが異なる。そのため、プロセッサ20bは、図5のステップ201−202(図7では、3001−3002)を繰り返す。
Until the update operation of the
プロセッサ20aが更新動作を終了すると、第1の開始変数31と終了変数32とが同じ値となる。
When the
その後、プロセッサ20bが、第1の両変数を読み出す(3003)と、第1の開始変数31及び第1の終了変数32は、同じ値(図7では「01」)である。
After that, when the
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(3004)。
Therefore, the determination (
これ以降、プロセッサ20bは、図6の2003−2005と同様に動作する。
Thereafter, the
つまり、プロセッサ20bは、共有リソースを参照する(3005)。
That is, the
参照後、プロセッサ20bは、第2の両変数を読み出す(3006)。この場合、第2の開始変数31及び終了変数32は、第1の開始変数31及び終了変数32と同じ値(図7では「01」)である。
After the reference, the
そのため、ステップ205及び206に対応する変数の判定は、どちらもYESとなる(3007)。
Therefore, the determination of the variable corresponding to
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
As a result, the
次に、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始した場合について説明する。まず、プロセッサ20bの第2の変数の確認前に、プロセッサ20aの更新動作が終了した場合について説明する。
Next, the case where the
図8は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の変数の確認前に、プロセッサ20aの更新動作が終了した場合のシーケンス図である。
FIG. 8 is a sequence diagram when the
プロセッサ20bは、第1の両変数を読み込む(4001)。この場合、第1の開始変数31及び終了変数32は、同じ値(図8では「00」)である。
The
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(4002)。
Therefore, the determination (
プロセッサ20bは、共有リソースを参照する(4003)。
The
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースを更新する。そのため、開始変数31及び終了変数32は、どちらも更新(図8ではどちらも「01」)される。
However, the
参照後、プロセッサ20bは、第2の両変数を読み出す(4004)。上記のとおり、第2の両変数は、更新された後のため、第1の両変数とは異なる。
After the reference, the
そのため、プロセッサ20bの変数の判定、具体的には、図5のステップ205の判定がNOとなる(4005)。
Therefore, the determination of the variable of the
その結果、プロセッサ20bは、参照動作の最初(図5のステップ201)に戻り、参照動作をやり直す。つまり、プロセッサ20bは、図6の2001−2005に相当する図8の4006−4010を実行する。
As a result, the
具体的に説明すると次のとおりである。 Specifically, it is as follows.
プロセッサ20bは、第1の両変数を読み出す(4006)。第1の開始変数31及び終了変数32は、同じ値(図8では、「01」)となる。
The
プロセッサ20bは、第1の開始変数31と終了変数32を判定する(4007)。
The
第1の両変数が同じため、プロセッサ20bは、共有リソースを参照する(4008)。
Since both the first variables are the same, the
参照後、プロセッサ20bは、第2の両変数を読み出す(4009)。この場合、第2の両変数は、第1の両変数と同じ値(図8では「01」)である。
After the reference, the
そのため、プロセッサ20bの変数の判定は、YESとなる(4010)。
Therefore, the determination of the variable of the
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
The
続いて、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の変数の確認時に、プロセッサ20aの更新動作が終了していない場合について説明する。
Next, a case will be described in which the
図9は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の変数の確認時に、プロセッサ20aの更新動作が終了していない場合のシーケンス図である。
FIG. 9 is a sequence diagram in the case where the
プロセッサ20bは、第1の両変数を読み出す(5001)。この場合、第1の開始変数31及び終了変数32は、同じ値(図9では「00」)である。
The
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(5002)。
Therefore, the determination (
プロセッサ20bは、共有リソースを参照する(5003)。
The
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースの更新を開始している。そのため、開始変数31は、更新(図9では「01」)されている。
However, the
参照後、プロセッサ20bは、第2の両変数を読み出す(5004)。上記のとおり、第2の開始変数31は、更新されたため、第2の終了変数32と異なる。
After the reference, the
そのため、プロセッサ20bの変数の判定、具体的には、図5のステップ206の判定がNOとなる(5005)。
Therefore, the determination of the variable of the
そのため、プロセッサ20bは、参照動作の最初(図5のステップ201)に戻り、参照動作をやり直す。
Therefore, the
これ以降の動作は、図7と同様の動作になる。 Subsequent operations are the same as those in FIG.
つまり、プロセッサ20bは、第1の開始変数31と終了変数32が一致するまで、両変数の読み出しと判定を繰り返す。
That is, the
プロセッサ20aが、更新を終了すると、開始変数31と終了変数32とが同じ値(図9では「01」)となる。
When the
その後、プロセッサ20bが、第1の両変数を読み出す(5006)と、第1の開始変数31及び終了変数32は、同じ値(図9では、「01」)である。
After that, when the
プロセッサ20bは、第1の開始変数31と終了変数32を判定する(5007)。
The
第1の変数が同じため、プロセッサ20bは、共有リソースを参照する(5008)。
Since the first variable is the same, the
参照後、プロセッサ20bは、第2の両変数を読み出す(5009)。この場合、第2の両変数は、第1の両変数と同じ値(図9では「01」)である。
After the reference, the
そのため、プロセッサ20bの変数の判定は、YESとなる(5010)。
Therefore, the determination of the variable of the
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
The
このように構成された第1の実施形態の情報処理装置10は、特別な命令を用いずに、性能の低下を削減した排他制御を実現する効果を得ることができる。
The
その理由は、次のとおりである。 The reason is as follows.
情報処理装置10は、制御情報30aとして開始変数31及び終了変数32を含む。
The
そして、共有リソースを更新するプロセッサ20aは、占有している共有リソースの更新を開始するときに開始変数31を更新し、更新を終了したときに終了変数32を更新する。
Then, the
プロセッサ20bに基づく共有リソースの参照は、共有リソースに影響を与えない。そのため、プロセッサ20bは、いつでも共有リソースを参照できる。さらに、プロセッサ20bは、開始変数31及び終了変数32を基に、共有リソースが更新中であるか否か、及び、参照中に更新が発生したか否かを判定できる。
The reference to the shared resource based on the
つまり、プロセッサ20bは、更新が発生していない場合、常に共有リソースを参照できる。そして、更新中の場合、プロセッサ20bは、更新終了後に共有リソースを参照できる。また、参照中に更新が発生した場合、プロセッサ20bは、参照後に、更新の発生を検出できるため、再度参照し、更新後の共有リソースを参照できる。
That is, the
このように、共有リソースを参照するプロセッサ20bは、共有リソースが更新するプロセッサ20aに占有されている場合でも、共有リソースを参照できる。
Thus, the
つまり、本実施形態の情報処理装置10の共有リソースを参照するプロセッサ20bは、共有リソースを占有しているプロセッサ20aの占有解除を待たなくても、共有リソースを参照できる。
That is, the
このため、本実施形態の情報処理装置10は、共有リソースの参照において、占有の解除の待ち時間を削減できる。その結果、情報処理装置10は、占有解除の待ち時間に基づく性能低下を削減できる。
For this reason, the
また、本実施形態の情報処理装置10の共有リソースを参照するプロセッサ20bは、開始変数31及び終了変数32を用い、ロック設定及び解除せずに共有リソースを参照できる。
In addition, the
そのため、共有リソースを参照するプロセッサ20bは、ロックの取得や解除などの処理を必要としない。そのため、情報処理装置10は、さらに、性能低下の低減できる。また、情報処理装置10は、ロックの競合を低減できる。
Therefore, the
さらに、共有リソースを参照するプロセッサ20bは、ロック取得が必要ないため、並列処理が可能である。その結果、情報処理装置10の処理性能が、さらに向上できるためである。
Furthermore, since the
なお、本実施形態の情報処理装置10の構成は、これまでの説明に限らない。情報処理装置10は、複数の構成を1つの構成としても良い。あるいは、情報処理装置10は、1つの構成を複数の構成に分けても良い。また、情報処理装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータとして実現しても良い。
Note that the configuration of the
図10は、本実施形態の別の構成である情報処理装置60の構成の一例を示す図である。
FIG. 10 is a diagram illustrating an example of a configuration of an
情報処理装置60は、CPU610aと、CPU610bと、ROM620と、RAM630と、IO(Input/Output)640と、内部記憶装置650と、キーボード660と、マウス670と、ディスプレイ680と、NIC690とを含み、コンピュータを構成している。
The
CPU610a及びCPU610bは、ROM620、又は、IO640を介して内部記憶装置650からプログラムを読み込む。そして、CPU610a及びCPU610bは、読み込んだプログラムに基づいて、既に説明した本実施形態の情報処理装置10のプロセッサ20として各機能を実現する。CPU610a及びCPU610bは、各機能を実現する際に、RAM630及び内部記憶装置650を一時記憶として使用する。また、CPU610a及びCPU610bは、資源制御部30としてRAM630又は内部記憶装置650を用いる。また、CPU610a及びCPU610bは、NIC690を介して、図示しない他の処理装置と情報をやり取りする。さらに、CPU610a及びCPU610bは、IO640を介して、キーボード660及びマウス670から入力データを受信し、ディスプレイ680に表示データを表示する。
The
なお、CPU610a又はCPU610bは、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、CPU610a又はCPU610bは、NIC690を介してネットワークに接続された図示しない外部記憶装置からプログラムを読み込んでも良い。
Note that the
ROM620は、CPU610a及びCPU610bが実行するプログラム、及び、固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)やフラッシュROMである。
The
RAM630は、CPU610a及びCPU610bが実行するプログラムやデータを一時的に記憶する。RAM630は、資源制御部30として動作しても良い。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
The
IO640は、内部記憶装置650やキーボード660などとCPU610a及びCPU610bとのデータを仲介する。IO640は、例えば、IOインターフェースカードである。
The
内部記憶装置650は、情報処理装置60の長期的に保存するデータやプログラムを保存する。また、内部記憶装置650は、資源制御部30として動作してもよい。さらに、内部記憶装置650は、CPU610a及びCPU610bの一時記憶装置として動作しても良い。内部記憶装置650は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)、又は、ディスクアレイ装置である。
The
キーボード660及びマウス670は、情報処理装置60の操作者からの入力指示を受信する入力部である。キーボード660及びマウス670は、受信した入力指示のデータをCPU610a又はCPU610bに送信する。
The
ディスプレイ680は、情報処理装置60の表示部である。CPU610a又はCPU610bは、操作者に必要な情報を、ディスプレイ680に表示する。
The
NIC690は、ネットワークを介した他の装置との情報のやり取りを中継する。NIC690は、例えば、LANカードである。
The
このように構成された情報処理装置60は、情報処理装置10と同様の効果を得ることができる。
The
その理由は、情報処理装置60のCPU610a及びCPU610bが、プログラムに基づいて情報処理装置10のプロセッサ20と同様の動作を実現できるためである。
(変形例1)
第1の実施形態の情報処理装置10は、開始変数31と終了変数32とを基に、共有リソースの更新を検出する。ただし、本実施形態の情報処理装置10の参照動作は、図5を用いた説明の動作に限らない。
This is because the
(Modification 1)
The
図11は、第1の実施形態に係る情報処理装置10の参照動作の別の動作の一例を示すフローチャートである。
FIG. 11 is a flowchart illustrating an example of another operation of the reference operation of the
図11において、図5との差は、図5のステップ205とステップ206を、ステップ305に変更した点である。そのため、ステップ305について説明し、他の説明は省略する。
In FIG. 11, the difference from FIG. 5 is that
図5に示した参照動作において、プロセッサ20bは、次を確認した。
In the reference operation illustrated in FIG. 5, the
ステップ205において、プロセッサ20bは、第1の終了変数32と第2の終了変数32が一致する否か、つまり、参照開始時に終了した更新と、参照終了後に終了した更新とが、一致するか否かを判定する。
In
ステップ206において、プロセッサ20bは、第2の開始変数31と第2の終了変数32が一致するか否か、つまり、参照終了時に更新中か否かを判定する。
In
しかし、プロセッサ20bは、ステップ202において、更新中でないことを確認してから参照動作を開始している。
However, the
そのため、プロセッサ20bは、参照終了時に、参照中に更新が発生したか否かを判定しても良い。
Therefore, the
そのため、本変形例のプロセッサ20bは、ステップ305において、第1の開始変数31と第2の開始変数31が一致する否か、つまり、参照終了時に、更新が発生したか否かを判定する。
Therefore, in
更新が発生した場合(ステップ305のNO)、プロセッサ20bは、ステップ201に戻り、参照動作を最初から再開する。
If an update has occurred (NO in step 305), the
更新が発生していない場合(ステップ305でYES)、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
If no update has occurred (YES in step 305), the
変形例1の情報処理装置10は、第1の実施形態の情報処理装置10と同様の効果を得ることができる。
The
その理由は、変形例1の情報処理装置10は、第1の実施形態の情報処理装置10と同様に、共有リソースの参照中に発生した更新を検出でき、更新が発生した場合に、再度、参照動作が可能なためである。
The reason is that the
(第2の実施形態)
本実施形態の情報処理装置10の制御情報30aは、図2に示す開始変数31及び終了変数32に限らない。
(Second Embodiment)
The
第2の実施形態に係る情報処理装置10の資源制御部30は、図12に示すように、制御情報30bとして制御変数33を含む。その他の構成は、第1の実施形態の同様のため、詳細な説明は省略し、制御変数33に関係する構成について説明する。
As shown in FIG. 12, the
制御変数33は、共有リソースの更新状態を示す。なお、制御変数33は、初期値として特に制限はないが、以下の説明では、初期値を0(偶数)として説明する。なお、初期値を奇数とした場合、以下の説明において、偶数と奇数を入れ替えればよい。
The
共有リソースを更新するプロセッサ20aは、共有リソースの更新の開始時と終了時に制御変数33を更新(例えば、1加算)する。
The
共有リソースを参照するプロセッサ20bは、共有リソースの参照前と参照後の制御変数33の値を基に、更新中、及び、参照中の更新の発生の有無を判定する。
Based on the value of the control variable 33 before and after referring to the shared resource, the
第2の実施形態の情報処理装置10の動作について図を参照して説明する。
The operation of the
図13は、第2の実施形態の情報処理装置10の更新動作の一例を示すフローチャートである。
FIG. 13 is a flowchart illustrating an example of an update operation of the
プロセッサ20aの更新における排他制御は、第1の実施形態の同様のため、詳細な説明は省略する。
Since the exclusive control in the update of the
プロセッサ20aは、制御変数33を更新(1加算)する(ステップ401)。つまり、制御変数33は、奇数になる。
The
次に、プロセッサ20aは、必要に応じて共有リソースに保護機構を設定する(ステップ402)。
Next, the
保護を設定後、プロセッサ20aは、共有リソースを更新する(ステップ403)。
After setting the protection, the
更新後、プロセッサ20aは、保護機構を解除する(ステップ404)。
After the update, the
その後、プロセッサ20aは、制御変数33を更新(1加算)する(ステップ405)。つまり、制御変数33は、偶数に戻る。
Thereafter, the
図14は、第2の実施形態の情報処理装置10の更新動作の一例のシーケンス図である。図14においても、共有リソースの保護機能についての動作は、省略した。
FIG. 14 is a sequence diagram illustrating an example of an update operation of the
プロセッサ20aは、制御変数33を(奇数に)更新する(1007)。
The
そして、プロセッサ20aは、共有リソースを更新する(1008)。
Then, the
その後、プロセッサ20aは、制御変数33を(偶数に)更新する(1009)。
Thereafter, the
このような動作を基に、情報処理装置10は、共有リソースの更新に関して、次の状態を実現する。
Based on such an operation, the
(1)更新中、制御変数33は、奇数である。
(1) During the update, the
(2)更新の前後において、制御変数33は、偶数であるが、値が異なる。
(2) Before and after the update, the
なお、図14には、参考として、他のプロセッサ20の例として、プロセッサ20bが、共有リソースを更新する場合のシーケンス(1010−1012)も示している。
For reference, FIG. 14 also shows a sequence (1010-1012) when the
このように、共有リソースを更新するプロセッサ20aは、更新の前後において、制御変数33を更新する。
As described above, the
次に、本実施形態の情報処理装置10が、共有リソースを参照する場合の動作について説明する。
Next, an operation when the
図15は、第2の実施形態の情報処理装置10の参照動作の一例を示すフローチャートである。
FIG. 15 is a flowchart illustrating an example of a reference operation of the
共有リソースを参照するプロセッサ20bは、参照の前に制御変数33を読み出す(ステップ501)。以下、ステップ501で読み出した変数を「第1の制御変数33」と言う。
The
プロセッサ20bは、第1の制御変数33の値を確認する(ステップ502)。具体的には、プロセッサ20bは、第1の制御変数33が偶数か否かを判定する。この判定は、上記のとおり、共有リソースが更新中であるか否かの判定である。
The
第1の制御変数33が偶数でない(奇数の)場合(ステップ502でNO)、プロセッサ20bは、ステップ501に戻る。プロセッサ20bは、第1の制御変数33が偶数になるまで、待つ。この動作は、第1の実施形態と同様に、ステップ501と502との繰り返しでよいし、ウェイト状態を用いても良い。
If the
第1の制御変数33が偶数、つまり更新中でない場合(ステップ502でYES)、プロセッサ20bは、共有データを参照する(ステップ503)。
If the
参照後、プロセッサ20bは、制御変数33を読み出す(ステップ504)。ステップ504で読み出した変数を「第2の制御変数33」と言う。
After the reference, the
次に、プロセッサ20bは、第1の制御変数33と第2の制御変数33とを確認する(ステップ505)。具体的には、プロセッサ20bは、第1の制御変数33と第2の制御変数33とが同じか否かを判定する。この判定は、第1の制御変数33を読み出した後、終了した更新処理が発生したか否かの判定である。
Next, the
第1の制御変数33と第2の制御変数33が異なる、つまり、終了した更新が発生した場合(ステップ505でNO)、プロセッサ20bは、ステップ501に戻り、最初から参照動作を始める。ステップ501に戻るのは、共有リソースが更新されているため、ステップ503での参照が無効の可能性があるためである。
When the
第1の制御変数33と第2の制御変数33が同じ値の場合(ステップ505でYES)、プロセッサ20bは、第2の制御変数33の値を確認する(ステップ506)。具体的には、プロセッサ20bは、第2の制御変数33が偶数か否かを判定する。この判定は、更新動作中か否かの判定である。
When the
第2の制御変数33が奇数、つまり、更新中の場合(ステップ506でNO)、プロセッサ20bは、ステップ501に戻り、最初から参照動作を始める。ステップ501に戻るのは、共有リソースの更新が開始されているため、ステップ503での参照が無効の可能性があるためである。
When the
第2の制御変数33が偶数の場合(ステップ506でYES)、プロセッサ20bは、参照動作を終了する。プロセッサ20bは、適宜、次の動作に移る。
If the
なお、ステップ505とステップ506は、どちらも変数の判定の動作である。そのため、情報処理装置10は、この動作を分けずに、1つの判定動作として実行しても良い。
また、プロセッサ20bは、ステップ502で制御変数33が偶数である場合に処理を進めている。つまり、第1の制御変数33は、偶数である。更新中の制御変数33は、奇数となる。奇数と偶数は、異なる値である。つまり、更新中の場合も、プロセッサ20bは、ステップ505の判定がNOとなる。したがって、プロセッサ20bは、ステップ506を省略しても良い。
The
このように、共有リソースを参照するプロセッサ20bは、共有リソースに排他機構を設定されているか否かに係わらず、制御変数33を基に共有リソースを参照できる。
As described above, the
次に、情報処理装置10が、適切に共有リソースを参照できることを、図16−19を参照して説明する。なお、図面の煩雑さを避けるため、図16−図19において、図15のステップ505とステップ506との判断は、1つの判断として示す。
Next, the fact that the
まず、共有リソースの更新動作と参照動作とが重ならない場合について説明する。 First, a case where the shared resource update operation and the reference operation do not overlap will be described.
図16は、プロセッサ20aが共有リソースの更新を終了後、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
FIG. 16 is a sequence diagram when the
プロセッサ20bは、第1の制御変数33を読み出す(6001)。この場合、第1の制御変数33は、偶数(図16では「02」)となる。
The
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(6002)。
Therefore, the determination of the first control variable 33 (
そして、プロセッサ20bは、共有リソースを参照する(6003)。
Then, the
プロセッサ20bは、第2の制御変数33を読み出す(6004)。この場合、第2の制御変数33は、第1の制御変数33と同じ値(図16では「02」)となる。
The
そのため、ステップ505及び506に対応する変数の判定は、どちらもYESとなる(6005)。
Therefore, the determination of the variable corresponding to
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
As a result, the
次に、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合について説明する。
Next, a case where the
図17は、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
FIG. 17 is a sequence diagram when the
プロセッサ20bは、第1の制御変数33を読み出す(7001)。この場合、プロセッサ20aは、更新中である。そのため、第1の制御変数33は、奇数(図17では、「01」)となる。
The
そのため、第1の制御変数33の判定(図15のステップ502)は、NOとなる(7002)。
Therefore, the determination of the first control variable 33 (
プロセッサ20aの更新動作が終了するまで、第1の制御変数33は、奇数である。そのため、プロセッサ20bは、図15のステップ501−502(図17では、7001−7002)を繰り返す。
Until the update operation of the
プロセッサ20aが更新動作を終了すると、第1の制御変数33は、偶数になる。
When the
その後、プロセッサ20bが、第1の制御変数33を読み出す(7003)と、第1の制御変数33は、偶数(図17では「02」)となる。
Thereafter, when the
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(7004)。
Therefore, the determination of the first control variable 33 (
これ以降、プロセッサ20bは、図16の6003−6005と同様に動作する。
Thereafter, the
つまり、プロセッサ20bは、共有リソースを参照する(7005)。
That is, the
プロセッサ20bは、第2の制御変数33を読み出す(7006)。この場合、第2の制御変数33は、第1の制御変数33と同じ値(図17では「02」)である。
The
そのため、ステップ505及び506に対応する変数の判定は、どちらもYESとなる(7007)。
Therefore, the determination of the variables corresponding to
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
As a result, the
次に、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始した場合について説明する。まず、プロセッサ20bの第2の制御変数33の確認前に、プロセッサ20aの更新動作が終了した場合について説明する。
Next, the case where the
図18は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の制御変数33の確認前に、プロセッサ20aの更新動作が終了した場合のシーケンス図である。
FIG. 18 is a sequence diagram when the
プロセッサ20bは、第1の制御変数33を読み込む(8001)。この場合、第1の制御変数33は、偶数(図18では「00」)である。
The
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(8002)。
Therefore, the determination of the first control variable 33 (
プロセッサ20bは、共有リソースを参照する(8003)。
The
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースを更新している。そのため、制御変数33は、更新(図18では「02」)されている。
However, the
プロセッサ20bは、第2の制御変数33を読み出す(8004)。上記のとおり、第2の制御変数33は、更新された後のため、第1の制御変数33とは異なる。
The
そのため、プロセッサ20bの変数の判定、具体的には、図15のステップ505の判定がNOとなる(8005)。
Therefore, the determination of the variable of the
そのため、プロセッサ20bは、参照動作の最初(図15のステップ501)に戻り、参照動作をやり直す。つまり、プロセッサ20bは、図16の6001−6005に相当する図18の8006−8010を実行する。
Therefore, the
具体的に説明すると次のとおりである。 Specifically, it is as follows.
プロセッサ20bは、第1の制御変数33を読み出す(8006)。第1の制御変数33は、偶数(図18では、「02」)である。
The
プロセッサ20bは、第1の制御変数33を判定する(8007)。
The
第1の制御変数33が偶数のため、プロセッサ20bは、共有リソースを参照する(8008)。
Since the
プロセッサ20bは、第2の制御変数33を読み出す(8009)。この場合、第2の制御変数33は、第1の制御変数33と同じ偶数の値(図18では「02」)である。
The
そのため、プロセッサ20bの変数の判定は、YESとなる(8010)。
Therefore, the determination of the variable of the
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
The
続いて、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の制御変数33の確認時に、プロセッサ20aの更新動作が終了していない場合について説明する。
Next, a case will be described in which the
図19は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の制御変数33の確認時に、プロセッサ20aの更新動作が終了していない場合のシーケンス図である。
FIG. 19 shows a sequence when the
プロセッサ20bは、第1の制御変数33を読み出す(9001)。この場合、第1の制御変数33は、偶数(図19では「00」)である。
The
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(9002)。
Therefore, the determination of the first control variable 33 (
プロセッサ20bは、共有リソースを参照する(9003)。
The
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースの更新を開始している。そのため、制御変数33は、更新(図19では「01」)されている。
However, the
プロセッサ20bは、第2の制御変数33を読み出す(9004)。上記のとおり、第2の制御変数33は、更新されたため、第1の制御変数33とは異なる。
The
そのため、プロセッサ20bの制御変数33の判定、具体的には、図15のステップ505の判定がNOとなる(5005)。
Therefore, the determination of the
そのため、プロセッサ20bは、参照動作の最初(図15のステップ501)に戻り、参照動作をやり直す。
Therefore, the
これ以降の動作は、図17と同様の動作になる。 Subsequent operations are the same as those in FIG.
つまり、プロセッサ20bは、第1の制御変数33が偶数になるまで、制御変数33の読み出しと判定を繰り返す。
That is, the
プロセッサ20aが、更新を終了すると、制御変数33が偶数(図19では「02」)となる。
When the
その後、プロセッサ20bが、第1の制御変数33を読み出す(9006)と、第1の制御変数33は、偶数(図19では、「02」)である。
Thereafter, when the
プロセッサ20bは、第1の制御変数33を判定する(9007)。
The
第1の制御変数33が偶数のため、プロセッサ20bは、共有リソースを参照する(9008)。
Since the
プロセッサ20bは、第2の制御変数33を読み出す(9009)。この場合、第2の制御変数33は、第1の制御変数33と同じ偶数(図19では「02」)である。
The
そのため、プロセッサ20bの変数の判定は、YESとなる(9010)。
Therefore, the determination of the variable of the
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
The
このように構成された第2の実施形態の情報処理装置10は、第1の実施形態の情報処理装置10と同様の効果を得ることができる。
The
その理由は、第2の実施形態の情報処理装置10は、制御変数33を用いて、開始変数31と終了変数32とを用いる第1の実施形態の情報処理装置10と同様に動作できるためである。
The reason is that the
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 While the present invention has been described with reference to the embodiments, the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
10 情報処理装置
20 プロセッサ
20a プロセッサ
20b プロセッサ
30 資源制御部
30a 制御情報
30b 制御情報
31 開始変数
32 終了変数
33 制御変数
60 情報処理装置
610a CPU
610b CPU
620 ROM
630 RAM
640 IO
650 内部記憶装置
660 キーボード
670 マウス
680 ディスプレイ
690 NIC
700 記憶媒体
DESCRIPTION OF
610b CPU
620 ROM
630 RAM
640 IO
650
700 storage media
Claims (6)
前記共有資源を更新する前に前記資源制御部の制御情報を更新し、前記共有資源を更新後に前記資源制御部の制御情報をさらに更新する第1の処理部と、
前記資源制御部の制御情報を基に前記第1の処理部が前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記資源制御部の制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する第2の処理部と
を含む情報処理装置。 A resource control unit that holds control information indicating an update state of the shared resource;
A first processing unit that updates control information of the resource control unit before updating the shared resource, and further updates control information of the resource control unit after updating the shared resource;
Based on the control information of the resource control unit, the first processing unit performs a first determination as to whether or not the shared resource is being updated. If the shared resource is not being updated, the shared resource is referred to and updated. When the update is completed, the shared resource is referred to after the update is completed, and after the reference to the shared resource, it is determined whether the update of the shared resource occurs during the reference based on the control information of the resource control unit. And a second processing unit that refers to the shared resource again when an update occurs.
前記共有資源の更新前に更新される開始変数と、
前記共有資源の更新後に更新される終了変数と
を含む請求項1に記載の情報処理装置。 The control information of the resource control unit is:
A start variable that is updated before updating the shared resource;
The information processing apparatus according to claim 1, further comprising: an end variable that is updated after the shared resource is updated.
前記共有資源の更新前及び更新後に更新される制御変数を
含む請求項1に記載の情報処理装置。 The control information of the resource control unit is:
The information processing apparatus according to claim 1, further comprising: a control variable that is updated before and after updating the shared resource.
前記共有資源の参照前に前記資源制御部から取り出した前記制御情報を第1の変数として前記第1の判定を行い、
前記共有資源の参照後に前記資源制御部から取り出した前記制御情報を第2の変数として前記第1の変数及び前記第2の変数を基に前記第2の判定を行う
請求項1乃至請求項3のいずれか1項に記載の情報処理装置。 The second processing unit includes:
Performing the first determination using the control information extracted from the resource control unit before referring to the shared resource as a first variable;
The second determination is performed based on the first variable and the second variable by using the control information extracted from the resource control unit after referring to the shared resource as a second variable. The information processing apparatus according to any one of the above.
前記共有資源を更新する場合、前記共有資源を更新する前に前記制御情報を更新し、前記共有資源を更新後に前記制御情報をさらに更新し、
前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する
情報処理方法。 Holds control information indicating the update status of shared resources,
When updating the shared resource, update the control information before updating the shared resource, further update the control information after updating the shared resource,
When referring to the shared resource, a first determination is made as to whether or not the shared resource is being updated based on the control information. When the shared resource is not being updated, the shared resource is referred to and being updated. Refers to the shared resource after the update is completed, and after the reference to the shared resource, performs a second determination, which is a determination as to whether or not the update of the shared resource has occurred during the reference based on the control information, An information processing method that refers to the shared resource again when an error occurs.
前記共有資源を更新する場合、前記共有資源の更新の前に前記制御情報を更新し、前記共有資源の更新後に前記制御情報をさらに更新する処理と、
前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する処理と
をコンピュータに実行させるプログラム。 A process for holding control information indicating the update state of the shared resource;
When updating the shared resource, updating the control information before updating the shared resource, and further updating the control information after updating the shared resource;
When referring to the shared resource, a first determination is made as to whether or not the shared resource is being updated based on the control information. When the shared resource is not being updated, the shared resource is referred to and being updated. Refers to the shared resource after the update is completed, and after the reference to the shared resource, performs a second determination, which is a determination as to whether or not the update of the shared resource has occurred during the reference based on the control information, A program that causes a computer to execute a process of re-referencing the shared resource when a problem occurs.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012032474A JP5890194B2 (en) | 2012-02-17 | 2012-02-17 | Information processing apparatus and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012032474A JP5890194B2 (en) | 2012-02-17 | 2012-02-17 | Information processing apparatus and information processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013168103A true JP2013168103A (en) | 2013-08-29 |
JP5890194B2 JP5890194B2 (en) | 2016-03-22 |
Family
ID=49178436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012032474A Active JP5890194B2 (en) | 2012-02-17 | 2012-02-17 | Information processing apparatus and information processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5890194B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021060707A (en) * | 2019-10-04 | 2021-04-15 | イーソル株式会社 | Synchronization control system and synchronization control method |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09305478A (en) * | 1996-05-16 | 1997-11-28 | Toshiba Corp | Information exchange system between information processors |
JP2006285341A (en) * | 2005-03-31 | 2006-10-19 | Fujitsu Ltd | Data input and output program, device and method |
JP2011128975A (en) * | 2009-12-18 | 2011-06-30 | Internatl Business Mach Corp <Ibm> | System, method, program, and code generation unit |
-
2012
- 2012-02-17 JP JP2012032474A patent/JP5890194B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09305478A (en) * | 1996-05-16 | 1997-11-28 | Toshiba Corp | Information exchange system between information processors |
JP2006285341A (en) * | 2005-03-31 | 2006-10-19 | Fujitsu Ltd | Data input and output program, device and method |
JP2011128975A (en) * | 2009-12-18 | 2011-06-30 | Internatl Business Mach Corp <Ibm> | System, method, program, and code generation unit |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021060707A (en) * | 2019-10-04 | 2021-04-15 | イーソル株式会社 | Synchronization control system and synchronization control method |
JP7054688B2 (en) | 2019-10-04 | 2022-04-14 | イーソル株式会社 | Synchronous control system and synchronous control method |
JP2022079764A (en) * | 2019-10-04 | 2022-05-26 | イーソル株式会社 | Synchronous control system and synchronous control method |
JP7346649B2 (en) | 2019-10-04 | 2023-09-19 | イーソル株式会社 | Synchronous control system and method |
Also Published As
Publication number | Publication date |
---|---|
JP5890194B2 (en) | 2016-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3701377B1 (en) | Method and apparatus for updating shared data in a multi-core processor environment | |
EP2972885B1 (en) | Memory object reference count management with improved scalability | |
EP2936311B1 (en) | System and method for implementing scalable contention-adaptive statistics counters | |
US10579413B2 (en) | Efficient task scheduling using a locking mechanism | |
WO2015148608A1 (en) | Enabling maximum concurrency in a hybrid transactional memory system | |
US11594252B2 (en) | Reader bias based locking technique enabling high read concurrency for read-mostly workloads | |
US9747210B2 (en) | Managing a lock to a resource shared among a plurality of processors | |
US10423467B2 (en) | Data processing apparatus and method for performing lock-protected processing operations for multiple threads | |
CN106068497B (en) | Transactional memory support | |
US10108456B2 (en) | Accelerated atomic resource allocation on a multiprocessor platform | |
JP6205168B2 (en) | System and method for parallel model checking utilizing parallel structured duplicate detection | |
US20150081986A1 (en) | Modifying non-transactional resources using a transactional memory system | |
US8850129B2 (en) | Memory ordered store system in a multiprocessor computer system | |
US20160098361A1 (en) | Optimization of Data Locks for Improved Write Lock Performance and CPU Cache usage in Mulit Core Architectures | |
US11500693B2 (en) | Distributed system for distributed lock management and method for operating the same | |
JP5890194B2 (en) | Information processing apparatus and information processing method | |
CN105094993B (en) | The method and device that a kind of multi-core processor, data synchronize | |
US20160349995A1 (en) | Synchronizing per-cpu data access using per socket rw-spinlocks | |
JP5163128B2 (en) | Procedure calling method, procedure calling program, recording medium, and multiprocessor in shared memory multiprocessor | |
JP6201478B2 (en) | Processing order control device, processing order control method, and processing order control program | |
CN112306698A (en) | Critical region execution method and device in NUMA system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20140819 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141117 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150513 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150519 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150701 |
|
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: 20160126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160218 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5890194 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |