JP5890194B2 - 情報処理装置、及び、情報処理方法 - Google Patents

情報処理装置、及び、情報処理方法 Download PDF

Info

Publication number
JP5890194B2
JP5890194B2 JP2012032474A JP2012032474A JP5890194B2 JP 5890194 B2 JP5890194 B2 JP 5890194B2 JP 2012032474 A JP2012032474 A JP 2012032474A JP 2012032474 A JP2012032474 A JP 2012032474A JP 5890194 B2 JP5890194 B2 JP 5890194B2
Authority
JP
Japan
Prior art keywords
shared resource
processor
variable
updated
update
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.)
Active
Application number
JP2012032474A
Other languages
English (en)
Other versions
JP2013168103A (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 Platforms Ltd
Original Assignee
NEC Platforms Ltd
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 Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2012032474A priority Critical patent/JP5890194B2/ja
Publication of JP2013168103A publication Critical patent/JP2013168103A/ja
Application granted granted Critical
Publication of JP5890194B2 publication Critical patent/JP5890194B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

本発明は、情報処理に関し、特に、複数の処理部からアクセスする資源(リソース)管理に関する。
情報処理システム、又は、情報処理装置は、各処理を実行する複数の処理単位(例えば、処理装置、プロセッサ、又は、プロセス。以下、これら処理単位をまとめてプロセッサと言う)が動作している。このように、複数(マルチ)のプロセッサを含むシステムは、マルチプロセッサシステムを言われる。マルチプロセッサシステムは、複数のプロセッサがアクセスする(共有する)資源(リソース)の整合性を保つため、排他制御の機能を備える。
ここで、共有リソースは、例えば、ホストメモリ、外部記憶装置、出力装置、又は、入力装置である。
共有リソースの排他制御として用いられる同期の基本(プリミティブ)構造としては、ミューテックスやセマフォのようなロックを用いた不可分(アトミック)操作がある。(例えば、特許文献1及び特許文献2を参照)
上記の特許文献1及び特許文献2のシステムのプロセッサは、共有リソースを使用する場合、次のように動作する。
まず、プロセッサは、共有リソースのロックの有無を確認する。
ロックされていない(解除状態の)場合、プロセッサは、共有リソースのロックを取得する。そして、プロセッサは、共有リソースを処理し、処理後ロックを解除する。
ロックされている(ロック設定の)場合、プロセッサは、ロックが解除されるまで待ち、ロック解除後に共有リソースのロックを取得し、処理を継続する。
あるいは、マルチプロセッサシステムを構成するプロセッサ、特に個別の命令を処理するCPU(Central Processing Unit)が、アトミック性を備えた特別な命令を備え、アトミックな操作を実現し、排他制御を実現する。このような命令は、例えば、テスト・アンド・セット(TAS:Test And Set)命令やコンペア・アンド・スワップ(CAS:Compare And Swap)命令である。
特開平07−084851 特開2010−140290
上記のTAS命令やCAS命令を用いるシステムは、これらの命令を備えた特別なCPU又はハードウェアが必要であるという問題点があった。
また、特許文献1及び特許文献2に記載のシステムは、アクセスの内容に関係せずに、共有リソースの処理においてロック取得が必要である問題点があった。
この問題点のため、特許文献1及び特許文献2に記載のシステムは、ロック取得の競合が増加し、次のような性能低下を発生させる問題点があった。
(1)ロックの競合が増加すると、ロック取得の失敗の頻度が高くなる。その結果、プロセッサは、ロック待ちとなる場合が増加する。
(2)ロック待ちが増加すると、キャッシュがページアウトされて無効(インバリッド)となる頻度が高くなる。つまり、キャッシュミス率が高くなる。その結果、プロセッサは、処理におけるページインの頻度が高くなり、処理時間が多くなる。
(3)共有リソースを参照するプロセッサが並列に処理できない。
これらの問題点は、大規模マルチプロセッサの構成において、特に著しい性能悪化の原因となる。
本発明の目的は、上記問題点を解決し、特別な命令を用いずに、性能の低下を削減した共有リソースの利用を実現する、情報処理装置、及び、情報処理方法を提供することにある。
本発明の情報処理装置は、共有資源の更新状態を示す制御情報を保持する資源制御部と、前記共有資源を更新する前に前記資源制御部の制御情報を更新し、前記共有資源を更新後に前記資源制御部の制御情報をさらに更新する第1の処理部と、前記資源制御部の制御情報を基に前記第1の処理部が前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記資源制御部の制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する第2の処理部とを含む。
本発明の情報処理方法は、共有資源の更新状態を示す制御情報を保持し、前記共有資源を更新する場合、前記共有資源を更新する前に前記制御情報を更新し、前記共有資源を更新後に前記制御情報をさらに更新し、前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する。
本発明のプログラムは、共有資源の更新状態を示す制御情報を保持する処理と、前記共有資源を更新する場合、前記共有資源の更新の前に前記制御情報を更新し、前記共有資源の更新後に前記制御情報をさらに更新する処理と、前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する処理とをコンピュータに実行させる。
本発明によれば、特別な命令を用いずに、性能の低下を削減した共有リソースの利用を実現できる。
図1は、本発明における第1の実施形態に係る情報処理装置の構成の一例を示すブロック図である。 図2は、第1の実施形態に係る資源制御部の構成一例を示すブロック図である。 図3は、第1の実施形態に係る情報処理装置の共有データの更新動作の一例を示すフローチャートである。 図4は、第1の実施形態に係る情報処理装置の更新動作の一例を示すシーケンス図である。 図5は、第1の実施形態に係る情報処理装置の共有データの参照動作の一例を示すフローチャートである。 図6は、第1の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図7は、第1の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図8は、第1の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図9は、第1の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図10は、第1の実施形態の係る情報処理装置の別の構成の一例を示すブロック図である。 図11は、第1の実施形態の係る情報処理装置の参照動作の別の一例を示すフローチャートである。 図12は、第2の実施形態に係る資源制御部の構成一例を示すブロック図である。 図13は、第2の実施形態に係る情報処理装置の共有データの更新動作の一例を示すフローチャートである。 図14は、第2の実施形態に係る情報処理装置の更新動作の一例を示すシーケンス図である。 図15は、第2の実施形態に係る情報処理装置の共有データの参照動作の一例を示すフローチャートである。 図16は、第2の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図17は、第2の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図18は、第2の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。 図19は、第2の実施形態に係る情報処理装置の参照動作の一例を示すシーケンス図である。
次に、本発明の実施形態について図面を参照して説明する。
なお、各図面は、本発明の実施形態を説明するものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明は、省略する場合がある。
(第1の実施形態)
図1は、本発明おける第1の実施形態に係る情報処理装置10の構成の一例を示すブロック図である。なお、図1において、本実施形態の説明に関係しない構成(例えば、入出力部)は、省略した。
情報処理装置10は、プロセッサ20aと、プロセッサ20bと、資源制御部30とを含む。
プロセッサ20aとプロセッサ20bとをまとめて、プロセッサ20と言う。
プロセッサ20は、資源制御部30を用いて、図示しない共有リソースを使用する。
より詳細な動作は、後ほど説明するが、プロセッサ20は、資源制御部30を、次のように用いる。
プロセッサ20は、共有リソースを更新(例えば、データを更新)する場合、資源制御部30が含む情報(以下、「制御情報30a」と言う)を更新して変更処理を進める。つまり、プロセッサ20は、制御情報30aの変化に基づいて、共有リソースの更新を検出できる。
なお、図1において、プロセッサ20a及びプロセッサ20bを2つ示した例示である。情報処理装置10は、3つ以上のプロセッサ20を含んでも良い。
また、プロセッサ20は、情報処理装置10の処理の単位の一例である。プロセッサ20は、CPUのように単独のプロセッサでもよく、CPUとROM(Read Only Memory)とRAM(Random Access Memory)と記憶装置と含むコンピュータのような装置でもよく、CPU上で実行されるプロセス、スレッド又はタスクでもよい。そのため、プロセッサ20は、「処理部」と言うこともできる。
資源制御部30は、共有リソースに対応する制御情報30aを保持する。既に説明しているが、制御情報30aは、共有リソースの更新の状態を示す情報である。なお、制御情報30aは、更新を示す情報として変数(制御用の変数)を含む。
なお、情報処理装置10は、共有資源(リソース)毎に資源制御部30を含んでも良い。あるいは、資源制御部30は、複数の共有リソースに対応しても良い。
ただし、以下では、説明を明確にするため、資源制御部30及び対象となる共有リソースを1つとして説明する。
次に、本実施形態の情報処理装置10の動作について説明する。
本実施形態の資源制御部30の制御情報30aが含む制御用の変数に特に制限はない。ただし、本実施形態は、図2に示すように、制御情報30aとして開始変数31と終了変数32とを含むとして説明する。
共有リソースを更新するプロセッサ20は、更新処理の開始時に開始変数31を更新する。
また、共有リソースを更新するプロセッサ20は、更新処理の終了時に終了変数32を更新する。
なお、開始変数31及び終了変数32の更新内容は、予め、情報処理装置10において、共有リソースを参照するプロセッサ20が判別できるように決めておけば特に制限はない。本実施形態の説明では、一例として、開始変数31及び終了変数32の初期値をどちらも「0」とし、更新を「1加算」として説明する。つまり、開始変数31と終了変数32は、更新中ではない場合、同じ値となり、更新中の場合、異なる値となる。
また、共有リソースの変更及び参照は、いずれのプロセッサ20が行っても良い。ただし、以下、説明の便宜のため、特に断らない限り、プロセッサ20aが共有リソースを更新し、プロセッサ20bが共有リソースを参照する。
まず、共有リソースの更新動作について説明する。
プロセッサ20aは、共有リソースを更新する場合、共有リソースが他のプロセッサから更新されることを防ぐため、排他機構を用いて占有する。この占有は、特に制限はない。例えば、プロセッサ20aは、資源制御部30を占有(ロック設定)しても良い。あるいは、プロセッサ20aは、一般的な排他機構(例えば、共有リソースのロック機構)を用いてもよい。そのため、共有リソースの占有についての詳細な説明は、省略する。
そして、プロセッサ20aは、共有リソースを更新するときに、次に説明する動作を行う。
図3は、本実施形態の情報処理装置10の更新動作の一例を示すフローチャートである。
プロセッサ20aは、開始変数31を更新(1加算)する(ステップ101)。
次に、プロセッサ20aは、共有リソースの仕様を基に更新に必要な保護機構を設定する(ステップ102)。プロセッサ20aは、この動作を、共有リソースの仕様に従って行う。例えば、共有リソースがメモリの場合、プロセッサ20aは、メモリの順序性を保障するメモリバリア(メモリフェンス)を設定する。なお、既にプロセッサ20aが、共有リソースを占有しているため、更なる保護機構が不要な場合、プロセッサ20aは、ステップ102を省略しても良い。
保護を設定後、プロセッサ20aは、共有リソースを更新する(ステップ103)。
更新後、プロセッサ20aは、保護機構を解除する(ステップ104)。なお、ステップ102を省略した場合、プロセッサ20aは、ステップ104を省略する。
その後、プロセッサ20aは、終了変数32を更新(1加算)する(ステップ105)。
全ての更新が終了すると、プロセッサ20aは、共有リソースの占有を解除(ロック解除)する。
図4は、情報処理装置10の更新動作の一例のシーケンス図である。図4において、共有リソースの保護機能についての動作を省略した。
プロセッサ20aは、開始変数31を更新する(1001)。
そして、プロセッサ20aは、共有リソースを更新する(1002)。
その後、プロセッサ20aは、終了変数32を更新する(1003)。
このような動作を基に、情報処理装置10は、共有リソースの更新に関して、次の状態を実現する。
(1)更新中、開始変数31の値と終了変数32の値とが異なる。
(2)更新の後の開始変数31及び終了変数32の値が、更新前の開始変数31及び終了変数32の値と異なる。
このように、共有リソースを更新するプロセッサ20aは、更新の前に開始変数31を更新し、更新終了後に終了変数32を更新する。
なお、図4には、参考として、プロセッサ20bが、共有リソースを更新する場合のシーケンス(1004−1006)も示している。プロセッサ20bは、プロセッサ20aのロック解除後、共有リソースのロックを設定してから、図4に示す動作を実行する。
次に、本実施形態の情報処理装置10が、共有リソースを参照する場合の動作について説明する。
図5は、情報処理装置10の参照動作の一例を示すフローチャートである。
共有リソースを参照するプロセッサ20bは、参照の前に開始変数31と終了変数32(以下、合わせて「両変数」と言う)を読み出す(ステップ201)。以下、ステップ201で読み出した変数を「第1の変数」と言う。
プロセッサ20bは、第1の開始変数31と第1の終了変数32との値を確認する(ステップ202)。具体的には、プロセッサ20bは、第1の開始変数31と第1の終了変数32とが同じか否かを判定する。この判定は、上記のとおり、共有リソースが更新中であるか否かの判定である。
第1の開始変数31と第1の終了変数32とが異なる、つまり、更新中の場合(ステップ202でNO)、プロセッサ20bは、ステップ201に戻り、更新が終了するまで待つ。プロセッサ20bは、この待ちを、ステップ201と202との繰り返し(スピンロック)として待つ。ただし、本実施形態の情報処理装置10は、スピンロックに限る必要はない。例えば、プロセッサ20bは、図示しないウェイト管理機構を備え、ウェイト状態として再開を待っても良い。
第1の開始変数31と第1の終了変数32とが一致、つまり更新中でない場合(ステップ202でYES)、プロセッサ20bは、共有データを参照、例えば、データを読み出す(ステップ203)。
参照が終了すると、プロセッサ20bは、両変数を読み出す(ステップ204)。ステップ204で読み出した変数を「第2の変数」と言う。
次に、プロセッサ20bは、第1の終了変数32と第2の終了変数32とを確認する(ステップ205)。具体的には、プロセッサ20bは、第1の終了変数32と第2の終了変数32とが同じか否かを判定する。この判定は、第1の両変数を読み出した後、終了した更新処理が発生したか否かの判定である。
第1の終了変数32と第2の終了変数32が異なる、つまり、終了した更新が発生した場合(ステップ205でNO)、プロセッサ20bは、ステップ201に戻り、最初から参照動作を始める。ステップ201に戻るのは、共有リソースが更新されているため、ステップ203での参照が無効の可能性があるためである。
第1の終了変数32と第2の終了変数32とが同じ場合(ステップ205でYES)、プロセッサ20bは、第2の開始変数31と第2の終了変数32とを確認する(ステップ206)。具体的には、プロセッサ20bは、第2の開始変数31と第2の終了変数32が同じか否かを判定する。この判定は、新しい更新動作中であるか否かの判定である。
第2の開始変数31と第2の終了変数32とが異なる、つまり、更新中の場合(ステップ206でNO)、プロセッサ20bは、ステップ201に戻り、最初から参照動作を始める。ステップ201に戻るのは、共有リソースの更新が開始されているため、ステップ203での参照が無効の可能性があるためである。
第2の開始変数31と第2の終了変数32とが同じ場合(ステップ206でYES)、プロセッサ20bは、参照動作を終了する。その後、プロセッサ20bは、適宜、次の動作に移る。
なお、ステップ205とステップ206は、どちらも変数の判定の動作である。そのため、情報処理装置10は、この動作を分けず、1つの判定動作としても良い。
このように、共有リソースを参照するプロセッサ20bは、共有リソースに排他機構を設定されているか否かに係わらず、開始変数31と終了変数32とを基に、共有リソースを参照できる。
次に、情報処理装置10が、適切に共有リソースを参照できることを、図6−図9を参照して説明する。なお、図面の煩雑さを避けるため、図6−図9において、図5のステップ205とステップ206との判断は、1つの判断として示す。
まず、共有リソースの更新動作と参照動作とが重ならない場合について説明する。
図6は、プロセッサ20aが共有リソースの更新後に、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
プロセッサ20bは、第1の両変数を読み出す(2001)。この場合、第1の開始変数31及び終了変数32は、同じ値(図6では「01」)となる。
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(2002)。
そして、プロセッサ20bは、共有リソースを参照する(2003)。
参照後、プロセッサ20bは、第2の両変数を読み出す(2004)。この場合、第2の開始変数31及び終了変数32は、第1の開始変数31及び終了変数32と同じ値(図6では「01」)となる。
そのため、ステップ205及び206に対応する変数の判定は、どちらもYESとなる(2005)。
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
次に、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合について説明する。
図7は、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
プロセッサ20bは、第1の両変数を読み出す(3001)。この場合、プロセッサ20aは、更新中である。そのため、第1の開始変数31及び第1の終了変数32は、異なる値(図7では、開始変数31が「01」、終了変数32が「00」)となる。
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、NOとなる(3002)。
プロセッサ20aの更新動作が終了するまで、第1の開始変数31と終了変数32とが異なる。そのため、プロセッサ20bは、図5のステップ201−202(図7では、3001−3002)を繰り返す。
プロセッサ20aが更新動作を終了すると、第1の開始変数31と終了変数32とが同じ値となる。
その後、プロセッサ20bが、第1の両変数を読み出す(3003)と、第1の開始変数31及び第1の終了変数32は、同じ値(図7では「01」)である。
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(3004)。
これ以降、プロセッサ20bは、図6の2003−2005と同様に動作する。
つまり、プロセッサ20bは、共有リソースを参照する(3005)。
参照後、プロセッサ20bは、第2の両変数を読み出す(3006)。この場合、第2の開始変数31及び終了変数32は、第1の開始変数31及び終了変数32と同じ値(図7では「01」)である。
そのため、ステップ205及び206に対応する変数の判定は、どちらもYESとなる(3007)。
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
次に、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始した場合について説明する。まず、プロセッサ20bの第2の変数の確認前に、プロセッサ20aの更新動作が終了した場合について説明する。
図8は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の変数の確認前に、プロセッサ20aの更新動作が終了した場合のシーケンス図である。
プロセッサ20bは、第1の両変数を読み込む(4001)。この場合、第1の開始変数31及び終了変数32は、同じ値(図8では「00」)である。
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(4002)。
プロセッサ20bは、共有リソースを参照する(4003)。
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースを更新する。そのため、開始変数31及び終了変数32は、どちらも更新(図8ではどちらも「01」)される。
参照後、プロセッサ20bは、第2の両変数を読み出す(4004)。上記のとおり、第2の両変数は、更新された後のため、第1の両変数とは異なる。
そのため、プロセッサ20bの変数の判定、具体的には、図5のステップ205の判定がNOとなる(4005)。
その結果、プロセッサ20bは、参照動作の最初(図5のステップ201)に戻り、参照動作をやり直す。つまり、プロセッサ20bは、図6の2001−2005に相当する図8の4006−4010を実行する。
具体的に説明すると次のとおりである。
プロセッサ20bは、第1の両変数を読み出す(4006)。第1の開始変数31及び終了変数32は、同じ値(図8では、「01」)となる。
プロセッサ20bは、第1の開始変数31と終了変数32を判定する(4007)。
第1の両変数が同じため、プロセッサ20bは、共有リソースを参照する(4008)。
参照後、プロセッサ20bは、第2の両変数を読み出す(4009)。この場合、第2の両変数は、第1の両変数と同じ値(図8では「01」)である。
そのため、プロセッサ20bの変数の判定は、YESとなる(4010)。
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
続いて、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の変数の確認時に、プロセッサ20aの更新動作が終了していない場合について説明する。
図9は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の変数の確認時に、プロセッサ20aの更新動作が終了していない場合のシーケンス図である。
プロセッサ20bは、第1の両変数を読み出す(5001)。この場合、第1の開始変数31及び終了変数32は、同じ値(図9では「00」)である。
そのため、第1の開始変数31と第1の終了変数32との判定(図5のステップ202)は、YESとなる(5002)。
プロセッサ20bは、共有リソースを参照する(5003)。
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースの更新を開始している。そのため、開始変数31は、更新(図9では「01」)されている。
参照後、プロセッサ20bは、第2の両変数を読み出す(5004)。上記のとおり、第2の開始変数31は、更新されたため、第2の終了変数32と異なる。
そのため、プロセッサ20bの変数の判定、具体的には、図5のステップ206の判定がNOとなる(5005)。
そのため、プロセッサ20bは、参照動作の最初(図5のステップ201)に戻り、参照動作をやり直す。
これ以降の動作は、図7と同様の動作になる。
つまり、プロセッサ20bは、第1の開始変数31と終了変数32が一致するまで、両変数の読み出しと判定を繰り返す。
プロセッサ20aが、更新を終了すると、開始変数31と終了変数32とが同じ値(図9では「01」)となる。
その後、プロセッサ20bが、第1の両変数を読み出す(5006)と、第1の開始変数31及び終了変数32は、同じ値(図9では、「01」)である。
プロセッサ20bは、第1の開始変数31と終了変数32を判定する(5007)。
第1の変数が同じため、プロセッサ20bは、共有リソースを参照する(5008)。
参照後、プロセッサ20bは、第2の両変数を読み出す(5009)。この場合、第2の両変数は、第1の両変数と同じ値(図9では「01」)である。
そのため、プロセッサ20bの変数の判定は、YESとなる(5010)。
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
このように構成された第1の実施形態の情報処理装置10は、特別な命令を用いずに、性能の低下を削減した排他制御を実現する効果を得ることができる。
その理由は、次のとおりである。
情報処理装置10は、制御情報30aとして開始変数31及び終了変数32を含む。
そして、共有リソースを更新するプロセッサ20aは、占有している共有リソースの更新を開始するときに開始変数31を更新し、更新を終了したときに終了変数32を更新する。
プロセッサ20bに基づく共有リソースの参照は、共有リソースに影響を与えない。そのため、プロセッサ20bは、いつでも共有リソースを参照できる。さらに、プロセッサ20bは、開始変数31及び終了変数32を基に、共有リソースが更新中であるか否か、及び、参照中に更新が発生したか否かを判定できる。
つまり、プロセッサ20bは、更新が発生していない場合、常に共有リソースを参照できる。そして、更新中の場合、プロセッサ20bは、更新終了後に共有リソースを参照できる。また、参照中に更新が発生した場合、プロセッサ20bは、参照後に、更新の発生を検出できるため、再度参照し、更新後の共有リソースを参照できる。
このように、共有リソースを参照するプロセッサ20bは、共有リソースが更新するプロセッサ20aに占有されている場合でも、共有リソースを参照できる。
つまり、本実施形態の情報処理装置10の共有リソースを参照するプロセッサ20bは、共有リソースを占有しているプロセッサ20aの占有解除を待たなくても、共有リソースを参照できる。
このため、本実施形態の情報処理装置10は、共有リソースの参照において、占有の解除の待ち時間を削減できる。その結果、情報処理装置10は、占有解除の待ち時間に基づく性能低下を削減できる。
また、本実施形態の情報処理装置10の共有リソースを参照するプロセッサ20bは、開始変数31及び終了変数32を用い、ロック設定及び解除せずに共有リソースを参照できる。
そのため、共有リソースを参照するプロセッサ20bは、ロックの取得や解除などの処理を必要としない。そのため、情報処理装置10は、さらに、性能低下の低減できる。また、情報処理装置10は、ロックの競合を低減できる。
さらに、共有リソースを参照するプロセッサ20bは、ロック取得が必要ないため、並列処理が可能である。その結果、情報処理装置10の処理性能が、さらに向上できるためである。
なお、本実施形態の情報処理装置10の構成は、これまでの説明に限らない。情報処理装置10は、複数の構成を1つの構成としても良い。あるいは、情報処理装置10は、1つの構成を複数の構成に分けても良い。また、情報処理装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータとして実現しても良い。
図10は、本実施形態の別の構成である情報処理装置60の構成の一例を示す図である。
情報処理装置60は、CPU610aと、CPU610bと、ROM620と、RAM630と、IO(Input/Output)640と、内部記憶装置650と、キーボード660と、マウス670と、ディスプレイ680と、NIC690とを含み、コンピュータを構成している。
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に表示データを表示する。
なお、CPU610a又はCPU610bは、コンピュータで読み取り可能にプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。あるいは、CPU610a又はCPU610bは、NIC690を介してネットワークに接続された図示しない外部記憶装置からプログラムを読み込んでも良い。
ROM620は、CPU610a及びCPU610bが実行するプログラム、及び、固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)やフラッシュROMである。
RAM630は、CPU610a及びCPU610bが実行するプログラムやデータを一時的に記憶する。RAM630は、資源制御部30として動作しても良い。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
IO640は、内部記憶装置650やキーボード660などとCPU610a及びCPU610bとのデータを仲介する。IO640は、例えば、IOインターフェースカードである。
内部記憶装置650は、情報処理装置60の長期的に保存するデータやプログラムを保存する。また、内部記憶装置650は、資源制御部30として動作してもよい。さらに、内部記憶装置650は、CPU610a及びCPU610bの一時記憶装置として動作しても良い。内部記憶装置650は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)、又は、ディスクアレイ装置である。
キーボード660及びマウス670は、情報処理装置60の操作者からの入力指示を受信する入力部である。キーボード660及びマウス670は、受信した入力指示のデータをCPU610a又はCPU610bに送信する。
ディスプレイ680は、情報処理装置60の表示部である。CPU610a又はCPU610bは、操作者に必要な情報を、ディスプレイ680に表示する。
NIC690は、ネットワークを介した他の装置との情報のやり取りを中継する。NIC690は、例えば、LANカードである。
このように構成された情報処理装置60は、情報処理装置10と同様の効果を得ることができる。
その理由は、情報処理装置60のCPU610a及びCPU610bが、プログラムに基づいて情報処理装置10のプロセッサ20と同様の動作を実現できるためである。
(変形例1)
第1の実施形態の情報処理装置10は、開始変数31と終了変数32とを基に、共有リソースの更新を検出する。ただし、本実施形態の情報処理装置10の参照動作は、図5を用いた説明の動作に限らない。
図11は、第1の実施形態に係る情報処理装置10の参照動作の別の動作の一例を示すフローチャートである。
図11において、図5との差は、図5のステップ205とステップ206を、ステップ305に変更した点である。そのため、ステップ305について説明し、他の説明は省略する。
図5に示した参照動作において、プロセッサ20bは、次を確認した。
ステップ205において、プロセッサ20bは、第1の終了変数32と第2の終了変数32が一致する否か、つまり、参照開始時に終了した更新と、参照終了後に終了した更新とが、一致するか否かを判定する。
ステップ206において、プロセッサ20bは、第2の開始変数31と第2の終了変数32が一致するか否か、つまり、参照終了時に更新中か否かを判定する。
しかし、プロセッサ20bは、ステップ202において、更新中でないことを確認してから参照動作を開始している。
そのため、プロセッサ20bは、参照終了時に、参照中に更新が発生したか否かを判定しても良い。
そのため、本変形例のプロセッサ20bは、ステップ305において、第1の開始変数31と第2の開始変数31が一致する否か、つまり、参照終了時に、更新が発生したか否かを判定する。
更新が発生した場合(ステップ305のNO)、プロセッサ20bは、ステップ201に戻り、参照動作を最初から再開する。
更新が発生していない場合(ステップ305でYES)、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
変形例1の情報処理装置10は、第1の実施形態の情報処理装置10と同様の効果を得ることができる。
その理由は、変形例1の情報処理装置10は、第1の実施形態の情報処理装置10と同様に、共有リソースの参照中に発生した更新を検出でき、更新が発生した場合に、再度、参照動作が可能なためである。
(第2の実施形態)
本実施形態の情報処理装置10の制御情報30aは、図2に示す開始変数31及び終了変数32に限らない。
第2の実施形態に係る情報処理装置10の資源制御部30は、図12に示すように、制御情報30bとして制御変数33を含む。その他の構成は、第1の実施形態の同様のため、詳細な説明は省略し、制御変数33に関係する構成について説明する。
制御変数33は、共有リソースの更新状態を示す。なお、制御変数33は、初期値として特に制限はないが、以下の説明では、初期値を0(偶数)として説明する。なお、初期値を奇数とした場合、以下の説明において、偶数と奇数を入れ替えればよい。
共有リソースを更新するプロセッサ20aは、共有リソースの更新の開始時と終了時に制御変数33を更新(例えば、1加算)する。
共有リソースを参照するプロセッサ20bは、共有リソースの参照前と参照後の制御変数33の値を基に、更新中、及び、参照中の更新の発生の有無を判定する。
第2の実施形態の情報処理装置10の動作について図を参照して説明する。
図13は、第2の実施形態の情報処理装置10の更新動作の一例を示すフローチャートである。
プロセッサ20aの更新における排他制御は、第1の実施形態の同様のため、詳細な説明は省略する。
プロセッサ20aは、制御変数33を更新(1加算)する(ステップ401)。つまり、制御変数33は、奇数になる。
次に、プロセッサ20aは、必要に応じて共有リソースに保護機構を設定する(ステップ402)。
保護を設定後、プロセッサ20aは、共有リソースを更新する(ステップ403)。
更新後、プロセッサ20aは、保護機構を解除する(ステップ404)。
その後、プロセッサ20aは、制御変数33を更新(1加算)する(ステップ405)。つまり、制御変数33は、偶数に戻る。
図14は、第2の実施形態の情報処理装置10の更新動作の一例のシーケンス図である。図14においても、共有リソースの保護機能についての動作は、省略した。
プロセッサ20aは、制御変数33を(奇数に)更新する(1007)。
そして、プロセッサ20aは、共有リソースを更新する(1008)。
その後、プロセッサ20aは、制御変数33を(偶数に)更新する(1009)。
このような動作を基に、情報処理装置10は、共有リソースの更新に関して、次の状態を実現する。
(1)更新中、制御変数33は、奇数である。
(2)更新の前後において、制御変数33は、偶数であるが、値が異なる。
なお、図14には、参考として、他のプロセッサ20の例として、プロセッサ20bが、共有リソースを更新する場合のシーケンス(1010−1012)も示している。
このように、共有リソースを更新するプロセッサ20aは、更新の前後において、制御変数33を更新する。
次に、本実施形態の情報処理装置10が、共有リソースを参照する場合の動作について説明する。
図15は、第2の実施形態の情報処理装置10の参照動作の一例を示すフローチャートである。
共有リソースを参照するプロセッサ20bは、参照の前に制御変数33を読み出す(ステップ501)。以下、ステップ501で読み出した変数を「第1の制御変数33」と言う。
プロセッサ20bは、第1の制御変数33の値を確認する(ステップ502)。具体的には、プロセッサ20bは、第1の制御変数33が偶数か否かを判定する。この判定は、上記のとおり、共有リソースが更新中であるか否かの判定である。
第1の制御変数33が偶数でない(奇数の)場合(ステップ502でNO)、プロセッサ20bは、ステップ501に戻る。プロセッサ20bは、第1の制御変数33が偶数になるまで、待つ。この動作は、第1の実施形態と同様に、ステップ501と502との繰り返しでよいし、ウェイト状態を用いても良い。
第1の制御変数33が偶数、つまり更新中でない場合(ステップ502でYES)、プロセッサ20bは、共有データを参照する(ステップ503)。
参照後、プロセッサ20bは、制御変数33を読み出す(ステップ504)。ステップ504で読み出した変数を「第2の制御変数33」と言う。
次に、プロセッサ20bは、第1の制御変数33と第2の制御変数33とを確認する(ステップ505)。具体的には、プロセッサ20bは、第1の制御変数33と第2の制御変数33とが同じか否かを判定する。この判定は、第1の制御変数33を読み出した後、終了した更新処理が発生したか否かの判定である。
第1の制御変数33と第2の制御変数33が異なる、つまり、終了した更新が発生した場合(ステップ505でNO)、プロセッサ20bは、ステップ501に戻り、最初から参照動作を始める。ステップ501に戻るのは、共有リソースが更新されているため、ステップ503での参照が無効の可能性があるためである。
第1の制御変数33と第2の制御変数33が同じ値の場合(ステップ505でYES)、プロセッサ20bは、第2の制御変数33の値を確認する(ステップ506)。具体的には、プロセッサ20bは、第2の制御変数33が偶数か否かを判定する。この判定は、更新動作中か否かの判定である。
第2の制御変数33が奇数、つまり、更新中の場合(ステップ506でNO)、プロセッサ20bは、ステップ501に戻り、最初から参照動作を始める。ステップ501に戻るのは、共有リソースの更新が開始されているため、ステップ503での参照が無効の可能性があるためである。
第2の制御変数33が偶数の場合(ステップ506でYES)、プロセッサ20bは、参照動作を終了する。プロセッサ20bは、適宜、次の動作に移る。
なお、ステップ505とステップ506は、どちらも変数の判定の動作である。そのため、情報処理装置10は、この動作を分けずに、1つの判定動作として実行しても良い。
また、プロセッサ20bは、ステップ502で制御変数33が偶数である場合に処理を進めている。つまり、第1の制御変数33は、偶数である。更新中の制御変数33は、奇数となる。奇数と偶数は、異なる値である。つまり、更新中の場合も、プロセッサ20bは、ステップ505の判定がNOとなる。したがって、プロセッサ20bは、ステップ506を省略しても良い。
このように、共有リソースを参照するプロセッサ20bは、共有リソースに排他機構を設定されているか否かに係わらず、制御変数33を基に共有リソースを参照できる。
次に、情報処理装置10が、適切に共有リソースを参照できることを、図16−19を参照して説明する。なお、図面の煩雑さを避けるため、図16−図19において、図15のステップ505とステップ506との判断は、1つの判断として示す。
まず、共有リソースの更新動作と参照動作とが重ならない場合について説明する。
図16は、プロセッサ20aが共有リソースの更新を終了後、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
プロセッサ20bは、第1の制御変数33を読み出す(6001)。この場合、第1の制御変数33は、偶数(図16では「02」)となる。
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(6002)。
そして、プロセッサ20bは、共有リソースを参照する(6003)。
プロセッサ20bは、第2の制御変数33を読み出す(6004)。この場合、第2の制御変数33は、第1の制御変数33と同じ値(図16では「02」)となる。
そのため、ステップ505及び506に対応する変数の判定は、どちらもYESとなる(6005)。
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
次に、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合について説明する。
図17は、プロセッサ20aが更新動作中に、プロセッサ20bが参照動作を開始した場合のシーケンス図である。
プロセッサ20bは、第1の制御変数33を読み出す(7001)。この場合、プロセッサ20aは、更新中である。そのため、第1の制御変数33は、奇数(図17では、「01」)となる。
そのため、第1の制御変数33の判定(図15のステップ502)は、NOとなる(7002)。
プロセッサ20aの更新動作が終了するまで、第1の制御変数33は、奇数である。そのため、プロセッサ20bは、図15のステップ501−502(図17では、7001−7002)を繰り返す。
プロセッサ20aが更新動作を終了すると、第1の制御変数33は、偶数になる。
その後、プロセッサ20bが、第1の制御変数33を読み出す(7003)と、第1の制御変数33は、偶数(図17では「02」)となる。
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(7004)。
これ以降、プロセッサ20bは、図16の6003−6005と同様に動作する。
つまり、プロセッサ20bは、共有リソースを参照する(7005)。
プロセッサ20bは、第2の制御変数33を読み出す(7006)。この場合、第2の制御変数33は、第1の制御変数33と同じ値(図17では「02」)である。
そのため、ステップ505及び506に対応する変数の判定は、どちらもYESとなる(7007)。
その結果、プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
次に、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始した場合について説明する。まず、プロセッサ20bの第2の制御変数33の確認前に、プロセッサ20aの更新動作が終了した場合について説明する。
図18は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の制御変数33の確認前に、プロセッサ20aの更新動作が終了した場合のシーケンス図である。
プロセッサ20bは、第1の制御変数33を読み込む(8001)。この場合、第1の制御変数33は、偶数(図18では「00」)である。
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(8002)。
プロセッサ20bは、共有リソースを参照する(8003)。
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースを更新している。そのため、制御変数33は、更新(図18では「02」)されている。
プロセッサ20bは、第2の制御変数33を読み出す(8004)。上記のとおり、第2の制御変数33は、更新された後のため、第1の制御変数33とは異なる。
そのため、プロセッサ20bの変数の判定、具体的には、図15のステップ505の判定がNOとなる(8005)。
そのため、プロセッサ20bは、参照動作の最初(図15のステップ501)に戻り、参照動作をやり直す。つまり、プロセッサ20bは、図16の6001−6005に相当する図18の8006−8010を実行する。
具体的に説明すると次のとおりである。
プロセッサ20bは、第1の制御変数33を読み出す(8006)。第1の制御変数33は、偶数(図18では、「02」)である。
プロセッサ20bは、第1の制御変数33を判定する(8007)。
第1の制御変数33が偶数のため、プロセッサ20bは、共有リソースを参照する(8008)。
プロセッサ20bは、第2の制御変数33を読み出す(8009)。この場合、第2の制御変数33は、第1の制御変数33と同じ偶数の値(図18では「02」)である。
そのため、プロセッサ20bの変数の判定は、YESとなる(8010)。
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
続いて、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の制御変数33の確認時に、プロセッサ20aの更新動作が終了していない場合について説明する。
図19は、プロセッサ20bが参照動作を開始してから、プロセッサ20aが更新動作を開始し、プロセッサ20bの第2の制御変数33の確認時に、プロセッサ20aの更新動作が終了していない場合のシーケンス図である。
プロセッサ20bは、第1の制御変数33を読み出す(9001)。この場合、第1の制御変数33は、偶数(図19では「00」)である。
そのため、第1の制御変数33の判定(図15のステップ502)は、YESとなる(9002)。
プロセッサ20bは、共有リソースを参照する(9003)。
ただし、プロセッサ20aは、プロセッサ20bが共有リソースを参照中に、共有リソースの更新を開始している。そのため、制御変数33は、更新(図19では「01」)されている。
プロセッサ20bは、第2の制御変数33を読み出す(9004)。上記のとおり、第2の制御変数33は、更新されたため、第1の制御変数33とは異なる。
そのため、プロセッサ20bの制御変数33の判定、具体的には、図15のステップ505の判定がNOとなる(5005)。
そのため、プロセッサ20bは、参照動作の最初(図15のステップ501)に戻り、参照動作をやり直す。
これ以降の動作は、図17と同様の動作になる。
つまり、プロセッサ20bは、第1の制御変数33が偶数になるまで、制御変数33の読み出しと判定を繰り返す。
プロセッサ20aが、更新を終了すると、制御変数33が偶数(図19では「02」)となる。
その後、プロセッサ20bが、第1の制御変数33を読み出す(9006)と、第1の制御変数33は、偶数(図19では、「02」)である。
プロセッサ20bは、第1の制御変数33を判定する(9007)。
第1の制御変数33が偶数のため、プロセッサ20bは、共有リソースを参照する(9008)。
プロセッサ20bは、第2の制御変数33を読み出す(9009)。この場合、第2の制御変数33は、第1の制御変数33と同じ偶数(図19では「02」)である。
そのため、プロセッサ20bの変数の判定は、YESとなる(9010)。
プロセッサ20bは、参照した共有リソースが有効として、参照動作を終了する。
このように構成された第2の実施形態の情報処理装置10は、第1の実施形態の情報処理装置10と同様の効果を得ることができる。
その理由は、第2の実施形態の情報処理装置10は、制御変数33を用いて、開始変数31と終了変数32とを用いる第1の実施形態の情報処理装置10と同様に動作できるためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
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 記憶媒体

Claims (5)

  1. 共有資源の更新状態を示す制御情報を保持する資源制御部と、
    前記共有資源を更新する前に前記資源制御部の制御情報を更新し、前記共有資源を更新後に前記資源制御部の制御情報をさらに更新する第1の処理部と、
    前記資源制御部の制御情報を基に前記第1の処理部が前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記資源制御部の制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する第2の処理部と
    含み、
    前記資源制御部の前記制御情報は、
    前記共有資源の更新前に更新される開始変数と、
    前記共有資源の更新後に更新される終了変数と
    を含み、
    前記開始変数が、前記共有資源の更新後に前記終了変数が更新されるときに更新されず、
    前記終了変数が、前記共有資源の更新前に前記開始変数が更新されるときに更新されない
    情報処理装置。
  2. 前記開始変数及び前記終了変数の初期値が0であり、
    前記開始変数及び前記終了変数が、更新として、1を加算される
    請求項1に記載の情報処理装置
  3. 前記第2の処理部は、
    前記共有資源の参照前に前記資源制御部から取り出した前記制御情報を第1の変数として前記第1の判定を行い、
    前記共有資源の参照後に前記資源制御部から取り出した前記制御情報を第2の変数として前記第1の変数及び前記第2の変数を基に前記第2の判定を行う
    請求項1又は請求項2に記載の情報処理装置。
  4. 共有資源の更新状態を示す制御情報を保持し、
    前記共有資源を更新する場合、前記共有資源を更新する前に前記制御情報を更新し、前記共有資源を更新後に前記制御情報をさらに更新し、
    前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照し、
    前記制御情報は、
    前記共有資源の更新前に更新される開始変数と
    前記共有資源の更新後に更新される終了変数と
    を含み、
    前記開始変数が、前記共有資源の更新後に前記終了変数が更新されるときに更新されず、
    前記終了変数が、前記共有資源の更新前に前記開始変数が更新されるときに更新されない
    情報処理方法。
  5. 共有資源の更新状態を示す制御情報を保持する処理と、
    前記共有資源を更新する場合、前記共有資源の更新の前に前記制御情報を更新し、前記共有資源の更新後に前記制御情報をさらに更新する処理と、
    前記共有資源を参照する場合、前記制御情報を基に前記共有資源を更新中か否かの判定である第1の判定を行い、更新中でない場合は前記共有資源を参照し、更新中の場合は更新終了後に前記共有資源を参照し、前記共有資源の参照後、前記制御情報を基に参照中に前記共有資源の更新が発生したか否かを判定である第2の判定を行い、更新が発生した場合、前記共有資源を再度参照する処理と
    をコンピュータに実行させ
    さらに、前記制御情報に、
    前記共有資源の更新前に更新される開始変数と
    前記共有資源の更新後に更新される終了変数と
    を含み、
    前記開始変数が、前記共有資源の更新後に前記終了変数が更新されるときに更新されず、
    前記終了変数が、前記共有資源の更新前に前記開始変数が更新されるときに更新されないように処理を実行させる
    プログラム。
