JP4489958B2 - イベントベースシステムの同時処理 - Google Patents

イベントベースシステムの同時処理 Download PDF

Info

Publication number
JP4489958B2
JP4489958B2 JP2000582885A JP2000582885A JP4489958B2 JP 4489958 B2 JP4489958 B2 JP 4489958B2 JP 2000582885 A JP2000582885 A JP 2000582885A JP 2000582885 A JP2000582885 A JP 2000582885A JP 4489958 B2 JP4489958 B2 JP 4489958B2
Authority
JP
Japan
Prior art keywords
processor
event
software
processing system
task
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
JP2000582885A
Other languages
English (en)
Other versions
JP2002530737A (ja
Inventor
ホルムベルグ、ペル、アンデルス
− オルヤン クリング、ラルス
ヨンソン、ステン、エドヴァルド
ソホニ、ミリンド
テイケカル、ニクヒル
Original Assignee
テレフオンアクチーボラゲット エル エム エリクソン(パブル)
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
Priority claimed from SE9803901A external-priority patent/SE9803901D0/xx
Application filed by テレフオンアクチーボラゲット エル エム エリクソン(パブル) filed Critical テレフオンアクチーボラゲット エル エム エリクソン(パブル)
Publication of JP2002530737A publication Critical patent/JP2002530737A/ja
Application granted granted Critical
Publication of JP4489958B2 publication Critical patent/JP4489958B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
(発明の技術分野)
本発明は、一般にイベントベース処理システム、特に階層化分散処理システムおよびその処理システムにおける処理方法に関するものである。
【0002】
(発明の背景)
演算処理上の観点から、多くのイベントベースのシステムは階層化分散処理システムとして構成される。例えば、現代の電気通信およびデータ通信ネットワークでは一般に、ネットワークからのイベントを処理するためのプロセッサ階層構造が各ネットワークノードに含まれる。一般に、メッセージパッシングによって通信する階層構造のプロセッサにおいて、プロセッサ階層の下位レベルのプロセッサは、比較的単純なサブタスクの低レベル処理を行い、階層の上位レベルのプロセッサは、比較的複雑なタスクの高レベル処理を行う。
【0003】
これらの階層的アーキテクチャは、その本質的な同時性が既にある程度利用されているが、単位時間あたりの処理イベント数が増加するにしたがって、機能の増大にとってプロセッサ階層の上位レベルがボトルネックになる。例えば、プロセッサ階層構造が「木」構造になっていると、階層構造の最上位レベルにおけるプロセッサが最大のボトルネックになる。
【0004】
この問題を軽減するための従来のアプローチは、主としてプロセッサクロック周波数の高速化、高速メモリ、命令パイプライン処理に頼っている。
【0005】
(関連技術)
Uchida他に付与された米国特許No.5,239,539には、複数の呼プロセッサ(call processor)間で負荷を一様に分散することによってATM交換の交換網を制御するためのコントローラが開示されている。発呼順、または呼の各セルに付けられたチャンネル識別子によって、主プロセッサは発呼処理を呼プロセッサに割り当てる。交換状態コントローラは交換網における複数のバッファに関する利用情報を収集し、呼プロセッサは交換状態コントローラの内容に基づいて呼処理を行う。
【0006】
日本国特許要約書JP6276198では、複数のプロセッサユニットを用い、互いに独立したユニットによってパケットの交換処理を行うパケット交換が開示されている。
【0007】
日本国特許要約書JP4100449Aでは、ATMチャンネルをSTMマルチプレクシングすることによってATM交換とシグナリングプロセッサアレイ(SPA)の間でシグナリングセルを分散するATM通信システムが開示されている。ルーティングタグ加算器によってそれぞれの仮想チャンネルに付加されるSPAの番号に基づいたSTMを利用してシグナリングセルを交換することによって、処理負荷の分散が実現される。
【0008】
日本国特許要約書JP5274279では、プロセッサ階層セットの形態を用い、プロセッサ要素グループに並列パイプライン処理をさせる並列処理装置が開示されている。
【0009】
(発明の概要)
本発明の目的は、イベントベースの階層化分散処理システムのスループットを向上させることである。特に、階層化システムでは上位プロセッサノードで形成されるボトルネックの輻輳を緩和することが望ましい。
【0010】
また、本発明の目的は、必ずしも必要ではないが望ましくは上位プロセッサノードとして動作し、システムで認識されたイベントフローコンカレンシに基づいてイベントを効率的に処理することができる処理システムを提供することである。
【0011】
また、本発明の目的は、既存のアプリケーションソフトウェアの再利用を可能にすると共に、イベントフローにおいてコンカレンシを利用することができる処理システムを提供することである。
【0012】
また、本発明の目的は、階層化分散処理システムにおいてイベントを効率的に処理するための方法を提供することである。
【0013】
上記目的およびその他の目的は特許請求の範囲で規定されるように、本発明によって達成される。
【0014】
本発明による一般概念は、階層化分散処理システムの最上位レベル又は最上位レベル群に複数の共有メモリプロセッサを導入し、システムで認識される同時発生イベントフローに基づいて複数プロセッサの利用を最適化することである。
【0015】
本発明の第1の特徴によると、外部のイベントフローは、非交換(non−commuting)カテゴリと呼ばれるイベントの同時発生カテゴリに分割され、これらの非交換カテゴリは同時実行用の複数プロセッサにマッピングされる。一般に、非交換カテゴリはイベントのグループ分けであって、イベントの順序はカテゴリ内に保存する必要があるが、カテゴリ間の順序付けは不要である。例えば、非交換カテゴリは、システムに接続された特定の入力ポート、リージョナル(局地的な)プロセッサまたはハードウェア装置等の所定発生元から現れるイベントで定義することができる。イベントの各非交換カテゴリは、1つ以上のプロセッサからなる所定プロセッサセットに割り当てられ、所定プロセッサセットから発生する内部イベントは、そのプロセッサセットに割り当てられた非交換カテゴリ又はカテゴリ群を保存するために、同じプロセッサセットにフィードバックされる。
【0016】
本発明の第2の特徴によると、複数のプロセッサは多くのプロセッサ段を含むマルチプロセッサパイプラインとして動作し、パイプラインに到達するそれぞれの外部イベントは、パイプラインのそれぞれ異なる段で実行される内部イベントのチェーンとしてスライス単位で処理される。一般に、それぞれのパイプライン段は1つのプロセッサで実行されるが、所定のプロセッサがパイプライン中の1つ以上の段を実行することも可能である。マルチプロセッサパイプラインを実現するときに特に有利な方法は、共有メモリソフトウェアのソフトウェアブロック/クラスのクラスタを各プロセッサに割り当てることであって、その場合、各イベントを特定のブロックの対象として定め、この割り当てに基づいて各プロセッサにイベントが分散される。
【0017】
一般的な処理構造はいわゆるマトリックス処理で得られ、非交換カテゴリは互いに異なるプロセッサセットによって実行され、少なくとも1つのプロセッサセットは、パイプラインにおけるそれぞれ異なるプロセッサ段によってスライス単位で外部イベントを処理するマルチプロセッサパイプラインとして動作するプロセッサアレイで形成される。
【0018】
共有メモリシステムでは、全体のアプリケーションプログラムおよびデータはシステムのすべての共有メモリプロセッサにアクセスすることができる。したがって、グローバルデータをプロセッサで処理するとき、データの整合性を確保する必要がある。
【0019】
本発明によれば、イベントに応答して実行されるソフトウェアタスクで使用されるグローバルデータをロックするか、あるいはオブジェクト指向ソフトウェアデザインの場合にはソフトウェアブロック/オブジェクト全体をロックすることによって、データの整合性を確保することができる。イベント処理に1つ以上のブロックからのリソースを必要とする場合は、タスクが互いにロックし合って、ロックアプローチはデッドロックに陥るかもしれない。そして、デッドロックが検出され、処理の進行を確実にするためにロールバックが行われるか、あるいは、タスクに必要な全ブロックをタスク実行開始前に確保することによってデッドロックは完全に避けられる。
【0020】
データの整合性を確保するもう一つのアプローチは、タスクの並行処理に基づいており、タスク間のアクセス衝突を検出し、衝突が検出された実行タスクをロールバックして再開する。衝突は変数使用マーキング(variable usage markings)に基づいて検出されるか、または読み出しアドレスと書き込みアドレスを比較するアドレス比較に基づいて検出される。
【0021】
個々のデータの代わりに比較的広い領域をマーキングすれば、大まかな衝突チェックが実現できる。
【0022】
本発明の解決策によれば、処理システムのスループットを実質的に向上させ、階層化処理システムにおいて、上位ボトルネックの輻輳が効率的に緩和される。
【0023】
共有メモリマルチプロセッサを使用し、データの整合性を確保するのに適した手段を利用すれば、単一プロセッサシステム用の既存アプリケーションソフトウェアを再利用することができる。多くの場合、階層化処理システムにおける最上位レベルの単一プロセッサノードなどの単一プロセッサシステム用として、既に何百万行ものコードが利用可能である。即納の標準マイクロプロセッサを使用して複数のプロセッサを実装する場合、アプリケーションソフトウェアを自動変換し、更に必要に応じてシステムの仮想計算機/オペレーティングシステムを変更することによって、既存のアプリケーションソフトウェアをすべて再利用して複数プロセッサをサポートすることができる。一方、専用設計の特殊ハードウェアとして複数プロセッサが実装されている場合、アプリケーションソフトウェアを直接そのマルチプロセッサ環境に合わせて移行することができる。いずれにしても、アプリケーションソフトウェアの設計を最初からはじめる場合と比較して、貴重な時間の節約と、プログラミングコストの軽減が可能になる。
【0024】
本発明には以下の特長がある:
・スループットの向上。
・ボトルネックの輻輳緩和。
・既存アプリケーションソフトウェアの再利用可能。特に、オブジェクト指向設計の場合。
【0025】
その他の特長については、以下の発明実施例の記述において明らかになる。
以下に、付図にしたがって、発明に関する上記以外の目的、特徴について記述する。
【0026】
(発明実施例の詳細説明)
付図のそれぞれにおいて、同じ参照符号は、対応する要素または同等の要素を表す。
【0027】
図1は上位レベルプロセッサノードを備えた本発明による階層化分散処理システムの概要図である。階層化分散処理システム1には、システム階層構造の複数レベルにわたって分散された複数プロセッサノードを有する従来の木構造が含まれる。例えば、電気通信用のノードおよびルータに、階層化処理システムを見ることができる。当然、処理システムで処理されるイベント数が増加するにしたがって上位レベルプロセッサノード、特に最上層プロセッサノードがボトルネックになる。
【0028】
本発明によれば、そのようなボトルネックの輻輳を緩和する効果的な方法として、階層構造の最上位レベルで複数の共有メモリプロセッサ11を使用する。図1では、トップノード10に複数のプロセッサが設けられている。複数の共有メモリプロセッサ11は、標準マイクロプロセッサを基にしたマルチプロセッサシステムとして実現することが望ましい。すべてのプロセッサ11が共通のメモリ、いわゆる共有メモリ12を共有する。一般に、上位レベルのプロセッサノード10へ向かう非同期の外部イベントは、最初に入出力ユニット(I/O)13に到達し、そこからマッパあるいはディストリビュータ14に転送される。マッパ14は処理用プロセッサ11にイベントをマッピングまたは分散する。
【0029】
プロセッサノード10への外部イベントフローは、階層化処理システム1で認識されるイベントフローコンカレンシに基づいて、イベントに関する複数の同時カテゴリに分割される。なお、以下の記述において、このカテゴリは非交換カテゴリ(NCC)と呼ばれる。1つ以上のプロセッサ11を含む所定のプロセッサセットに各NCCが割り当てられることをマッパ14で確認することにより、同時処理および複数プロセッサの最適利用が可能になる。マッパ14はプロセッサ11のうちの1つ以上に実装することが可能であり、その場合、そのプロセッサをマッパ専用にすることが望ましい。
【0030】
非交換カテゴリはイベントのグループ分けであって、イベントの順序はカテゴリ内で保存する必要があるが、異なるカテゴリ間で処理イベントの順序付けは不要である。プロトコルで情報フローを管理するようなシステムでは、一定の関連イベントが受け取り順に処理されることが、一般要件として必要がある。システム構成如何に関わらず、これはシステムの不変条件である。適切なNCCを識別して、NCCの同時処理を行うことにより、与えられたシステムプロトコルに課される順序付け要件が確実に満たされると同時に、イベントフローにおける固有のコンカレンシが利用される。
【0031】
外部イベントをイベントチェーンとして「スライス単位」で処理または実行することができれば、複数プロセッサのうち1セット以上をマルチプロセッサパイプラインとして動作させることによって、別の、あるいは追加の同時処理が可能になる。マルチプロセッサパイプラインに到達する各外部イベントはこのようにしてスライス単位で処理され、マルチプロセッサパイプラインのそれぞれ異なるプロセッサ段で実行される。
【0032】
したがって、それぞれ異なるプロセッサセットで各NCCを実行し、少なくとも1つのプロセッサセットをマルチプロセッサパイプラインとして動作させる、いわゆるマトリックス処理によって一般的な処理構造が得られる。なお、図1で示されるプロセッサの論理「マトリックス」には、いくつかの空要素が含まれることがある。図1に示されるプロセッサの論理マトリックスを単一行のプロセッサに減らすと、純粋なNCC処理が得られ、また、このマトリックスを単一列のプロセッサに減らすと、純粋なイベントレベルパイプライン処理が得られる。
【0033】
一般に、イベントベースのシステムでの演算は、外部からの入力イベントでシステムの状態を変化させて出力イベントを生成する状態マシンとしてモデル化される。独立/非結合な(independent/disjoint)状態マシンによってそれぞれの非交換カテゴリ/パイプライン段を処理できるとすれば、様々な状態マシン間でデータの共有はあり得ないだろう。しかし、グローバル状態またはグローバル変数で表されるグローバルリソースが存在するならば、与えられたグローバル状態の計算は一般に、1つのプロセッサだけの「原子的(atomic)」なものでなければならず、それはシステム状態マシンの一部を実行し与えられた1つのグローバル状態に対して一度にアクセスする。NCC/パイプラインベースの実行によって、いわゆるシーケンス依存チェックは不要になる。
【0034】
より深く理解するために、以下の例を考察する。別の通信ノードへの空きチャンネルなどのリソースが、あるグローバル変数セットにしたがって割り当てられると仮定する。この場合、異なるNCCの2つの非同期ジョブに関して、空きチャネルを要求する順序は重要ではなく、最初の要求には、選択基準と合う第1のチャネルが割り当てられ、2番目の要求には、基準と合う次の利用可能なチャネルが割り当てられる。重要な点は、1つのジョブの進行中にチャネルの選択が行われ、他のジョブがそれに干渉しないことである。チャンネル割り当てを決めるグローバル変数に対するアクセスは「原子的(atomic)」でなければならない(しかし、特別な場合にはチャンネルサーチを並列化することが可能である)。
【0035】
もう一つの例は、NCCが異なる2つのジョブに関するもので、カウンタをインクリメントする必要がある。どのジョブが最初にカウンタをインクリメントするかは重要でないが、インクリメントするために一方のジョブがカウンタ変数を操作(現在値を読んで、それに1を加算)している間、他方のジョブによる干渉を禁止する。
【0036】
共有メモリシステムでは、共有メモリ12における全アプリケーションプログラムスペースとデータスペースはすべてのプロセッサからアクセスできる。したがって、プロセッサはすべてのプロセッサまたは少なくとも2つ以上のプロセッサに共通なグローバル変数を操作する必要があるから、データの整合性を確保する必要がある。これは図1の参照符号15で示されるデータ整合手段によって達成される。
【0037】
以下の記述では、本発明の第1の特徴としてのNCC処理、本発明の第2の特徴としてのイベントレベルパイプライン処理、データの整合性を確保するための手順および手段について説明する。
【0038】
NCC処理
図2は発明の第1の特徴によるイベント駆動処理システムの概要図である。処理システムは、複数の共有メモリプロセッサP1〜P4、共有メモリ12、入出力ユニット13、ディストリビュータ14、データ整合手段15、複数の独立した並列のイベントキュー16を有する。
【0039】
入出力ユニット13は外部からの入力イベントを受け取り、出力イベントを送出する。ディストリビュータ14は入力イベントを非交換カテゴリ(NCC)に分割し、各NCCを所定の独立したイベントキュー16に分散する。各イベントキューはそれぞれ対応するプロセッサに接続され、各プロセッサはその関連イベントキューから処理のためのイベントを順々にフェッチ、すなわち取り込む。イベントの優先順位が互いに異なっていれば、プロセッサが優先順位にしたがってイベントを処理するように考慮する必要がある。
【0040】
例えば、上位レベルの主プロセッサノードと、リージョナルプロセッサと呼ばれる複数の下位レベルプロセッサとを含み、各リージョナルプロセッサが交代で複数のハードウェア装置を受持つ階層化処理システムを考察する。このようなシステムでは、ハードウェア装置から発生したイベントと、一群の装置を受持つリージョナルプロセッサから発生したイベントは、所定のプロトコルで定義される順序要件に関わる諸条件を満足する(上位レベルでの処理によって保護されるエラー条件を除いて)。したがって、特定装置/リージョナルプロセッサからのイベントは非交換カテゴリを形成する。非交換カテゴリを保存するために、それぞれの装置/リージョナルプロセッサは、そのイベントを常に同じプロセッサに送る必要がある。
【0041】
例えば電気通信アプリケーションでは、ユーザから受信した数字シーケンス、またはトランク装置に対するISDNのユーザ部分メッセージシーケンスは、受信順に処理する必要があるが、2つの独立したトランク装置に対するメッセージシーケンスは、個々のトランク装置に対する順序が保存される限り、順不同で処理することができる。
【0042】
図2では、所定の発生源S1、例えば特定のハードウェア装置または入力ポートからのイベントは、所定のプロセッサP1にマッピングされ、別の所定の発生源S2、例えば特定のリージョナルプロセッサからのイベントは、別の所定のプロセッサP3にマッピングされる。一般に共有メモリプロセッサ数と比べて発生源の数の方がはるかに多いので、通常は各プロセッサに対して複数の発生源が割り当てられる。典型的な電気通信/データ通信に応用する場合、単一の主プロセッサノードに1024のリージョナルプロセッサが接続される。主ノードにおける複数の共有メモリプロセッサに負荷平衡方式でリージョナルプロセッサをマッピングすることは、それぞれの共有メモリプロセッサがおよそ256のリージョナルプロセッサに対応することを意味する(主ノードに4つのプロセッサが含まれ、各リージョナルプロセッサからそれぞれ同じ負荷が発生すると仮定)。しかし、実際には更に細分化して、シグナリング装置や加入者端末等のハードウェア装置を主ノードプロセッサにマッピングするのが好ましい。このようにすると、一般に負荷平衡を取りやすくなる。電気通信ネットワークにおける各リージョナルプロセッサは何百台ものハードウェア装置を制御する場合がある。したがって、10,000あるいはそれ以上のハードウェア装置を単一のプロセッサにマッピングする(もちろんタイムシェアリングで負荷処理するのであるが)代わりに、本発明による解決策では、主ノードにおける複数の共有メモリプロセッサに各ハードウェア装置をマッピングすることで、主ノードのボトルネックの輻輳を緩和する。
【0043】
外部イベントをプロセッサ対プロセッサ(CP−to−CP)信号すなわちいわゆる内部イベントで接続されるスライス単位で処理するAXE Digital Switching System of Telefonaktiebolaget LM Ericssonなどのシステムでは、プロトコルによる要件の他にそれ自身の順序付け要件が加わる。NCCに関するこのようなCP−to−CP信号は、(実行中の最後のスライスで発生する上位優先信号で置換されない限り)それらの発生順に処理する必要がある。図2でプロセッサとイベントキューを結ぶ破線で示されるように各CP−to−CP信号(内部イベント)がその発生源である同一プロセッサで処理されるならば、この付加的な順序付け要件は満たされる。したがって、内部イベントは、それらを生成した同じプロセッサかプロセッサセットへのフィードバックによって同一NCC内に保持され、その結果、各内部イベントがその生成順に処理されることが保証される。
【0044】
通常、処理システムから見たイベント表現は信号メッセージである。一般に、各信号メッセージには、ヘッダーと信号本体が含まれる。信号本体はソフトウェアタスクの実行に必要な情報を含む。例えば、信号本体は、明示的か否かは別として、共有メモリ内のソフトウェアコード/データを指すポインタと、所要の入力オペランドとを含む。この意味において、イベント信号は自立型であって、対応するタスクを完全に規定する。その結果、プロセッサP1〜P4はそれぞれ独自にイベントの取り込みおよび処理を行って、対応のソフトウェアタスクまたはジョブを並列に実行する。なお、ソフトウェアタスクもジョブと呼ぶことにして、この開示全般にわたって、タスクとジョブは互換性を持った用語として使用する。タスクの並列実行中、プロセッサは、共有メモリのグローバルデータを操作する必要がある。(ジョブのライフタイム中)いくつかのプロセッサが同じグローバルデータにアクセスして操作するデータ不整合(data inconsistencies)を避けるために、データ整合手段15はデータの整合性が常に維持されていることを確認する必要がある。タスクの並行実行中にグローバルデータが複数プロセッサで操作されたときのデータ整合性を保証するために、本発明では2つの基本的な手順を利用する。
【0045】
・ロッキング:各プロセッサは通常、対応するタスクで使用するグローバルデータをタスク実行開始前にロックするための手段を、データ整合手段15の一部として含んでいる。このようにすれば、グローバルデータをロックしたプロセッサだけがそのデータにアクセスすることができる。ロックされたデータはタスク実行完了時に解放されることが望ましい。このアプローチにおいては、あるプロセッサによってグローバルデータがロックされているときに別のプロセッサが同じデータにアクセスしようとした場合、ロックされたデータが解放されるまで、別のプロセッサは待たなければならない。一般に、ロッキングには待ち時間(ロックされたグローバル状態での待ちまたは停止)が伴い、並列処理量をある程度制限する(異なるグローバル状態における同時の並行動作は、もちろん可能)。
【0046】
・衝突検出およびロールバック:ソフトウェアタスクが並列に実行され、アクセス衝突が検出された場合、衝突が検出された1つ以上の実行タスクをロールバックして再開することができる。一般に、衝突検出はマーカー法かアドレス比較法によって行われる。マーカー法の場合、共有メモリでの変数の使用にマーキングするための手段が各プロセッサに含まれ、マーキングに基づいて変数のアクセス衝突が検出される。一般に、衝突検出には、ロールバックによる(無駄な処理の結果として)ペナルティがある。
【0047】
アプローチの選択はアプリケーションによって異なり、ケースバイケースで選択される。簡単な経験則によれば、データベースシステムには、ロッキングに基づくデータ整合が適しており、電気通信、データ通信システムには、衝突検出が適している。いくつかの応用面では、ロッキングと衝突検出の組み合わせが有利であるかもしれない。
【0048】
データ整合性を確保するための手段としてのロッキングと衝突検出については、詳しく後述する。
【0049】
図3は本発明の第1の特徴による処理システムの一実施例を示す。この実施例において、プロセッサP1〜P4は、各プロセッサが個別のローカルキャッシュC1〜C4を備えた対称マルチプロセッサ(SMP)であり、イベントキューは専用メモリリストEQ1〜EQ4(リンクしたリストが望ましい)として共有メモリ12に割り当てられる。
【0050】
前述のように各イベント信号には一般に、ヘッダーと信号本体が含まれる。この場合、ヘッダーには、対応するイベントが属するNCCを表すNCCタグ(明示的が否かは問わない)が含まれる。ディストリビュータ14はイベント信号に含まれるNCCタグに基づいて、入力イベントをイベントキューEQ4〜EQ1の1つへ分配する。例えば、入力ポート、リージョナルプロセッサまたはハードウェア装置など、イベント発生源をNCCタグで表すことができる。入出力ユニット13で受け取ったイベントが特定のハードウェア装置から発生したものであって、これをイベント信号に含まれるタグで表すと仮定する。そうすると、ディストリビュータ14はイベントのタグを評価し、あらかじめ格納されたイベントディスパッチテーブル等に基づいて、共有メモリに割り当てられたイベントキューEQ1〜EQ4のうちの所定キューにイベントを分配する。各プロセッサP1〜P4は、共有メモリ12中の各専用イベントキューからローカルキャッシュを通してイベントを取り込んで、それらイベントを順次処理して、処理を終える。トラフィック発生元における長期の不均衡を調整するために、イベントディスパッチテーブルを時々変更することができる。
【0051】
もちろん、本発明はローカルキャッシュ付きの対称マルチプロセッサに限定するものではない。共有メモリシステムに関する他の例として、キャッシュを含まない共有メモリ、共通キャッシュ付き共有メモリ、混成キャッシュ付き共有メモリがある。
【0052】
オブジェクト指向設計例
図4は共有メモリソフトウェアのオブジェクト指向設計の簡易化共有メモリマルチプロセッサシステムを示す概要図である。共有メモリ12におけるソフトウェアはオブジェクト指向設計であり、1セットのブロックB1〜Bnまたはクラスとして構成される。各ブロック/オブジェクトは一定の機能を実行する役割をもつ。一般に、各ブロック/オブジェクトは2つの主要セクター、すなわち、コードを格納するプログラムセクターと、データを格納するデータセクターに分けられる。あるブロックのプログラムセクターのコードは、そのブロックに属するデータに関してのみ、アクセス、処理することができる。データセクターもまた2つのセクター、すなわち、複数のグローバル変数GV1〜GVnを含む「グローバル」データの第1セクターと、レコードR1〜Rnなどの例えば「プライベートな」データの第2セクターに分割されるのが望ましく、通常は各レコードに、レコードRxで例示される複数のレコード変数RV1〜RVnが含まれる。一般に各トランザクションは、あるブロックの1つのレコードに関連付けられており、ブロック内のグローバルデータを複数トランザクションで共有することができる。
【0053】
通常はブロックへの信号エントリーで、ブロック内のデータ処理が開始する。各プロセッサはイベントを受け取ると、それがイベント外部イベントか内部イベントに関わらず、そのイベント信号で示されるブロックのコードを実行し、そのブロック中のグローバル変数およびレコード変数の処理を行い、それによってソフトウェアタスクを実行する。図4において、ソフトウェアタスクの実行は各プロセッサP1〜P4内の波線によって示される。
【0054】
図4の例では、第1のプロセッサP1はソフトウェアブロックB88のコードを実行する。図には命令120〜123だけしか示されていないが、実際には多くの命令が実行され、ブロック中の1つ以上の変数が各命令によって処理される。例えば、命令120はレコードR1におけるレコード変数RV28を処理し、命令121はレコードR5におけるレコード変数RV59を処理し、命令122はグローバル変数GV43を処理し、命令123はグローバル変数GV67を処理する。それに対応して、プロセッサP2はコードを実行してブロックB1の変数を処理し、プロセッサP3はコードを実行してブロックB8の変数を処理し、プロセッサP4はコードを実行してブロックB99の変数を処理する。
【0055】
ブロック志向のソフトウェアの例として、Telefonaktiebolaget LM EricssonのPLEX(Programming Language for Exchanges)ソフトウェアがあり、これはソフトウェア全体がブロック形式で構成される。Javaアプリケーションは真のオブジェクト指向設計の例である。
【0056】
イベントレベルパイプライン処理
前述のように、いくつかのシステムでは、内部イベント(例えば、CP−to−CPバッファ信号)によって接続された「スライス」単位で外部イベントが処理される。
【0057】
本発明の第2の特徴によると、同時処理は、複数の共有メモリプロセッサからなる少なくとも1セットのプロセッサを、各外部イベントがパイプラインのそれぞれ異なるプロセッサ段で実行されるイベントのチェーンとしてスライス単位で処理されるマルチプロセッサパイプラインとして動作させることによって実行される。ある段から発生するすべての信号が発生順にしたがって次段に送られる限り、発生順信号処理の順序づけ条件は保証されるだろう。この基準から逸脱した場合でも、競走のない実行(racing−free execution)を保証しなければならないだろう。与えられたスライスを実行した結果、2つ以上の信号が発生した場合、それらを発生順に後続プロセッサ段に供給する必要があり、あるいは、これらの信号を2つ以上のプロセッサに分配するときは、競走に伴って計算に支障がないように考慮しなければならない。
【0058】
ここで、本発明の第2の特徴によるマルチプロセッサパイプラインの一実施例を図5A、図5Bにしたがって説明する。
【0059】
図5Aは発明の第2の特徴によるイベント駆動型処理システムの概要図である。この処理システムは図2のものと類似している。しかし、マルチプロセッサパイプライン11の一部であるプロセッサによって生成される内部イベントは、必ずしも同じプロセッサにフィードバックされるわけではなく、プロセッサP1〜P4から引かれた破線で示されるように、いずれかのプロセッサに供給されてイベントキュー16につながるバス上で終端することもある。
【0060】
オブジェクト指向のソフトウェアデザインでは、共有メモリのソフトウェアは図4に関連して上述したようにブロックあるいはクラス状に構成され、対応するプロセッサは外部イベントを受け取ると、ブロック/オブジェクトのコードを実行し、別のブロック/オブジェクトに向けた内部イベント形式の結果を生成する。実行のためこの内部イベントが現れると、指示されたブロック/オブジェクトで実行され、他のブロック/オブジェクトに向けた別の内部イベントが生成される。通常、このチェーンは2〜3の内部イベント発生後に消滅する。例えば電気通信に応用する場合、それぞれの外部イベントが生成する内部イベントは5〜10づつ程度であろう。
【0061】
オブジェクト指向ソフトウェア設計のためのカスタム化マルチプロセッサパイプラインを実現することにより、ソフトウェアブロック/クラスのクラスタをプロセッサに割り当てることができる。図2では、共有メモリ12におけるブロック/クラスのクラスタCL1〜CLnが破線ボックスで図式的に示される。図2においてプロセッサP2とクラスタCL1をつなぐ実線で示されるように、1つのクラスタCL1はプロセッサP2に割り当てられ、また、プロセッサP4とクラスタCL2をつなぐ破線で示されるように、もう一つのクラスタCL2はプロセッサP4に割り当てられる。このように、共有メモリ12内のブロック/クラスの各クラスタは、プロセッサP1〜P4の所定の1つに割り当てられ、割当スキームはディストリビュータ14内のルックアップデーブル17と共有メモリ12内のルックアップデーブル18で実行される。各ルックアップデーブル17、18は、例えばイベントIDに基づいて目標ブロックを各イベントにリンクさせ、それぞれの目標ブロックをブロックの所定クラスタに関連づける。ディストリビュータ14はルックアップデーブル17における情報にしたがって外部イベントを各プロセッサに分散する。共有メモリ12のルックアップデーブル18は、プロセッサへの内部イベントの分散を可能にするために、すべてのプロセッサP1〜P4で使用することができる。言い換えれば、プロセッサは、内部イベントを生成したとき、ルックアップデーブル18を参照して、i)対応する目標ブロックを、例えばイベントIDに基づいて確認し、ii)確認された目標ブロックが属するクラスタを確認し、iii)確認されたクラスタが割り当てられるプロセッサを確認して、内部イベント信号を適切なイベントキューに送出する。ここで重要なことは、一般的には各ブロックがそれぞれ唯一のクラスタに属しているが、クラスタが重複する割当スキームでも、イベントIDの他に実行状態などの情報を用いた若干複雑な方法によって実行可能である。
【0062】
図5Bに示されるように、プロセッサにブロック/クラスのクラスタをマッピングすると、自動的にパイプライン処理が実行される。すなわち、外部イベントEEは、プロセッサP1に割り当てられているブロックAに導かれ、このブロックで生成される内部イベントIEは、プロセッサP2に割り当てられているブロックBに導かれ、このブロックで生成される内部イベントIEは、プロセッサP4に割り当てられているブロックCに導かれ、このブロックで生成される内部イベントIEは、プロセッサP1に割り当てられているブロックDに導かれる。したがって、論理的には、多くのプロセッサ段を含むパイプラインを有することになる。ここで、ブロックA、Dは、プロセッサP1にマッピングされるクラスタの一部であると仮定し、ブロックBはプロセッサP2にマッピングされるクラスタの一部であり、ブロックCはプロセッサP4にマッピングされるクラスタの一部である。パイプラインの各段は1つのプロセッサで実行されるが、特定のプロセッサでパイプライン中の1つ以上の段を実行することが可能である。
【0063】
一つの変形として、共有メモリ12の所定データ領域からの入力データを必要とするイベントを同一の所定プロセッサセットにマッピングすることもできる。
【0064】
マルチプロセッサパイプラインにおける1つのプロセッサ段が第1のイベントチェーンに属するイベントを実行して、その結果として発生した内部イベント信号を次のプロセッサ段に送ると、通常は次のイベントチェーンからのイベントの処理が自由に開始されるので、スループットが向上する。
【0065】
利得を最大にするためには、すべてのプロセッサの負荷が等しくなるように、プロセッサへのパイプライン段のマッピングをする必要がある。したがって、ブロック/クラスのクラスタのパーティションは「等負荷」基準にしたがって仕切られる。各クラスタに費やされる時間は、例えば単一プロセッサで走る同様のアプリケーションから判断することが可能であり、また、ランタイム中に監視してパーティションの再調整をすることもできる。1つの入力イベントに応答してブロックから2つ以上の内部イベントが発生し、それぞれのイベントが別々のブロックに送られる場合、後から発生した内部イベントが先に実行されることを防止する、「等負荷」基準付きの「非競走(no racing)」基準が必要である。
【0066】
もちろん、外部イベントをスライスに分割せずに、そのまま処理してもよいが、分割することにより、構造化されたプログラム開発/メンテナンスが可能になり、更に、パイプライン処理も可能になる。
【0067】
また、1つの外部イベントを2〜3の大スライスまたは多数の小スライスに分割してもでも、同じ処理を行うことができる。
【0068】
以上のように、並行タスク実行中にプロセッサでグローバルデータを操作するときの整合性を確保するためには、i)ロッキングと、ii)衝突検出およびロールバックの2つの基本的な手順がある。
【0069】
データ整合性を確保する手段としてのロッキング
データ整合性を確保する目的でロッキングを実行すると、一般にタスクを実行する際に、各プロセッサは、タスクが使用するグローバルデータをタスクの実行開始前にロックする。このようにして、グローバルデータをロックしたプロセッサだけが、そのデータにアクセスすることができる。
【0070】
データ領域を明確に画定して、ブロックの特定のデータセクターまたはブロック全体をロックすることができるので、ロッキングはオブジェクト指向デザインに非常に適している。通常、ブロック内のグローバルデータのどの部分が特定の実行シーケンスまたはタスクによって変更されるかを知ることは不可能であり、グローバルデータの一般的な特徴づけができないため、データ整合性を確保する上で、グローバルデータセクター全体をロックするのが安全な方法である。理想的な場合は、各ブロックのグローバルデータを保護するだけで十分であるが、多くのアプリケーションでは、保護を必要とする「アクロスレコード」と呼ばれる動作がある。例えば、空レコードを選択する動作では、実際に空レコードを見つけるまでに多くのレコードを探すことになろう。したがって、ブロック全体をロックすると、すべてが保護される。また、バッファード信号の実行が、ループする(EXITまでに1ブロック当たり2回以上巡る)可能性があるいわゆるダイレクト/結合信号(あるブロックから別のブロックへダイレクトにジャンプする)によって接続される複数ブロックにまたがるようなアプリケーションでは、ロックされたブロックをタスク実行終了時まで解放できない。
【0071】
一般に、NCCを使用すると複数のプロセッサ間の「共有状態」が最小限になって、キャッシュヒット率が向上する。特に、例えば電気通信システムにおけるシグナリング装置や加入者端末などの機能的に異なるリージョナルプロセッサ/ハードウェア装置を主要ノードにおけるそれぞれ異なるプロセッサにマッピングすると、後方の実行段に処理が達するまで、異なるアクセスメカニズムは通常異なるブロックで処理されるため、ロックされたブロック上でノーウエイトまたはほとんどノーウエイトで異なるアクセスメカニズムの同時処理が可能になる。
【0072】
図6は、データ整合性を保証するために行うブロック/オブジェクトのロッキングを示す。3つの異なる外部イベントEEx、EEy、EEzがブロックB1、B2、B1にそれぞれ送られる場合を考察する。外部イベントEExはブロックB1に入り、ブロックB1の対角線で示されるように、対応するプロセッサがブロックにおける実行開始前にブロックB1をロックする。次に、外部イベントEEyはブロックB2に入り、対応するプロセッサがブロックB2をロックする。図6の時間軸(t)で示されるように、既にブロックB1に入って、そのブロックをロックしている外部イベントEExに続いて、ブロックB1に向かう外部イベントEEzが到達する。したがって、外部イベントEEzの処理は、ブロックB1が解放されるまで待たなければならない。
【0073】
しかし、ロッキングによって、2つのプロセッサが、現タスクの実行で互いに必要とする変数が解放されるのを無限に待ち続けるデッドロック状態が生じ得る。したがって、デッドロックを避けるか、あるいはデッドロックを検出し、処理の進行を保証するロールバックを行うのが望ましい。
【0074】
実行中に必要に応じてブロックを確保またはロックする代わりに、ジョブの始めにタスク(すなわちジョブ)全体の実行に必要な全ブロックを確保することによってデッドロックを回避することができる。あるジョブに必要な全ブロックを常に予測することは不可能であるがコンパイラ分析を使用する非ランタイム入力の場合、例えばジョブ中の処理時間の多くの部分を消費するブロックを少なくとも確保することによってデッドロックを最小にするための情報が得られるかもしれない。デッドロックを最小にする効率的な方法は、その処理で次に必要になるブロックであるか否かにかかわらず、使用頻度の高いブロックを実行開始前に確保することである。最も安全な考え方は、ほとんど間違いなくジョブに必要なブロック、特に、使用頻度の高いブロックを確保し、そして残りのブロックを必要な時点で確保することである。
【0075】
実行中に必要に応じてブロックを確保しようとすると、前述のようにデッドロックになり易いので、デッドロックを検出して、分析する必要がある。デッドロックは、できるだけ早く検出するのが望ましく、本発明によれば、ほとんど即座にデッドロックを検出することができる。すべての「オーバーヘッド処理」は2つのジョブ間で行われるので、デッドロックを起こしそうな後のジョブにリソースが取られると、デッドロックの検出が明らかになる。これは、他のプロセッサが対象のジョブに必要なリソースの1つを保持しているかどうかチェックし、そのプロセッサが対象のジョブのプロセッサに保持されたリソースを待っているかどうかを、例えばブロックごとのフラグを使用して確認することによって達成される。
【0076】
デッドロックを最小にすると、通常、ロールバックスキームと進行スキームに影響を与える。デッドロックの頻度が下がるにしたがって、まれにしか起こらないロールバックの効率を気にする必要がなくなるので、ロールバックスキームは単純になる。逆に、デッドロックの頻度が比較的高いと、効率的なロールバックスキームが重要になる。
【0077】
ロールバックの基本原理は、保持されたリソースをすべて解放し、デッドロックの原因にかかわるジョブの1つの開始点に戻り、その時点までの実行中に行われたすべての変更を元に戻し、そして、効率を損なわずに処理の進行が保証されるような方法、あるいはそのような遅延時間を経て、ロールバックされたジョブを再実行することである。この原理は一般に、ロールバックスキームがただちにジョブを再実行することによって同じジョブのロールバックが原因のデッドロックの繰返しを許さないと同時に、また、ロールバックジョブの開始までの遅延時間をあまり長くしないことを意味する。しかし、ジョブの実行時間が非常に短い場合は、単にロールバックの対象としてデッドロックの原因となった「後の(later)」ジョブを選択するのが適切であろう。
【0078】
データ整合性を確保する手段としての衝突検出
データ整合性を確保する目的で衝突検出を実施すると、複数のプロセッサによってソフトウェアタスクが並列に実行されてアクセス衝突が検出され、そして衝突が検出された1つ以上の実行タスクをロールバックして再実行することができる。
【0079】
タスク実行中に各プロセッサが共有メモリにおける変数の使用をマークして、変数アクセス衝突の検出を可能にすることが望ましい。ごく基本的なレベルでは、マーカー法は共有メモリにおける個々の変数の使用をマークする過程を含む。しかし、個々のデータの代わりに比較的広い領域をマークすることによって、やや大まかな衝突チェックが実現できる。大まかな衝突チェックを実施する一つの方法は、ページングを含む標準メモリ管理テクニックの利用である。もう一つは、変数の組分けをマークする方法であって、個々のレコード変数をマークする代わりに、レコード内のすべてのレコード変数を含む全レコードをマークする場合に、特に効率的である。しかし、与えられたデータ領域をジョブが使用するときに、他のジョブが同じ領域を使用する確率が非常に低くなるような「データ領域」を選択することが重要である。さもなければ、大まかなデータ領域マーキングが、実際にはロールバックの頻度を増すことになるかもしれない。
【0080】
図7は、オブジェクト指向ソフトウェア設計におけるアクセス衝突を検出する際の変数マーキングの使用を示す。図4との関連で上述したように、共有メモリ12は複数ブロックB1〜Bnで構成され、複数のプロセッサP1〜P3が共有メモリ12に接続される。図7では、ブロックB2およびブロックB4の2ブロックについて詳細が示されている。この特定のマーカー法では、ブロック内の各グローバル変数GV1〜GVnおよび各レコードR1〜Rnは、図7に示されるマーカーフィールドに関連付けられる。
【0081】
マーカーフィールドは共有メモリシステムに接続されたプロセッサごとに1ビットを含むから、この場合、各マーカーフィールドは3ビットを含む。最初に全ビットがリセットされ、各プロセッサは変数かレコードにアクセス(読み書き)する前に自己のビットをセットし、次に、マーカーフィールド全体を読んで評価する。マーカーフィールド内で他のビットがセットされていれば、衝突の可能性が差し迫っているので、プロセッサロールは実行中のタスクをロールバックして、対応する全マーカービットをリセットすることを含めて、現実行点までに施されたすべての変更を元に戻す。一方、他に設定されたビットがなければ、プロセッサはタスクの実行を続ける。各プロセッサは実行中にアクセスした各変数のアドレスを記録し、タスク実行終了時には、記録されたアドレスを使用してそれぞれの対応マーカーフィールド中の自己ビットをリセットする。
【0082】
衝突検出時にロールバックできるようにしておくためには、修正された全変数および各ジョブ実行中の全アドレスのコピー(変更前の変数状態)を保存する必要がある。それによって、ロールバック時に原状回復が可能になる。
【0083】
図7において、プロセッサP2はグローバル変数GV1にアクセスする必要があり、GV1に関連するマーカーフィールドの第2位置における自己のビットをセットして、マーカーフィールド全体を読む。この場合、プロセッサP2がセットしたビットと、プロセッサP1がセットしたビットがフィールド(110)に含まれることから、変数アクセス衝突が差し迫っていることが検出される。プロセッサP2は実行中のタスクをロールバックする。そして、レコードR2にアクセスする必要があれば、プロセッサP2は第2位置における自己ビットをセットして、次に、マーカーフィールド全体を読む。P2がセットしたビットと、P3がセットしたビットがフィールド(011)に含まれることから、レコードアクセス衝突が検出され、プロセッサP2は実行中のタスクをロールバックする。レコードR1にアクセスする必要があると、プロセッサP3はまず、関連マーカーフィールドの第3位置における自己ビットをセットし、そのフィールド全体を読んで評価する。この場合、他にセットされたビットがないので、プロセッサP3はレコードにアクセスして読み書きすることができる。例えば、ほとんど読み込んだ変数に関する不要なロールバックを減らすために、それぞれのマーカーフィールドには、各プロセッサあたり2ビットづつ、すなわち読出しと書き込みに1ビットづつ含まれることが望ましい。
【0084】
もう一つの衝突検出アプローチはアドレス比較法と呼ばれ、タスク終了時に読出しと書き込みアドレスが比較される。マーカー法との主な違いは、他のプロセッサによるアクセスを通常はタスク実行中にチェックせず、タスク終了時にだけチェックすることである。アドレス比較法を実施する特定タイプのチェックユニットに関する一例が国際特許出願WO88/02513で開示されている。
【0085】
既存アプリケーションソフトウェアの再利用
通常、既存のシーケンシャリープログラムド(sequentially programmed)アプリケーションソフトウェアには、かなりな金額が投資されており、階層化処理システムの最上位レベルにおける単一プロセッサノードなどの単一プロセッサシステム用として、何千行、何百万行ものソフトウェアコードが既に存在している。アプリケーションソフトウェアが複数のプロセッサ上で実行されるとき、再コンパイル等によって自動的にアプリケーションソフトウェアを変換してデータ整合性を確保すれば、すべてのソフトウェアコードはマルチプロセッサ環境に移行され、再利用されるので、時間と費用の節約になる。
【0086】
図8Aは層状の観点からみた従来技術による単一プロセッサシステムを示す。下部層は、標準マイクロプロセッサ等のプロセッサP1である。次の層にはオペレーティングシステムが含まれ、続いて仮想計算機があり、この仮想計算機で最上層のアプリケーションソフトウェアが翻訳される。
【0087】
図8Bは層状の観点からみたマルチプロセッサシステムを示す。下部層は、即納で入手可能な複数の共有メモリプロセッサとして実現されるマイクロプロセッサP1、P2である。次の層はオペレーティングシステムである。仮想計算機は例えばSUNのワークステーション上で走るAPZエミュレータや、SIMAX等のコンパイル型式の高性能エミュレータなど、周知のJava仮想計算機であって、マルチプロセッササポートおよびデータ整合性関連サポートに適するように変更される。一般に、シーケンシャリープログラムド(sequentially programmed)アプリケーションソフトウェアは、オブジェクトコードのポスト処理により、あるいは、コンパイルされるものであれば再コンパイルにより、また、翻訳されるものであればインタプリタを変更することにより、データ整合性関連サポートに適するコードを追加するだけで変換される。
【0088】
変数マーキングに基づく衝突検出の場合、以下の方法で、単一プロセッサシステム用アプリケーションソフトウェアをマルチプロセッサ環境に移行することができる。適切なロールバックを可能にするため、変数への各書き込みアクセス前に変数のアドレスおよび原状態を格納するためのコードがアプリケーションソフトウェアに挿入される。変数への各読み出しおよび書き込みアクセス前に、マーカーフィールドのマーカービットをセットし、マーカーフィールドをチェックし、変数のアドレスを格納するためのコードがソフトウェアに挿入される。続いて、アプリケーションソフトウェアの再コンパイルまたは再翻訳、あるいはオブジェクトコードのポスト処理が行われる。衝突検出関連サポートに適応するためにハードウェア/オペレーティングシステム/仮想計算機が修正され、ロールバックが実行され、マーカーフィールドがリセットされる。したがって、マーカーフィールドをチェックするためのコードを実行するときに衝突が検出されると、通常はハードウェア/オペレーティングシステム/仮想計算機に制御が移り、格納されている修正変数のコピーを使用してロールバックが行われる。通常はジョブの終わりに、ハードウェア/オペレーティングシステム/仮想計算機は、ジョブでアクセスした変数の格納されたアドレスによって示される各マーカーフィールド中の関連ビットを引き継いで、リセットする。
【0089】
コードの静的分析を行うことにより、新しいコードの挿入を最小限にとどめることができる。例えば、前述のように各読み書きの前に必ずコードを挿入するのではなく、最終目的が達せられる程度に回数を減らしてコードを挿入することができる。
【0090】
しかし、専用設計の特殊ハードウェアとして複数のプロセッサが使用される場合は、アプリケーションソフトウェアがマルチプロセッサ環境に直接移行すると理解するべきである。
【0091】
図9は、本発明による1つ以上の処理システムを実施した通信システムの概略図である。通信システム100はPSTN(Public Switched Telephone Network)、PLMN(Public Land Mobile Network)、ISDN(Integrated Services Digital Network)およびATM(Asynchronous Transfer Mode)ネットワークなど、様々なベアラサービスネットワークをサポートすることができる。通信システム100は基本的に、トランクグループに通常分類される物理リンクによって相互接続される複数の交換/ルーティングノード50−1〜50−6を含む。交換ノード50−1〜50−4にはアクセスポイントがあって、そこに電話51−1〜51−4とコンピュータ52−1〜52−4等のアクセス端末がローカル交換機(図示せず)を通して接続される。交換ノード50−5は移動体交換センター(MSC)53に接続される。MSC53は2台の基地局コントローラ54−1、54−2(BSC)、およびホームロケーションレジスタ(HLR)ノード55に接続される。第1のBSC54−1は、1個以上の移動体ユニット57−1、57−2と通信する複数の基地局56−1、56−2に接続される。同様に、第2のBSC54−2は、1個以上の移動体ユニット57−3と通信する複数の基地局56−3、56−4に接続される。交換ノード50−6はデータベースシステム(DBS)を備えたホストコンピュータ58に接続される。システム100に接続されたユーザ端末、例えばコンピュータ52−1、52−4は、ホストコンピュータ58のデータベースシステムにデータベースサービスを要求することができる。サーバ59、特にJavaサーバは交換/ルーティングノード50−4に接続される。また、ビジネスネットワーク(図示せず)などのプライベートネットワークも、図1の通信システムに接続することが可能である。
【0092】
通信システム100は、ネットワークに接続されたユーザに対して様々なサービスを提供する。それらサービスの例として、PSTN、PLMNによる通常の通話、メッセージサービス、LAN接続、インテリジェントネットワーク(IN)サービス、ISDNサービス、CTI(Computer Telephony Integration)サービス、テレビ会議システム、ファイル転送、いわゆるインターネットへのアクセス、ポケットベルサービス、ビデオ・オン・デマンドなどがある。
【0093】
本発明によると、システム100における各交換ノード50に、発明の第1または第2の特徴による(あるいは行列処理システム形式で2つの特徴を組み合わせた)処理システム1−1〜1−6を設け、その処理システムによってサービス要求やノード間通信などのイベントを取り扱うことが望ましい。例えば、呼セットアップでは、ジョブシーケンスを実行するために処理システムを必要とする。このジョブシーケンスにより、プロセッサレベルでの呼セットアップサービスが定義される。また、本発明による処理システムは、MSC53、BSC54−1、54−2、HLRノード55、通信システム100のホストコンピュータ58およびサーバ59を、各1つ用いて構成することが望ましくい。
【0094】
本発明は階層化処理システムの上位レベルプロセッサノードで使用することが好ましいが、当業者には明らかな通り、イベントフローコンカレンシの確認が可能であれば、あらゆるイベント駆動型処理に発明の上記特徴を適用することができる。
【0095】
イベントベースシステムの定義として、必ずしも限定しないが、電気通信、データ通信、トランザクション志向のシステムを包含する。
【0096】
共有メモリプロセッサの定義としては、市場で簡単に入手できる標準マイクロプロセッサに限定するものではなく、SMPや特化ハードウェアなど、すべての処理ユニットからアクセス可能なアプリケーションソフトウェアおよびデータで共通メモリに対して動作する各種タイプの処理ユニットを包含する。また、これは共有メモリがいくつかのメモリユニットにわたって分散されたシステム、あるいは、異なるプロセッサに対する分散共有メモリの異なる部分へのアクセスタイムが異なるかもしれない非対称アクセスのシステムも包含する。
【0097】
上述の実施例は単なる例として挙げたものであって、それらは本発明を限定するものではない。上記以外にも、ここに開示され、請求される基本原理を保有する修正、変更、改良を発明の範囲と主旨にしたがって実施することができる。
【図面の簡単な説明】
【図1】 上位レベルのプロセッサノードを備えた本発明による階層化分散処理システムの概要図。
【図2】 本発明の第1の特徴による処理システムの概要図。
【図3】 本発明の第1の特徴による処理システムの特定実施例。
【図4】 共有メモリソフトウェアのオブジェクト指向設計による簡易化共有メモリマルチプロセッサの概要図。
【図5A】 本発明の第2の特徴による特に好ましい処理システムの概要図。
【図5B】 本発明の第2の特徴によるマルチプロセッサパイプライン。
【図6】 データの整合性を確保するためのブロック/オブジェクトロッキングの使用例。
【図7】 アクセス衝突検出のための変数マーキングの使用例。
【図8A】 階層的に見た従来技術によるシングルプロセッサシステム例。
【図8B】 階層的に見たマルチプロセッサシステム例。
【図9】 本発明による少なくとも1つの処理システムを実装した通信システムの概要図。

