(57)【要約】【課題】  プロトコル制御情報への排他制御を容易にし、また、必要となるメモリ容量を低減する。【解決手段】  通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置は、通信プロトコル処理を実行する複数の処理部と、プロトコル制御情報を格納する第１の記憶部と、その処理部が使用するプロトコル制御情報を格納する第２の記憶部とを備える。処理部の指示に基づき、第１の記憶部と第２の記憶部と間のデータ転送を実行する。第２の記憶部に格納されるプロトコル制御情報に対応するセマフォを管理する。第２の記憶部に格納される、処理部が使用するプロトコル制御情報に対応するセマフォを獲得した後、該処理手段によるプロトコル制御情報へのアクセスを実行する。【選択図】  図１
2014071842.tif 000002
【特許請求の範囲】
【請求項１】
通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置であって、
前記通信プロトコル処理を実行する複数の処理手段と、
前記プロトコル制御情報を格納する第１の記憶手段と、
前記複数の処理手段の内、前記通信プロトコル処理を実行する処理手段が使用する前記プロトコル制御情報を格納する第２の記憶手段と、
前記処理手段の指示に基づき、前記第１の記憶手段と前記第２の記憶手段と間のデータ転送を実行する転送手段と、
前記転送手段によって前記第２の記憶手段に格納される前記プロトコル制御情報に対応するセマフォを管理するセマフォ管理手段と、
前記セマフォ管理手段から前記第２の記憶手段に格納される、前記処理手段が使用する前記プロトコル制御情報に対応するセマフォを獲得した後、該処理手段による前記プロトコル制御情報へのアクセスを実行する管理手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記セマフォ管理手段は、前記第２の記憶手段が格納可能な前記プロトコル制御情報の数と同数のセマフォを管理する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記セマフォ管理手段は、前記複数の処理手段の数と同数のセマフォを管理する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記複数の処理手段はそれぞれ、前記セマフォ管理手段からセマフォを獲得する前のタイミングで、前記転送手段に対し、前記第１の記憶手段に格納される前記プロトコル制御情報の前記第２の記憶手段への転送の指示を行う
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記転送手段は、前記第２の記憶手段に格納され、かつ対応するセマフォが獲得されている前記プロトコル制御情報については、前記第１の記憶手段への転送を禁止する
ことを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第２の記憶手段へ前記プロトコル制御情報をロードするためのリクエストを前記処理手段から受け付けた場合において、
前記管理手段は、
前記第２の記憶手段に未使用の記憶領域がある場合には、前記プロトコル制御情報を前記第２の記憶手段に格納し、
前記第２の記憶手段に未使用の記憶領域がない場合には、ロード対象の前記プロトコル制御情報と、前記第２の記憶手段に既に格納されている前記プロトコル制御情報の１つと入れ替える
ことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置として、前記通信プロトコル処理を実行する複数の処理部と、前記プロトコル制御情報を格納する第１の記憶部と、前記複数の処理部の内、前記通信プロトコル処理を実行する処理部が使用する前記プロトコル制御情報を格納する第２の記憶部とを備える情報処理装置の制御方法であって、
前記処理部の指示に基づき、前記第１の記憶部と前記第２の記憶部と間のデータ転送を実行する転送工程と、
前記転送工程によって前記第２の記憶部に格納される前記プロトコル制御情報に対応するセマフォを管理するセマフォ管理工程と、
前記セマフォ管理工程から前記第２の記憶部に格納される、前記処理部が使用する前記プロトコル制御情報に対応するセマフォを獲得した後、該処理部による前記プロトコル制御情報へのアクセスを実行する管理工程と
を備えることを特徴とする情報処理装置の制御方法。
【請求項８】
通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置として、前記通信プロトコル処理を実行する複数の処理部と、前記プロトコル制御情報を格納する第１の記憶部と、前記複数の処理部の内、前記通信プロトコル処理を実行する処理部が使用する前記プロトコル制御情報を格納する第２の記憶部とを備える情報処理装置の制御をコンピュータに機能させるためのプログラムであって、
前記コンピュータを、
前記処理部の指示に基づき、前記第１の記憶部と前記第２の記憶部と間のデータ転送を実行する転送手段と、
前記転送手段によって前記第２の記憶部に格納される前記プロトコル制御情報に対応するセマフォを管理するセマフォ管理手段と、
前記セマフォ管理手段から前記第２の記憶部に格納される、前記処理部が使用する前記プロトコル制御情報に対応するセマフォを獲得した後、該処理部による前記プロトコル制御情報へのアクセスを実行する管理手段と
して機能させることを特徴とするプログラム。
【請求項９】
通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置であって、
前記通信プロトコル処理を実行する複数の処理手段と、
前記プロトコル制御情報を格納する第１の記憶手段と、
前記第１の記憶手段より格納可能な前記プロトコル制御情報が少ない第２の記憶手段と、
前記第１の記憶手段に格納された前記プロトコル制御情報を前記第２の記憶手段にロードする転送手段と、
前記転送手段によって前記第２の記憶手段に格納される前記プロトコル制御情報への排他アクセス制御を前記複数の処理手段に対して行う制御手段と、を備え、
前記第１の記憶手段に格納される前記プロトコル制御情報に対して排他アクセス制御を行なわない
ことを特徴とする情報処理装置。
【請求項１０】
前記複数の処理手段は、前記第１の記憶手段に格納される前記プロトコル制御情報に、直接、アクセスして、前記通信プロトコル処理を行わない
ことを特徴とする請求項９に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置及びその制御方法、プログラムに関するものである。
【背景技術】
【０００２】
現在、組み込み機器の多くは搭載された通信インターフェイスを介してネットワークへの接続が可能となってきており、さらにはその通信速度がより高速であることが要求されている。しかし、高速な通信を実現するための通信処理は、組み込み機器に搭載されるＣＰＵに大きな負荷をかける。組み込み機器においては、高速な通信を実現するために通信プロトコル処理に特化したデバイスを搭載する手法が一般的となっている。
【０００３】
例えば、ＴＣＰ／ＩＰ通信を高速化するデバイスとしてＴＯＥ（ＴＣＰ／ＩＰ  Ｏｆｆｌｏａｄ  Ｅｎｇｉｎｅ）がある。ＴＯＥは、組み込み機器に搭載されるＣＰＵからＴＣＰ／ＩＰプロトコル処理を肩代わりし、ＣＰＵに負荷をかけずに高速な通信を可能とする。
【０００４】
プロトコル処理において、重要となるのがＰＣＢの扱いである。ＰＣＢとは、プロトコル制御ブロック（Ｐｒｏｔｏｃｏｌ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）の略称であり、任意の通信プロトコルを処理する場合に必要なコンテキスト情報の名称である。特に、ＴＣＰ／ＩＰプロトコルにおいては、ＴＣＰプロトコル制御ブロック（ＴＣＰ  Ｐｒｏｔｏｃｏｌ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）と呼称され、ＴＣＰＣＢ若しくはＴＣＢと略される。
【０００５】
ＴＣＢは、コネクション毎に用意される。ＴＣＰ／ＩＰプロトコルにおけるコネクションとは、２つのネットワークデバイスのそれぞれのＩＰアドレスとＴＣＰポート番号による４つの情報の組み合わせで表現される。これらの情報の組み合わせは、ソケットペアまたは単にソケットと呼称されている。
【０００６】
ＴＣＢは数十種類のパラメータ（変数）により構成されている。ＴＣＢの各パラメータは、ＴＣＰ／ＩＰプロトコル処理中において高い頻度でアクセスされる。例えば、ＴＣＰパケットを受信する度に、どのＴＣＢを使用するかを検索しアクセスする必要がある。
【０００７】
ＴＣＢは、それ自体のサイズが大きくコネクション毎に用意する必要があるため、管理のために大きなメモリ容量を必要とする。そのため、ＴＣＢは外部のメモリへ格納されることが一般的である。
【０００８】
そこで、ＴＣＢをキャッシュメモリへ格納することで、ＴＣＢへのアクセスを高速化する技術が提案されている（特許文献１）。
【０００９】
また、ＴＣＰ／ＩＰプロトコル処理が複数のプロセッサまたは複数のＣＰＵによって実行される構成である場合、ひとつのＴＣＢに対し同時にアクセスが発生することもある。アクセスによってはＴＣＢ内のパラメータが書き換えられてしまうため、複数のＣＰＵの同時アクセスが発生するとプロトコル処理において不整合が発生してしまう。また、ＣＰＵ利用の単位であるスレッドによる同時アクセスが発生した場合も同様のことが言える。これを防ぐために、各ＴＣＢに対し１つのＣＰＵがアクセスを行っている間、他のＣＰＵからのアクセスを禁止する排他制御を実施する必要がある。
【００１０】
共有資源に対し排他制御を実施するためにセマフォを用いることが一般的に知られている。セマフォとは並行して動作しているプロセス間で同期を取ったり割り込み処理の制御を行なう機構を意味する。セマフォを獲得したＣＰＵのみに共有資源へのアクセスを許可することで排他制御を実現する。
【００１１】
セマフォは、例えば、排他制御を実施したい各共有資源に対し１ｂｉｔで用意され、各ＣＰＵからのセマフォ獲得要求に対して必ずひとつのＣＰＵだけがセマフォを獲得するようにセマフォの管理が行われる。
【００１２】
このようなセマフォ管理は、メモリ上のセマフォテーブルを使用して行われる。排他制御を実施する共有資源の数に応じて、セマフォテーブルのメモリサイズは増大する。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８-５２３７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
マルチＣＰＵ構成において、ＴＣＰ／ＩＰプロトコル処理を実行する場合、ＴＣＢに対して排他制御を実施する必要がある。
【００１５】
ＴＣＢはコネクション（ソケット）毎に用意する必要があるため、通信中の各コネクション数に応じた排他制御が必要となり、セマフォテーブルにより管理を行うには、大きなメモリ容量が必要となってしまう課題がある。
【００１６】
本発明は上記の課題を解決するためになされたものであり、マルチＣＰＵにより多数のコネクションに対応したＴＣＰ／ＩＰプロトコル処理を実行する場合においても、限られたメモリ容量でＴＣＢへの排他制御を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
通信プロトコル処理に使用されるプロトコル制御情報を管理する情報処理装置であって、
前記通信プロトコル処理を実行する複数の処理手段と、
前記プロトコル制御情報を格納する第１の記憶手段と、
前記複数の処理手段の内、前記通信プロトコル処理を実行する処理手段が使用する前記プロトコル制御情報を格納する第２の記憶手段と、
前記処理手段の指示に基づき、前記第１の記憶手段と前記第２の記憶手段と間のデータ転送を実行する転送手段と、
前記転送手段によって前記第２の記憶手段に格納される前記プロトコル制御情報に対応するセマフォを管理するセマフォ管理手段と、
前記セマフォ管理手段から前記第２の記憶手段に格納される、前記処理手段が使用する前記プロトコル制御情報に対応するセマフォを獲得した後、該処理手段による前記プロトコル制御情報へのアクセスを実行する管理手段と
を備える。
【発明の効果】
【００１８】
本発明によれば、プロトコル制御情報への排他制御を容易にし、また、必要となるメモリ容量を低減することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明を実施可能な情報処理装置のブロック構成図である。
【図２】ＰＣＢキャッシュ管理テーブル図である。
【図３】ＰＣＢキャッシュに対応したセマフォ管理テーブル図である。
【図４】ＰＣＢ管理部１１５におけるＰＣＢ登録処理及びＰＣＢ廃棄処理を示すフロー図である。
【図５】ＰＣＢ管理部１１５におけるＰＣＢロード処理を示すフロー図である。
【図６】ＰＣＢ管理部１１５におけるセマフォ獲得処理、セマフォ解放処理を示すフロー図である。
【図７】サブＣＰＵ１、サブＣＰＵ３、ＰＣＢ管理部の動作を表すシーケンス図である。
【図８】ＣＰＵに対応したセマフォ管理テーブル図である。
【図９】図８のセマフォ管理テーブルをもつ構成におけるＰＣＢ管理部のセマフォ獲得処理及びセマフォ解放処理を示すフロー図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００２１】
＜実施形態１＞
図１に本発明にかかるデータ格納方法を適用できる情報処理装置を示す。
【００２２】
情報処理装置は、主処理部（メインシステム）１０１と通信処理部（サブシステム）１０５とを有する。主処理部１０１は、情報処理装置のアプリケーションを制御するためのシステムである。例えば、プリンタであれば印刷、カメラであれば撮像に関わる制御を行う。また、通信に関する処理は通信処理部１０５により行われる。
【００２３】
主処理部１０１には、メインＣＰＵ１０２、メインメモリ１０３及びメインバス１０４が含まれる。
【００２４】
メインＣＰＵ１０２は、情報処理装置全体のアプリケーション制御を担う。
【００２５】
メインメモリ１０３は、通信プロトコル処理を実行する処理部であるメインＣＰＵ１０２及びサブＣＰＵ１０７〜１１１が実行するプログラムを格納しており、また、データ用バッファメモリとしての役割を担う。さらに、実施形態１においては、各コネクションに対応するＰＣＢ（プロトコル制御情報）の格納場所としての役割も担う。情報処理装置が対応する最大コネクション数のＰＣＢの格納領域が確保されている必要があり、実施形態１では、４０９６コネクションに対応しＰＣＢを格納可能であるとする。尚、メインメモリ１０３に格納されているＰＣＢに対しては、メインＣＰＵ１０２およびサブＣＰＵ１０７〜１１１の直接のアクセスを禁止する。
【００２６】
メインバス１０４は、メインＣＰＵ１０２からメインメモリ１０３及び通信処理部１０５へのアクセス及びデータ転送等に使用される。
【００２７】
通信処理部１０５には、ローカルバス１０６、サブＣＰＵ１０７〜１１１、データ転送部１１２、有線インターフェイス１１３、無線インターフェイス１１４及びＰＣＢ管理部１１５が含まれる。
【００２８】
ローカルバス１０６は、サブＣＰＵ１０７〜１１１から、データ転送部１１２、ＰＣＢ管理部１１５、及び主処理部１０１へのアクセス及びデータ転送等に使用される。
【００２９】
実施形態１においては、複数（例えば、５個）のサブＣＰＵ１０７〜１１１により通信処理を行う構成として以下に説明する。各サブＣＰＵにより、主処理部１０１からＴＣＰ／ＩＰプロトコル処理及び無線ＬＡＮ処理等の通信処理をオフロードし、高速に実行する。各サブＣＰＵは、メインメモリ１０３に格納されたプログラムを内蔵するキャッシュメモリにロードして、プログラムを実行する。各サブＣＰＵが実行するプログラムは共通であっても良いし、各サブＣＰＵ個別のものであっても良い。
【００３０】
また、メインＣＰＵ１０２及びサブＣＰＵ１０７〜１１１の各ＣＰＵは、ローカルバス１０６を介し、ＰＣＢキャッシュ１１９内へのアクセスが可能なものとする。即ち、各ＣＰＵは、メインメモリ１０３に格納されているＰＣＢがＰＣＢキャッシュ１１９に転送された場合に、ＰＣＢキャッシュ１１９においてＰＣＢにアクセスすることができる。
【００３１】
データ転送部１１２は、主処理部１０１と通信処理部１０５間のデータ転送や有線インターフェイス１１３及び無線インターフェイス１１４に対するデータ送受信を行う。
【００３２】
有線インターフェイス１１３は、通信ケーブルを介して、情報処理装置をネットワークに接続する。有線通信として、例えば、ＩＥＥＥ８０２．３が適用可能である。
【００３３】
無線インターフェイス１１４は、電波により大気を介して、情報処理装置をネットワークに接続する。無線通信として、例えば、ＩＥＥＥ８０２．１１無線ＬＡＮが適用可能である。
【００３４】
各インターフェイスにより、例えば、情報処理装置がプリンタであれば、ネットワークを介して印刷指示を行うことにより、情報処理装置に印刷処理を行わせることが可能である。
【００３５】
ＰＣＢ管理部１１５は、ＰＣＢ制御シーケンサ１１６、ＰＣＢテーブル１１７、ＰＣＢキャッシュ制御部１１８、ＰＣＢキャッシュ１１９、及びセマフォ管理部１２０を含んでいる。ＰＣＢ管理部１１５は、メインＣＰＵ１０２及びサブＣＰＵ１０７〜１１１の各ＣＰＵから発行される動作リクエスト（動作要求）に従って動作する。
【００３６】
ＰＣＢは、ＴＣＰ処理においてはＴＣＢとも称され、コネクションの通信開始時に作成され、通信終了時に破棄されるものである。ＴＣＢは、通信プロトコルを処理する場合に必要なコンテキスト情報である。ＴＣＢには、コネクション番号、送信先ＩＰアドレス、送信先ポート番号、送信元ＩＰアドレス、送信元ポート番号、ＴＣＰコネクションの遷移状態、シーケンス番号、ＡＣＫ番号、ウィンドウサイズ等の情報が含まれている。ＴＣＢは、ひとつのコネクションにおいて２ｋビット程度のサイズとなっている。
【００３７】
ＰＣＢ制御シーケンサ１１６は、メインＣＰＵ１０２及びサブＣＰＵ１０７〜１１１の各ＣＰＵからの動作リクエストの受け付け、動作リクエストに応じてＰＣＢ管理部１１５内の制御を実行する。
【００３８】
動作リクエストとして、コネクション番号検索、ＰＣＢ登録処理、ＰＣＢ廃棄処理、ＰＣＢロード処理、セマフォ獲得処理、セマフォ解放処理、セマフォ確認処理がある。各処理については後述する。
【００３９】
ＰＣＢテーブル１１７は、通信処理部１０５が使用するコネクション番号及びコネクション情報を管理する。
【００４０】
コネクション番号はＴＣＰ処理において、ソケット番号とも呼称される。各コネクション番号の使用状態及び未使用状態が管理されており、ＰＣＢ制御シーケンサ１１６が新規にＰＣＢを登録する場合には、未使用状態のコネクション番号を選択しＰＣＢを作成する。同一のコネクション番号を有するＰＣＢは存在しない。また、通信が終了したコネクションが使用していたコネクション番号は再び未使用状態となる。実施形態１において、使用するコネクション番号は、０〜４０９５の４０９６個であるとする。
【００４１】
また、コネクション番号取得時に、対応したコネクション情報がＰＣＢテーブル１１７に登録される。コネクション情報には、送信先ＩＰアドレス、送信先ポート番号、送信元ＩＰアドレス及び送信元ポート番号の４つの情報が含まれる。コネクション情報により各コネクションを識別することが可能であり、通信処理部１０５が外部からパケットを受信した際には、パケットに含まれているコネクション情報からコネクション番号を特定すること可能である。
【００４２】
ＰＣＢキャッシュ制御部１１８は、メインメモリ１０３（第１の記憶部）とＰＣＢキャッシュ１１９（第２の記憶部）間のＰＣＢ転送、ＰＣＢキャッシュ１１９への新規のＰＣＢ登録処理、及び既存のＰＣＢ廃棄処理を実行する。これらの処理は、ＰＣＢ制御シーケンサ１１６より、ＰＣＢ登録処理、ＰＣＢ廃棄処理、ＰＣＢロード処理の指示を受けたタイミングで実行される。
【００４３】
また、ＰＣＢキャッシュ制御部１１８は、内部に図２に示すキャッシュ管理テーブルを有する。ここでは、ＰＣＢキャッシュ１１９は、ＰＣＢを２０個まで格納可能なメモリ領域（キャッシュ領域（記憶領域））を有するとする。尚、ＰＣＢキャッシュ１１９は、メインメモリ１０３より高速にデータアクセス可能な記憶媒体である。
【００４４】
図２において、キャッシュＩＤは、各キャッシュ領域を示すＩＤである。フラグは、“１”値であれば対応するキャッシュ領域にＰＣＢがキャッシュされていることを示す。“０”値であればキャッシュ領域が未使用であることを示す。コネクション番号は、キャッシュされているＰＣＢのコネクション番号を示す。
【００４５】
セマフォ管理部１２０は、ＰＣＢキャッシュ１１９が有する各キャッシュ領域に対する各セマフォの管理を、図３に示すセマフォ管理テーブルにより行う。
【００４６】
図３において、セマフォＩＤは、各セマフォを示すＩＤである。セマフォＩＤは図２に示すキャッシュＩＤと対応しており、キャッシュＩＤ０〜１９に対するセマフォはそれぞれセマフォＩＤ０〜１９に対応している。つまり、セマフォ管理テーブルでは、ＰＣＢキャッシュが格納可能なＰＣＢの数と同数のセマフォを管理する。
【００４７】
獲得フラグは、現在セマフォを獲得しているＣＰＵを示す。各セマフォを獲得可能なＣＰＵは常に１つに限られるが、各ＣＰＵは複数のセマフォを獲得しても構わない。実施形態１においては、各ＣＰＵが同時に３つまでセマフォが獲得できるものとする。
【００４８】
獲得リクエストキューは、各セマフォに対しセマフォ獲得リクエストを発行したＣＰＵを示す。他のＣＰＵにより既に獲得状態にあるセマフォに対しセマフォ獲得リクエストを行った場合は、獲得リクエストキューに入り対象のセマフォが解放されるまで、セマフォを獲得することはできない。獲得リクエストキューには、セマフォ獲得リクエストを発行した順番に格納される。図３の獲得リクエストキューでは、一番左に格納されているＣＰＵが次にセマフォを獲得できることを示している。
【００４９】
ＰＣＢ管理部１１５が実行するコネクション番号検索、ＰＣＢ登録処理、ＰＣＢ廃棄処理、ＰＣＢロード処理、セマフォ獲得処理、セマフォ解放処理、セマフォ確認処理の各処理について以下に説明を行う。
【００５０】
コネクション番号検索について以下に説明する。ＰＣＢ管理部１１５は、各ＣＰＵからコネクション番号検索のリクエストを受けると、ＰＣＢ制御シーケンサ１１６によりＰＣＢテーブル１１７内の検索を行う。具体的には、ＰＣＢ管理部１１５は、コネクション番号検索のリクエストに含まれるコネクション情報を使用して検索を行う。そして、ＰＣＢ管理部１１５は、検索にヒットしたコネクション番号を、リクエストを発行したＣＰＵへ通知し処理を終了する。
【００５１】
ＰＣＢ登録処理及びＰＣＢ廃棄処理について図４のフロー図を用いて以下に説明する。
【００５２】
各ＣＰＵによりＰＣＢ管理部１１５に対しＰＣＢ登録処理またはＰＣＢ廃棄処理のリクエストが発行されると、図４のフローが開始される（ステップＳ４０１）。ＰＣＢ登録処理のリクエストは登録するコネクションのコネクション情報を含む。また、ＰＣＢ廃棄処理のリクエストは対象となるＰＣＢのコネクション番号を含む。
【００５３】
ステップＳ４０２において、ＰＣＢ制御シーケンサ１１６によりリクエストの判定を行う。判定の結果、リクエストがＰＣＢ登録処理である場合（ステップＳ４０２でＹＥＳ）、ステップＳ４０３へ進む。一方、リクエストがＰＣＢ廃棄処理である場合（ステップＳ４０２でＮＯ）、ステップＳ４０９へ進む。
【００５４】
ステップＳ４０３において、ＰＣＢ制御シーケンサ１１６は、ＰＣＢテーブル１１７を参照し未使用のコネクション番号を検索する。未使用のコネクション番号が存在しない場合（ステップＳ４０３でＮＯ）、ステップＳ４０４へ進む。一方、未使用のコネクション番号が存在する場合（ステップＳ４０３でＹＥＳ）、ステップＳ４０５へ進む。
【００５５】
ステップＳ４０４において、新規にＰＣＢを作成できない旨をＰＣＢ制御シーケンサ１１６がＰＣＢ登録処理のリクエストを発行したＣＰＵに対しエラーとして通知する。実施形態１では、４０９６コネクションを超えてＰＣＢを作成することはできない。そこで、そのような場合は、エラー通知を以て処理終了とする（ステップＳ４１４）。
【００５６】
ステップＳ４０５において、ＰＣＢ制御シーケンサ１１６は、ＰＣＢテーブル１１７を参照して、未使用のコネクション番号の取得及びコネクション情報の登録を含むＰＣＢテーブル１１７の更新を行う。また、ＰＣＢ制御シーケンサ１１６は、コネクション番号とコネクション情報をＰＣＢキャッシュ制御部１１８へ通知する。通知後、ステップＳ４０６へ進む。
【００５７】
ステップＳ４０６において、ＰＣＢキャッシュ制御部１１８は、内部のキャッシュ管理テーブルを参照し、未使用のキャッシュ領域を検索する。未使用のキャッシュ領域が存在しない場合（ステップＳ４０６でＮＯ）、ステップＳ４１５へ進む。一方、未使用のキャッシュ領域が存在する場合（ステップＳ４０６でＹＥＳ）、ステップＳ４０８へ進む。
【００５８】
ステップＳ４１５において、ＰＣＢキャッシュ制御部１１８は、セマフォ管理部１２０内のセマフォ管理テーブルを参照し、セマフォが獲得されていないキャッシュ領域が存在するか確認する。セマフォが獲得されていないキャッシュ領域が存在する場合（ステップＳ４１５でＹＥＳ）、ステップＳ４０７へ進む。一方、セマフォが獲得されていないキャッシュ領域が存在しない場合（ステップＳ４１５でＮＯ）、セマフォが獲得されていないキャッシュ領域が発生するまで、ステップＳ４１５をループする。
【００５９】
ステップＳ４０７において、ＰＣＢキャッシュ制御部１１８は、ＰＣＢキャッシュ１１９に格納されているＰＣＢのうち、１つをメインメモリ１０３へ転送する。この処理をキャッシュアウトと呼ぶ。
【００６０】
セマフォ管理テーブル上でセマフォが獲得されていないキャッシュＩＤに格納されたＰＣＢがキャッシュアウト対象となる。キャッシュアウト対象であるＰＣＢが複数存在する場合には、複数のＰＣＢの内、任意のひとつが選択される。実施形態１においては、各ＣＰＵが獲得することができるセマフォを３つまでに制限しているため、最小でも２つのキャッシュアウト候補が存在する。
【００６１】
つまり、ＰＣＢキャッシュへロードを実行する場合、未使用のキャッシュ領域へＰＣＢが格納される。未使用のキャッシュ領域が無い場合（２０個のＰＣＢでＦｕｌｌとなっている場合)、ＰＣＢキャッシュ内のＰＣＢとロード対象のＰＣＢの入れ替えを行う。この場合、各ＣＰＵにより直前にロードされたＰＣＢはキャッシュアウト対象から外され、直前にロードされたＰＣＢ以外の２個のＰＣＢがキャッシュアウト対象となる。
【００６２】
ＰＣＢキャッシュ制御部１１８は、キャッシュアウト完了後、内部のキャッシュ管理テーブルを更新する。具体的には、ＰＣＢキャッシュ制御部１１８は、キャッシュアウトしたキャッシュＩＤに対応するフラグを“０”値に変更する。キャッシュ管理テーブルの更新後、ステップＳ４０８へ進む。
【００６３】
ステップＳ４０８において、ＰＣＢキャッシュ制御部１１８は、ＰＣＢキャッシュ１１９内の空きキャッシュ領域へＰＣＢを新規に登録する。また、キャッシュ管理テーブルにおいてＰＣＢを登録したキャッシュＩＤに対応するフラグを“１”値へ変更する。以上の処理が完了すると、ＰＣＢキャッシュ制御部１１８は、ＰＣＢ制御シーケンサ１１６に登録完了通知を行い、ＰＣＢ登録処理を終了する（ステップＳ４１４）。
【００６４】
ステップＳ４０９より、ＰＣＢ廃棄処理が開始される。ＰＣＢ制御シーケンサ１１６によりＰＣＢキャッシュ制御部１１８へＰＣＢ廃棄処理のリクエストが通知される。ＰＣＢキャッシュ制御部１１８は、セマフォ管理部１２０内のセマフォ管理テーブルを参照して廃棄対象であるＰＣＢのセマフォが獲得されていないことを確認する。獲得されていない場合（ステップＳ４０９でＹＥＳ）、ステップＳ４１１へ進む。一方、獲得されている場合（ステップＳ４０９でＮＯ）、ステップＳ４１０へ進む。
【００６５】
ステップＳ４１０において、ＰＣＢを廃棄できない旨をＰＣＢ制御シーケンサ１１６がＰＣＢ廃棄処理のリクエストを発行したＣＰＵに対しエラーとして通知する。エラー通知を以て処理終了とする（ステップＳ４１４）
ステップＳ４１１において、ＰＣＢキャッシュ制御部１１８は、リクエストにて指定されたコネクション番号に対応するＰＣＢをＰＣＢキャッシュ１１９への転送処理（ＰＣＢロード処理）を実行する。ＰＣＢロード処理の詳細については後述する。ＰＣＢキャッシュ１１９へのロード処理が完了すると、ステップＳ４１２へ進む。
【００６６】
ステップＳ４１２において、ＰＣＢキャッシュ制御部１１８は、ＰＣＢキャッシュ１１９内の消去対象のＰＣＢのＰＣＢ消去処理を実行する。ＰＣＢ消去処理完了後、ＰＣＢキャッシュ制御部１１８は、ＰＣＢ制御シーケンサ１１６に消去完了通知を行い、ステップＳ４１３へ進む。
【００６７】
ステップＳ４１３において、ＰＣＢ制御シーケンサ１１６は、消去したＰＣＢが使用していたコネクション番号の返却をＰＣＢテーブル１１７に対し実行する。返却されたコネクション番号は、新規のＰＣＢ登録を行う際に再び利用可能となる。コネクション番号の返却が完了すると、ＰＣＢ廃棄処理を終了する（ステップＳ４１４）。
【００６８】
ＰＣＢロード処理について図５のフロー図を用いて以下に説明する。
【００６９】
各ＣＰＵによりＰＣＢ管理部１１５に対しＰＣＢロード処理のリクエストが発行されると、図５のフローが開始される（ステップＳ５０１）。リクエストの判定は、ＰＣＢ制御シーケンサ１１６が行い、ＰＣＢキャッシュ制御部１１８へロード処理通知を行う。ＰＣＢロード処理のリクエストには、対象となるＰＣＢのコネクション番号が含まれる。
【００７０】
ステップＳ５０２において、ＰＣＢキャッシュ制御部１１８は、内部のキャッシュ管理テーブルを検索し、ロード処理の対象となるＰＣＢが存在するか確認を行う。ＰＣＢキャッシュ１１９内に存在しない場合（ステップＳ５０２でＮＯ）、ステップＳ５０３へ進む。一方、ＰＣＢキャッシュ１１９内に存在する場合（ステップＳ５０２でＹＥＳ）、ステップＳ５０６へ進む。
【００７１】
ステップＳ５０３、ステップＳ５０８及びステップＳ５０４は、図４のステップＳ４０６、ステップＳ４１５及びステップＳ４０７と同様である。ＰＣＢキャッシュ１１９内に空きキャッシュ領域（未使用のキャッシュ領域）が存在する状態である場合（ステップＳ５０３でＮＯ）、ステップＳ５０５へ進む。
【００７２】
ステップＳ５０５において、ＰＣＢキャッシュ制御部１１８は、対象であるＰＣＢのロード処理を実行する。メインメモリ１０３内に格納されているＰＣＢをＰＣＢキャッシュ１１９へ転送する。転送完了後、ステップＳ５０６へ進む。
【００７３】
ステップＳ５０６において、ＰＣＢキャッシュ制御部１１８は、ＰＣＢ制御シーケンサ１１６へＰＣＢロード処理が完了した旨の通知を行い、ロード処理は完了する（ステップＳ５０７）。
【００７４】
このように、実施形態１では、各ＣＰＵは、処理対象のＰＣＢのロード処理のリクエスト（ロード命令）をＰＣＢ制御シーケンサ１１６へ通知する。そして、ＰＣＢ制御シーケンサ１１６は、対象のＰＣＢが既にキャッシュメモリ内にある場合は、即座に、ロード終了通知を行い、キャッシュメモリ内にない場合は、メインメモリからＰＣＢをロードした後、終了通知を行う。つまり、実施形態１では、キャッシュへアクセスする前に必ずＰＣＢロード処理を行う。また、１つのキャッシュメモリ内のＰＣＢが入れ替わるタイミングは、このロード処理のリクエスト時に限定される。
【００７５】
セマフォ獲得処理及びセマフォ解放処理について図６のフロー図を用いて以下に説明する。
【００７６】
各ＣＰＵによりＰＣＢ管理部１１５に対しセマフォ獲得またはセマフォ解放のリクエストが発行されると、図６のフローが開始される（ステップＳ６０１）。いずれのリクエストにもＰＣＢのコネクション番号が含まれている。
【００７７】
ステップＳ６０２において、ＰＣＢ制御シーケンサ１１６は、ＰＣＢキャッシュ制御部１１８へ指示しリクエストの対象となっているＰＣＢに対応するキャッシュＩＤの検索を行う。キャッシュＩＤを確認できた場合（ステップＳ６０２でＹＥＳ）、ステップＳ６０４へ進む。一方、確認できなかった場合（ステップＳ６０２でＮＯ）、ステップＳ６０３へ進む。
【００７８】
ステップＳ６０３において、ＰＣＢ制御シーケンサ１１６は、リクエストを発行したＣＰＵに対しエラー通知を行う。実施形態１において、ＰＣＢキャッシュ１１９内に格納されていないＰＣＢに対するセマフォ制御は行えない。エラー通知後、処理を終了する（ステップＳ６１３）。
【００７９】
ステップＳ６０４において、ステップＳ６０１において受け付けたリクエストがセマフォ獲得である場合（ステップＳ６０４でＹＥＳ）、ステップＳ６０５へ進む。一方、セマフォ解放である場合（ステップＳ６０４でＮＯ）、ステップＳ６０９へ進む。
【００８０】
ステップＳ６０５において、ＰＣＢ制御シーケンサ１１６は、ステップＳ６０２において確認したキャッシュＩＤに対するセマフォ獲得リクエスト通知をセマフォ管理部１２０に行う。セマフォ獲得リクエスト通知は、リクエストを発行したＣＰＵとキャッシュＩＤにより構成される。セマフォ獲得リクエスト通知後、ステップＳ６０６へ進む。
【００８１】
ステップＳ６０６において、セマフォ管理部１２０は、内部のセマフォ管理テーブルを参照し、リクエストされたセマフォのセマフォＩＤに対する獲得フラグを確認する。実施形態１において、キャッシュＩＤ０〜１９に対するセマフォはそれぞれセマフォＩＤ０〜１９に対応している。獲得フラグを確認し、他のＣＰＵがセマフォを獲得している場合（ステップＳ６０６でＹＥＳ）、ステップＳ６０７へ進む。一方、他のＣＰＵがセマフォを獲得していない場合（ステップＳ６０６でＮＯ）、ステップＳ６０８へ進む。
【００８２】
ステップＳ６０７において、セマフォ管理部１２０は、セマフォ管理テーブル内のセマフォＩＤに対応する獲得リクエストキューにＣＰＵの識別子を書き込む。獲得リクエストキューは、リクエストを発行した順番に格納され、セマフォ解放処理が行われる毎に更新される。獲得リクエストキューの更新後、処理を終了する（ステップＳ６１３）。
【００８３】
ステップＳ６０８において、セマフォ管理部１２０は、セマフォ管理テーブル内のセマフォＩＤに対応する獲得フラグにＣＰＵの識別子を書き込む。獲得フラグに識別子が書き込まれたＣＰＵはセマフォを獲得した状態である。各ＣＰＵは、セマフォ獲得フラグを読み出すことで、セマフォの獲得状態を確認することができる。獲得フラグの更新後、処理を終了する（ステップＳ６１３）。
【００８４】
ステップＳ６０９において、ＰＣＢ制御シーケンサ１１６は、ステップＳ６０２において確認したキャッシュＩＤに対するセマフォ解放リクエスト通知をセマフォ管理部１２０に行う。セマフォ解放リクエスト通知は、リクエストを発行したＣＰＵとキャッシュＩＤにより構成される。セマフォ解放リクエスト通知後、ステップＳ６１０へ進む。
【００８５】
ステップＳ６１０において、セマフォ管理部１２０は、セマフォ管理テーブルにて解放対象となっているセマフォＩＤに対応する獲得リクエストキューを確認し、セマフォ獲得待ちのＣＰＵが存在するかを確認する。存在する場合（ステップＳ６１０でＹＥＳ）、ステップＳ６１１へ進む。一方、存在しない場合（ステップＳ６１０でＮＯ）、ステップＳ６１２へ進む。
【００８６】
ステップＳ６１１において、セマフォ管理部１２０は、セマフォ管理テーブルの解放対象となっているセマフォＩＤに対応する獲得フラグ及び獲得リクエストキューの更新を行う。具体的には、獲得リクエストキューの先頭に格納されているＣＰＵの識別子を獲得フラグへ移動する。獲得リクエストキューの２番目に格納されているＣＰＵの識別子をキューの先頭へ移動する。以降、同様の処理を獲得リクエストキューに格納されている全ての識別子に対し行った後、処理を終了する（ステップＳ６１３）。セマフォが解放されると同時に、次のＣＰＵへのセマフォ獲得が行われる。
【００８７】
ステップＳ６１２において、セマフォ管理部１２０は、セマフォ管理テーブルにて解放対象となっているセマフォＩＤの獲得フラグを“０”値に更新する。
【００８８】
セマフォ確認処理について以下に説明する。ＰＣＢ管理部１１５は、各ＣＰＵからセマフォ確認処理のリクエストを受けると、ＰＣＢ制御シーケンサ１１６によりリクエスト対象のＰＣＢに対応するセマフォ獲得の確認を行う。リクエストには対象となるＰＣＢのコネクション番号が含まれる。キャッシュ管理テーブル及びセマフォ管理テーブルを参照し、セマフォ獲得状況を確認する。リクエストを発行したＣＰＵへセマフォの獲得状況を通知し処理を終了する。
【００８９】
図７は、実施形態１におけるサブＣＰＵ１（１０７）、サブＣＰＵ３（１０９）、ＰＣＢ管理部（１１５）の動作を表すシーケンス図である。図７において、ここでは簡略化のため、他のＣＰＵは、ＰＣＢ管理部１１５に対しリクエストを発行しないものとする。以下に説明を行う。
【００９０】
サブＣＰＵ３（１０９）がＰＣＢ登録リクエストをＰＣＢ管理部１１５へ発行する（７０１）。ＰＣＢ登録は、通信処理部１０５と通信を行う外部通信機器間におけるコネクション成立時に行われる。
【００９１】
ＰＣＢ管理部１１５は、ＰＣＢ登録処理を行いコネクション番号の取得及びＰＣＢの作成を実行する（７０２）。
【００９２】
次に、サブＣＰＵ３（１０９）がＰＣＢロードリクエストをＰＣＢ管理部１１５へ発行する（７０３）。例えば、サブＣＰＵ３（１０９）がＴＣＰパケットを外部通信機器へ送信を行う際は、対象となるコネクションのＰＣＢへアクセスしＴＣＰ処理を実行する。ＰＣＢ管理部１１５は、指定されたＰＣＢに対するロード処理を行う（７０４）。
【００９３】
サブＣＰＵ３（１０９）は、７０３においてロードリクエストを発行したＰＣＢに対するセマフォ獲得リクエストを発行する（７０５）。ＰＣＢ管理部１１５は、指定されたＰＣＢに対するセマフォ獲得処理を行う（７０６）。ここでは、対象となるＰＣＢのセマフォが即座に獲得できたものとする。
【００９４】
サブＣＰＵ３（１０９）は、７０５において発行したセマフォ獲得リクエストの結果を確認するために、ＰＣＢ管理部１１５へセマフォ確認リクエストを発行する（７０７）。
【００９５】
ＰＣＢ管理部１１５は、セマフォ確認処理を実行し、セマフォ獲得もしくは未獲得の通知をサブＣＰＵ３（１０９）へ行う（７０８）。
【００９６】
サブＣＰＵ３（１０９）は、セマフォ獲得の通知を受けるとＰＣＢへ対しアクセスが可能となる（７０９）。サブＣＰＵ３（１０９）は、ＰＣＢへアクセスしプロトコル処理を実行する。
【００９７】
ここで、サブＣＰＵ１（１０７）は、外部通信機器よりパケット受信したものとする（７１０）。サブＣＰＵ１（１０７）は受信したパケット解析を行い、コネクション情報を取得する（７１１）。受信したパケットのコネクション番号を検索するため、サブＣＰＵ１（１０７）は、ＰＣＢ管理部１１５へコネクション番号検索リクエストを発行する（７１２）。ＰＣＢ管理部１１５は、コネクション番号検索処理を実行し、検索にヒットしたコネクション番号の通知をサブＣＰＵ１（１０７）へ行う（７１３）。
【００９８】
次に、サブＣＰＵ１（１０７）は、７１３にて通知を受けたコネクション番号を使用しＰＣＢロードリクエストをＰＣＢ管理部１１５へ発行する（７１４）。ここでは、リクエストの対象となっているＰＣＢは、サブＣＰＵ３（１０９）が７０９でアクセスしているＰＣＢと同一のものとする。ＰＣＢ管理部１１５は、指定されたＰＣＢに対するロード処理を行う（７１５）。
【００９９】
サブＣＰＵ１（１０７）は、ロードリクエストを行ったＰＣＢに対するセマフォ獲得リクエストを発行する（７１６）。次に、ＰＣＢ管理部１１５は、セマフォ獲得処理を実行する（７１７）。サブＣＰＵ１（１０７）は、セマフォ確認リクエストを発行する（７１８）。これを受けて、ＰＣＢ管理部１１５は、セマフォ未獲得の通知を受信する（７１９）。これは、獲得リクエストの対象となっているＰＣＢのセマフォがサブＣＰＵ３（１０９）により獲得されているためである。
【０１００】
サブＣＰＵ３（１０９）は、ＰＣＢを使用したプロトコル処理が終了すると、セマフォ解放リクエストを発行する（７２０）。ＰＣＢ管理部１１５はサブＣＰＵ３が獲得していたセマフォの解放を行い、セマフォ獲得リクエストを発行していたサブＣＰＵ１（１０７）がセマフォ獲得状態となる（７２１）。
【０１０１】
サブＣＰＵ１（１０７）は、再度、セマフォ確認リクエストを発行する（７２２）。これを受けて、サブＣＰＵ１（１０７）は、ＰＣＢ管理部１１５によりセマフォ獲得の通知を受信する（７２３）。サブＣＰＵ３（１０９）は、セマフォ獲得の通知を受けるとＰＣＢへ対しアクセスが可能となり、受信したパケットに対するプロトコル処理を開始する（７２４）。
【０１０２】
このように、各ＣＰＵは、ロード終了通知を受け、ＰＣＢキャッシュ内の使用したいＰＣＢに対し必要に応じてセマフォ獲得リクエストを行う。例えば、ＰＣＢ内の変数を書き換える、読み出し中に変数が書き換わると不都合が生じる等の場合にセマフォ獲得リクエストを行う。ここで、セマフォ獲得リクエストが競合する場合は、調停が行われ一つのＣＰＵのみがセマフォを獲得可能にする。異なるＰＣＢに対するセマフォであれば同時に獲得することも可能である。値が変化してしまっても問題が無い変数等については、セマフォ獲得は行わずアクセスを行える。
【０１０３】
また、各ＣＰＵはＰＣＢキャッシュ内のＰＣＢへアクセスし、プロトコル処理を実行する。実行するプロトコル処理がセマフォを必要とする処理である場合、セマフォを獲得できるまで処理を開始することはできない。つまり、処理の開始が禁止される。所定の処理が完了すると、セマフォを獲得していた場合は、必ずセマフォを解放することで、他のＣＰＵがセマフォ獲得を行うことが可能となる。
【０１０４】
以上説明したように、実施形態１によれば、ＰＣＢキャッシュのキャッシュ領域毎にセマフォを割り当てることで、通信中のコネクション数に依存せず、限られたサイズのセマフォ管理テーブルでＰＣＢの排他制御（排他アクセス制御）を実現することが可能となる。
【０１０５】
実施形態１においては、各ＣＰＵのメインメモリ１０３に格納されているＰＣＢに対してはアクセスを禁止し、メインメモリ１０９が管理可能なＰＣＢより少ない所定の記憶領域を有するＰＣＢキャッシュ１０９を構成する。そして、各ＣＰＵは、ＰＣＢキャッシュ１０９に格納されたＰＣＢに対してアクセス可能とする。そして、ＰＣＢキャッシュ１０９に格納可能なＰＣＢに対するセマフォ制御を行う。このように構成することで、装置が格納している全てのＰＣＢに対してセマフォ制御を行う必要が無くとも、排他制御を実現するとともに、セマフォを管理するために必要なデータの容量を削減することが可能となる。
【０１０６】
尚、実施形態１においては、通信処理部１０５の内部にもつＰＣＢキャッシュのサイズ（キャッシュ個数）に合わせたセマフォ管理テーブルを有する構成としているが、ＣＰＵ個数に合わせたセマフォ管理であっても良い。
【０１０７】
＜実施形態２＞
ＣＰＵの個数に合わせたセマフォ管理を行う実施形態を実施形態２に示す。
【０１０８】
実施形態１と同様、図１の情報処理装置において、セマフォ管理部１２０は図８に示すセマフォ管理テーブルを有するとする。但し、実施形態２においては、各ＣＰＵが獲得できるセマフォは１つに限定される。
【０１０９】
セマフォＩＤはセマフォの識別子であり、各ＣＰＵに対して１つずつ用意される。例えば、サブＣＰＵ１が獲得するセマフォは常にセマフォＩＤ１である。
【０１１０】
コネクション番号は、どのＰＣＢに対しセマフォを獲得するかを示す。コネクション番号は、各ＣＰＵが最後に発行したＰＣＢロードリクエストのコネクション番号が反映される。
【０１１１】
例えば、サブＣＰＵ５がＰＣＢ管理部１１５へコネクション番号９のＰＣＢロード処理をリクエストした場合、セマフォＩＤ５のコネクション番号は９に更新される。その後、サブＣＰＵ５が他のＰＣＢロードリクエストを発行すると、コネクション番号は再度更新される。
【０１１２】
獲得フラグは、各ＣＰＵがセマフォを獲得しているか否かを示す。“１”値が獲得状態であることを示す。例えば、図８においては、コネクション番号３のＰＣＢのセマフォがサブＣＰＵ３により獲得されている。
【０１１３】
リクエストフラグは、各ＣＰＵがセマフォ獲得リクエストを行っているか否かを示す。“１”値が獲得リクエスト状態であることを示す。同一のコネクション番号を有するセマフォが複数存在する場合には、１つのＣＰＵのみがセマフォを獲得することができる。例えば、図８において、メインＣＰＵはセマフォ獲得リクエストを行っているが、コネクション番号３のセマフォはサブＣＰＵ３により獲得されているためセマフォを獲得することはできない。
【０１１４】
また、実施形態２においては、図８に示すセマフォ管理テーブルは各ＣＰＵにより読み出しが可能なものとする。各ＣＰＵは、セマフォの獲得状況をセマフォ管理テーブルを読み出すことにより判別できる。
【０１１５】
図８のセマフォ管理テーブルを用いる場合のセマフォ獲得処理及びセマフォ解放処理について図９のフロー図を用いて以下に説明する。
【０１１６】
各ＣＰＵによりＰＣＢ管理部１１５に対しセマフォ獲得またはセマフォ解放リクエストが発行されると、図９のフローが開始される（ステップＳ９０１）。また、実施形態１と異なり、リクエストにコネクション番号は必要としない。
【０１１７】
ステップＳ９０２において、ステップＳ９０１において受け付けたリクエストがセマフォ獲得リクエストである場合（ステップＳ９０２でＹＥＳ）、ステップＳ９０３へ進む。一方、セマフォ解放リクエストである場合（ステップＳ９０２でＮＯ）、ステップＳ９０８へ進む。
【０１１８】
ステップＳ９０３において、ＰＣＢ制御シーケンサ１１６は、セマフォ獲得リクエスト通知をセマフォ管理部１２０に行う。セマフォ獲得リクエスト通知は、リクエストを発行したＣＰＵの識別子が含まれる。セマフォ獲得リクエスト通知後、ステップＳ９０４へ進む。
【０１１９】
ステップＳ９０４において、セマフォ管理部１２０は、セマフォ管理テーブル内のセマフォ獲得リクエストを発行したＣＰＵに対応するセマフォＩＤのコネクション番号と他のセマフォＩＤのコネクションが重複しているか判別する。重複している場合（ステップＳ９０４でＹＥＳ）、ステップＳ９０５へ進む。一方、重複していない場合（ステップＳ９０４でＮＯ）、ステップＳ９０７へ進む。
【０１２０】
ステップＳ９０５において、コネクション番号が重複している他のセマフォＩＤの獲得フラグを確認する。獲得状態である場合（ステップＳ９０５でＹＥＳ）、ステップＳ９０６へ進む。一方、獲得状態でない場合（ステップＳ９０５でＮＯ）、ステップＳ９０７へ進む。
【０１２１】
ステップＳ９０６において、セマフォ管理部１２０は、セマフォ獲得リクエストを行うセマフォＩＤのリクエストフラグを“１”値に更新し、処理を終了する（ステップＳ９１２）。
【０１２２】
ステップＳ９０７において、セマフォ管理部１２０は、セマフォ獲得リクエストを行うセマフォＩＤのリクエストフラグ及び獲得フラグを“１”値に更新し、処理を終了する（ステップＳ９１２）。
【０１２３】
ステップＳ９０８において、ＰＣＢ制御シーケンサ１１６は、セマフォ解放リクエスト通知をセマフォ管理部１２０に行う。セマフォ解放リクエスト通知は、リクエストを発行したＣＰＵの識別子が含まれる。セマフォ解放リクエスト通知後、ステップＳ９０９へ進む。
【０１２４】
ステップＳ９０９において、セマフォ管理部１２０は、セマフォ管理テーブルにて解放対象であるセマフォＩＤと他のリクエストフラグが立っているセマフォＩＤのコネクション番号に、同一のものが存在するか判定を行う。存在する場合（ステップＳ９０９でＹＥＳ）、ステップＳ９１０へ進む。一方、存在しない場合（ステップＳ９０９でＮＯ）、ステップＳ９１１へ進む。
【０１２５】
ステップＳ９１０において、セマフォ管理部１２０は、セマフォ管理テーブルにて解放対象となっているセマフォＩＤの獲得フラグ及びリクエストフラグを“０”値に更新する。また、ステップＳ９０９にて判定した獲得待ち状態であったセマフォＩＤの獲得フラグを“１”値に更新し、処理を終了する（ステップＳ９１２）。獲得待ち状態にあったセマフォＩＤが複数あった場合は、任意にひとつが選択される。
【０１２６】
ステップＳ９１１において、セマフォ管理部１２０は、セマフォ管理テーブルにて解放対象となっているセマフォＩＤの獲得フラグ及びリクエストフラグを“０”値に更新し、処理を終了する（ステップＳ９１２）。
【０１２７】
以上説明したように、実施形態２によれば、ＣＰＵ毎にセマフォをあらかじめ割り当てることで、通信中のコネクション数及びキャッシュサイズに依存せず、限られたサイズのセマフォ管理テーブルでＰＣＢへの排他制御を実現可能である。
【０１２８】
尚、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014071842.tif 000003
【図２】
2014071842.tif 000004
【図３】
2014071842.tif 000005
【図４】
2014071842.tif 000006
【図５】
2014071842.tif 000007
【図６】
2014071842.tif 000008
【図７】
2014071842.tif 000009
【図８】
2014071842.tif 000010
【図９】
2014071842.tif 000011