JP2012032474A 2012-02-17 2012-02-17 情報処理装置、及び、情報処理方法 Active JP5890194B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012032474A JP5890194B2 (ja) 2012-02-17 2012-02-17 情報処理装置、及び、情報処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012032474A JP5890194B2 (ja) 2012-02-17 2012-02-17 情報処理装置、及び、情報処理方法

Publications (2)

Publication Number Publication Date
JP2013168103A JP2013168103A (ja) 2013-08-29
JP5890194B2 true JP5890194B2 (ja) 2016-03-22

Family

ID=49178436

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012032474A Active JP5890194B2 (ja) 2012-02-17 2012-02-17 情報処理装置、及び、情報処理方法

Country Status (1)

Country Link
JP (1) JP5890194B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7054688B2 (ja) * 2019-10-04 2022-04-14 イーソル株式会社 同期制御システムおよび同期制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3568686B2 (ja) * 1996-05-16 2004-09-22 株式会社東芝 情報処理装置における情報交換方法
JP4387970B2 (ja) * 2005-03-31 2009-12-24 富士通株式会社 データ入出力プログラム,装置,および方法
JP5088754B2 (ja) * 2009-12-18 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション システム、方法、プログラムおよびコード生成装置

Also Published As

Publication number Publication date
JP2013168103A (ja) 2013-08-29

