(57)【特許請求の範囲】
【請求項１】
複数のプロセッサ間に共有メモリを設けたマルチプロセッサシステムに適用されるプロセッサ間データ通信装置において、
前記共有メモリ上でデータを操作するためのリンク接続された複数の要素および前記複数の要素の最後尾に接続された空の要素を有したキューと、
前記キューにおいてデータを登録する際に、既にある空の要素の他に新たな空の要素を確保して当該新たな空の要素を前記既にある空の要素の後方に接続した後に、前記既にある空の要素を用いてデータを登録する登録手段と、
前記キューにおいて前記複数の要素の中からデータが登録された要素を取得し、前記取得された要素からデータを読み出す取得手段と、
を備え、
前記データは、通信情報、前記要素間の接続状態を示す情報、および前記通信情報の登録有無を示す情報であり、
前記要素のメモリ領域は、前記登録手段、前記取得手段における１回のアクセスで前記データを登録／取得可能なサイズであることを特徴とするプロセッサ間データ通信装置。
【請求項２】
前記通信情報は、前記共有メモリにおける可変長のメモリ領域に書き込まれるデータを指示するポインタであることを特徴とする請求項１に記載のプロセッサ間データ通信装置。
【請求項３】
前記キューは、アクセス範囲に関して、前記登録手段側の前記空の要素と、前記取得手段側の前記複数の要素とに分離され、前記取得手段は、アクセス範囲内の要素間を繋ぐ新規の要素を追加することを特徴とする請求項１または２に記載のプロセッサ間データ通信装置。
【請求項４】
複数の前記登録手段と一つの前記取得手段とを備え、前記複数の登録手段に対応させて複数の前記共有メモリをそれぞれ接続するとともに、ぞれぞれの前記共有メモリと前記取得手段との間にマルチプレクサを一つ接続したことを特徴とする請求項１、２または３に記載のプロセッサ間データ通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ間データ通信装置および方法に関し、詳細には、複数のプロセッサ間に共有メモリを設けたマルチプロセッサシステムに適用され、共有メモリ上のキューを介してプロセッサ間で通信するプロセッサ間データ通信装置、プロセッサ間データ通信方法およびデータ処理装置に関する。
【０００２】
近年、大規模なマルチプロセッサシステムが実用化されるとともに、複数のプロセッサを用いるソフトウェア技術が進歩している。このマルチプロセッサシステムは、複数のプロセッサと共有メモリから構成されており、複数のプロセッサを並列に動作させることで、処理速度やスループット、信頼性を向上させ、単一プロセッサに比べて高性能の計算機システムを構成するものである。ここで、マルチプロセッサシステムにおいては、プロセッサ間でデータの一貫性を保ことが不可欠であり、共有メモリ上のキューを用いて様々な手法により上記一貫性を維持している。
【０００３】
【従来の技術】
図１４は、従来におけるマルチプロセッサシステムの構成を示すブロック図である。この図に示したマルチプロセッサシステムは、説明上、書き込み側と読み出し側にそれぞれ一つずつ書き込みプロセッサ１、読み出しプロセッサ２を設け、これらの書き込みプロセッサ１および読み出しプロセッサ２は、データバスＢを介して共有メモリ３に共にアクセス可能に接続されている。この共有メモリ３は、書き込みプロセッサ１および読み出しプロセッサ２との間で共有される資源としてのメモリである。なお、プロセッサはシステムの規模に応じて三つ以上設けられる場合がある。
【０００４】
上記書き込みプロセッサ１は、各種演算を行う演算処理部１ａ、データバスＢを介して共有メモリ３からデータを読み出すデータ読出部１ｂ、データバスＢを介して共有メモリ３にデータを書き込むデータ書込部１ｃを有している。同様にして、読み出しプロセッサ２は、演算処理部２ａ、データ読出部２ｂおよびデータ書込部２ｃを有している。
【０００５】
以下においては、データバスＢおよび共有メモリ３を介して、書き込みプロセッサ１から読み出しプロセッサ２へのデータ通信を行う例について説明する。この通信は、プロセッサ間のデータの一貫性を維持すべく、図１５に示したように共有メモリ３上のキュー（待ち行列）４を介して行われる。すなわち、通信データは、書き込みプロセッサ１により共有メモリ３に書き込まれた後、読み出しプロセッサ２により読み出されることで、書き込みプロセッサ１から読み出しプロセッサ２へ転送されるのである。
【０００６】
ここで、書き込みプロセッサ１は、
Ａ１．通信のためのメモリ領域の確保、
Ａ２．上記メモリ領域への通信データ（情報）の書き込み、
Ａ３．確保したメモリ領域をキュー４へ登録、
という操作を行う。
【０００７】
具体的には、（Ａ１．）の操作では、共有メモリ３において、読み出しプロセッサ２へ転送すべき通信データ（情報）を書き込むためのメモリ領域が確保される。（Ａ２．）の操作では、（Ａ１．）の操作において確保されたメモリ領域に通信データが書き込まれる。さらに、（Ａ３．）の操作では、（Ａ１．）の操作において確保されたメモリ領域がキュー４に登録される。ここで、メモリ領域およびキュー４は共有メモリ３上に存在し、複数のプロセッサから参照されるため、後述する排他的ロックで保護する必要がある。
【０００８】
さらに、上述した（Ａ３．）の操作は、具体的には、
Ａ３−１．キュー４を保護している排他的ロックを取得、
Ａ３−２．キュー４の操作、
Ａ３−３．キュー４を保護している排他的ロックの解除、
という手順を踏む。
【０００９】
また、読み出しプロセッサ２は、
Ｂ１．キュー４からメモリ領域を取得、
Ｂ２．上記メモリ領域からの通信データ（情報）の読み出し、
Ｂ３．通信完了（読み出し完了）時にメモリ領域を解放、
という操作を行う。
【００１０】
具体的には、（Ｂ１．）の操作では、共有メモリ３において、読み出しプロセッサ２により通信データが書き込まれたメモリ領域が取得される。（Ｂ２．）の操作では、（Ｂ１．）の操作において取得されたメモリ領域から通信情報が読み出される。さらに、（Ｂ３．）の操作では、（Ｂ１．）の操作において取得されたメモリ領域が解放される。
【００１１】
上記（Ｂ１．）の操作も、書き込みプロセッサ１と同様に、
Ｂ１−１．キュー４を保護している排他的ロックを取得、
Ｂ１−２．キュー４の操作、
Ｂ１−３．キュー４を保護している排他的ロックの解除、
の手順を踏む。
【００１２】
つぎに、図１６（ａ）〜（ｃ）を参照して、従来のマルチプロセッサシステムにおけるキュー４（図１５参照）の構造、および書き込み／読み出し動作について詳述する。図１６（ａ）に示したキュー４は、数珠つなぎに連結された要素５ａ、５ｂ、５ｃと、これらの要素５ａ、５ｂ、５ｃにそれぞれ対応するメモリ領域６ａ、６ｂ、６ｃと、登録箇所情報領域７と、取得箇所情報領域８とを有している。上記要素５ａには、接続先が要素５ｂであることを示す接続情報が書き込まれており、同様にして、要素５ｂにも、接続先が要素５ｃであることを示す接続情報が書き込まれている。すなわち、要素５ａ、５ｂ、５ｃにおける接続関係は、上記接続情報により定義付けられている。
【００１３】
メモリ領域６ａ、６ｂおよび６ｃには、書き込みプロセッサ１（図１５参照）により通信データがぞれぞれ登録される（書き込まれる）。さらに、メモリ領域６ａ、６ｂおよび６ｃに登録された各通信データは、読み出しプロセッサ２（図１５参照）により取得される（読み出される）。登録箇所情報領域７には、書き込みプロセッサ１による通信データの登録箇所（要素、メモリ領域）に関する登録箇所情報が書き込まれ、さらにこの登録箇所情報により指定されるメモリ領域には、通信データが書き込まれる。取得箇所情報領域８には、読み出しプロセッサ２による通信データの取得箇所（要素、メモリ領域）に関する取得箇所情報が書き込まれる。
【００１４】
図１６（ｂ）は、書き込みプロセッサ１による登録時のキュー４の操作を説明する図である。この登録時においては、前述した排他的ロックをキュー４にかけることにより、書き込みプロセッサ１のみがキュー４の操作を行う。この排他的ロックは、キュー４を書き込みプロセッサ１以外のプロセッサ（この場合、読み出しプロセッサ２）から保護するものである。この図において、書き込みプロセッサ１は、排他的ロックを取得した後、メモリ領域６ｄ（要素５ｄ）を確保する。つぎに、書き込みプロセッサ１は、上記メモリ領域６ｄに通信データを書き込んだ後、登録箇所情報領域７に書き込まれている登録箇所情報に変更を加える操作を行う。
【００１５】
具体的には、この場合、登録箇所情報領域７にメモリ領域６ｃ（要素５ｃ）に関する登録箇所情報が書き込まれているものとすると、書き込みプロセッサ１は、上記登録箇所情報を、つぎの登録先であるメモリ領域６ｄ（要素５ｄ）に関する登録箇所情報に更新する。ここで、いずれのメモリ領域にも通信情報が書き込まれていない場合には、書き込みプロセッサ１は、登録箇所情報領域７の登録箇所情報に対する操作に加えて、取得箇所情報領域８の取得箇所情報に対する操作も行う。さらに、書き込みプロセッサ１は、要素５ｃと要素５ｄとの接続関係を定義付ける接続情報に対する操作を行った後、排他的ロックを解除する。
【００１６】
一方、図１６（ｃ）は、読み出しプロセッサ２による取得時のキュー４の操作を説明する図である。この取得時においては、書き込みプロセッサ１と同様にして、排他的ロックをキュー４にかけることにより、書き込みプロセッサ２のみがキュー４の操作を行う。この図において、読み出しプロセッサ２は、排他的ロックを取得した後、取得箇所情報領域８の取得箇所情報に基づいて、メモリ領域６ａ（要素５ａ：図１６（ａ）参照）を取得する。つぎに、読み出しプロセッサ２は、上記メモリ領域６ａに書き込まれている通信データを読み込んだ後、このメモリ領域を解放する。そして、読み出しプロセッサ２は、取得箇所情報領域８に書き込まれている取得箇所情報に変更を加える操作を行う。
【００１７】
具体的には、この場合、取得箇所情報領域８にメモリ領域６ａ（要素５ａ）に関する取得箇所情報が書き込まれているものとすると、読み出しプロセッサ２は、上記取得箇所情報を、つぎの取得先であるメモリ領域６ｂ（要素５ｂ）に関する取得箇所情報に更新する。ここで、いずれのメモリ領域にも通信情報が書き込まれていない場合には、読み出しプロセッサ２は、取得箇所情報領域８の取得箇所情報に対する操作に加えて、登録箇所情報領域７の登録箇所情報に対する操作も行う。さらに、読み出しプロセッサ２は、図１６（ａ）に示した要素５ａと要素５ｂとの接続を解除すべく、接続情報に対する操作を行った後、排他的ロックを解除する。このように、書き込みプロセッサ１および読み出しプロセッサ２は、（Ａ）接続情報、（Ｂ）登録箇所情報、（Ｃ）取得箇所情報という三つの情報に対する操作をそれぞれ行う。
【００１８】
【発明が解決しようとする課題】
上述したように従来のプロセッサシステムにおいては、たとえば（Ａ３−１．）と（Ａ３−３．）の排他的ロックに関する操作（取得／解除）や、（Ｂ１−１．）と（Ｂ１−３．）の排他的ロックに関する操作（取得／解除）はどちらもメモリ読み出しや書き込み等の通常のメモリ操作に比べて長い時間を必要とするので、処理速度の低下を招くという問題があった。
【００１９】
実際に、書き込みプロセッサ１と読み出しプロセッサ２とは排他的ロックを介して、扱うデータを保護しながら通信を行っており、この排他的ロックに複数のプロセッサのアクセスが集中することがソフトウェアの性能を下げる原因となっている。ここで、アクセスが集中しない場合でも、排他的ロックに関する操作は通常のメモリアクセスに比べ１００倍〜１０００倍もの時間がかかることから、細やかなデータを扱う場合には無視できない。
【００２０】
また、排他的ロックの代りにキュー４に対して書き込み操作と読み込み操作を不可分に行う操作により、同様に排他的なメモリ保護を行う方式もあるが、この場合にも排他的ロックと同様にして処理時間が長くなってしまうため、根本的な解決にはならない。
【００２１】
本発明は、上述した従来例による問題を解消するため、共有メモリを介すマルチプロセッサ間でキューを介する通信において、排他的ロックに関する操作を不要にして、処理速度を高速化することが可能なプロセッサ間データ通信装置、プロセッサ間データ通信方法およびデータ処理装置を提供することを目的とする。
【００２２】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、請求項１にかかる発明は、複数のプロセッサ間に共有メモリ（後述する実施の形態１の共有メモリ３に相当）を設けたマルチプロセッサシステムに適用されるプロセッサ間データ通信装置において、前記共有メモリ上でデータを操作するためのリンク接続された複数の要素および前記複数の要素の最後尾に接続された空の要素を有したキュー（後述する実施の形態１のキュー１０に相当）と、前記キューにおいてデータを登録する際に、既にある空の要素の他に新たな空の要素を確保して当該新たな空の要素を前記既にある空の要素の後方に接続した後に、前記既にある空の要素を用いてデータを登録する登録手段（後述する実施の形態１の書き込みプロセッサ１に相当）と、前記キューにおいて前記複数の要素の中からデータが登録された要素を取得し、前記取得された要素からデータを読み出す取得手段（後述する実施の形態１の読み出しプロセッサ２に相当）とを備え、前記データは、通信情報、前記要素間の接続状態を示す情報、および前記通信情報の登録有無を示す情報であり、前記要素のメモリ領域は、前記登録手段、前記取得手段における１回のアクセスで前記データを登録／取得可能なサイズであることを特徴とする。
【００２３】
この請求項１にかかる発明によれば、共有メモリ上でデータを操作するためのリンク接続された複数の要素およびこの複数の要素の最後尾に接続された空の要素を有したキューにおいて、データ登録の際に、登録手段により、既にある空の要素の他に新たな空の要素を確保して新たな空の要素を既にある空の要素の後方に接続した後に、１アクセスでデータ（通信情報、前記要素間の接続状態を示す情報、および前記通信情報の登録有無を示す情報）を登録する一方、取得手段により複数の要素のうちでデータを登録した要素を取得してその取得された要素からデータ（通信情報、前記要素間の接続状態を示す情報、および前記通信情報の登録有無を示す情報）を１アクセスで読み出すようにすることで、複数のプロセッサが同時にキュー操作する領域が分離され、これにより、排他的ロックの操作が不要となって処理速度を向上させることが可能である。
【００２６】
また、請求項２にかかる発明は、請求項１に記載のプロセッサ間データ通信装置において、前記通信情報は、前記共有メモリにおける可変長のメモリ領域に書き込まれるデータを指示するポインタであることを特徴とする。
【００２７】
この請求項２にかかる発明によれば、通信情報としてポインタを用いることにより、排他的ロックの操作を不要として、データサイズが要素のサイズより大きいデータを扱うことができる。
【００２８】
また、請求項３にかかる発明は、請求項１または２に記載のプロセッサ間データ通信装置において、前記キューは、アクセス範囲に関して、前記登録手段側（後述する実施の形態２の書き込みプロセッサ１に相当）の前記空の要素と、前記取得手段側の前記複数の要素とに分離され、前記取得手段（後述する実施の形態２の読み出しプロセッサ２に相当）は、アクセス範囲内の要素間を繋ぐ新規の要素を追加することを特徴とする。
【００２９】
この請求項３にかかる発明によれば、キューにおいてアクセス範囲に関して登録手段側の空の要素と取得手段側の要素とに分離されるので、取得手段側の要素に対して登録手段がアクセスできないことから、排他的ロックの操作を伴うことなく、新規の要素を追加するための登録手段として取得手段が機能する。
【００３０】
また、請求項４にかかる発明は、請求項１、２または３に記載のプロセッサ間データ通信装置において、複数の前記登録手段（後述する実施の形態３の書き込みプロセッサ１Ａ〜１Ｄに相当）と一つの前記取得手段（後述する実施の形態３の読み出しプロセッサ２に相当）とを備え、前記複数の登録手段に対応させて複数の前記共有メモリをそれぞれ接続するとともに、ぞれぞれの前記共有メモリと前記取得手段との間にマルチプレクサ（後述する実施の形態３のマルチプレクサ２０に相当）を一つ接続したことを特徴とする。
【００３１】
この請求項４にかかる発明によれば、複数の登録手段にそれぞれ独立した共有メモリを接続するとともに、それぞれの共有メモリと前記取得手段との間にマルチプレクサを一つ接続したので、それぞれの共有メモリのキューに対して各登録手段による排他的ロックに関する操作を行うことなく、処理速度が向上した登録手段多数／取得手段１の構成とすることが可能となる。
【００３２】
【発明の実施の形態】
以下に添付図面を参照して、本発明にかかるプロセッサ間データ通信装置、プロセッサ間データ通信方法およびデータ処理装置の好適な実施の形態１〜４を詳細に説明する。
【００３３】
（実施の形態１）
まず、原理について説明する。この実施の形態１では、本発明にかかるプロセッサ間データ通信装置を共有メモリを持つ汎用のマルチプロセッサシステムに適用させたものである。この実施の形態１のマルチプロセッサシステムは、新規のハードウェアを追加することなく排他的ロックの必要性を排除し、プロセッサ間のキュー操作を高速に実現するものである。
【００３４】
なお、この実施の形態１においては、ハードウェア構成が前述した図１４に示した構成と同一であるため、その符号を用いて説明する。ただし、この実施の形態１においては、従来のものに比較して、共有メモリ３のキュー構造、書き込みプロセッサ１および読み出しプロセッサ２の各機能が異なる。このキュー構造および各機能については後に詳述する。
【００３５】
ここで、前述したように、書き手プロセッサと読み手プロセッサが異なる場合は、プロセッサ間でデータの一貫性を保つために、同時にキューをアクセスできるプロセッサをただ一つに制限する必要がある。排他的ロックはこのアクセス制限のための手段であり、複数のプロセッサから操作されるキューを操作するためにはこの排他的ロックに関する操作が必要とされる。
【００３６】
この実施の形態１では、キューを操作する各プロセッサについて、それぞれのプロセッサが同時にキューを操作する領域を極力分離することにより、保護の必要な領域を縮小することで、特別の装置を持たない一般的なハードウエアの場合にも、排他的ロックに関する操作の必要性を排除するものである。
【００３７】
データ通信におけるキューの操作は大別して、
（１）キューの要素の登録と取得、
（２）通信情報の書き込み（登録）と読み出し（取得）、
という異なる２種の操作に分類される。
【００３８】
上記（１）キューの要素の登録と取得においては、前述したように、
（Ａ）キューの要素間の接続情報、
（Ｂ）キューへの登録箇所を示す登録箇所情報、
（Ｃ）キューからの取得箇所を示す取得箇所情報、
という三つの情報に対する操作が必要となる。
【００３９】
従来のものでは、書き込みプロセッサ１および読み出しプロセッサ２が共にこれらの三つの情報を読み／書きする操作が必要があったため、排他的ロックによる保護が不可欠であった。これに対して、実施の形態１では、情報を有する通常の要素とは別に、キューの登録箇所に「空の要素」を登録することで、書き込みプロセッサ１が操作する情報は、上述した三つの情報のうち、（Ａ）接続情報および（Ｂ）登録箇所情報という二つの情報に限られる。同様にして、読み出しプロセッサ２が操作する情報も、三つの情報のうち（Ａ）接続情報および（Ｃ）取得箇所情報に限られる。
【００４０】
このように、実施の形態１では、「空の要素」を通常の要素とは別に登録することにより、書き込みプロセッサ１と読み出しプロセッサ２とにより、共通に操作される情報は、三つの情報のうち（Ａ）接続情報のみとなる。この段階では、上記（Ａ）接続情報に対して排他的ロックによる保護が必要となるが、実施の形態１においては、さらに、書き込みプロセッサ１が（Ａ）接続情報に対して書き操作のみを行う一方、読み出しプロセッサ２が（Ａ）接続情報に対して読み操作のみを行うようにしている。
【００４１】
しかも、実施の形態１においては、書き込みプロセッサ１および読み出しプロセッサ２が１回のアクセスで書き込み／読み出しが可能な最大のメモリ領域（例えば、８バイト）をキューの要素としている。ここで、上記メモリ領域の単位を１アクセス単位と称する。このように、（Ａ）接続情報を１アクセス単位のキューの要素に組み込むことにより、書き込みプロセッサ１／読み出しプロセッサ２は、１回のアクセスで（Ａ）接続情報の書き込み／読み出しをぞれぞれ行うことができる。従って、実施の形態１においては、（Ａ）接続情報の操作に対して排他的ロックによる保護を行う必要がなくなる。
【００４２】
さらに、実施の形態１では、書き込みプロセッサ１により、前記（２）通信情報がメモリ領域に全て書き込まれたか否かを示す書込完了情報が、上述した１アクセス単位の要素に書き込まれる。特に、データ量が少ない通信情報ならば書き込まれた上記通信情報自体が書き込み終了の情報になり得る。一方、読み出しプロセッサ２は、書込完了情報を読み取って、通信情報の読み込みが可能かどうかを判断する。この手法は、上述した（１）と同様にして排他的ロックによる保護の必要性を排除するものである。
【００４３】
また、上述した接続情報、通信情報および書込完了情報という三つの情報は、１アクセス単位の要素に収まるようになっており、書き込みプロセッサ１は上記三つの情報を要素に書き込む操作を１回のアクセスですべて完了させることができる。すなわち、書き込みプロセッサ１は、接続情報の書き込み操作、通信情報の書き込み操作、および書込完了情報の書き込み操作という三つの操作を１回のアクセスで不可分に行う。
【００４４】
同様にして、読み出しプロセッサ２も上記三つの情報を要素からそれぞれ読み出す三つの操作を１回のアクセスで不可分に行う。このように、実施の形態１では、前記（１）と（２）のメモリ操作に必要な領域を１アクセス単位の要素（メモリ領域）に押し込めることで、それぞれの操作を一回のメモリアクセスで同時に行えるため、結論として排他的ロックに関する操作を行うことなく、全体のキュー操作を行うことができる。
【００４５】
つづいて、以下に具体例を挙げて説明する。図１は本発明の実施の形態１によるプロセッサ間データ通信装置を概略的に説明する構成図である。なお、プロセッサシステムの全体構成については、説明上、従来の図１４および図１５と同様に書き込みプロセッサを１、読み出しプロセッサを２とする。図１において、キュー１０は、共有メモリ３（図１４参照）上に存在しており、その構造は、前述したキュー４と異なる。
【００４６】
すなわち、キュー１０は、数珠つなぎ状の要素１１ａ、要素１１ｂおよび「空の」要素１１ｃから構成されている。上記要素１１ａは、書き込みプロセッサ１／読み出しプロセッサ２が１回のアクセスで書き込み／読み出しが可能な最大のメモリ領域である。このメモリ領域は、前述した１アクセス単位の領域であり、例えば、８バイト分のデータ書き込み／読み出しが１回のアクセスで可能とされている。さらに、要素１１ａは、４バイト分の通信情報領域１２ａ、同じく４バイト分のマーク領域１３ａから構成されている。
【００４７】
この通信情報領域１２ａには、４バイト以内の通信データ、または４バイトを超える大容量の通信データが格納される可変長のメモリ領域（図示略）を示すポインタが書き込みプロセッサ１により書き込まれる。ここで、上記通信データ、ポインタを総称して通信情報と称する。従って、以下の説明においては、通信情報領域１２ａには、上記通信情報（図中網点で示す）が書き込まれているものとする。
【００４８】
マーク領域１３ａには、要素１１ａとつぎの要素１１ｂとの接続関係を示す接続情報（リンクポインタ：図中矢印で示す）、通信情報領域１２ａに通信情報が書き込まれているか否かを表す書込完了情報（２値表現フラグ）がマークとして書き込まれている。この書込完了情報（フラグ）により、通信情報が通信情報領域１２ａに書き込まれていない状態と、通信情報が書き込まれている状態とを表現できる。
【００４９】
また、上記マークは、通信情報領域１２ａに通信情報が書き込まれていない初期状態では、初期化されている。これらの通信情報およびマークは、書き込みプロセッサ１における１回のアクセスで同時に、要素１１ａの通信情報領域１２ａおよびマーク領域１３ａにぞれぞれ書き込まれる。同様にして、通信情報およびマークは、読み出しプロセッサ２における１回のアクセスで同時に読み込まれる。
【００５０】
要素１１ｂは、１アクセス単位のメモリ領域であり、要素１１ａと同様にして、通信情報が書き込まれた通信情報領域１２ｂ（４バイト）、およびマークが書き込まれたマーク領域１３ｂから構成されている。また、上記マークは、通信情報領域１２ａに通信情報が書き込まれているか否かの状態を示す書込完了情報、および要素１１ｂとつぎの「空の」要素１１ｃとの接続関係を示す接続情報とからなる。要素１１ｃは、要素１１ｂに接続されており、８バイトのメモリ領域である。この要素１１ｃは、要素１１ａと同様にして通信情報領域１２ｃおよびマーク領域１３ｃを備えているが、これらの通信情報領域１２ｃおよびマーク領域１３ｃには、いずれの情報も書き込まれておらず、空きの状態とされている（図中、斜め線で示す）。
【００５１】
また、キュー１０は、「空の」要素１１ｃを常に一つ持つことで特徴づけられる。キュー１０に新たな要素単位を追加した場合にも「空の」要素単位が一つである状態が保たれる。このように、書き込みプロセッサ１と読み出しプロセッサ２の間には、書き込みプロセッサ１から読み出しプロセッサ２に通信データを転送するためのキュー１０が設けられている。
【００５２】
つぎに、書き込みプロセッサ１におけるキュー１０への登録動作について図２〜図４を参照しつつ説明する。図２および図３はキュー１０への登録時のデータの流れを説明する図であり、図４はキュー１０への登録動作を説明するフローチャートである。まず、書き込みプロセッサ１はキュー１０に対して通信情報を登録するために以下の手順を取る。
【００５３】
前提として、キュー１０は、図２に示したように、要素１１ａおよびこれに接続された「空の」要素１１ｂから構成されているものとする。すなわち、この場合、「空の」要素１１ｂの通信情報領域１２ｂおよびマーク領域１３ｂには、通信情報およびマークが書き込まれていない。このような状態において、まず、書き込みプロセッサ１は、図４に示したステップＳ１０１では、「空の」要素１１ｂとは別に、「空の」要素１１ｃ（Ｅｎｅｗ）を新たに確保（図２参照）した後、ステップＳ１０２へ進む。
【００５４】
つぎに、書き込みプロセッサ１は、キュー１０に登録されている「空の」要素１１ｂ（Ｅｏｌｄ）に対して１回のアクセスを行うことで、ステップＳ１０２〜ステップ１０４からなる三つの操作を同時に行う。このように三つの操作を同時に行うことができるのは、要素１１ｂが１アクセス単位のメモリ領域とされているからである。
【００５５】
上記三つの操作において、図３に示したように書き込みプロセッサ１は、「空の」要素１１ｂ（Ｅｏｌｄ）の通信情報領域１２ｂに通信情報を書き込む（ステップＳ１０２）と同時に、「空の」要素１１ｂ（Ｅｏｌｄ）のマーク領域１３ｂにマークを書き込み（ステップＳ１０３）、さらに、要素１１ｂ（Ｅｏｌｄ）と新たな「空の」要素１１ｃ（Ｅｎｅｗ）との接続を実施する（ステップＳ１０４）。
【００５６】
ここで、要素１１ｂのマーク領域１３ｂには、要素１１ｂに通信情報が書き込まれていることを示す書込完了情報、および要素１１ｂと「空の」要素１１ｃとの接続関係を示す接続情報が書き込まれている。このように、以上のステップＳ１０２〜ステップＳ１０４の操作が不可分（同時）に行われるため、書き込みプロセッサ１から書き込まれた通信情報と読み出しプロセッサ２が読み取る通信情報の間では常に一貫性が保たれる。
【００５７】
つぎに、読み出しプロセッサ２におけるキュー１０からの取得動作について図５〜図７を参照しつつ説明する。図５はキュー１０からの通信情報の取得に失敗した例を説明する図であり、図６はキュー１０からの通信情報の取得に成功した例を説明する図である。また、図７は、キュー１０からの取得動作を説明するフローチャートである。
【００５８】
図５においては、要素１１ｂに対して読み出しプロセッサ２がアクセスした例について図示されている。この場合、要素１１ｂは「空の」要素であるものとし、従って、要素１１ｂの通信情報領域１２ｂおよびマーク領域１３ｂには、通信情報およびマークが書き込まれていない。
【００５９】
このような状態において、読み出しプロセッサ２はキュー１０から通信情報を取得するために以下の手順を取る。まず、読み出しプロセッサ２は、図５に示した要素１１ｂにアクセスすることで、図７に示したステップＳ２０１の操作を行う。すなわち、ステップＳ２０１では、読み出しプロセッサ２は、要素１１ｂのマーク領域１３ｂのマークに基づいて、書き込み済みの要素単位があるか否かを判断する。
【００６０】
ここで、読み出しプロセッサ２は、要素１１ｂの通信情報領域１２ｂに通信情報が書き込まれているか否かをマークに基づいて判断する。この場合、読み出しプロセッサ２は、マークが書き込まれていないため、ステップＳ２０１の判断結果を「ＮＯ」として、「空の」要素１１ｂに対するアクセスを終了する。すなわち、この場合、読み出しプロセッサ２は、通信情報の取得に失敗したのである。
【００６１】
一方、図６に示した例では、読み出しプロセッサ２は、ステップＳ２０１においてキュー１０に書き込み済みの要素があるかどうかを確認し（図６のＭ１）、ステップＳ２０１で書き込み済みのキュー要素があれば、ステップＳ２０２においてそのキュー要素から通信情報を読み込む（図６のＭ２）。さらに、読み出しプロセッサ２は、ステップＳ２０３で通信完了の手続きを行い（図６のＭ３）、取得動作を終了する。
【００６２】
具体的には、図６に示したように、要素１１ｂの通信情報領域１２ｂおよびマーク領域１３ｂにそれぞれ通信情報およびマークが書き込まれているものとする。この状態で、読み出しプロセッサ２が同図に示す要素１１ｂにアクセスすると、図７に示したステップＳ２０１およびステップＳ２０２の操作を同時に行う。すなわち、ステップＳ２０１では、読み出しプロセッサ２は、要素１１ｂのマーク領域１３ｂのマークから、通信情報が通信情報領域１２ｂに書き込まれていると認識して、判断結果を「ＹＥＳ」とし、ステップＳ２０２の操作を行い、その後ステップＳ２０３の操作を行う。
【００６３】
すなわち、読み出しプロセッサ２は、要素１１ｂの通信情報領域１２ｂから通信情報を読み込み（ステップＳ２０２）、要素１１ｂを登録からはずすことで、通信完了の手続きを行い（ステップＳ２０３）、取得動作を終了する。ここで、このようにステップＳ２０１およびステップＳ２０２の二つの操作を同時に行うことができるのは、要素１１ｂが１アクセス単位のメモリ領域とされているからである。以上の手順により、異なる２プロセッサ間（書き込みプロセッサ１、読み出しプロセッサ２）で排他的ロックを用いないキュー１０を実現することできる。
【００６４】
以上説明したように、本実施の形態１によれば、共有メモリ３上でデータを操作するための複数の要素を有したキュー１０において、登録の際に、複数の要素間で「空の」要素を確保して、「空の」要素を用いてデータを登録し、取得の際に、複数の要素のうちでデータを登録した要素を取得してその取得された要素からデータを読み出すようにするとともに、要素を１アクセス単位としている。これにより、複数のプロセッサが同時にキュー操作する領域が分離されるので、排他的ロックに関する操作が不要となって処理速度を向上させることができる。
【００６５】
また、マルチプロセッサシステムに本実施の形態１を適用することにより、複数プロセッサ間でデータの交換を行うためのソフトウェアの性能を向上することができる。今後このようなマルチプロセッサシステムは、性能を求められるような場面で主流を占めることになるが、そのようなシステムでは、本実施の形態１のような装置が、ＯＳ（オペレーティングシステム）などの基幹ソフトウェアからアプリケーションまでの広い範囲に渡って、高速化するために必要とされる。加えて、キュー１０に通信情報の登録有無や、接続情報を示すマークとを用いるようにしたので、キュー１０の管理能力を向上させることが可能である。
【００６６】
なお、上述した実施の形態１においては、例えば、通信情報領域１２ａ（図１参照）に書き込まれる通信情報として、４バイト以内の通信データ、または４バイトを超えるデータ量の通信データのポインタの２種類があることを述べた。ここで、通信情報としてポインタを通信情報領域１２ａに書き込んだ場合にも、上述した排他的ロックの操作が不要となる。すなわち、上記ポインタを用いることにより、４バイト以上の通信データに関しても、排他的ロックの操作が不要となる。
【００６７】
（実施の形態２）
さて、前述の実施の形態１では、書き込みプロセッサ１側でキュー要素単位を追加する手法を説明したが、読み出しプロセッサ２側でも同様にキュー要素単位を追加してもよい。図８は本発明の実施の形態２によるプロセッサ間データ通信装置のアクセス方法を説明する図である。本実施の形態２では、図１に示したキュー１０について、読み出しプロセッサ２と書き込みプロセッサ１とのそれぞれのアクセス範囲が、同図境界線Ｌで分離されている。すなわち、読み出しプロセッサ２は、要素１１ａおよび要素１１ｂに対してアクセスする一方、書き込みプロセッサ１は、「空の」要素１１ｃに対してアクセスする。
【００６８】
このようにアクセス範囲が分離されていることから、読み出しプロセッサ２は、前述した本来の読み出し機能の他に、書き込み機能を持たせることで、自身のアクセス範囲内において排他的ロックを必要とせずに、要素１１ｂと「空の」要素１１ｃとの間に新たな要素１１ｄを追加することが可能となる。ここで、読み出しプロセッサ２に読み出し／書き込み機能の両機能を持たせるためには、図１４に示したデータ読出部２ｂおよびデータ書込部２ｃをそれぞれ動作させればよい。
【００６９】
ここで、上記動作について具体的に説明する。図９は本実施の形態２による登録動作を説明するフローチャートである。図９に示したステップＳ３０１では、読み出しプロセッサ２は、図８に示した新たな要素１１ｄを確保した後、ステップＳ３０２へ進む。上記新たな要素１１ｄは、要素１１ａと同様にして、通信情報領域１２ｄおよびマーク領域１３ｄを備えている。ステップＳ３０２では、読み出しプロセッサ２は、書き込みプロセッサ１のキュー１０への登録位置の前に、上記新たな要素１１ｄを登録する。
【００７０】
すなわち、読み出しプロセッサ２は、要素１１ｂのマーク領域１３ｂの位置情報を、要素１１ｂと要素１１ｄとの接続状態を示す位置情報に更新するとともに、要素１１ｄのマーク領域１３ｄの位置情報を、要素１１ｄと要素１１ｃとの接続状態を示す位置情報に更新する。これにより、排他的ロックに関する操作が不要な書き手２（書き込みプロセッサ１および読み出しプロセッサ２）／読み手１（読み出しプロセッサ２）のキューを実現することができる。
【００７１】
（実施の形態３）
さて、前述した実施の形態１、２では、書き手１（書き込みプロセッサ１）／読み手１（読み出しプロセッサ２）、書き手２（書き込みプロセッサ１および読み出しプロセッサ２）／読み手１（読み出しプロセッサ２）のキューを実現していたが、本発明はこれに限定されず、以下に説明する実施の形態３のように、書き手多数／読み手１のキューを実現してもよい。
【００７２】
まず、構成について説明する。図１０は本発明の実施の形態３によるプロセッサ間データ通信装置を示すブロック図である。たとえば書き手が４であれば、図１０に示したように、書き込みプロセッサ１Ａ、１Ｂ、１Ｃ、１Ｄは、４台用意される。本プロセッサ間データ通信装置は、これら４台の書き込みプロセッサ１Ａ、１Ｂ、１Ｃ、１Ｄにそれぞれ共有メモリ３Ａ、３Ｂ、３Ｃ、３Ｄをそれぞれ接続させ、マルチプレクサ２０を介して１台の読み出しプロセッサ２に接続させた構成である。
【００７３】
上記共有メモリ３Ａ、３Ｂ、３Ｃおよび３Ｄは、それぞれキュー１０（図１参照）と同様の構造を有するキュー１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄを備えている。また、マルチプレクサ２０は、読み出しプロセッサ２と、キュー１０Ａ、１０Ｂ、１０Ｃ、１０Ｄとの各接続状態を切り替えるものである。このように、図１０においては、書き込みプロセッサ１Ａ、１Ｂ、１Ｃおよび１Ｄに対応させて、キュー１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄをそれぞれ用意している。
【００７４】
また、書き込みプロセッサ１Ａ、１Ｂ、１Ｃおよび１Ｄは、キュー１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄにおける登録用の各要素にそれぞれ結合されている。さらに、キュー１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄにおける取得用の各要素には、マルチプレクサ２０を介して、読み出しプロセッサ２が結合されている。このように、構成することにより全体として書き手多数／読み手１のキュー構造を構築することができる。
【００７５】
つぎに、動作について説明する。図１１は本実施の形態３による読み出しプロセッサ２の取得動作を説明するフローチャートである。図１１に示したステップＳ４０１では、読み出しプロセッサ２は、マルチプレクサを介してキュー１０Ａ、１０Ｂ、１０Ｃ、１０Ｄにおいて通信情報が書き込まれた要素があるか否かを、実施の形態１（図７：ステップＳ２０１参照）と同様にして判断し、無ければ判断結果を「ＮＯ」として取得動作を終了する。この場合、例えば、キュー１０Ａの要素に通信情報が書き込まれているものとすると、読み出しプロセッサ２は、ステップＳ４０１の判断結果を「ＹＥＳ」として、ステップＳ４０２へ進む。
【００７６】
ステップＳ４０２では、マルチプレクサ２０により、上記キュー１０Ａが選択された後、つづくステップＳ４０３においては、このキュー１０Ａの要素から、実施の形態１（図７：ステップＳ２０２参照）と同様にして、通信情報を読み込む。さらに、読み出しプロセッサ２は、ステップＳ４０４においてキュー１０Ａの要素に対して通信完了の手続きを行う（図７ステップＳ２０３参照）。
【００７７】
以上の手順により、書き手多数／読み手１間で排他的ロックに関する操作を行うことなくキュー操作を実現することができる。すなわち、図１のキュー１０と同一構造のキュー１０Ａ〜１０Ｄを各書き込みプロセッサ１Ａ〜１Ｄにそれぞれ対応付けることにより、任意のプロセッサ間において排他的ロックに関する操作を行うことなく、キューを介した通信を実現することができる。
【００７８】
（実施の形態４）
さて、前述した実施の形態１〜３では、排他的ロックに関する操作をまったく行わずにキューを介しての通信を実現する手法を挙げていたが、本発明はこれに限定されず、以下に説明する実施の形態４のように、従来のものに比して、処理速度を減少させない範囲で、一部排他的ロックに関する操作を行うことにより、書き手多数／読み手１の構成をとるようにしてもよい。
【００７９】
まず、構成について説明する。図１２は本発明の実施の形態４によるプロセッサ間データ通信装置を示すブロック図である。この図において、前述した実施の形態３と本実施の形態４とを対比させるため、図１０の各部に対応する部分には、同一の符号を付ける。図１２に示したプロセッサ間データ通信装置は、４台の書き込みプロセッサ１Ａ、１Ｂ、１Ｃ、１Ｄに１台の共有メモリ３を接続させ、さらに、この共有メモリ３に読み出しプロセッサ２を接続させた構成である。すなわち、図１２においては、書き手４／読み手１の構成が図示されている。また、共有メモリ３のキュー１０（図１参照）において、登録用の要素には、書き込みプロセッサ１Ａ、１Ｂ、１Ｃ、１Ｄのうちいずれか一つが結合される。
【００８０】
この場合、結合される書き込みプロセッサは、他の書き込みプロセッサがキュー１０に対する操作を行えないようにするために、排他的ロック３０をキュー１０にかけた状態でキュー１０に対する操作を行う。すなわち、書き込みプロセッサ１Ａ、１Ｂ、１Ｃ、１Ｄにおいて、上記排他的ロック３０をかける権利を取得した一つの書き込みプロセッサは、キュー１０に対する登録操作を行うことができるが、その他の書き込みプロセッサは、登録操作を行うことができないのである。本構成は、図１２のように書き込みプロセッサが多数存在する場合、またはその数を増減する場合に有効である。
【００８１】
つぎに、動作について説明する。図１３は本実施の形態４による登録動作を説明するフローチャートである。まず、ステップＳ５０１では、書き込みプロセッサ１Ａ、１Ｂ、１Ｃおよび１Ｄのうち、いずれか一つの書き込みプロセッサが、排他的ロック３０を取得する。この場合、書き込みプロセッサ１Ａが排他的ロック３０を取得したものとする。従って、キュー１０に対しては、書き込みプロセッサ１Ａのみが登録動作を行うことができる。つづいて、書き込みプロセッサ１Ａは、前述したステップＳ１０１〜ステップＳ１０４（図４参照）と同様にして、ステップＳ５０２〜ステップＳ５０５の各操作を行う。
【００８２】
すなわち、書き込みプロセッサ１Ａは、図１３に示したステップＳ５０２では、「空の」要素１１ｂとは独立に、例えば、図２に示した「空の」要素１１ｃ（Ｅｎｅｗ）を新たに確保した後、ステップＳ５０３へ進む。つぎに、書き込みプロセッサ１Ａは、「空の」要素１１ｂ（Ｅｏｌｄ）に対して１回のアクセスを行うことで、ステップＳ５０３〜ステップ５０５からなる三つの操作を同時に行う。
【００８３】
これらの三つの操作において、書き込みプロセッサ１Ａは、「空の」要素１１ｂ（Ｅｏｌｄ）の通信情報領域１２ｂに通信情報を書き込む（ステップＳ５０３）と同時に、「空の」要素１１ｂ（Ｅｏｌｄ）のマーク領域１３ｂにマークを書き込み（ステップＳ５０４）、さらに、要素１１ｂ（Ｅｏｌｄ）と新たな「空の」要素１１ｃ（Ｅｎｅｗ）との接続を実施する（ステップＳ５０５）。
【００８４】
そして、ステップＳ５０６では、書き込みプロセッサ１Ａは、キュー１０に対する排他的ロック３０を解放する。一方、読み出しプロセッサ２は、前述した実施の形態１において説明した取得動作（図７参照）と同様の動作を実行する。このように、以上のステップＳ５０３〜ステップＳ５０５の操作が不可分（同時）に行われるため、書き込みプロセッサ１Ａ〜１Ｄのうちいずれか一つから書き込まれた通信情報と読み出しプロセッサ２が読み取る通信情報の間では常に一貫性が保たれる。
【００８５】
ここで、上述した実施の形態４では、読み出しプロセッサ２が排他的ロックをキュー１０にかける必要がないが、書き込みプロセッサ１Ａにおいて、排他的ロックに関する操作を１回しなければならない。従って、上述した実施の形態１における排他的ロックに関する操作が０回であるのに対して、本実施の形態４は１回である。このことから、本実施の形態４では、実施の形態１に比して、汎用性が向上したのと引き替えに、排他的ロックの操作を１回行う分だけ処理速度（性能）が低下しているが、従来のものより処理速度は向上している。
【００８６】
すなわち、従来のものでは、図１６（ｂ）および図１６（ｃ）を参照して説明したように、書き込みプロセッサと読み込みプロセッサの両方で計２回の排他的ロックに関する操作（取得／解放）が必要であるのに比べ、本実施の形態４では、排他的ロックに関する操作を書き込みプロセッサで１回のみ行えばよい。従って、本実施の形態４においては、従来のものに比べて、排他的ロックに関する操作回数が１回少ないため、処理速度を向上させることができる。また、本実施の形態４では、前述の実施の形態３に比べて、書き込みプロセッサ数分の共有メモリが不要で、１台の共有メモリ３だけで済む分、構成の簡略化が図れるという利点を備えている。
【００８７】
以上、本発明の実施の形態１〜４を図面を参照して説明したが、本発明の主旨の範囲内で種々の変形が可能であり、これらを本発明の範囲から排除するものではない。例えば、実施の形態１〜４においては、要素１１ａ等における１アクセス単位を８バイトとした例について説明したが、これは一例であって書き込みプロセッサ１および読み出しプロセッサ２における１アクセス時のデータ書き込み／読み込み量により適宜変更される。従って、１アクセス単位は、８バイトでも１６バイトでもよい。
【００８８】
また、本実施の形態１〜４においては、別個のプロセッサをそれぞれ書き込み用、読み出し用として説明しているが、マルチプロセッサシステムを構成する各プロセッサには、前述した書き込みプロセッサの処理機能と、読み出しプロセッサの処理機能を備えていることは言うまでもない。
【００８９】
（付記１）  複数のプロセッサ間に共有メモリを設けたマルチプロセッサシステムに適用されるプロセッサ間データ通信装置において、
前記共有メモリ上でデータを操作するための複数の要素および空の要素を有したキューと、
前記キューにおいて前記空の要素の他に新たな空の要素を確保して、前記空の要素を用いてデータを登録する登録手段と、
前記キューにおいて前記複数の要素の中からデータが登録された要素を取得し、前記取得された要素からデータを読み出す取得手段と、
を備え、
前記要素のメモリ領域は、前記登録手段、前記取得手段における１回のアクセスで前記データを登録／取得可能なサイズであることを特徴とするプロセッサ間データ通信装置。
（付記２）  前記データは、通信情報、前記要素間の接続状態を示す接続情報、および前記通信情報の登録有無を示す情報であることを特徴とする付記１に記載のプロセッサ間データ通信装置。
（付記３）  前記通信情報は、前記共有メモリにおける可変長のメモリ領域に書き込まれるデータを指示するポインタであることを特徴とする付記２に記載のプロセッサ間データ通信装置。
（付記４）  前記キューは、アクセス範囲に関して、前記登録手段側の前記空の要素と、前記取得手段側の前記複数の要素とに分離され、前記取得手段は、アクセス範囲内の要素間を繋ぐ新規の要素を追加することを特徴とする付記１〜３のいずれか一つに記載のプロセッサ間データ通信装置。
（付記５）  複数の前記登録手段と一つの前記取得手段とを備え、前記複数の登録手段に対応させて複数の前記共有メモリをそれぞれ接続するとともに、ぞれぞれの前記共有メモリと前記取得手段との間にマルチプレクサを一つ接続したことを特徴とする付記１〜４のいずれか一つに記載のプロセッサ間データ通信装置。
（付記６）  複数の前記登録手段と一つの取得手段とを備え、前記複数の登録手段と前記登録手段との間に前記共有メモリを一つ接続し、前記複数の登録手段のうちいずれか一つの登録手段は、排他的ロックに関する操作を行うことで前記共有メモリの前記キューに対して登録を行うことを特徴とする付記１〜４のいずれか一つに記載のプロセッサ間データ通信装置。
（付記７）  複数のプロセッサ間に共有メモリを設けたマルチプロセッサシステムに適用されるプロセッサ間データ通信方法において、
前記共有メモリ上でデータを操作するための複数の要素および空の要素を有したキューにおいて前記空の要素の他に新たな空の要素を確保して、前記空の要素を用いてデータを登録する登録工程と、
前記キューにおいて前記複数の要素の中からデータが登録された要素を取得し、前記取得された要素からデータを読み出す取得工程と、
を含み、
前記要素のメモリ領域は、前記登録工程、前記取得工程における１回のアクセスで前記データを登録／取得可能なサイズであることを特徴とするプロセッサ間データ通信方法。
（付記８）  複数のプロセッサ間に共有メモリを設けたマルチプロセッサシステムに適用されるプロセッサ間データ通信装置において、
１回のアクセスで取得可能なサイズで前記共有メモリ上のキューにデータを要素として登録する登録手段と、
前記共有メモリ上のキューに登録された要素を取得し、該要素からデータを読み出す取得手段と、
を備えたことを特徴とするプロセッサ間データ通信装置。
（付記９）  共有メモリを用いてデータ通信が行われるマルチプロセッサシステムにおけるデータ処理装置において、
前記共有メモリは、データを操作するための複数の要素および空の要素からなるキューを有し、
前記キューにおいて前記空の要素の他に新たな空の要素を確保して、前記空の要素を用いてデータを登録する登録手段と、
前記キューにおいて前記複数の要素の中からデータが登録された要素を取得し、前記取得された要素からデータを読み出す取得手段と、
を備え、
前記要素のメモリ領域は、前記登録手段、前記取得手段における１回のアクセスで前記データを登録／取得可能なサイズであることを特徴とするデータ処理装置。
（付記１０）  共有メモリを用いてデータ通信が行われるマルチプロセッサシステムにおけるデータ処理装置において、
１回のアクセスで取得可能なサイズで前記共有メモリ上のキューにデータを要素として登録する登録手段と、
前記共有メモリ上のキューに登録された要素を取得し、該要素からデータを読み出す取得手段と、
を備えたことを特徴とするデータ処理装置。
【００９０】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、共有メモリ上でデータを操作するためのリンク接続された複数の要素およびこの複数の要素の最後尾に接続された空の要素を有したキューにおいて、データ登録の際に、登録手段により、既にある空の要素の他に新たな空の要素を確保して新たな空の要素を既にある空の要素の後方に接続した後に、１アクセスでデータ（通信情報、前記要素間の接続状態を示す情報、および前記通信情報の登録有無を示す情報）を登録する一方、取得手段により複数の要素のうちでデータを登録した要素を取得してその取得された要素からデータ（通信情報、前記要素間の接続状態を示す情報、および前記通信情報の登録有無を示す情報）を１アクセスで読み出すようにすることで、複数のプロセッサが同時にキュー操作する領域が分離され、これにより、排他的ロックの操作が不要となって処理速度を向上させることができるという効果を奏する。
【００９２】
また、請求項２にかかる発明によれば、通信情報としてポインタを用いることにより、排他的ロックの操作を不要として、データサイズが要素のサイズより大きいデータを扱うことができるという効果を奏する。
【００９３】
また、請求項３にかかる発明によれば、キューにおいてアクセス範囲に関して登録手段側の空の要素と取得手段側の要素とに分離されるので、取得手段側の要素に対して登録手段がアクセスできないことから、排他的ロックの操作を伴うことなく、取得手段を新規の要素を追加するための登録手段として機能させることができるという効果を奏する。
【００９４】
また、請求項４にかかる発明によれば、複数の登録手段にそれぞれ独立した共有メモリを接続するとともに、それぞれの共有メモリと前記取得手段との間にマルチプレクサを一つ接続したので、それぞれの共有メモリのキューに対して各登録手段による排他的ロックに関する操作を行うことなく、処理速度が向上した登録手段多数／取得手段１の構成をとることができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の実施の形態１によるプロセッサ間データ通信装置を概略的に説明する構成図である。
【図２】同実施の形態１によるキューへの登録時のデータの流れを説明する図である。
【図３】同実施の形態１によるキューへの登録時のデータの流れを説明する図である。
【図４】同実施の形態１によるキューへの登録動作を説明するフローチャートである。
【図５】同実施の形態１によるキューからの取得時のデータの流れを説明する図である。
【図６】同実施の形態１によるキューからの取得時のデータの流れを説明する図である。
【図７】同実施の形態１によるキューからの取得動作を説明するフローチャートである。
【図８】同実施の形態２によるプロセッサ間データ通信装置のアクセス方法を説明する図である。
【図９】同実施の形態２による登録動作を説明するフローチャートである。
【図１０】同実施の形態３によるプロセッサ間データ通信装置を示すブロック図である。
【図１１】同実施の形態３による取得動作を説明するフローチャートである。
【図１２】同実施の形態４によるプロセッサ間データ通信装置を示すブロック図である。
【図１３】同実施の形態４による登録動作を説明するフローチャートである。
【図１４】従来におけるマルチプロセッサシステムの構成を示すブロック図である。
【図１５】従来のマルチプロセッサシステムにおける共有メモリ３の構成を示す図である。
【図１６】従来におけるマルチプロセッサシステムの動作を説明する図である。
【符号の説明】
１  書き込みプロセッサ
１Ａ、１Ｂ、１Ｃ、１Ｄ  書き込みプロセッサ
２  読み出しプロセッサ
３  共有メモリ
３Ａ、３Ｂ、３Ｃ、３Ｄ  共有メモリ
１０  キュー
１１ａ、１１ｂ  １１ｃ、１１ｄ  要素
【図１】
0003706008.tif 000002
【図２】
0003706008.tif 000003
【図３】
0003706008.tif 000004
【図４】
0003706008.tif 000005
【図５】
0003706008.tif 000006
【図６】
0003706008.tif 000007
【図７】
0003706008.tif 000008
【図８】
0003706008.tif 000009
【図９】
0003706008.tif 000010
【図１０】
0003706008.tif 000011
【図１１】
0003706008.tif 000012
【図１２】
0003706008.tif 000013
【図１３】
0003706008.tif 000014
【図１４】
0003706008.tif 000015
【図１５】
0003706008.tif 000016
【図１６】
0003706008.tif 000017