Claims (30)

  1. システム階層構造の複数レベルにわたって分散する複数プロセッサノードを有するイベントベースの階層化分散処理システム(1)であって、階層化処理システム(1)のうち少なくとも1つの上位レベルプロセッサノード(10)は、
    複数の共有メモリプロセッサ(11)を有し、かつ
    外部のイベントをプロセッサにマッピングするための手段(14)を有し、ここで、このマッピングするための手段(14)によって、プロセッサノードに到達する外部イベントフローが複数の非交換(non−commuting)イベントカテゴリに分割され、分割された非交換イベントカテゴリの各々が所定セットの共有メモリプロセッサに割当てられて、そのセットのプロセッサによって処理され、非交換イベントカテゴリが同時に処理できるようになっており、
    その際、その非交換イベントカテゴリは、イベントの順序がカテゴリ内では保持されるべきであるが、異なるカテゴリのイベント処理に関しては順序付けは要求されないという点で、イベントがグループ分けされたものであり、更に
    共有メモリ(12)のグローバルデータがプロセッサによって操作されるときにデータ整合性を確保するための手段(15)とを有する前記階層化分散処理システム。
  2. 各プロセッサセットを単一プロセッサ形式で構成した請求項1記載の階層化分散処理システム。
  3. 少なくとも1セットのプロセッサを、複数プロセッサ段をもつマルチプロセッサパイプラインとして動作するプロセッサアレイ形式で構成し、プロセッサセットに割り当てられる非交換カテゴリの各イベントを、パイプライン内のそれぞれ異なるプロセッサ段で実行されるイベントチェーンとしてスライス単位で処理する請求項1記載の階層化分散処理システム。
  4. 共有メモリ(12)の所定データ領域からの入力データを必要とするイベントがマッピング手段(14、18)によって全く同じ所定プロセッサセットにマッピングされる請求項3記載の階層化分散処理システム。
  5. 上位レベルプロセッサノードがさらに、プロセッサセットで生成されたイベントを同じプロセッサセットに供給するための手段を含む請求項1記載の階層化分散処理システム。
  6. 所定の発生源(S1/S2)からのイベントによって非交換カテゴリが画定される請求項1記載の階層化分散処理システム。
  7. 発生源(S1/S2)が入力ポート、下位レベルのプロセッサノード、または階層化分散処理システムに接続されたハードウェア装置である請求項6記載の階層化分散処理システム。
  8. イベントに応答して実行されるソフトウェアタスクに使用されるグローバル変数を共有メモリ内でロックするための手段と、ロックされたグローバル変数をタスク実行終了時に解放するための手段とが、データ整合手段(15)に含まれる請求項1記載の階層化分散処理システム。
  9. さらに、2つの相互にロックするタスクの一方のロックされたグローバル変数を解放して適切な遅延時間後にそのタスクを再実行するための手段がデータ整合手段(15)に含まれる請求項8記載の階層化分散処理システム。
  10. 共有メモリ(12)内のソフトウェアに複数のソフトウェアブロック(B1〜Bn)が含まれ、イベントに応答してプロセッサの各々がソフトウェアブロックを含むソフトウェアタスクを実行し、タスク実行開始前にソフトウェアブロックの少なくともグローバルデータをロックするためにデータ整合手段(15)の一部を形成する手段が各プロセッサに含まれ、ブロックをロックしているプロセッサだけがそのブロック中のグローバルデータにアクセスすることができる請求項1記載の階層化分散処理システム。
  11. ロッキング手段が対応するタスクの実行開始前にソフトウェアブロック全体をロックし、ロックされたブロックをタスク実行終了時に解放する請求項10記載の階層化分散処理システム。
  12. デッドロック状態を最小にするためにタスク実行開始前に、ロッキング手段がタスクにおける処理時間のかなりの部分を消費する少なくともソフトウェアタスクに必要なブロックを確保する請求項10記載の階層化分散処理システム。
  13. デッドロック状態を検出するための手段と、処理進行を確実にするために、待ちプロセッサの1つによってロックされているブロックを解放して適切な遅延時間後のそのプロセッサが実行するソフトウェアタスクを再開するための手段とが、上位レベルプロセッサノードに含まれる請求項10記載の階層化分散処理システム。
  14. 目的のソフトウェアタスクに必要な変数が別のプロセッサによってロックされているか否かチェックするための手段と、目的のタスクに関わるプロセッサによってロックされた変数を別のプロセッサが待っているか否か確認するための手段とが、デッドロック検出手段に含まれる請求項13記載の階層化分散処理システム。
  15. 複数の対応ソフトウェアタスクを並列に実行するために複数のプロセッサ(11)が個別にイベントを処理し、並列タスク間の衝突を検出するための手段と、衝突が検出されたタスクを元に戻して再実行するための手段とが、データ整合手段(15)に含まれる請求項1記載の階層化分散処理システム。
  16. 共有メモリにおける変数の使用をマークするための手段が各プロセッサに含まれ、マーキングに基づいて変数アクセス衝突を検出するための手段が衝突検出手段に含まれる請求項15記載の階層化分散処理システム。
  17. 共有メモリ(12)内のソフトウェアに複数のソフトウェアブロック(B1〜Bn)が含まれ、複数のプロセッサの各々はソフトウェアブロックを含むソフトウェアタスクを、イベントに応答して実行し、各プロセッサには、ブロック内の変数の使用をマークするための手段が含まれ、衝突検出手段には、マーキングに基づいて変数アクセス衝突を検出するための手段が含まれる請求項15記載の階層化分散処理システム。
  18. さらに、並列イベントキュー(16)と、各プロセッサセットに対するキューと、各外部イベントに含まれる情報に基づいて各外部イベントをイベントキューにマッピングするためのマッピング手段(14)とが、上位レベルのプロセッサノード(10)に含まれる請求項1記載の階層化分散処理システム。
  19. システム階層構造の複数レベルにわたって分散する複数プロセッサノードを有するイベントベースの階層化分散処理システム(1)における処理方法であって、
    階層化処理システム(1)の少なくとも1つの上位レベルのプロセッサノード(10)に複数の共有メモリプロセッサ(11)を設けるステップを含み、
    システムで認識されたイベントフローコンカレンシに基づいて、プロセッサノードへの外部イベントフローを複数の非交換イベントカテゴリに分割するステップを含み、
    各非交換イベントカテゴリが複数プロセッサの所定セットに割り当てられて、そのセットのプロセッサによって処理されるように非交換イベントカテゴリをプロセッサにマッピングし、それにより非交換イベントカテゴリが同時に処理できるようにするステップを含み、
    その際、その非交換イベントカテゴリは、イベントの順序がカテゴリ内では保持されるべきであるが、異なるカテゴリのイベント処理に関しては順序付けは要求されないイベントの点で、イベントがグループ分けされたものであり、更に
    与えられたグローバルデータにアクセス可能なプロセッサが一度に1つに限定されるように、共有メモリ(12)のグローバルデータをプロセッサが操作するときのデータ整合性を確保するステップを含む前記処理方法。
  20. 少なくとも1つのプロセッサセットを、複数プロセッサ段をもつマルチプロセッサパイプラインとして動作させ、プロセッサセットに割り当てられる非交換カテゴリの各イベントを、パイプライン内のそれぞれ異なるプロセッサ段で実行されるイベントチェーンとしてスライス単位で処理する請求項19記載の処理方法。
  21. プロセッサセットで生成されたイベントを同じプロセッサに供給する請求項19記載の処理方法。
  22. データ整合を確保する前記ステップにおいて、イベントに応答して実行されるソフトウェアタスクに使用されるグローバル変数を共有メモリ内でロックし、ロックされたグローバル変数をタスク実行終了時に解放する請求項19記載の処理方法。
  23. データ整合を確保する前記ステップにおいて更に、2つの相互にロックするタスクの一方のグローバル変数を解放して適切な遅延時間後にそのタスクを再実行する請求項22記載の処理方法。
  24. 共有メモリ(12)内のソフトウェアに複数のソフトウェアブロックが含まれ、イベントに応答してプロセッサの各々によって、ソフトウェアブロックを含むソフトウェアタスクが実行される処理方法であって、データ整合を確保する前記ステップにおいて、プロセッサの1つによる実行前にソフトウェアブロックの少なくともグローバルデータをロックして、そのプロセッサだけがそのブロック中のグローバルデータにアクセスすることができるようにした請求項19記載の処理方法。
  25. 対応するタスクの実行開始前にソフトウェアブロック全体をロックし、ロックされたブロックをタスク実行終了時に解放する請求項24記載の処理方法。
  26. いわゆるデッドロック状態を避けるためにタスク実行開始前にソフトウェアタスクに必要なすべてのブロックを確保する請求項24記載の処理方法。
  27. デッドロック状態を検出し、処理進行を確実にするために、待ちプロセッサの1つによってロックされているブロックを解放して適切な遅延時間後にそのプロセッサが実行するソフトウェアタスクを再実行する請求項24記載の処理方法。
  28. イベントに応答して複数の対応ソフトウェアタスクを並列にプロセッサで実行する処理方法であって、データ整合を確保する前記ステップにおいて、アクセス衝突を検出し、衝突が検出されたタスクを元に戻して再実行する請求項19記載の処理方法。
  29. 共有メモリにおける変数の使用を各プロセッサでマークし、前記衝突検出時にマーキングに基づいて変数アクセス衝突を検出する請求項28記載の処理方法。
  30. 更に、単一プロセッサシステム用のアプリケーションソフトウェアを複数の共有メモリプロセッサに移行して実行するステップを含む請求項19記載の処理方法。