Similar Documents

Publication Publication Date Title
EP2972885B1 (en) Memory object reference count management with improved scalability
EP3701377B1 (en) Method and apparatus for updating shared data in a multi-core processor environment
EP2738698A2 (en) Locking protocol for partitioned and distributed tables
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 (zh) 事务存储器支持
US9569265B2 (en) Optimization of data locks for improved write lock performance and CPU cache usage in multi core architectures
US10108456B2 (en) Accelerated atomic resource allocation on a multiprocessor platform
US20150081986A1 (en) Modifying non-transactional resources using a transactional memory system
US8850129B2 (en) Memory ordered store system in a multiprocessor computer system
US11500693B2 (en) Distributed system for distributed lock management and method for operating the same
US9053035B1 (en) Multi-threaded system for performing atomic binary translations
JP5890194B2 (ja) 情報処理装置、及び、情報処理方法
US20160253275A1 (en) Information processing device, information processing system, and exclusive control program
CN105094993B (zh) 一种多核处理器、数据同步的方法及装置
JP6468053B2 (ja) 情報処理装置、並列処理プログラム、及び、共有メモリアクセス方法
US10310916B2 (en) Scalable spinlocks for non-uniform memory access
US10146689B2 (en) Locally poll flag in multi processing node system to determine whether a resource is free to use for thread
JP5163128B2 (ja) 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ
WO2015114642A1 (en) Synchronizing per-cpu data access using per socket rw-spinlocks
JP6201478B2 (ja) 処理順序制御装置、処理順序制御方法及び処理順序制御プログラム
CN112306698A (zh) 一种numa系统中的临界区执行方法及装置

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