(57)【要約】      （修正有）【課題】各プロセッサ間での共有リソースの送受を比較的簡易で汎用性のある形態で実現する共有リソースのプロセッサ間通信方法を提供する。【解決手段】複数のプロセッサによって共通に使用される共有リソース領域と該共有リソース領域を管理する共有リソース管理領域とを有する共有メモリを備え、前記複数のプロセッサ相互で排他制御が必要な共有リソースの送受を前記共有メモリを経由して行うマルチプロセッサ間通信方法において、前記共有リソース領域に、前記複数のプロセッサ相互のタスク（スレッド）にてリード／ライトの制御種別で分類した共有リソースに対し、各共有リソース毎にリングバッファによるバッファ機能を持たせて多重化を可能とすると共に、前記共有リソースのリード／ライトの制御時に参照と更新処理が可能な前記共有リソースに対する前記リングバッファのインデックスを簡易的な排他制御管理領域として設けた。【選択図】図１
2009217375.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサによって共通に使用される共有リソース領域と該共有リソース領域を管理する共有リソース管理領域とを有する共有メモリを備え、前記複数のプロセッサ相互で排他制御が必要な共有リソースの送受を前記共有メモリを経由して行うマルチプロセッサ間通信方法において、
前記共有リソース領域に、前記複数のプロセッサ相互のタスク（スレッド）にてリード／ライトの制御種別で分類した共有リソースに対し、各共有リソース毎にリングバッファによるバッファ機能を持たせて多重化を可能とすると共に、前記共有リソース管理領域に、前記共有リソースのリード／ライトの制御時に参照と更新処理が可能な前記共有リソースに対する前記リングバッファのインデックスを簡易的な排他制御管理領域として設けたことを特徴とする共有リソースのマルチプロセッサ間通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はマルチプロセッサ間通信方法に係り、特に、複数のプロセッサが使用する共有メモリを有するマルチプロセッサシステムにおいて、各プロセッサ間での共有リソースの送受を行うためのプロセッサ間通信方法に関する。
【背景技術】
【０００２】
従来、共有リソース制御用のプロセッサ間通信方法として、特許文献１によるセマフォ制御方法及び特許文献２によるマルチプロセッサ間通信方法が提案されている。
【０００３】
図４は、上記特許文献１によるセマフォ制御方法が適用される計算機システムの構成を示すブロック図である。
【０００４】
図４において、参照符号１１〜１８はデータを処理する処理部としてのプロセッサ、参照符号２はプロセッサ１１〜１８が共有できる共有メモリ、参照符号５はプロセッサ１１〜１８と共有メモリ２を接続しているメモリバスである。
【０００５】
共有メモリ２は、プロセッサ１１〜１８が通信するためのメッセージデータエリア６１〜６ｎと、これらのメッセージデータエリア６１〜６ｎを排他制御するためのセマフォ７１〜７ｎとを有している。
【０００６】
各セマフォ７１〜７ｎには、セマフォを獲得した処理部を特定し、かつセマフォを解放する処理部を特定するセマフォ情報のテーブルが設けられている。
【０００７】
そして、上記特許文献１によるセマフォ制御方法は、セマフォ情報に従ってメッセージが解放されるようにし、このセマフォ情報をメッセージが特定の処理部に解放されるまで保持するようにしたものである。
【０００８】
図５は、上記特許文献２によるマルチプロセッサ間通信方法を実現するマルチプロセッサシステムの構成を示すブロック図である。
【０００９】
図５において、参照符号１ａ，１ｂはプロセッサ、参照符号２は共有メモリ、参照符号４はリンケージバス、参照符号ａ１〜ａ３はユーザタスク、参照符号２５は制御装置、参照符号２６は送信プログラム、参照符号２７は応答処理プログラム、参照符号ｂ１〜ｂ３は処理プログラム、参照符号８は受信プログラム、参照符号９は応答送信プログラムである。
【００１０】
また、参照符号２０は送信元のプロセッサ１ａ（１ｂ）から送信先のプロセッサ１ｂ  （１ａ）への処理依頼、及び送信先のプロセッサ１ｂ（１ａ）から送信元のプロセッサ１ａ（１ｂ）への応答が設定される交信エリアであり、参照符号２９は交信エリア２０の使用権の競合制御を行うためのフラグがセットされる排他制御管理エリアとしてのセマフォフラグである。
【００１１】
そして，上記特許文献２によるマルチプロセッサ間通信方法では、複数のプロセッサ１ａ，１ｂで共通に使用される共有メモリ２のアクセス時における競合制御を、当該共有メモリ２上に設けた排他制御管理エリアとしてのセマフォフラグ２９によって行い、また、通信するプロセッサの各組合せ毎に付与した識別番号毎に、あるいは送信と受信とで独立して、交信エリアの使用権の競合制御を行う。
【００１２】
すなわち、上記特許文献２によるマルチプロセッサ間通信方法は、複数のプロセッサに１ａ，１ｂよって共通に使用される共有メモリ２を備え、前記プロセッサ相互の通信を前記共有メモリ２を経由して行うマルチプロセッサ間通信方法において、前記共有メモリ２上に、送信先の前記プロセッサへの処理の依頼、および送信元の前記プロセッサへの応答が設定される交信エリアと、前記交信エリアの使用権の競合制御を行うためのフラグがセットされる排他制御管理エリアとを設け、前記各プロセッサは、前記排他制御管理エリアの前記フラグより前記交信エリアが他の前記プロセッサによって使用中であるか否かをチェックし、使用中でないことを確認すると、前記排他制御管理エリアの前記フラグをセットして、前記交信エリアへの前記処理の依頼、もしくはその応答の書き込み／読み出しを行い、前記書き込み／読み出しの処理が終了すると、前記排他制御管理エリアの前記フラグをクリアするものである。
【００１３】
図６は、上記のような上記特許文献１及び上記特許文献２による従来技術に基づいて共有リソース送受信用のマルチプロセッサ間通信方法を実行するための概念的な構成を説明するために示す要部のブロック図である。
【００１４】
すなわち、図６に示すように、共有メモリ２１に対して複数のプロセッサａ，ｂ…ｚがバスライン２２及びバス制御装置３３を介して接続されている。
【００１５】
共有メモリ２１には、共有リソース領域２１ａと、共有リソース管理領域２１ｂとが設けられている。
【００１６】
共有リソース領域１ａには、複数の共有リソース１，２…ｎが設けられている。
【００１７】
共有リソース管理領域２１ｂには、排他制御管理フラグ２１ｃによって管理される複数の共有リソース１，２…ｎが設けられていると共に、排他制御管理用セマフォ２１ｄによって管理される複数の共有リソース１，２…ｎが設けられている。
【００１８】
プロセッサａには、複数のタスク（スレッド）ａ−＃１，ａ−＃２…ａ−＃ｎが設けられている。
【００１９】
プロセッサｂには、複数のタスク（スレッド）ｂ−＃１，ｂ−＃２…ｂ−＃ｎが設けられている。
【００２０】
プロセッサｚには、複数のタスク（スレッド）ｚ−＃１，ｚ−＃２…ｚ−＃ｎが設けられている。
【００２１】
これらの構成で共有リソース１，２…ｎの排他制御を行うためにセマフォや制御フラグが用いられており、例えば、プロセッッサａのタスク（スレッド）ａ−＃１によって共有リソース１を制御している状態で、もう一方のプロセッサｂのタスク（スレッド）ｂ−＃１によって共有リソースｌを制御したい場合を想定する。
【００２２】
この場合、排他制御管理フラグ２１ｃ或いは排他制御用管理セマフォ２１ｄによって共有リソース１がロックされているため、プロセッサａよる共有リソース１の制御が完了し、排他制御管理フラグ２１ｃ或いは排他制御用管理セマフォ２１ｄが解放されるまでタスク（スレッド）ｂ−＃ｌは待ち状態となる。
【００２３】
このように、図６に示した従来技術による共有リソース送受信用のマルチプロセッサ間通信方法は、共有リソース１，２…ｎへの制御が各プロセッサ相互のタスク（スレッド）の状態によって制御タイミングが異なるため、リアルタイム処理が必要な場合やパースト的な処理が発生した場合を考慮すると、最適な方法とは言えない。
【特許文献１】特開平０６−１４９７５３号
【特許文献２】特開平０６−０１２３８７号
【発明の開示】
【発明が解決しようとする課題】
【００２４】
近年、例えば、情報通信の分野では、ＩＴ化やブロードバンド化の傾向が進む中で、各々の装置が処理するデータ量が飛躍的に増大している。
【００２５】
一方、データ処理を行うプロセッサの処理能力自体も向上しており、データ処理内容の特徴からそれらに適したプロセッサを組み合わせて、マルチプロセッサ処理を行うケースも多くなってきている。
【００２６】
このようなデータ処理を行うためのマルチプロセッサ化に伴い、比較的簡易で汎用性のある形態で処理したデータを各々のプロセッサ間で受け渡し可能とするマルチプセッサ間通信方法の実現が要請されている。
【００２７】
そこで、本発明は以上のような点に鑑みてなされたもので、各プロセッサ間での共有リソースの送受を比較的簡易で汎用性のある形態で実現することができる共有リソースのマルチプロセッサ間通信方法を提供することを目的としている。
【課題を解決するための手段】
【００２８】
本発明によると、上記課題を解決するために、
複数のプロセッサによって共通に使用される共有リソース領域と該共有リソース領域を管理する共有リソース管理領域とを有する共有メモリを備え、前記複数のプロセッサ相互で排他制御が必要な共有リソースの送受を前記共有メモリを経由して行うマルチプロセッサ間通信方法において、
前記共有リソース領域に、前記複数のプロセッサ相互のタスク（スレッド）にてリード／ライトの制御種別で分類した共有リソースに対し、各共有リソース毎にリングバッファによるバッファ機能を持たせて多重化を可能とすると共に、前記共有リソース管理領域に、前記共有リソースのリード／ライトの制御時に参照と更新処理が可能な前記共有リソースに対する前記リングバッファのインデックスを簡易的な排他制御管理領域として設けたことを特徴とする共有リソースのマルチプロセッサ間通信方法が提供される。
【発明の効果】
【００２９】
本発明では、共有リソースをリード／ライトの制御種別により分類することにより、共有リソースをプロセッサ相互のタスク（スレッド）の共有リソースへの制御状態に依存することなく制御することが可能となる。
【００３０】
また、本発明では、共有リソース毎にバッファ機能を保持しているため、バースト的な処理が発生した場合でも、バッファの許容囲内であれば、データの連続性を保持した制御可能である。
【００３１】
そして、本発明によれば、従来技術のように、排他制御用のフラグやセマフォ等を使用せず、比較的簡易な方法で共有リソースのマルチプロセッサ間通信が実現可能であると共に、共有リソース毎にバッファを実装し、共有リソースを使用するタスク（スレッド）単位でのエラー検出が可能であることにより、各プロセッサ間での共有リソースの送受を比較的簡易で汎用性のある形態で実現することができる共有リソースのマルチプロセッサ間通信方法を提供することができる。
【発明を実施するための最良の形態】
【００３２】
以下図面を参照して本発明の実施の形態について説明する。
【００３３】
図１は、本発明による共有リソース送受信用のマルチプロセッサ間通信方法を実行するための概念的な構成を説明するために示す要部のブロック図である。
【００３４】
すなわち、本発明による共有リソース送受信用のマルチプロセッサ間通信方法は、基本的には、複数のプロセッサによって共通に使用される共有リソース領域と該共有リソース領域を管理する共有リソース管理領域とを有する共有メモリを備え、前記複数のプロセッサ相互で排他制御が必要な共有リソースの送受を前記共有メモリを経由して行うマルチプロセッサ間通信方法において、前記共有リソース領域に、前記複数のプロセッサ相互のタスク（スレッド）にてリード／ライトの制御種別で分類した共有リソースに対し、各共有リソース毎にリングバッファによるバッファ機能を持たせて多重化を可能とすると共に、前記共有リソース管理領域に、前記共有リソースのリード／ライトの制御時に参照と更新処理が可能な前記共有リソースに対する前記リングバッファのインデックスを簡易的な排他制御管理領域として設けたことを特徴としている。
【００３５】
具体的には、図１に示すように、共有メモリ２１に対して複数のプロセッサａ，ｂ…ｚがバスライン２２及びバス制御装置３３を介して接続されている。
【００３６】
共有メモリ２１には、共有リソース領域２１ａと、共有リソース管理領域２１ｂとが設けられている。
【００３７】
共有リソース領域２１ａには、複数の共有リソース１，２…ｎが設けられている。
【００３８】
共有リソース管理領域２１ｂには、リード制御用リソースバッファインデックス２１ｅによって管理される複数の共有リソース１，２…ｎが設けられていると共に、ライト制御用リソースバッファインデックス２１ｆによって管理される複数の共有リソース１，２…ｎが設けられている。
【００３９】
また、共有リソース管理領域２１ｂには、リード制御用エラーカウンタ２１ｇによって管理される複数の共有リソース１，２…ｎが設けられていると共に、ライト制御用エラーカウンタ２１ｈによって管理される複数の共有リソース１，２…ｎが設けられている。
【００４０】
ここで、共有リソース管理領域２１ｂに設けられているリード制御用リソースバッファインデックス２１ｅ及びライト制御用リソースバッファインデックス２１ｆは前記共有リソースのリード／ライトの制御時に参照と更新処理が可能な簡易的な排他制御管理領域として機能すると共に、共有リソース領域２１ａに設けられている各々の共有リソース１，２…ｎは前記複数のプロセッサ相互のタスク（スレッド）にてリード／ライトの制御種別で分類した共有リソースに対し、各共有リソース毎にリングバッファによるバッファ機能を持たせることにより、多重化を可能としている。
【００４１】
すなわち、本発明では、各々の共有リソース１，２…ｎは、プロセッサ相互のタスク  （スレッド）においてリード／ライトの制御種別に分類されている。
【００４２】
プロセッサａには、複数のタスク（スレッド）ａ−＃１，ａ−＃２…ａ−＃ｎが設けられている。
【００４３】
プロセッサｂには、複数のタスク（スレッド）ｂ−＃１，ｂ−＃２…ｂ−＃ｎが設けられている。
【００４４】
プロセッサｚには、複数のタスク（スレッド）ｚ−＃１，ｚ−＃２…ｚ−＃ｎが設けられている。
【００４５】
そして、本発明では、各々の共有リソース１，２…ｎは、それぞれ、ｎ面のリングバッファ１−１〜１−ｎ、２−１〜２−ｎ、ｎ−１〜ｎ−ｎで構成され、共有リソース１をタスク（スレッド）ａ−＃１とｂ−＃１での共有リソースとし、タスク（スレッド）ａ−＃１がリード制御を行うと共に、タスク（スレッド）ｂ−＃１がライト制御を行うものと仮定する。
【００４６】
図２は、本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのライト制御の一例を示すフローチャートである。
【００４７】
次に、図２を参照して本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのライト制御について説明する。
【００４８】
すなわち、図２に示すように、ステップＳ１でタスク（スレッド）ａ−＃１の処理が開始されたとすると、ステップＳ２で共有リソース１に対する処理が実施される。
【００４９】
これにより、ステップＳ３で共有リソース１のリード制御用リソースバッファインデックス２１ｅ及びライト制御用リソースバッファインデックス２１ｆによりリード／ライト処理位置を取得し、書き込み処理が実施される。
【００５０】
そして、ステップＳ４で、共有リソース１のライト制御用リソースバッファインデックス２１ｆのインクリメント後の値が、共有リソース１のリード制御用リソースバッファインデックス２１ｅの値と等しいか否かが判定される。
【００５１】
このステップＳ４での判定結果がＮｏであれば、ステップＳ５で、共有リソース１のライト制御用リソースバッファインデックス２１ｆ（ライト処理の位置）をインクリメントして、ステップＳ７に移行する。
【００５２】
また、ステップＳ４での判定結果がＹｅｓであれば、ステップＳ６で、リード制御が動作していないと判断して、共有リソース１のライト制御用エラーカウンタ２１ｈをインクリメントして、ステップＳ７に移行する。
【００５３】
そして、ステップＳ７では、タスク（スレッド）ａ−＃１が制御する全ての共有リソースに対する処理が実施される。
【００５４】
図３は、本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのリード制御の一例を示すフローチャートである。
【００５５】
次に、図３を参照して本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのリード制御について説明する。
【００５６】
すなわち、図３に示すように、ステップＳ１１でタスク（スレッド）ｂ−＃１の処理が開始されたとすると、ステップＳ１２で共有リソース１に対する処理が実施される。
【００５７】
これにより、ステップＳ１３で共有リソース１のリード制御用リソースバッファインデックス２１ｅ及びライト制御用リソースバッファインデックス２１ｆによりリード／ライト処理位置を取得し、読み出し処理が実施される。
【００５８】
そして、ステップＳ１４で、共有リソース１のライト制御用リソースバッファインデックス２１ｆの値が、共有リソース１のリード制御用リソースバッファインデックス２１ｅの値と等しいか否かが判定される。
【００５９】
このステップＳ１４での判定結果がＮｏであれば、ステップＳ１５で、前記ステップＳ１３において取得した共有リソース１のリード制御用リソースバッファインデックス２１ｅの共有リソース１を読み出して、該リード制御用リソースバッファインデックス２１ｅをインクリメントして、ステップＳ１７に移行する。
【００６０】
また、ステップＳ１４での判定結果がＹｅｓであれば、ステップＳ１６で、ライト制御が動作していないと判断して、共有リソース１のライト制御用エラーカウンタ２１ｈをインクリメントして、ステップＳ１７に移行する。
【００６１】
そして、ステップＳ１７では、タスク（スレッド）ｂ−＃１が制御する全ての共有リソースに対する処理が実施される。
【００６２】
すなわち、以上のような本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのリード／ライト制御によれば、特に、従来技術のような排他制御用のフラグやセマフォを使用せず、読み手側のタスク（スレッド）にて共有リソースリード制御用リソースバッファインデックスの参照と更新処理を行うと共に、書き手側のタスク  （スレッド）にて共有リソースライト制御用リソースバッファインデックスのを行うことにより、共有リソースのマルチプロセッサ間通信を可能にしている。
【００６３】
本例では、プロセッサ相互のタスク（スレッド）の共有リソース制御周期は同様と仮定しているが、リード／ライト制御用バッファインデックスの判定処理を変更することにより、異なる制御周期でも問題なく動作可能である。
【００６４】
なお、本発明は、上記しかつ図示した実施の形態に限定されることなく、本発明の要旨を逸脱しない範囲で、例えば、後述する付記に示すような種々の変形が適用可能であることは言うまでもない。
【００６５】
付記（１）共有リソースのライト／リードの制御種別を相互のプロセッサにてどちらか一方に統一するように共有リソースを分類し、リングバッファによる多重化を実施することにより、共有リソースを制御するプロセッサが共有リソースの状態に依存せずに制御可能なことを特徴とする請求項１に記載のマルチプロセッサ間通信方法。
【００６６】
付記（２）何らかの理由によりいずれかのプロセッサにおいて、共有リソースの制御が実行不可能になったことを各プロセッサ相互で検出可能とすることを特徴とする請求項１に記載のマルチプロセッサ間通信方法。
【図面の簡単な説明】
【００６７】
【図１】図１は、本発明による共有リソース送受信用のマルチプロセッサ間通信方法を実行するための概念的な構成を説明するために示す要部のブロック図である。
【図２】図２は、本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのライト制御の一例を示すフローチャートである。
【図３】図３は、本発明による共有リソースのマルチプロセッサ間通信方法における共有リソースのリード制御の一例を示すフローチャートである。
【図４】図４は、上記特許文献１によるセマフォ制御方法が適用される計算機システムの構成を示すブロック図である。
【図５】図５は、上記特許文献２によるマルチプロセッサ間通信方法を実現するマルチプロセッサシステムの構成を示すブロック図である。
【図６】図６は、上記特許文献１及び上記特許文献２による従来技術に基づいて共有リソース送受信用のマルチプロセッサ間通信方法を実行するための概念的な構成を説明するために示す要部のブロック図である。
【符号の説明】
【００６８】
２１…共有メモリ、
ａ，ｂ…ｚ…複数のプロセッサ
２２…バスライン
３３…バス制御装置、
２１ａ…共有リソース領域、
２１ｂ…共有リソース管理領域、
１，２…ｎ…共有リソース、
１−１〜１−ｎ、２−１〜２−ｎ、ｎ−１〜ｎ−ｎ…ｎ面のリングバッファ、
２１ｅ…リード制御用リソースバッファインデックス、
２１ｆ…ライト制御用リソースバッファインデックス、
２１ｇ…リード制御用エラーカウンタ、
２１ｈ…ライト制御用エラーカウンタ。
【図１】
2009217375.tif 000003
【図２】
2009217375.tif 000004
【図３】
2009217375.tif 000005
【図４】
2009217375.tif 000006
【図５】
2009217375.tif 000007
【図６】
2009217375.tif 000008