JP2000582885A 1998-11-16 1999-11-12 イベントベースシステムの同時処理 Expired - Fee Related JP4489958B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9803901-9 1998-11-16
SE9803901A SE9803901D0 (sv) 1998-11-16 1998-11-16 a device for a service network
PCT/SE1999/002064 WO2000029942A1 (en) 1998-11-16 1999-11-12 Concurrent processing for event-based systems

Publications (2)

Publication Number Publication Date
JP2002530737A JP2002530737A (ja) 2002-09-17
JP4489958B2 true JP4489958B2 (ja) 2010-06-23

Family

ID=50202830

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000582885A Expired - Fee Related JP4489958B2 (ja) 1998-11-16 1999-11-12 イベントベースシステムの同時処理

Country Status (7)

Country Link
EP (1) EP1131703A1 (ja)
JP (1) JP4489958B2 (ja)
KR (1) KR100401443B1 (ja)
AU (1) AU1437300A (ja)
BR (1) BR9915363B1 (ja)
CA (1) CA2350922C (ja)
WO (1) WO2000029942A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633865B1 (en) 1999-12-23 2003-10-14 Pmc-Sierra Limited Multithreaded address resolution system
US7080238B2 (en) 2000-11-07 2006-07-18 Alcatel Internetworking, (Pe), Inc. Non-blocking, multi-context pipelined processor
US7526770B2 (en) 2003-05-12 2009-04-28 Microsoft Corporation System and method for employing object-based pipelines
JP2006146678A (ja) 2004-11-22 2006-06-08 Hitachi Ltd 情報処理装置におけるプログラム制御方法、情報処理装置、及びプログラム
US20080301125A1 (en) 2007-05-29 2008-12-04 Bea Systems, Inc. Event processing query language including an output clause
US20090070765A1 (en) 2007-09-11 2009-03-12 Bea Systems, Inc. Xml-based configuration for event processing networks
WO2011107163A1 (en) * 2010-03-05 2011-09-09 Telefonaktiebolaget L M Ericsson (Publ) A processing system with processing load control
EP2650750A1 (en) * 2012-04-12 2013-10-16 Telefonaktiebolaget L M Ericsson AB (Publ) Apparatus and method for allocating tasks in a node of a telecommunication network

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58149555A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd 並列処理装置
JPS6347835A (ja) * 1986-08-18 1988-02-29 Agency Of Ind Science & Technol パイプライン計算機
JPS63301332A (ja) * 1987-06-02 1988-12-08 Nec Corp ジョブ実行方式
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
JP2957223B2 (ja) 1990-03-20 1999-10-04 富士通株式会社 コールプロセッサの負荷分散制御方式
JPH07122866B1 (ja) * 1990-05-07 1995-12-25 Mitsubishi Electric Corp
JPH04100449A (ja) 1990-08-20 1992-04-02 Toshiba Corp Atm通信システム
JPH04273535A (ja) * 1991-02-28 1992-09-29 Nec Software Ltd マルチタスク制御方式
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
CA2067576C (en) * 1991-07-10 1998-04-14 Jimmie D. Edrington Dynamic load balancing for a multiprocessor pipeline
JPH0546415A (ja) * 1991-08-14 1993-02-26 Nec Software Ltd 排他管理制御方式
JP3182806B2 (ja) 1991-09-20 2001-07-03 株式会社日立製作所 バージョンアップ方法
JPH05204876A (ja) * 1991-10-01 1993-08-13 Hitachi Ltd 階層型ネットワークおよび階層型ネットワークを用いたマルチプロセッサシステム
US5471580A (en) 1991-10-01 1995-11-28 Hitachi, Ltd. Hierarchical network having lower and upper layer networks where gate nodes are selectively chosen in the lower and upper layer networks to form a recursive layer
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5379428A (en) * 1993-02-01 1995-01-03 Belobox Systems, Inc. Hardware process scheduler and processor interrupter for parallel processing computer systems
JP2655466B2 (ja) 1993-03-18 1997-09-17 日本電気株式会社 パケット交換装置
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JP3005397B2 (ja) * 1993-09-06 2000-01-31 関西日本電気ソフトウェア株式会社 デッドロック多発自動回避方式
ES2138051T3 (es) * 1994-01-03 2000-01-01 Intel Corp Metodo y aparato para la realizacion de un sistema de resolucion de bifurcaciones en cuatro etapas en un procesador informatico.
JPH0836552A (ja) * 1994-07-22 1996-02-06 Nippon Telegr & Teleph Corp <Ntt> 分散処理方法、分散処理システム及び分散処理管理装置
AU714853B2 (en) 1995-12-19 2000-01-13 Telefonaktiebolaget Lm Ericsson (Publ) Job scheduling for instruction processor
US5848257A (en) * 1996-09-20 1998-12-08 Bay Networks, Inc. Method and apparatus for multitasking in a computer system
US6240509B1 (en) * 1997-12-16 2001-05-29 Intel Corporation Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation

Also Published As

Publication number Publication date
JP2002530737A (ja) 2002-09-17
CA2350922A1 (en) 2000-05-25
WO2000029942A1 (en) 2000-05-25
CA2350922C (en) 2014-06-03
BR9915363A (pt) 2001-07-31
KR20010080958A (ko) 2001-08-25
AU1437300A (en) 2000-06-05
KR100401443B1 (ko) 2003-10-17
BR9915363B1 (pt) 2012-12-25
EP1131703A1 (en) 2001-09-12

Similar Documents

Publication Publication Date Title
EP1602030B1 (en) System and method for dynamic ordering in a network processor
US6336177B1 (en) Method, system and computer program product for managing memory in a non-uniform memory access system
JP5366552B2 (ja) 集中特化したマルチタスク及びマルチフロー処理をリアルタイム実行する手法及びシステム
US8122451B2 (en) Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
CN100409191C (zh) 用于管理多节点smp系统的方法和系统
KR100488846B1 (ko) 병렬 처리 컴퓨팅 시스템에서의 메모리 할당 방법 및 프로그램 저장 장치
US20020103847A1 (en) Efficient mechanism for inter-thread communication within a multi-threaded computer system
Dagum et al. Polytopes, permanents and graphs with large factors
KR100488836B1 (ko) 컴퓨터 프로그램 저장 장치 및 병렬 처리 방법
KR20190025746A (ko) 계산 작업을 처리하기 위한 컴퓨터 클러스터 장치 및 이를 작동시키기 위한 방법
KR100400165B1 (ko) 처리 시스템 스케쥴링
JP4489958B2 (ja) イベントベースシステムの同時処理
JP2007280397A (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
JPH08292932A (ja) マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
JP2580525B2 (ja) 並列計算機における負荷分散方法
CN116483536B (zh) 数据调度方法、计算芯片及电子设备
JP2004086921A (ja) マルチプロセッサシステムおよびマルチプロセッサシステムにおいてタスクを実行する方法
Tang et al. Network Main Memory Architecture for NoC-Based Chips
Yu et al. Disjoint task allocation algorithms for MIN machines with minimal conflicts
Chang et al. An efficient thread architecture for a distributed shared memory on symmetric multiprocessor clusters
Mandal et al. ALPS on a transputer network: kernel support for topology-independent programming
JPS62286155A (ja) マルチcpu制御方式
JPH08166931A (ja) 並列計算機の負荷分散方法
Yu et al. Disjoint Task Allocation Algorithms for MIN Machines with Minimal Con icts1
JPH03198133A (ja) 分散データベース処理方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060921

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100222

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

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

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

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