JP4410795B2 - 共有リソースの同時アクセス - Google Patents

共有リソースの同時アクセス Download PDF

Info

Publication number
JP4410795B2
JP4410795B2 JP2006506127A JP2006506127A JP4410795B2 JP 4410795 B2 JP4410795 B2 JP 4410795B2 JP 2006506127 A JP2006506127 A JP 2006506127A JP 2006506127 A JP2006506127 A JP 2006506127A JP 4410795 B2 JP4410795 B2 JP 4410795B2
Authority
JP
Japan
Prior art keywords
request
completed
processing
requests
current request
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
JP2006506127A
Other languages
English (en)
Other versions
JP2006524381A5 (ja
JP2006524381A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2006524381A publication Critical patent/JP2006524381A/ja
Publication of JP2006524381A5 publication Critical patent/JP2006524381A5/ja
Application granted granted Critical
Publication of JP4410795B2 publication Critical patent/JP4410795B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、一般に、コンピュータ及びコンピュータ・ソフトウェア、特に、コンピュータの共有リソースへの同時アクセスを管理することに関する。
現代社会においてはコンピュータへの依存度が高まり続けているので、コンピュータ・技術は、増加する需要についていくべく最前線で進歩していかなければならない。重要な研究及び開発努力の1つの特定の対象は、並列性、すなわち多数のタスクを並列に処理する性能である。
増加した並列処理を容易にするために、多数のコンピュータ・ソフトウェア及びハードウェア技術が開発されている。ハードウェアの観点から、コンピュータは、作業負荷の受容能力の増加を与えるために、ますます多数のマイクロプロセッサに依存しつつある。さらに、多数のスレッドを並列に実行する能力をサポートして、多数のマイクロプロセッサの使用を通して達成できるのと同じ多くの性能ゲインを効果的に与える幾つかのマイクロプロセッサが開発されている。ソフトウェアの観点から、コンピュータ・プログラムが多数のスレッドを同時に実行できるようにし、それにより多数のタスクを本質的に同時に実行することができるマルチスレッド化オペレーティング・システム及びカーネルが開発されている。
さらに、幾つかのコンピュータは、論理的区画化の概念を実装し、そこでは、単一の物理的コンピュータが、本質的に多数の独立した「仮想」コンピュータ(論理区画と呼ばれる)のように動作可能にされ、物理的コンピュータ(例えば、プロセッサ、メモリ、入力/出力デバイス)における種々のリソースは、種々の論理区画の間で割当てられる。各論理区画は、個別のオペレーティング・システムを実行し、ユーザ及び論理区画上で実行するソフトウェア・アプリケーションの見地から、完全に独立したコンピュータのように動作する。
並列性は、多数のタスクを一度に行う能力によりシステム性能を効果的に高めるが、並列性の1つの副作用は、多数の同時処理動作を同期させる必要があるために、特に、多数のスレッドによって共有されることが可能なシステム・リソースに関するシステムの複雑さが増すことである。特定のリソースにアクセスすることができる個別のスレッド又はプロセスは、典型的には、他のスレッド又はプロセスのアクティビティを認識しない。したがって、1つのプロセスが別のプロセスに関する特定のリソースに予期しない形でアクセスして、不確定の結果及び潜在的なシステムエラーをもたらす恐れがある。
しかし、ほんの一例として、イーサネット(登録商標)・ネットワーク・アダプタのような入力/出力(I/O)アダプタは、コンピュータにおいて実行される多数のスレッド又はプロセスによって共有されることが可能な有限の数のリソースを有することができる。こうしたタイプの1つのリソースはフレーム・バッファであり、それは、イーサネット(登録商標)と互換性のあるネットワークに及び該ネットワークから通信されるデータ・フレームを格納するのに用いられる。フレーム・バッファは、異なるプロセスによって順番に用いられるスロットに配置されることが多く、I/Oアダプタは、各スロットの消費を通知される。しかしながら、スロットの1つの消費が多大な時間量を占領し、その間、他のプロセスが他のスロットを利用できないことがある。さらに、2つのプロセスが同じスロットを同時に使用しようとする懸念がある。
これらの懸念に対処するために、ロック又はセマフォーといった逐次化機構を用いて、共有リソースへのアクセスを一度に一つのプロセスに制限することができる。ロック又はセマフォーは、本質的には、特定の共有エンティティ又はリソースにアクセスするためにマルチスレッド化環境におけるプロセス又はスレッドによって排他的に得られる「トークン」である。プロセス又はスレッドがリソースにアクセスする前に、最初にシステムからトークンを取得しなければならない。別のプロセス又はスレッドがトークンを同時に所有する場合には、他のプロセス又はスレッドによってトークンが解放されるまで、前者のプロセス又はスレッドは、リソースにアクセスすることを許可されない。このようにして、リソースへのアクセスは、不確定の動作が起こるのを防止するために効果的に「逐次化」される。
ロックされたリソースにアクセスする必要があるあらゆるスレッド又はプロセスは、リソースへのアクセスを進める前に、そのリソースのロックが解除されるまで待たなければならないことが多いので、共有リソースが逐次化機構によって管理されるときにはいつも、並列化の機会が減少されることが多い。したがって、共有リソースにロックがかけられる頻度及び持続時間を最小にすることへの強い要望がある。
前述のI/Oアダプタの例においては、フレーム・バッファへの対立のないアクセスを保証するための最も直接的な解決策は、フレーム・バッファのあらゆる使用に対して単純にロックをかけることである。しかしながら、そのようにすると、フレーム・バッファに格納されたデータを準備し、解釈し、その他の処理をするプロセスによって大量の作業が実行される必要があるので、並列化の機会が大幅に制限される。したがって、これらの全てのアクティビティが発生する間の他のプロセスによるフレーム・バッファへのアクセスのロックアウトは、並列化の観点からは逆効果である。
或る状況においては、共有リソースにロックをかける前に、共有リソースの使用に関連する幾つかの事前作業を行って、共有リソースが他のプロセスに対してロックされる必要がある時間の量を減らすことが可能である。しかしながら、そのようにすることを意図された従来の試みは、リソースの利用可能性の重複チェックと、より複雑な事前作業が実行されることを要求することが見出されている。
したがって、マルチスレッド化されたコンピュータにおいて実行される多数のスレッド又はプロセスによる共有リソースへのアクセスを調整する改善された方法への大きな必要性がある。
本発明は、従来技術に関連するこれらの問題及び他の問題に対処するために、マルチスレッド化されたコンピュータにおける複数のプロセスによる共有リソースへのアクセスが、共有リソースを使用する要求を受け取る順番と、こうした要求を受け取った後にそれらの要求の処理が完了する順番との両方を追跡するアトミック・オペレーションの集合を介して管理されるというような装置、プログラム及び方法を提供する。要求のディスパッチは、最近完了された要求より前に受け取った、ディスパッチされていない要求の処理が完了するまで、効果的に据え置かれる。
特に、本発明の1つの態様によれば、共有リソースは、共有リソースを使用する要求を非同期的に発することが可能な複数のプロセスによってアクセスされることができる。第1のプロセスにおいて、共有リソースを使用する現在の要求に固有の識別子がアトミックに割当てられる。この場合、固有の識別子は、複数のプロセスによって発せられた他の要求に対し現在の要求を受け取る順番に基づいて現在の要求に割当てられる。その後、固有の識別子を用いる現在の要求の処理が完了し、そうした処理が完了した後に、完了した要求のカウントがアトミックに増分され、最近完了した要求より前に発せられた他の要求の処理が完了したかどうかについてのアトミックな判別がなされる。完了していた場合、処理が完了した、ディスパッチされていない要求の各々がディスパッチされる。
本発明に係る幾つかの実施形態においては、要求の処理の完了は、非アトミックに行うことができ、したがって、要求の処理と関連して行われるアトミック・オペレーションの持続時間を制限し、それにより共有リソースへの競合を減少させる。さらに、幾つかの実施形態においては、ディスパッチされていない要求のディスパッチの結果として、多数の要求がバッチで対処され、それにより個々のディスパッチのオーバーヘッドが減少する。
ここで、本発明を、添付の図面を参照しながら、一例として説明する。
以下に示される実施形態は、複数のクライアントによって発せられた、共有リソースを使用する要求を受け取る順番と、共有リソースを使用する要求のディスパッチと関連してこうした要求の処理が完了する順番との両方を追跡するものである。要求は、非同期的に発せられることができ、さらに、順番どおりではなく完了させることができる。結果として、要求を受け取る際に、要求を受け取る順番に基づいて、要求に固有の識別子が割当てられる。さらに、完了した要求の番号が追跡され、最近完了した要求より前に発せられた他の要求の処理が完了したかどうかを判別するために、各要求の取り扱いと関連して判別がなされる。この条件が満たされたと判断されると、処理が完了した、ディスパッチされていない要求の各々がディスパッチされる。
以下で一層明らかとなるように、要求を受け取る順番、及びこうした要求が完了する順番の追跡は、共有リソースに関連する一連のカウンタの使用を通じて行われ、これらのカウンタは、セマフォーのような排他的ロック機構を介してアトミックにアクセスされることが可能である。要求カウンタは、要求を受け取る際に、要求に固有の識別子を割当てるために用いることができる。完了した要求(すなわち、準備及びサブミッションといった処理が完了した要求)の番号を追跡するために、完了カウンタを用いることができる。最後の完了カウンタは、最近完了した要求を追跡するのに用いることができ、一方、最後のディスパッチ・カウンタは、最近ディスパッチされた要求を追跡するのに用いることができる。
本発明に係る多くの実施形態においては、上述のカウンタへのアクセスのみがアトミックである必要がある。要求の取り扱いに関係する他の処理は、非アトミックに取り扱われることが多く、したがって、要求の取り扱いに関連して行われるアトミック・オペレーションの持続時間が制限され、それにより、そうでなければ共有リソースへの同時アクセスを妨げる競合が減少される。
さらに、本発明に係る実施形態は、要求のバッチでのディスパッチを与える能力をサポートする。要求のディスパッチは、本発明に係る異なる形で行われる。例えば、共有リソースが、ネットワーク・アダプタのような入力/出力アダプタのフレーム・バッファにおけるスロットである場合には、ディスパッチオペレーションは、入力/出力アダプタを介してそのクライアントに関するパケットが受け取られるときにはいつでも、クライアントへの割り込みの生成として実装することができる。共有リソースが、SCSIネットワークのようなネットワークにおける大容量ストレージ・デバイスである場合には、ディスパッチ・オペレーションは、オペレーティング・システムへのI/O要求の完了通知とすることができる。
要求の性質は、典型的には、当該共有リソースの特定のタイプに応じて変わることになる。例えば、データベース・リソースにおいては、要求はデータベース・トランザクションを表すことができ、一方、ファイル管理システム・リソースにおいては、要求はファイルアクセス要求を表すことができる。ストレージ・デバイスにおいては、要求は入力/出力(I/O)要求を表すことができ、一方、プロセッサ・リソースにおいては、要求はプロセッサに論理区画を割当てるための要求を表すことができる。本発明の開示内容の利点を有する他の共有リソース及び要求の実装が、当業者には明らかであろう。
ここで、幾つかの視点を通じて同じ番号が同じ部分を表す図面に移ると、図1は、本発明に係る共有リソースへの同時及び非同期アクセスをサポートするために用いることができる汎用コンピュータ・アーキテクチャ50の例示的な構成を示す。特に、アーキテクチャ50は、汎用共有リソース56への複数のクライアント54によるアクセスを管理するリソース・マネージャ52を組み入れていることが示されている。
共有リソース56は、コンピュータ、例えば、種々のタイプの入力/出力、イーサネット(登録商標)・アダプタ、SCSIアダプタその他のネットワーク・アダプタ、ストレージ・アダプタ及びコントローラ、ワークステーション・アダプタ及びコントローラ、データベース・コントローラ、プロセッサといったその他のハードウェア・リソース、その他の入力/出力アダプタ及びコントローラなどによってアクセスされることができる事実上あらゆるタイプのコンピュータ・リソースを表すと考えられる。さらに、共有リソース56は、例えば、カーネル又はオペレーティング・システム・サービス、ファイル管理システム、データベースなどといった種々のタイプのソフトウェア・リソースを含むと考えられる。共有リソースはまた、例えば、バッファ又は入力/出力アダプタに常駐する他のメモリ・リソースといった上記のタイプのリソースのサブコンポーネントを含むことができる。
クライアント54は、それぞれ、事実上あらゆるプログラム・コード、又はその他のクライアントに対して非同期的な形でリソース56にアクセスすることができる外部プログラマブル・デバイスも表すと考えられる。図示された実施形態においては、典型的には、各クライアント54は、例えば、シングルスレッド化及び/又はマルチスレッド化プロセッサを含む1つ又はそれ以上のプロセッサ、ソフトウェアベースの又はオペレーティング・システム支援マルチスレッド化、論理的区画化、及び/又は多数の実行インスタンスが共有リソースに並列に非同期的にアクセスできるようにする他の技術を使用して、コンピュータに常駐する複数の並列処理又はスレッドの1つにおいて実行される、コンピュータ上のプログラム・コードを用いて実装される。
共有リソース56へのアクセスを管理するために、リソース・マネージャ52は、種々のクライアント54によって生成されたリソース・アクセス要求のための個別のサーバとして働く複数のサーバ・プロセス58を含む。各サーバ・プロセス58は、所与のクライアント54に静的に又は動的に割当てられ、サーバ・プロセスとクライアントとの間のマッピングは、必ずしも1:1である必要はなく、時間の経過と共に変化してもよいことがわかるであろう。
リソース・マネージャ52はまた、共有リソース56へのアクセスを調整するためにサーバ・プロセス58と対話するディスパッチ・プロセス60を含む。以下でより明らかとなるように、ディスパッチ・プロセス60は、一度に多数のアクセス要求をディスパッチするためにバッチでのディスパッチを実行することができる。さらに、ディスパッチ・プロセス60はまた、共有リソース56からのデータのリターンを管理することができ、入来データをしかるべきクライアントに送付するために、サーバ・プロセス58と、あるいは直接各クライアントと対話することができる。しかしながら、他の実施形態においては、リターン・データは、ディスパッチ・プロセス60とは別に取り扱われてもよい。さらに、リソース・マネージャ52は、多数の共有リソースを管理することができ、又は多数の共有リソースを管理するために多数のリソース・マネージャを用いることができる。
本発明に係る共有リソース56への同時アクセスをサポートするために、リソース・マネージャ52は、4つのアトミック・カウンタ62、64、66及び68を含む。カウンタ62は、ここでは要求カウンタと呼ばれ、クライアント54の1つによって生成された次のアクセス要求に割当てられるべき識別子を与えるために用いられる。生成された各要求のために、要求カウンタ62が次の識別子に増分され、識別子は、要求を固有に識別するために、サーバ・プロセスにおけるMY_REQUEST変数70に格納される。種々の実施形態においては、要求カウンタ62は、カウンタの現在値が、最後に受け取られた要求を表すか、又は要求が受け取られたときに次の要求に割当てられることになる値を表すように、事前に又は事後に増分される。
カウンタ64は、ここでは完了カウンタと呼ばれ、完了したアクセス要求の数を追うために用いられる。カウンタ66は、ここでは最後の完了(「LAST_DONE」)カウンタと呼ばれ、完了した最後の(すなわち最新の)アクセス要求の識別子を維持するために用いられる。典型的には、要求が順番どおりではなく完了することが許される、すなわち、後続する要求が先行する要求より先に完了することが許されるとすれば、カウンタ64及び66は両方とも必要とされる。
カウンタ68は、最後のディスパッチ・カウンタと呼ばれ、ディスパッチ・プロセス60によってディスパッチされた共有リソースへの最後の(又は最新の)アクセス要求の識別子を格納するために用いられ、典型的にはディスパッチ・プロセスが最後に通知された最後の完了カウンタ66の値に設定される。カウンタ62、64、66及び68を識別するために用いた特定の名称は、単に便宜的に選定されたのであって、本発明の範囲を制限するものではない。
図示された実施形態においては、各カウンタ62、64、66及び68がゼロに初期化され、カウンタ62及び64が1だけ増分され、その結果、各カウンタは、常に増加する整数で常に更新される。しかしながら、本発明に係る要求を固有に識別するために、他の単調な順番番号又は他の識別子を用いることもできることが分かるであろう。さらに、特定の数の要求が処理された後にカウンタがロール・オーバーすることを可能にするカウンタ・サイズを用いることができるが、実行可能な時間内でカウンタがロール・オーバーすることを可能にしないカウンタ・サイズ(例えば、8バイトカウンタ)を用いることによって、処理が実質的に簡単化されることが見出された。また、システムの始動の間に各カウンタを再び初期化して、実際問題として、コンピュータ・アーキテクチャ50の動作の通常の過程ではカウンタのロール・オーバーが起こらないようにすることが望ましい。
ここで図2に移ると、本発明に係るクライアント要求を処理するのに用いられる例示的なクライアント要求処理ルーチン72が、かなり詳しく示されている。ルーチン72は、各要求に応答してサーバ・プロセス58によって実行され、したがって、多数のクライアントが同時に要求をサブミットするときには、ルーチン72の多数のインスタンスがあらゆる所与の時点で並列に実行される。
ルーチン72は、ブロック74において、カウンタ・ロックを得ることによって、すなわち、カウンタ62−68に関連するロック又はセマフォーを得ることによって始まる。図示された実施形態においては、こうしたセマフォーは、全てのカウンタ62−68に割当てることができ、又は代替的に、こうしたカウンタの各々に別のロックを与えることができ、或いはカウンタのサブセットに所与のロックを割当てることができる。
ロックが多数のカウンタによって共有されるか、又はカウンタの1つ又はサブセットにのみ割当てられるかどうかに関係なく、ブロック74においてロックが得られると、制御がブロック76に移って要求カウンタ62を増分する。次に、ブロック78が、要求に関連付けられることになるMY_REQUEST変数70を要求カウンタ62の現在値に設定する。その後、ブロック80がカウンタ・ロックを解除する。その結果、ブロック74−80が、要求カウンタにおけるアトミック増分動作を有効に実行し、また、要求カウンタの増分後の値に基づいて要求に固有の要求識別子を割当てる。他の実施形態においては、要求カウンタの増分の値を用いることができる。さらに、ロックの下で要求カウンタの有効なコピーが得られる限り、ブロック78のMY_REQUEST変数への値の割当ては、ロックの外部で行われても良い。しかしながら、用いられる方法に関係なく、要求は、複数のクライアントによって発せられた他の要求に対して要求が受け取られる順番に基づいて、固有の識別子有効に割当てられる。
次に、ブロック82が、クライアントに代わって要求を準備し、サブミットすることによって要求の処理を完了する。しかしながら、注目すべきは、ブロック82は、ロック又はセマフォーの下では実行されず、したがって、共有リソースにアクセスする際の対立の結果として現在のプロセス又は別のプロセスを停止させることがある、あらゆる競合の問題を伴わない。要求を準備し、サブミットすることに関連するステップは、典型的には、特定の要求のタイプ及びアクセスされるリソースのタイプに応じて変化することになる。例えば、ブロック82において、入力/出力アダプタへの要求をサブミットする目的のために、直接メモリ・アクセス(DMA)動作を介した伝送のためにネットワーク・フレームを準備するステップといった種々のステップを行うことができる。本発明に係るブロック82においては、要求を準備し、要求をサブミットし、及び/又は、要求の処理を、例えば、メモリ割当て、データのコピー又は伝送、プールされたリソースの取得などといった他の方法で完了することに関連する他の動作を実行することもできる。
次に、ブロック84はまた、カウンタ・ロックが得られるのに必要なだけ待って、カウンタ・ロックを得る。カウンタ・ロックが得られると、制御がブロック86に移って完了カウンタ64を増分し、それにより現在の要求の処理の完了を確立する。
次に、ブロック88で、現在の要求の識別子が最後の完了カウンタ66に格納された値より大きいかどうかを判別する。大きい場合には、現在の要求は、完了した最新の又は最後の要求であることが分かる。したがって、制御がブロック90に移って、最後の完了カウンタ66の値が現在の要求の識別子と同値に設定される。次に、制御がブロック92に移る。さらに、ブロック88に戻り、現在の要求の識別子が最後の完了カウンタ66に格納された値より大きくない場合には、ブロック88は、制御を直接ブロック92に移し、それによりブロック90をバイパスする。
ブロック92は、典型的には、完了カウンタ64に格納された値が最後の完了カウンタ66に格納された値に等しいかどうかを判別することによって、最近完了した要求より前に発せられた他の要求の処理が完了したかどうかを判別する。完了カウンタ64の値がより小さいときには、前の要求の少なくとも1つがまだ完了していないことを示すので、この条件が満たされているときには、最近完了した要求(カウンタ66において識別された)より時間が先行する全ての要求が完了したことがわかる。
ブロック92における条件が満たされた場合には、制御がブロック94に移って、最後のディスパッチ・カウンタ68の値が最後の完了カウンタ66に格納された値と同値に設定され、それは、最後の完了カウンタにおいて識別された要求とそれまでの要求を含む全ての要求が完了したことを示す。次に、制御がブロック96に移って、全ての今のところまだディスパッチされていない要求(典型的には、最後の完了カウンタ66の値と、ブロック94を実行する前の最後のディスパッチ・カウンタ68に格納された前の値との間の要求)をディスパッチするようにディスパッチ・プロセスに通知する。次に、制御がブロック98に移って、ブロック84において得られたカウンタ・ロックを解除し、それによりルーチン72が完了する。本発明に係る他の実施形態においては、ブロック96の後にブロック94が実行されることを認識されたい。
ブロック92に戻り、全ての先行の要求が完了していない場合には、ブロック92が制御をブロック100に移し、典型的には現在の要求の識別子が最後のディスパッチ・カウンタ68に格納された値より大きいかどうかを判別することによって、現在の要求が、ディスパッチ・プロセスによる要求の最後のディスパッチの後に始められた最初の要求であったかどうかを判別する。
そうである場合には、制御がブロック102に移って、カウンタ68の値が現在の要求識別子と同値に設定される。次に、制御がブロック96に移って、ディスパッチ・プロセスに現在の要求をディスパッチするように通知する。そうでなければ、ブロック100に戻り、ブロックにおいて示された条件が満たされない場合には、後で実行される他の作業が要求を最終的にはディスパッチさせるので、このルーチン72のインスタンスを通して実行されるべき更なる作業は要求されない。したがって、ブロック100は、制御を直接ブロック98に移してカウンタ・ロックを解除し、ルーチンを終える。
ブロック100において行われる決定、及び結果としてのブロック102の流れは、幾つかの実施形態においては省略されても良い。上記の機能は、バッチでディスパッチした後に始められた最初の要求の待ち時間を減らすという観点での利点を与える。幾つかの環境においては、最初の要求の待ち時間は大きな懸念とはならず、そのため上記の機能は、こうした実施形態においては省略されても良い。こうした事例においては、ブロック92は、そこで示された条件が満たされてない場合には、制御をブロック98に直接移すことができる。
上記の要求を取り扱う技術は、多数のクライアントによる共有リソースのアクセスを管理する観点で多くの固有の利点を与える。多数のアクセス要求が、要求の生成の観点から同期化又は逐次化を必要とすることなく生成され、保持されることができる。例えば、要求が、制限された数のブロック又はスロットに区画化されたバッファに組み込まれる場合には、クライアントは、こうしたスロットの完全な消費を同期させる必要なしに特定のスロットに同時に割当てられる。さらに、1つの共有リソースに対する多数の要求を、1つずつではなくバッチでディスパッチすることができ、それにより各ディスパッチに関連するオーバーヘッド(例えば、割り込みを介してクライアントに通知することに関連するオーバーヘッド)の多くが排除される。さらに、共有リソースへのアクセスを保護し、管理するのに用いられるロックにおける競合が減少される。ロックは、前述のカウンタの比較的短い更新の間の特定の要求のためにのみかけられ、何らかの同期化機構が得られることを必要とすることなく、そのディスパッチが行われる前の要求の作成及び準備に関連するオーバーヘッドの多くをイネーブルにする。
上述のように、共有リソースへの同時アクセスを管理するための上記の技術は、多様な用途に用いることができる。図3−図5と関連して後で詳しく説明される1つの特定の用途は、図3のコンピュータ10のような論理的に区画化されたコンピュータにおける物理的又は仮想イーサネット(登録商標)・アダプタへのアクセスを管理することである。特に、イーサネット(登録商標)・アダプタ、トークン・リング・アダプタなどのような入力/出力アダプタは、この事例においてはフレーム・バッファのスロットである有限の数のリソースのみを有することが良く知られている。典型的には、多数のクライアントがスロットを使用することを許される。さらに、スロットの消費は、長時間にわたって該スロットを拘束して、その間、他のクライアントが該スロットを使用できなくなることがある。多数のクライアントが、他のクライアントを妨害することなくこうしたスロットを同時に消費できるようにすることにより、コンピュータ・システムにおけるより有効な並列実行が可能になり、それによりシステム性能が向上する。後述するように、コンピュータ10は、本発明に係るこうしたスロットの同時消費をサポートする。
コンピュータ10は、通常は、例えば、ネットワーク・サーバ、中間価格帯のコンピュータ、メインフレーム・コンピュータなど、例えば、IBM eServer(eServerはIBMの商標)コンピュータといったあらゆる数のマルチユーザ・コンピュータを表す。しかしながら、本発明は、他のコンピュータ及びデータ処理システム、例えば、ワークステーション、デスクトップ・コンピュータ、ポータブル・コンピュータなどといった単一ユーザ・コンピュータ、又は他のプログラム可能電子デバイス(例えば、内蔵コントローラなどを組み入れる)において実装されてもよいことを認識されたい。さらに、本発明はまた、論理的に区画化されていないマルチスレッド化コンピュータと組み合わせて用いることもできる。
図3に最も良く示されるように、コンピュータ10は、一般に、バス16を介してメモリ14に結合された1つ又はそれ以上のプロセッサ12を含む。各プロセッサ12は、シングルスレッド化プロセッサとして、又は、複数のハードウェア・スレッド18を組み入れていることが示されたプロセッサ12aのようなマルチスレッド化プロセッサとして実装することができる。大部分は、マルチスレッド化プロセッサ12aにおける各ハードウェア・スレッド18は、コンピュータに常駐するソフトウェアによって、独立プロセッサと同様に処理される。これに関しては、本開示の目的上、シングルスレッド化プロセッサは、シングル・ハードウェア・スレッド、すなわち単一の独立型実行ユニットを組み入れると考えられる。しかしながら、コンピュータにおける多数のタスクの並列性能をさらに支援するために、ソフトウェアベースのマルチスレッド化又はマルチタスク化を、シングルスレッド化プロセッサ及びマルチスレッド化プロセッサの両方と組み合わせて用いることができる。
さらにまた、図3に示されるように、1つ又はそれ以上のプロセッサ12(例えば、プロセッサ12b)は、システムの初期プログラム・ロード(IPL)を管理するために、及びシステム・ハードウェアを監視し、診断し、構成するために特殊ファームウェア・コードを実行するのに用いられるサービス・プロセッサとして実装することができる。一般に、コンピュータ10は、オペレーティング・システム及びコンピュータに常駐するアプリケーションを実行するのに用いられる1つのサービス・プロセッサと多数のシステム・プロセッサを含むが、本発明はこの特定の実装に限定されない。幾つかの実装においては、サービス・プロセッサは、バス16を通す以外の形で、コンピュータにおける種々の他のハードウェア・コンポーネントに結合することができる。
メモリ14は、1つ又はそれ以上のレベルのデータ、命令及び/又は組み合わせキャッシュだけではなく、例えば、DRAMベースの主ストレージといった1つ又はそれ以上のレベルのメモリ・デバイスを含むことができ、特定のキャッシュは、当該技術分野では周知のように個々のプロセッサ又は多数のプロセッサと関連して動作する。さらに、メモリ14は、バス20、例えば1つ又はそれ以上のネットワーク・アダプタ22(コンピュータとネットワーク24をインターフェースするための)、1つ又はそれ以上のストレージ・コントローラ26(コンピュータと1つ又はそれ以上のストレージ・デバイス28をインターフェースするための)、及び1つ又はそれ以上のワークステーション・コントローラ30(複数のワークステーション・アダプタを介して1つ又はそれ以上の端末又はワークステーション32とインターフェースするための)を介して多くのタイプの外部デバイスに結合される。
図3はまた、区画マネージャ又はハイパーバイザー36によって管理される複数の論理区画34を含む、コンピュータ10上の論理的に区画化されたコンピューティング環境を実装するのに用いられる主ソフトウェア・コンポーネント及びリソースをかなり詳細に示す。当該技術分野では公知のあらゆる数の論理区画をサポートすることができ、あらゆる時点でコンピュータに常駐する論理区画の数は、区画がコンピュータに加えられ、又はコンピュータから除去される際に動的に変化することができる。
図示されたIBM eServerベースの実装においては、区画マネージャ36は、2つのプログラム・コードの層からなる。ここではディスパッチ不可能部分38と呼ばれる第1の層は、コンピュータ10のファームウェア又はライセンス内部コード(LIC)内で実装され、それは、ハードウェア・アクセスの詳細から例えばオペレーティング・システムのようなより高次の層を分離しながら、種々のハードウェア・コンポーネントとの低レベルのインターフェースを与えるために用いられる。ファームウェアはまた、サービス・プロセッサ12bのようなサービス・プロセッサと通信することができる。ディスパッチ不可能部分38は、コンピュータ10のための多くの低レベルの区画管理機能、例えば、ページ・テーブル管理などを与える。ディスパッチ不可能部分38はまた、タスクの概念をもたず、主に、ソフトウェアのより高次の層からの機能コールを介してアクセス可能である。
区画マネージャ36におけるプログラム・コードの第2の層は、ここではディスパッチ可能部分40と呼ばれる。再配置オフの状態で実行され、ソフトウェアのより高次の層からの機能コールを介してアクセス可能な、タスクの概念をもたないディスパッチ不可能部分38とは対照的に、ディスパッチ可能部分40は、(あらゆるオペレーティング・システムと同様に)タスクの概念を有し、再配置オンの状態で実行される。ディスパッチ可能部分は、典型的には、それがユーザから隠れていること以外は、区画とほぼ同じような形で実行される。ディスパッチ可能部分は、一般に、区画の作成及び削除、同時I/Oメンテナンス、プロセッサ、メモリ及び他のハードウェア・リソースの種々の区画34への割当てといったより高いレベルの区画管理動作を管理する。
各論理区画34は、典型的には、コンピュータ10における利用可能なリソースの一部に静的に及び/又は動的に割当てられる。例えば、各論理区画は、1つ又はそれ以上のプロセッサ12、及び/又は、1つ又はそれ以上のハードウェア・スレッド18、並びに、利用可能なメモリスペースの一部に割当てられる。論理区画は、プロセッサのような特定のハードウェア・リソースを共有して、所与の1つのプロセッサが、1つより多い論理区画によって用いられるようにすることができる。別のハードウェアにおいては、リソースは、一度に1つだけの論理区画に割当てられることができる。
付加的なリソース、例えば、大容量ストレージ、バックアップ・ストレージ、ユーザ入力、ネットワーク接続、したがってI/Oアダプタは、典型的には、当該技術分野では周知の形で1つ又はそれ以上の論理区画に割当てられる。リソースは、例えば、1つ1つのバスに基づいて、又は1つ1つのリソースに基づいて、といった多くの形で割当てられ、多数の論理区画は、同じバスにおけるリソースを共有する。幾つかのリソースは、一度に多数の論理区画に割当てられることもできる。
各論理区画34は、区画化されていないコンピュータのオペレーティング・システムと同じ形で論理区画の主動作を制御するオペレーティング・システム42を用いる。例えば、各オペレーティング・システム42は、インターナショナル・ビジネス・マシーンズ社から入手可能なOS/400オペレーティング・システムを用いて実装することができる。
各論理区画34は、別々の、すなわち独立したメモリスペースにおいて実行され、それにより各論理区画は、そうした各論理区画において実行される各ユーザ・アプリケーション(ユーザアプ)44の見地から、独立した区画化されていないコンピュータとほぼ同様に働く。したがって、ユーザ・アプリケーションは、典型的には、区画化環境において用いるためのあらゆる特別な構成を必要としない。
別々の仮想コンピュータとしての論理区画34の性質から、論理区画があたかも別の物理マシン上にあるようにして別の論理区画と通信することを可能にする区画間通信をサポートすることが望ましい。したがって、幾つかの実装においては、ディスパッチ不可能部分38において、論理区画34がイーサネット(登録商標)・プロトコルのようなネットワーキング・プロトコルを介して別の論理区画と通信することを可能にする仮想ローカル・エリア・ネットワーク(LAN)46をサポートすることが望ましい。区画間の通信をサポートする別の方法も、本発明に従ってサポートすることができる。
本発明に従って他の論理的に区画化された環境を用いることもできることが認識されるであろう。例えば、あらゆる区画34から分離されたディスパッチ可能部分40を用いるのではなく、ディスパッチ可能部分の機能を、1つ又はそれ以上の論理区画に代替的に組み入れてもよい。
一般に、本発明の実施形態を実装するために実行されたルーチンは、オペレーティング・システム又は特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール又は命令のシーケンス、或いはそのサブセットの一部のいずれとして実装されるかに関係なしに、ここでは「コンピュータ・プログラム・コード」又は単に「プログラム・コード」と呼ばれる。プログラム・コードは典型的に、コンピュータの種々のメモリ及びストレージ・デバイスに種々の時点で常駐する1つ又はそれ以上の命令を含み、それは、コンピュータの1つ又はそれ以上のプロセッサによって読み取られ、実行されたときに、本発明の種々の態様を具体化するステップ又は要素を実行するのに必要なステップをコンピュータに実行させる。さらに、本発明は、満足に機能するコンピュータ及びコンピュータ・システムとの関連で以下に説明されるが、本発明の種々の実施形態は、種々の形態のプログラム製品として配布されることができ、そして、本発明は、実際に配布を行うのに用いられる信号伝達媒体の特定のタイプに関係なく等しく適用されることを当業者であれば認識するであろう。信号伝達媒体の例は、この限りではないが、揮発性及び不揮発性メモリ・デバイス、ディスケットその他のリムーバル・ディスク、ハードディスクドライブ、磁気テープ、光ディスク(例えば、CD−ROM、DVDなど)などのような書き込み可能型媒体、並びに、ディジタル及びアナログ通信リンクのような伝送型媒体を含む。
さらに、以下に説明される種々のプログラム・コードは、本発明の特定の実施形態において実装されるアプリケーション又はソフトウェア・コンポーネントに基づいて識別することができる。しかしながら、つけられたあらゆる特定のプログラム名は、単に便宜のために用いられたのであり、したがって本発明は、そうした名称によって識別され及び/又は示される何らかの特定のアプリケーションにおける使用にのみ限定されるものではないと認識されたい。さらに、コンピュータ・プログラムを、ルーチン、プロシージャ、メソッド、モジュール、オブジェクトなどに構成する無数の典型的な方法、並びに、典型的なコンピュータ内に常駐する種々のソフトウェア層(例えば、オペレーティング・システム、ライブラリ、API、アプリケーション、アプレットなど)の間にプログラム機能を割当てる種々の方法があり、本発明は、ここで説明されたプログラム機能の特定の構成及び割当てに限定されるものではないと認識されたい。
図3に示された例示的な環境は、本発明を制限することを意図されたものではないことを当業者は理解するであろう。実際は、本発明の範囲から逸脱することなく、他の代替的なハードウェア及び/又はソフトウェア環境を用いることができることを当業者は理解するであろう。具体的には、本発明は、論理的に区画化された環境における使用に限定されるものではなく、共有リソースへの同時及び非同期アクセスをサポートする多くの他の環境において用いることができる。
ここで図4に移ると、ここでは仮想入力/出力アダプタにおけるフレーム・バッファである特定のタイプの共有リソースへの同時アクセスを実行することに関連する主ソフトウェア・コンポーネントが示されている。この実施においては、複数のクライアント120は、仮想ローカル・エリア・ネットワーク(VLAN)を介して区画34間の区画間通信をサポートする目的のために、種々の区画34におかれる。図示された実施形態においては、各クライアントは、例えば、区画に常駐するデバイス・ドライバとして実装することができる。
区画マネージャ36内には、複数の仮想入力/出力アダプタ(IOA)122が配置され、それらは、VLAN上での通信のためにクライアント120によってアクセスされることができる。こうした構成の下では、1つの区画のクライアントが別の区画のクライアントにデータを通信する必要があるときにはいつも、データは、非仮想IOAにデータが転送されるのとほぼ同じように、区画マネージャ34において送信側クライアントから送信側クライアントに割当てられた仮想IOA122に転送される。データは、仮想IOAによって従来のネットワーク・パケット(例えば、イーサネット(登録商標)互換パケット)と同様にフォーマットされ、異なる区画34の受信側クライアント120に割当てられる別の仮想IOA122に通信される。このデータ通信は、物理的LANにおいて用いられるような物理的ケーブル上ではなくソフトウェアにおいて行われるが、その他の点では、使用される通信プロトコルは同じである。次に、受信側クライアントに割当てられた仮想IOA122が、受信したデータを、非仮想IOAとほぼ同じようにして受信側クライアントに渡す。したがって、各クライアント120の見地から、データが或るクライアントによって送信され、別のクライアントによって受信される方法は、データが物理的LAN上で通信されるのと同じである。
この方法で仮想LANを実装することによって、あたかも他の区画は異なる物理的コンピュータ上に常駐するかのようにして、或る区画において実行されるアプリケーションが別の区画の別のアプリケーションにデータを通信するので、論理的に独立したコンピュータのような区画の論理構成が維持される。多くの事例においては、これは、論理的に区画化されていないコンピュータ上で実行されて、論理的に区画化されたコンピュータとまさに同じように動作するように構成されたアプリケーションを可能にする。
各仮想IOA122は、1つ又はそれ以上のフレーム・バッファ124と関連し、それらは、非仮想IOAと同様にイーサネット(登録商標)と互換性のあるデータ・フレームを送受信するのに用いられる。各フレーム・バッファ124は、バッファにおける別個のデータエリアを表す複数のスロット126を含む。各スロット126はまた、関連するクライアント120によって用いられるために、区画におけるローカル・バッファ(例えばバッファ128)へのポインタを含む。
図示された実施形態においては、フレーム・バッファ124におけるスロット126は、種々のクライアント120によって順番に用いられることができる共有リソースを表す。多数のクライアント120がスロットを消費することができ、スロットは要求の処理の間にクライアントによって消費されるので、これらのリソースが消費される際にクライアントに通知する必要がある。図示された実施形態においては、例えば、仮想IOAからクライアントに割り込みを発行することによってクライアントに通知される。以下でより明らかとなるように、本発明によれば、これらの試みは、要求ごとにではなくバッチで取り扱って、ディスパッチ・プロセスの効率を改善することができる。
図4に示された実施形態においては、各仮想IOA122は、図1のリソース・マネージャ52と類似したリソース・マネージャとして動作する。したがって、各仮想IOA122は、複数のサーバ・プロセス130、ディスパッチ・プロセス132、要求カウンタ134、完了カウンタ136、最後の完了カウンタ138、及び最後のディスパッチ・カウンタ140を含む。さらに、各サーバ・プロセス130は、関連するサーバ・プロセスによって発せられた各要求を固有に識別するために、MY_REQUEST変数142を格納する。本発明に係るリソース管理は、典型的には、仮想LANからのデータの受信と関連して起こり、結果として、クライアント120は、データが関連する仮想IOAによって受信される際の割り込みを介して通知される。
ここで図5に移ると、図3及び図4の環境のクライアント要求を取り扱うのに特に適したクライアント要求処理ルーチン172が、かなり詳しく示されている。ルーチン172は、多くの要求においてルーチン72と類似しているが、特に、仮想入力/出力アダプタのフレーム・バッファのスロットを消費するためのクライアント要求を取り扱うように構成されている。一般に、各クライアント要求は、フレーム・バッファにおける利用可能なスロットをアトミックに取得し、新しい固有の識別子が、要求カウンタをアトミックに増分することによってこうした要求に割当てられる。フレーム・バッファにおけるスロットの数を法とする要求識別子は、使用されるべき特定のスロットを得るために用いられる。この実装のためには、ここでは使用済みスロットカウンタと呼ばれる付加的なカウンタが、消費されたスロットの総数を維持するために用いられる。このカウンタは、クライアントがリソースを解放するときにはいつも、典型的にはルーチン172以外のルーチンに実装された機能を介して減分される。
ルーチン172は、使用済みスロットの総数が利用可能なスロットの最大数(総スロット定数又は変数によって表される)に等しいかどうかを判別することによって、ブロック174において始まる。等しい場合には、クライアントの要求が不履行となり、ブロック176に示されるようにエラーが戻される。そうでなければ、ブロック174は、制御をブロック178に移して、使用済みスロットの数を増分させる。次に、ブロック180、182、184及び186は、要求カウンタをアトミックに増分し、ルーチン72のブロック74−80と同様にして要求識別子を取得する。
次に、制御はブロック188に移って、フレーム・バッファにおけるスロットの総数を法とする現在の要求識別子をとることによって、現在の要求のための現在のスロット(MY_SLOT)を設定する。次に、ブロック190において、現在のスロットへの要求が準備され、サブミットされ、それにより要求の処理が完了する。したがって、制御がブロック192に移って、カウンタ・ロックが取得され、次いで、ブロック194に移って、ルーチン72のブロック84及び86と同じようにして完了カウンタを増分させる。特に、ブロック196、198、200、202、204、206、208及び210に示されるようなルーチン172における残りの動作は、ルーチン72のブロック88、90、92、94、96、98、100及び102と関連して上記で開示されたのと同一であり、ブロック204における要求のディスパッチは、ディスパッチ・プロセスへの割り込みを介して起こり、通知される必要がある区画における種々のクライアントに付加的な割り込みを生成する。さらに、本発明に係る幾つかの実施形態においては、ルーチン72のブロック100及び102と同様に、ブロック208及び210は、ルーチン172から省略することができる。
上記の実装における本発明の使用の実際的な例として、4つの論理区画が仮想LAN上で互いに結合され、仮想IOAが各論理区画に割当てられ、3つの論理区画が第4の区画に送信される必要があるデータを有するケースを考える。第1の区画が送信されるべき64KBのデータを有し、第2の区画が送信されるべきたったの2KBのデータを有し、第3の区画が送信されるべき64KBのデータを有すると考える。このケースでは、第1、第2及び第3の区画は、それぞれの仮想IOAに要求を発し、そして、これらの仮想IOAが、第4の区画の仮想IOAに送信されるべきデータのフレームをフォーマットするとみなす。さらに、仮想IOAが、番号順に、すなわち第1、第2及び第3の区画からの要求が第4の区画の仮想IOAによって順番に受信されるように、第4の区画の仮想IOAに要求を発する。したがって、ルーチン172を用いて、要求に順番に固有の識別子が割当てられ、第4の区画の仮想IOAのフレーム・バッファのスロットが順番に消費される。
しかしながら、要求に識別子が割当てられると、仮想IOAにおける各サーバ・プロセスは、例えば、そのプロセスによって消費されるスロットによって示されるクライアント・バッファへのそれぞれのフレームのDMAのために、その要求の取り扱いを並列に進める。しかしながら、図示された例においては、第2の区画からのデータ・フレームは第1の区画のデータ・フレームよりかなり小さい(2KBvs.64KB)ので、第1の区画の要求が完了する前に第2の区画の要求が完了することが起こりうる。そうした場合、ルーチン172は、完了カウンタを増分させ、最後の完了カウンタを、第2の区画からの要求の固有の識別子に設定する。しかしながら、ルーチンはまた、ブロック200において、全ての先行の要求が完了したわけではないことに気付き、その結果、第1の区画からの要求が完了するまで第4の区画のクライアントへの通知を据え置くことになり、この時点でバッチでディスパッチが行われて、両方のデータ・フレームの受信が第4の区画に通知されることになる。さらに、第3の区画からの要求がかなり遅れて完了する場合には、別のディスパッチが起こって、第4区画に第3データ・フレームの受信が通知される。
本発明に係る形で複数のクライアントによる共有リソースへの同時アクセスをサポートする汎用コンピュータ・アーキテクチャのブロック図である。 クライアント要求を処理するために図1のコンピュータ・アーキテクチャのサーバ・プロセスによって実行されるクライアント要求処理ルーチンのプログラム・フローを示すフローチャートである。 本発明に係る共有リソースの同時アクセスを実行する論理的に区画化されたコンピュータの基本ハードウェア・コンポーネントのブロック図である。 コンピュータの共有リソースへの同時アクセスを管理することに関係する図3のコンピュータの基本コンポーネントのブロック図である。 図4に関連するサーバ・プロセスによって実行されるクライアント要求処理ルーチンのプログラム・フローを示すフローチャートである。

Claims (13)

  1. コンピュータの共有リソースにアクセスする方法であって、前記共有リソースを使用する複数の要求を非同期的に発することが可能な複数のプロセスのうちの第1のプロセスにおいて、
    (a)前記共有リソースを使用する現在の要求に固有の識別子をアトミックに割当てるステップであって、前記固有の識別子を、前記複数のプロセスによって発せられた他の要求に対し前記現在の要求が受け取られる順番に基づいて前記現在の要求に割当てるステップと、
    (b)前記固有の識別子を用いる前記現在の要求を準備することにより当該現在の要求の処理を完了させるステップと、
    (c)前記現在の要求の処理が完了した後に、完了した要求のカウントをアトミックに増分させるステップと、
    (d)前記現在の要求の処理が完了した後に、最近完了した要求より前に発せられた他の要求の処理が完了したかどうかをアトミックに判別するステップと、
    (e)前記最近完了した要求より前に発せられた他の要求の処理が完了したという判別に応答して、処理が完了したディスパッチされていない要求の各々をディスパッチするステップと、
    を含む方法。
  2. 前記ステップ(b)が、非アトミックに行われる、請求項1に記載の方法。
  3. 前記第1のプロセスにおいて、前記現在の要求の処理が完了した後に、前記現在の要求が前記最近完了した要求であるかどうかをアトミックに判別するステップをさらに含む、請求項1に記載の方法。
  4. 前記第1のプロセスにおいて、前記現在の要求の処理が完了した後に、前記現在の要求が最後のディスパッチ動作の後に発せられた最初の要求であるかどうかをアトミックに判別するステップと、
    前記現在の要求が前記最後のディスパッチ動作の後に発せられた最初の要求であるという判別に応答して前記現在の要求をディスパッチするステップをさらに含む、請求項1に記載の方法。
  5. 前記ステップ(e)が、複数の要求をバッチでディスパッチするステップを含む、請求項1に記載の方法。
  6. 前記ステップ(a)が、要求カウンタを増分させるステップを含み、
    前記ステップ(c)が、完了カウンタを増分させるステップを含み、
    前記方法が、
    前記現在の要求が最近完了した要求であるという判別に応答して、前記現在の要求の処理が完了した後に、前記現在の要求の前記固有の識別子と同値になるように最後の完了カウンタをアトミックに更新するステップをさらに含み、
    前記ステップ(d)が、前記最後の完了カウンタを前記完了カウンタと比較するステップを含み、
    前記ステップ(e)が、前記最後の完了カウンタと同値になるように最後のディスパッチ・カウンタを更新するステップを含む、請求項1に記載の方法。
  7. 前記要求カウンタ、前記完了カウンタ、前記最後の完了カウンタ、及び前記最後のディスパッチ・カウンタの各々が、単調に増加する一連の番号を用いて更新される、請求項6に記載の方法。
  8. 前記最近完了した要求より前に発せられた他の要求の処理がまだ完了されていないという前記ステップ(d)の否定的な判別に応答して、処理が完了したディスパッチされていない要求の各々のディスパッチを据え置くステップをさらに含み、
    前記複数のプロセスのうちの第2のプロセスにおいて、
    前記現在の要求より前に割当てられた固有の識別子を有する、前記現在の要求に対し先行する要求の処理を完了させるステップと、
    前記先行する要求の処理が完了した後に、前記最近完了した要求より前に発せられた他の要求の処理が完了されたことをアトミックに判別するステップと、
    前記最近完了した要求より前に発せられた他の要求の処理が完了されたという判別に応答して、処理が完了したディスパッチされていない要求の各々をディスパッチするステップと、
    を含む、請求項1に記載の方法。
  9. 前記共有リソースが、入力/出力アダプタのフレーム・バッファの少なくとも1つのスロットを含み、
    前記ステップ(b)が、前記スロットを用いてデータを通信するステップを含み、
    前記ステップ(e)が、前記通信されるデータの受信をクライアントに通知するステップを含む、請求項1に記載の方法。
  10. 前記コンピュータが、論理的に区画化されたコンピュータを含み、
    前記入力/出力アダプタが、前記論理的に区画化されたコンピュータの区画間通信のために用いられる仮想ローカル・エリア・ネットワークに結合された仮想入力/出力アダプタである、請求項に記載の方法。
  11. 前記共有リソースが、プロセッサ、ハードウェア・デバイス、入力/出力デバイス、ストレージ・デバイス、アダプタ、コントローラ、データベース、ファイルシステム、サービス、及びこれらのコンポーネントからなる群から選択される、請求項1に記載の方法。
  12. 共有リソースと、
    前記共有リソースを使用する複数の要求を非同期的に発することが可能な複数のプロセスを実行するように構成された少なくとも1つのプロセッサと、
    第1のプロセスにおいて、前記共有リソースを使用する現在の要求に固有の識別子をアトミックに割当てるステップと、前記固有の識別子を用いる前記現在の要求を準備することにより当該現在の要求の処理を完了させるステップと、前記現在の要求の処理が完了した後に、完了した要求のカウントをアトミックに増分させるステップと、前記現在の要求の処理が完了した後に、最近完了した要求より前に発せられた他の要求の処理が完了したかどうかをアトミックに判別するステップと、前記最近完了した要求より前に発せられた他の要求の処理が完了されたという判別に応答して、処理が完了したディスパッチされていない要求の各々をディスパッチするステップとを行うために、前記少なくとも1つのプロセッサ上で実行されるように構成されたプログラム・コードと、
    を含み、前記固有の識別子は、前記複数のプロセスによって発せられた他の要求に対し前記現在の要求が受け取られる順番に基づいて当該現在の要求に割当てられる、装置。
  13. 請求項1ないし請求項11の何れか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
JP2006506127A 2003-04-24 2004-04-15 共有リソースの同時アクセス Expired - Fee Related JP4410795B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/422,193 US7047337B2 (en) 2003-04-24 2003-04-24 Concurrent access of shared resources utilizing tracking of request reception and completion order
PCT/GB2004/001624 WO2004094863A2 (en) 2003-04-24 2004-04-15 Concurrent access of shared resources

Publications (3)

Publication Number Publication Date
JP2006524381A JP2006524381A (ja) 2006-10-26
JP2006524381A5 JP2006524381A5 (ja) 2007-06-07
JP4410795B2 true JP4410795B2 (ja) 2010-02-03

Family

ID=33298830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006506127A Expired - Fee Related JP4410795B2 (ja) 2003-04-24 2004-04-15 共有リソースの同時アクセス

Country Status (8)

Country Link
US (1) US7047337B2 (ja)
EP (1) EP1620801A2 (ja)
JP (1) JP4410795B2 (ja)
KR (1) KR100843548B1 (ja)
CN (1) CN1774699B (ja)
CA (1) CA2522096C (ja)
TW (1) TWI265412B (ja)
WO (1) WO2004094863A2 (ja)

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751667B1 (en) * 2000-10-06 2004-06-15 Hewlett-Packard Development Company, L.P. System for generating unique identifiers in a computer network
AU2003298560A1 (en) 2002-08-23 2004-05-04 Exit-Cube, Inc. Encrypting operating system
US8495131B2 (en) * 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7289992B2 (en) * 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7934020B1 (en) * 2003-09-19 2011-04-26 Vmware, Inc. Managing network data transfers in a virtual computer system
US7594053B2 (en) * 2003-12-12 2009-09-22 Alcatel-Lucent Usa Inc. Adaptive object level locking
US8413155B2 (en) 2004-03-13 2013-04-02 Adaptive Computing Enterprises, Inc. System and method for a self-optimizing reservation in time of compute resources
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US7437355B2 (en) * 2004-06-24 2008-10-14 Sap Ag Method and system for parallel update of database
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US8181182B1 (en) * 2004-11-16 2012-05-15 Oracle America, Inc. Resource allocation brokering in nested containers
FR2881241B1 (fr) * 2005-01-24 2007-05-04 Meiosys Soc Par Actions Simpli Procede d'optimisation de la journalisation et du rejeu d'application multi-taches dans un systeme informatique mono-processeur ou multi-processeurs
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US8219823B2 (en) * 2005-03-04 2012-07-10 Carter Ernst B System for and method of managing access to a system using combinations of user information
WO2006107531A2 (en) 2005-03-16 2006-10-12 Cluster Resources, Inc. Simple integration of an on-demand compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US7908606B2 (en) * 2005-05-20 2011-03-15 Unisys Corporation Usage metering system
US7487271B2 (en) 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
US20070094664A1 (en) * 2005-10-21 2007-04-26 Kimming So Programmable priority for concurrent multi-threaded processors
US20070101339A1 (en) * 2005-10-31 2007-05-03 Shrum Kenneth W System for and method of multi-dimensional resource management
US7693811B2 (en) * 2006-02-28 2010-04-06 International Business Machines Corporation Generating unique identifiers for logical partitions
US7761578B2 (en) * 2006-04-28 2010-07-20 Microsoft Corporation Communicating in a virtual environment
US7971005B2 (en) * 2006-10-05 2011-06-28 Waratek Pty Ltd. Advanced contention detection
US7698540B2 (en) * 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US20080140390A1 (en) * 2006-12-11 2008-06-12 Motorola, Inc. Solution for sharing speech processing resources in a multitasking environment
US7876328B2 (en) * 2007-02-08 2011-01-25 Via Technologies, Inc. Managing multiple contexts in a decentralized graphics processing unit
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US10452820B2 (en) * 2007-06-26 2019-10-22 International Business Machines Corporation Thread-based software license management
US8392529B2 (en) * 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
CN101170778B (zh) * 2007-11-14 2011-03-02 中兴通讯股份有限公司 支持多个连接管理程序访问和控制移动终端设备的系统
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8548215B2 (en) 2007-11-23 2013-10-01 Pme Ip Australia Pty Ltd Automatic image segmentation of a volume by comparing and correlating slice histograms with an anatomic atlas of average histograms
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8319781B2 (en) 2007-11-23 2012-11-27 Pme Ip Australia Pty Ltd Multi-user multi-GPU render server apparatus and methods
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
CN101446909B (zh) * 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统
US8782662B2 (en) * 2007-12-28 2014-07-15 International Business Machines Corporation Adaptive computer sequencing of actions
US8677174B2 (en) * 2007-12-28 2014-03-18 International Business Machines Corporation Management of runtime events in a computer environment using a containment region
US8341014B2 (en) 2007-12-28 2012-12-25 International Business Machines Corporation Recovery segments for computer business applications
US20090171731A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Use of graphs in managing computing environments
US8868441B2 (en) * 2007-12-28 2014-10-21 International Business Machines Corporation Non-disruptively changing a computing environment
US8682705B2 (en) * 2007-12-28 2014-03-25 International Business Machines Corporation Information technology management based on computer dynamically adjusted discrete phases of event correlation
US20090171730A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Non-disruptively changing scope of computer business applications based on detected changes in topology
US8990810B2 (en) * 2007-12-28 2015-03-24 International Business Machines Corporation Projecting an effect, using a pairing construct, of execution of a proposed action on a computing environment
US20090172669A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Use of redundancy groups in runtime computer management of business applications
US8375244B2 (en) * 2007-12-28 2013-02-12 International Business Machines Corporation Managing processing of a computing environment during failures of the environment
US8346931B2 (en) * 2007-12-28 2013-01-01 International Business Machines Corporation Conditional computer runtime control of an information technology environment based on pairing constructs
US8365185B2 (en) * 2007-12-28 2013-01-29 International Business Machines Corporation Preventing execution of processes responsive to changes in the environment
US8447859B2 (en) * 2007-12-28 2013-05-21 International Business Machines Corporation Adaptive business resiliency computer system for information technology environments
US9558459B2 (en) * 2007-12-28 2017-01-31 International Business Machines Corporation Dynamic selection of actions in an information technology environment
US20090171703A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Use of multi-level state assessment in computer business environments
US8428983B2 (en) 2007-12-28 2013-04-23 International Business Machines Corporation Facilitating availability of information technology resources based on pattern system environments
US20090172149A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Real-time information technology environments
US8751283B2 (en) * 2007-12-28 2014-06-10 International Business Machines Corporation Defining and using templates in configuring information technology environments
US20090171708A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Using templates in a computing environment
US20090172674A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Managing the computer collection of information in an information technology environment
US8826077B2 (en) 2007-12-28 2014-09-02 International Business Machines Corporation Defining a computer recovery process that matches the scope of outage including determining a root cause and performing escalated recovery operations
US8763006B2 (en) * 2007-12-28 2014-06-24 International Business Machines Corporation Dynamic generation of processes in computing environments
US8392633B2 (en) * 2008-06-25 2013-03-05 Hewlett-Packard Development Company, L.P. Scheduling requesters of a shared storage resource
US8321869B1 (en) * 2008-08-01 2012-11-27 Marvell International Ltd. Synchronization using agent-based semaphores
CN101350022B (zh) * 2008-08-27 2010-04-14 中国工商银行股份有限公司 基于数据库逻辑锁的变更处理方法
KR20100035394A (ko) * 2008-09-26 2010-04-05 삼성전자주식회사 멀티 프로세싱에서의 메모리 관리장치 및 그 방법
WO2010085256A1 (en) * 2009-01-23 2010-07-29 Hewlett-Packard Development Company, L.P. System and methods for allocating shared storage resources
US9128895B2 (en) * 2009-02-19 2015-09-08 Oracle International Corporation Intelligent flood control management
US8180877B2 (en) * 2009-06-04 2012-05-15 International Business Machines Corporation Logically partitioned system having subpartitions with flexible network connectivity configuration
US8924984B2 (en) * 2009-06-26 2014-12-30 Microsoft Corporation Lock-free barrier with dynamic updating of participant count
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9165086B2 (en) 2010-01-20 2015-10-20 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
KR20110094764A (ko) * 2010-02-17 2011-08-24 삼성전자주식회사 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법
US8352656B2 (en) * 2010-04-08 2013-01-08 Intel Corporation Handling atomic operations for a non-coherent device
US8352658B2 (en) * 2010-05-27 2013-01-08 Microsoft Corporation Fabric based lock manager service
US20120102242A1 (en) * 2010-10-26 2012-04-26 Kaminario Technologies Ltd. Controlling data destaging within a multi-tiered storage system
US8521703B2 (en) * 2010-11-05 2013-08-27 International Business Machines Corporation Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility
US20120124518A1 (en) * 2010-11-16 2012-05-17 Microsoft Corporation Managing Operations via a User Interface
CN102156656B (zh) * 2010-12-31 2014-04-02 华为技术有限公司 虚拟化平台下获取虚拟框槽号的方法和设备
US8677024B2 (en) * 2011-03-31 2014-03-18 International Business Machines Corporation Aggregating shared Ethernet adapters in a virtualized environment
US9088569B2 (en) * 2011-05-12 2015-07-21 International Business Machines Corporation Managing access to a shared resource using client access credentials
US9158597B2 (en) * 2011-07-08 2015-10-13 Microsoft Technology Licensing, Llc Controlling access to shared resource by issuing tickets to plurality of execution units
US9128786B2 (en) * 2011-11-22 2015-09-08 Futurewei Technologies, Inc. System and method for implementing shared locks between kernel and user space for synchronize access without using a system call to the kernel
TWI549056B (zh) * 2011-12-08 2016-09-11 微軟技術授權有限責任公司 以函式庫作業系統達成之應用程式相容性
TW201324360A (zh) * 2011-12-08 2013-06-16 Chunghwa Telecom Co Ltd 交付背景執行包覆模組
CN104025031B (zh) * 2011-12-28 2018-05-08 英特尔公司 减少应用中对共享存储器单元执行的顺序操作的数量
ES2439803B1 (es) * 2012-04-19 2014-10-29 Universitat Politècnica De Catalunya Procedimiento, sistema y pieza de código ejecutable para controlar el uso de recursos de hardware de un sistema informático
US9378023B2 (en) * 2012-06-13 2016-06-28 International Business Machines Corporation Cross-pipe serialization for multi-pipeline processor
EP2904765B1 (en) * 2012-10-04 2019-05-08 Qualcomm Incorporated Method and apparatus using high-efficiency atomic operations
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US10089157B2 (en) * 2014-11-14 2018-10-02 National Instruments Corporation Autonomous management of concurrent servicing of multiple clients by an instrument
US10318292B2 (en) 2014-11-17 2019-06-11 Intel Corporation Hardware instruction set to replace a plurality of atomic operations with a single atomic operation
CN105808210B (zh) * 2014-12-31 2018-07-31 龙芯中科技术有限公司 共享资源的访问方法和装置
WO2016159943A1 (en) * 2015-03-27 2016-10-06 Hewlett Packard Enterprise Development Lp Accessing a shared resource
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
CN106385377B (zh) * 2015-07-29 2020-06-16 腾讯科技(深圳)有限公司 一种信息处理方法和系统
US10198298B2 (en) * 2015-09-16 2019-02-05 Salesforce.Com, Inc. Handling multiple task sequences in a stream processing framework
US10146592B2 (en) 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US10261902B2 (en) 2016-01-04 2019-04-16 Toshiba Memory Corporation Parallel processing of a series of data units for writing
US10437635B2 (en) 2016-02-10 2019-10-08 Salesforce.Com, Inc. Throttling events in entity lifecycle management
US10249017B2 (en) 2016-08-11 2019-04-02 Intel Corporation Apparatus and method for shared resource partitioning through credit management
US10504045B2 (en) * 2016-10-27 2019-12-10 Sap Se Audit schedule determination
CN108021597B (zh) * 2016-10-28 2022-02-08 阿里巴巴集团控股有限公司 一种并行计数器、服务器和一种计数方法
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US10956240B2 (en) * 2018-10-30 2021-03-23 Blackberry Limited Sharing data by a virtual machine
CN110231983B (zh) * 2019-05-13 2022-01-28 北京百度网讯科技有限公司 数据并发处理方法、装置及系统、计算机设备及可读介质
US12086598B2 (en) 2021-08-13 2024-09-10 Red Hat, Inc. Fixed-size pool storage for handling out-of order receipt of data

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774731A (en) * 1995-03-22 1998-06-30 Hitachi, Ltd. Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
US5805900A (en) * 1996-09-26 1998-09-08 International Business Machines Corporation Method and apparatus for serializing resource access requests in a multisystem complex
US5931924A (en) * 1997-04-14 1999-08-03 International Business Machines Corporation Method and system for controlling access to a shared resource that each requestor is concurrently assigned at least two pseudo-random priority weights
US6237019B1 (en) * 1998-03-18 2001-05-22 International Business Machines Corporation Method and apparatus for performing a semaphore operation
US6745274B1 (en) * 2000-04-25 2004-06-01 Hewlett-Packard Development Company, L.P. Apparatus and method for synchronizing multiple accesses to common resources
US6725457B1 (en) * 2000-05-17 2004-04-20 Nvidia Corporation Semaphore enhancement to improve system performance

Also Published As

Publication number Publication date
KR100843548B1 (ko) 2008-07-04
CA2522096A1 (en) 2004-11-04
US7047337B2 (en) 2006-05-16
CN1774699B (zh) 2010-05-26
US20040215858A1 (en) 2004-10-28
CA2522096C (en) 2012-09-18
TW200511006A (en) 2005-03-16
JP2006524381A (ja) 2006-10-26
WO2004094863A2 (en) 2004-11-04
WO2004094863A3 (en) 2005-03-24
TWI265412B (en) 2006-11-01
CN1774699A (zh) 2006-05-17
KR20060004919A (ko) 2006-01-16
EP1620801A2 (en) 2006-02-01

Similar Documents

Publication Publication Date Title
JP4410795B2 (ja) 共有リソースの同時アクセス
US10705879B2 (en) Adjusting guest memory allocation in virtual non-uniform memory architecture (NUMA) nodes of a virtual machine
US10908968B2 (en) Instantiating a virtual machine with a virtual non-uniform memory architecture and determining a highest detected NUMA ratio in a datacenter
US7814065B2 (en) Affinity-based recovery/failover in a cluster environment
US7428485B2 (en) System for yielding to a processor
US5452459A (en) Method and apparatus for allocating server access in a distributed computing environment
US7328438B2 (en) Deallocation of computer data in a multithreaded computer
US7543095B2 (en) Managing input/output interruptions in non-dedicated interruption hardware environments
US20050044301A1 (en) Method and apparatus for providing virtual computing services
JPH1049380A (ja) スペース効率の良いオブジェクト・ロッキング・システム及び方法
US8024726B2 (en) System for correct distribution of hypervisor work
US8141084B2 (en) Managing preemption in a parallel computing system
US9792209B2 (en) Method and apparatus for cache memory data processing
TW201405308A (zh) 用於s列表分配之系統與方法
US7130982B2 (en) Logical memory tags for redirected DMA operations
US9088569B2 (en) Managing access to a shared resource using client access credentials
US20060080514A1 (en) Managing shared memory
JPH11134206A (ja) 分散共有リソース管理方法ならびに並列処理環境提供システム、及び同方法がプログラムされ記録される記録媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070413

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070413

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090521

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091014

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: 20091110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091113

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131120

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees