(57)【要約】共有メモリ（ＳＭ）を介したインタープロセッサ通信のための管理モジュール（ＡＭ）、生産者プロセッサ（ＰＰ）及び消費者プロセッサ（ＣＰ）、その構成、及び方法。上記モジュール（ＡＭ）は、各々が読出しサブバッファ（ＷＳＢ）と書込みサブバッファ（ＷＳＢ）とアイドルサブバッファ（ＩＳＢ）とトリプルバッファ（Ｂ０〜Ｂｍ）のステートを格納し（１０）、管理する（１１）手段と、少なくとも１つの生産者プロセッサ（ＰＰ）及び少なくとも１つの消費者プロセッサ（ＣＰ）と通信する（２０）手段とを備える。上記管理手段（１１）は、生産者プロセッサアクセス又は消費者プロセッサアクセスにそれぞれ応じて、トリプルバッファ（Ｂ０〜Ｂｍ）から目標読出しサブバッファ（ＲＳＢ）又は書込みサブバッファ（ＷＳＢ）を定めるものである。【選択図】図３
2010501951.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリ（ＳＭ）を介したインタープロセッサ通信のための管理モジュール（ＡＭ）であって、
各々が読出しサブバッファ（ＷＳＢ）と書込みサブバッファ（ＷＳＢ）とアイドルサブバッファ（ＩＳＢ）とを有するトリプルバッファ（Ｂ０〜Ｂｍ）のステートを格納し（１０）、管理する（１１）手段と、
少なくとも１つの生産者プロセッサ（ＰＰ）及び少なくとも１つの消費者プロセッサ（ＣＰ）と通信する（２０）手段と、
を備え、
前記管理手段（１１）は、生産者プロセッサアクセスに応じて目標バッファ（Ｂ０〜Ｂｍ）を定め、前記格納手段（１０）からアイドルサブバッファＩＤを調べ出し、新しい書込みサブバッファ（ＷＳＢ）となるべき当該アイドルサブバッファＩＤを適当な生産者プロセッサ（ＰＰ）へ前記通信手段（２０）を介して配信し、目下の割当てにしたがって前記サブバッファ（ＲＳＢ、ＷＳＢ、ＩＳＢ）の各ステートを更新するものであり、
前記管理手段（１１）は、さらに、消費者プロセッサアクセスに応じて目標バッファ（Ｂ０〜Ｂｍ）を定め、前記アイドルサブバッファ（ＩＳＢ）のコンテンツが前記読出しサブバッファ（ＲＳＢ）のコンテンツより新しいかどうかを検査し、より新しくない場合、新しい読出しサブバッファ（ＲＳＢ）となるべき当該読出しサブバッファＩＤを適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して返信し、さもなければ、アイドルサブバッファＩＤを調べ出し、新しい読出しサブバッファ（ＲＳＢ）となるべき当該アイドルサブバッファＩＤを適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して配信するものである、管理モジュール（ＡＭ）。
【請求項２】
前記格納手段（１０）はＦＩＦＯスタック（Ｆ）を備え、前記管理手段（１０）は、書込みサブバッファ（ＷＳＢ）が変わった場合に前記バッファ（Ｂ０〜Ｂｍ）のＩＤを前記ＦＩＦＯスタック（Ｆ）へ待ち行列化するように前記バッファ（Ｂ０〜Ｂｍ）の各々を構成し、適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して割込み要求（Ｉ０〜Ｉｎ）を送信する、請求項１に記載の管理モジュール（ＡＭ）。
【請求項３】
前記格納手段（１０）は少なくとも１つのレジスタ（Ｒ０〜Ｒｉ）を備え、前記管理手段（１１）は、前記書込みサブバッファ（ＷＳＢ）が変わった場合に前記レジスタ（Ｒ０〜Ｒｉ）においてバッファ関連ビットを設定するよう前記バッファ（Ｂ０〜Ｂｍ）を構成し、適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して割込み要求（Ｉ０〜Ｉｎ）を送信する、請求項１又は２に記載の管理モジュール（ＡＭ）。
【請求項４】
請求項１〜３のいずれか１項に記載の管理モジュール（ＡＭ）との通信のための生産者プロセッサ（ＰＰ）であって、
共有メモリ（ＳＭ）と通信する第１の手段（４０）と、
前記モジュール（ＡＭ）と通信する第２の手段（４１）と
を備え、
前記プロセッサ（ＰＰ）は、前記第２の通信手段（４１）を介して前記モジュール（ＡＭ）から書込みサブバッファ（ＷＳＢ）を要求し、前記第２の通信手段（４１）を介して前記モジュール（ＡＭ）から目下の書込みサブバッファＩＤを受信し、前記第１の通信手段（４０）を介して当該書込みサブバッファ（ＷＳＢ）へデータセットを送信する、生産者プロセッサ（ＰＰ）。
【請求項５】
請求項１〜３のいずれか１項に記載の管理モジュール（ＡＭ）との通信のための消費者プロセッサ（ＣＰ）であって、
共有メモリ（ＳＭ）と通信する第１の手段（５０）と、
前記モジュール（ＡＭ）と通信する第２の手段（５１）と
を備え、
前記プロセッサ（ＣＰ）は、前記第２の通信手段（５１）を介して前記モジュール（ＡＭ）から読出しサブバッファ（ＲＳＢ）を要求し、前記第２の通信手段（５１）を介して前記モジュール（ＡＭ）から目下の読出しサブバッファＩＤを受信し、前記第１の通信手段（５０）から当該読出しサブバッファ（ＲＳＢ）からデータセットを読み出す、消費者プロセッサ（ＣＰ）。
【請求項６】
前記プロセッサ（ＣＰ）は、前記モジュール（ＡＭ）の割込み要求（Ｉ０〜Ｉｎ）に応じて、前記第２の通信手段（５１）を介して前記モジュール（ＡＭ）から読出しサブバッファ（ＲＳＢ）を要求する、請求項５に記載の消費者プロセッサ（ＣＰ）。
【請求項７】
共有メモリ（ＳＭ）を介したインタープロセッサ通信を管理する構成であって、請求項１〜３のいずれか１項に記載の管理モジュール（ＡＭ）を備え、前記モジュール（ＡＭ）は、請求項４〜６のいずれか１項に記載の少なくとも１つの生産者プロセッサ（ＰＰ）及び少なくとも１つの消費者プロセッサ（ＣＰ）に接続される、構成。
【請求項８】
アービトレーション手段（３０）が、同時プロセッサアクセスをスケジューリングするために、前記プロセッサと前記管理モジュール（ＡＭ）との間の通信パスに設けられる、請求項７に記載の構成。
【請求項９】
前記アービトレーション手段（３０）は、前記管理モジュール（ＡＭ）と一体化される、請求項８に記載の構成。
【請求項１０】
共有メモリを介したインタープロセッサ通信のためのトリプルバッファ（Ｂ０〜Ｂｍ）のステートを管理する方法であって、各バッファ（Ｂ０〜Ｂｍ）は読出しサブバッファ（ＲＳＢ）と書込みサブバッファ（ＲＳＢ）とアイドルサブバッファ（ＩＳＢ）とを有し、前記方法は、
目標バッファ（Ｂ０〜Ｂｍ）が定められ、アイドルサブバッファＩＤが調べ出され、当該アイドルサブバッファＩＤは適当な生産者プロセッサ（ＰＰ）へ配信され、新しい書込みサブバッファ（ＷＳＢ）となり、前記サブバッファ（ＲＳＢ、ＷＳＢ、ＩＳＢ）の各ステートが目下の割当てにしたがって更新される、生産者プロセッサアクセスステップと、
目標バッファ（Ｂ０〜Ｂｍ）が定められ、アイドルサブバッファ（ＩＳＢ）のコンテンツが前記読出しサブバッファ（ＲＳＢ）のステートより新しいかどうか検査され、より新しくない場合、当該読出しサブバッファＩＤは新しい読出しサブバッファ（ＲＳＢ）となるべく、適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して返信され、さもなければ、アイドルサブバッファＩＤが調べ出され、新しい読出しサブバッファ（ＲＳＢ）となるべく、適当な消費者プロセッサ（ＣＰ）へ配信される、消費者プロセッサアクセスステップと
を含む。
【請求項１１】
各バッファ（Ｂ０〜Ｂｍ）のステートがリセット可能であり、バッファ固有の構成が可能である、管理アクセスステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
管理アクセスステップは、生産者プロセッサアクセスごとの前記バッファ（Ｂ０〜Ｂｍ）に対する割込み起動を含む、請求項１０又は１１に記載の方法。
【請求項１３】
管理アクセスステップは、生産者プロセッサアクセスごとのバッファＩＤの伝搬を含む、請求項１０〜１２のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１、４、５、７及び１０にそれぞれ記載の、管理モジュールと、生産者及び消費者プロセッサと、その構成と、共有メモリを介したインタープロセッサ通信方法とに関する。
【背景技術】
【０００２】
インタープロセッサ通信のタスクは、大抵、図１に示すような共通共有メモリ手法が解決する。
【０００３】
Ｎ個のプロセッサＰ０〜Ｐｎが、インターフェース４０、５０を介した同一のメモリＳＭへのアクセスを有し、ｍ個の共有バッファＢ０〜Ｂｍを通してデータを交換可能である。システムパフォーマンスを保存するためには、以下の条件を満たさなければならない。
【０００４】
はじめは、全部のプロセッサは完全に非同期である。すなわち、バッファからの読出し操作及びバッファへの書込み操作はいつでも可能である。加えて、バッファサイズに制限はなく、アトミックな読出し及び書込み操作は不可能である。最終的に、ブロッキング機構は不可能である。すなわち、プロセッサは互いが読出し又は書込み操作を完了するのを待機できなかった。
【０００５】
このような状況を鑑み、データ一貫性を与えることが、先行技術の解決手段における主要な課題である。いくつかの刊行物は、このような課題に取り組み、問題を解決してきた。Ｊ．・チェン（Ｊ．Ｃｈｅｎ）並びにＡ．・バーンズ（Ａ．Ｂｕｒｎｓ）による「マルチプロセッサリアルタイムシステム用３スロット非同期リーダ／ライタ機構．１９９７年１月ヨーク大学コンピュータサイエンス学部技術報告書ＹＣＳ‐２８６（Ａ  Ｔｈｒｅｅ‐Ｓｌｏｔ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅａｄｅｒ／Ｗｒｉｔｅｒ  Ｍｅｃｈａｎｉｓｍ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｒｅａｌ‐Ｔｉｍｅ  Ｓｙｓｔｅｍｓ．Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  ＹＣＳ‐２８６，Ｄｅｐａｒｔｍｅｎｔ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｙｏｒｋ，Ｊａｎ．１９９７）」において導入されたトリプルバッファリング手法が適当な解決手段の１つである。この解決手段は以下の制限のもとでのユースケースをカバーする。
【０００６】
第１に、各バッファは２つのプロセッサに割り当てられ、その１つは専用生産者ＰＰであってバッファＢｘへの書込みしか行わず、他方は専用消費者ＣＰであってバッファＢｘからの読出ししか行わない。第２に、最新の一貫性のあるデータセットが重要である。未使用データセットの上書きは重大ではない。基本原理は図２から分かるであろう。
【０００７】
共有メモリＳＭの各バッファＢｘは、３つのサブバッファＳＢ０〜ＳＢ２のみからなり、その各々はデータセット全体をホスト（ｈｏｓｔ）する。あるサブバッファ（目下ＳＢ１）が、書込みサブバッファＷＳＢとして生産者に予約され、目下新しいデータで満たされる。結果的に、コンテンツは一貫性がなく、読出しに適さない。あるサブバッファ（目下ＳＢ０）が、読出しサブバッファＲＳＢとして消費者に予約され、目下読み出される。コンテンツは一貫性があり、書込みから保護されていなければならない。第３のサブバッファ（目下ＳＢ３）はアイドルであり、すなわちアイドルサブバッファＩＳＢであり、生産者が新しい書込み用データセットを有するといつでも書込みサブバッファＷＳＢになる。生産者が新しいデータセットを一時的にダンプする（ｄｕｍｐ）場合、消費者が新しい読出し用データセットを要求すると、アイドルサブバッファＩＳＢは読出しサブバッファＲＳＢとなる。
【０００８】
このように、サブバッファＳ０〜Ｓ２を管理するには顕著な量の管理オーバヘッドが必要である。これは、プロセッサＰＰ及びＣＰ自体が適当なソフトウェアを用いて行うことが可能である。しかし、上述のＪ．・チェン並びにＡ．・バーンズの報告書によれば、比較及び交換命令（ｃｏｍｐａｒｅ‐ａｎｄ‐ｓｗａｐ  ｉｎｓｔｒｕｃｔｉｏｎ）が依然として必要であり、かかる命令はプロセッサによってサポートされなければならない。
【０００９】
独国特許出願公開第４４２０１２３号明細書が、マイクロコンピュータ用バンク切替装置を開示しており、当該装置は、アドレス妥当性信号に応じてバンクを切り替えて、切り替え中にサイクルを待機することを回避する。
【００１０】
独国特許出願公開第１０００３００６号明細書が、信号処理及び格納構成及び方法を開示しており、ここではフィルタリング係数及び入力／出力値のデータ伝送がコントローラによって制御されている。
【発明の概要】
【００１１】
プロセッサの管理の重荷が低く、同様に高速且つ単純で効率が良く、経済的に実施可能なインタープロセッサ通信を提供することが本発明の目的である。
【００１２】
このような目的を解決するのは、各々が読出しサブバッファと書込みサブバッファとアイドルサブバッファとを有するトリプルバッファのステートを格納し、管理する手段と、少なくとも１つの生産者プロセッサ及び少なくとも１つの消費者プロセッサと通信する手段を備える管理モジュールであり、上記管理手段は、生産者プロセッサアクセスに応じて目標書込みサブバッファを定め、上記格納手段からアイドルサブバッファＩＤを調べ出し、新しい書込みサブバッファとなるべきこのアイドルサブバッファＩＤを適当な生産者プロセッサへ上記通信手段を介して配信し、目下の割当てにしたがって上記サブバッファの各ステートを更新するものであり、上記管理手段は、さらに、消費者処理アクセスに応じて目標読出しサブバッファを定め、上記アイドルサブバッファのコンテンツが上記読出しサブバッファのコンテンツより新しいかどうかを検査し、より新しくない場合、新しい読出しサブバッファになるべきこの読出しサブバッファＩＤを適当な消費者プロセッサへ前記通信手段を介して返信し、さもなければ、アイドルサブバッファＩＤを調べ出し、新しい読出しサブバッファになるべきこのアイドルサブバッファＩＤを適当な消費者プロセッサへ上記通信手段を介して配信するものである。
【００１３】
本発明のモジュールについての要点の１つは、サブバッファは独立に処理されることであり、それにより、ほぼ全部の管理オーバーヘッドと、比較及び交換命令のような特別な要求とから生産者を解放する。残るオーバーヘッドは、特定のバッファに対する次の書込み／読出しサブバッファを取り出すための、管理モジュールへの単一のアクセスである。最も一般的な場合、インターフェースは標準プロセッサローカルバスであり、アドレスとデータと制御線とのみからなる。このように、はじめて、プロセッサ間の高速且つ単純で効率の良い通信が実現できる。さらに、管理モジュールはプロセッサ全部がアクセス可能な１つのハードウェアであるため、このようなモジュールに対する実施コストは削減される。
【００１４】
上記管理モジュールの好ましい実施形態は請求項２及び３に記載されており、請求項２及び３は、消費者プロセッサの視点からの効果的なバッファアクセスに関する。
【００１５】
第１の観点において、上記格納手段はＦＩＦＯ（Ｆｉｒｓｔ‐Ｉｎ‐Ｆｉｒｓｔ‐Ｏｕｔ）スタックを備え、上記管理手段は、上記バッファを、新しいデータセットの到着ごとに上記ＦＩＦＯスタックに自身のＩＤを問い合わせるように構成し、適当な消費者プロセッサへ上記通信手段を介して割込み要求を送信するものである。このように、消費者プロセッサは、関係のバッファをポーリングせずとも、正しい読出しサブバッファを決定後、どのバッファが更新され、共有メモリからデータセットを読み出し可能であるか、をすぐに認識する。
【００１６】
しかしながら、処理するバッファの量が非常に小さい場合、すなわちデータバス幅よりも小さい場合、レジスタ手法がより効果的である。
【００１７】
したがって、第２の観点において、上記格納手段は少なくとも１つのレジスタを備え、上記管理手段は、上記バッファの各々を、新しいデータセットが到達するたびに上記レジスタにバッファ関連ビットを設定するように構成し、適当な消費者プロセッサへ上記通信手段を介して割込み要求を送信するものである。レジスタコンテンツを評価することによって、消費者プロセッサは、ＦＩＦＯを連続的に空にするのではなく、単一の読出しアクセスで全部のペンディングバッファを得る。
【００１８】
本発明の目的は、上記管理モジュールとの通信のための生産者プロセッサによっても解決され、この生産者プロセッサは、共有メモリと通信する第１の手段と、上記モジュールと通信する第２の手段とを備え、上記プロセッサは、第２の通信手段を介して上記モジュールから書込みサブバッファを要求し、上記第２の通信手段を介して上記モジュールから目下の書込みサブバッファＩＤを受信し、上記第１の通信手段を介してこの書込みサブバッファへデータセットを送信するものである。
【００１９】
同様に、本発明の目的は、上記管理モジュールとの通信のための消費者プロセッサによっても解決され、この消費者プロセッサは、共有メモリと通信する第１の手段と、上記モジュールと通信する第２の手段とを備え、上記プロセッサは、第２の通信手段を介して上記モジュールから読出しサブバッファを要求し、第２の通信手段を介して上記モジュールから目下の読出しサブバッファＩＤを受信し、上記第１の通信手段を介してこの読出しサブバッファからデータセットを読み出すものである。
【００２０】
本発明の両プロセッサについての要点の１つは、その動作挙動及びインターフェースへの周辺変化のみが、両プロセッサの通信を高速で効率良くするのに必要である。これが本発明について実施コストを削減する。
【００２１】
上記消費プロセッサの好ましい実施形態は、請求項６に記載されている。
【００２２】
したがって、上記消費者プロセッサは、上記モジュールの割込み要求に応じて上記第２の通信手段を介して上記モジュールから読出しサブバッファを要求するものである。要求は、ＦＩＦＯスタックへ向けられる場合又はレジスタへ向けられる場合があり、レジスタは上述の管理モジュールに設けることができる。このように、消費者プロセッサは、どのバッファが更新されたか、データセットを遅延なく読み出し可能であるかをすぐに認識する。
【００２３】
本発明の目的は、さらに、共有メモリを介したインタープロセッサ通信を管理する構成によって解決され、この構成は上記本発明の管理モジュールを備え、かかるモジュールは、上述の少なくとも１つの本発明の生産者プロセッサ及び少なくとも１つの消費者プロセッサに接続される。
【００２４】
本発明の構成についての要点の１つは、その構造は単純であり、したがって簡単且つ経済的にそれぞれの基板に一体化可能である。
【００２５】
上記構成の好ましい実施形態は、請求項８及び９に記載される。
【００２６】
第１の観点において、アービトレーション手段が、同時プロセッサアクセスをスケジューリングするために、上記プロセッサと上記管理モジュールとの間の通信パスに設けられる。効果として、複数のプロセッサ間の通信は、ただ１つの管理モジュールで管理可能である。このように、構成の効率は単純且つ経済的な方法で改善される。
【００２７】
好ましくは、第２の観点において、上記アービトレーション手段は上記管理モジュールと一体化される。結果的に、部品が基板上に集積され、その数が削減され、必要な空間が節約されることとなり、コストも削減される。
【００２８】
本発明の目的は、最後に、共有メモリを介したインタープロセッサ通信のためのトリプルバッファのステートを管理する方法によって解決され、各バッファは、読出しサブバッファと書込みサブバッファとアイドルサブバッファとを有し、上記方法は、目標バッファが定められ、アイドルサブバッファＩＤが調べ出され、このアイドルサブバッファＩＤは適当な生産者プロセッサへ配信され、新しい書込みサブバッファとなり、上記サブバッファの各ステートが目下の割当てにしたがって更新される生産者プロセッサアクセスステップと、目標バッファが定められ、アイドルサブバッファのコンテンツが上記読出しサブバッファのステートより新しいかどうか検査され、より新しくない場合、この読出しサブバッファＩＤは新しい読出しサブバッファとなるべく、適当な消費者プロセッサへ上記通信手段を介して返信され、さもなければ、アイドルサブバッファＩＤが調べ出され、新しい読出しサブバッファとなるべく、適当な消費者プロセッサへ配信される消費者プロセッサアクセスステップとを含む。
【００２９】
本発明の方法についての要点の１つは、要求される情報を収集するには最小限のステップ数が必要である、ということである。このように、プロセッサについて、管理の重荷なく、それぞれのサブバッファへの効率的なアクセスが可能となる。当該方法は、１つのハードウェアへ実施し、１つのハードウェアに維持することが簡単なため、安価な実現も提供する。
【００３０】
上記の方法の好ましい実施形態は、請求項１１〜１３に記載される。
【００３１】
第１の観点において、したがって、当該方法は、各バッファのステートがリセット可能であり、バッファ固有の構成が可能である、管理アクセスステップを含む。これは、共有メモリアクセスの所定の開始構成及びリセットを可能とし、同様にさらなる加速のために開く。
【００３２】
好ましくは、第２の観点において、管理アクセスステップは、生産者プロセッサアクセスごとに上記バッファに対する割込み起動を含む。このように、消費者プロセッサは、上述のようにどのバッファが更新されたかすぐに認知する。
【００３３】
第３の観点において、管理アクセスステップは、生産者プロセッサアクセスごとにバッファＩＤの伝搬を含む。これは、関係バッファをポーリングすることなく、目下の設定にしたがった消費者プロセッサの早いアクセスを可能とする。
【図面の簡単な説明】
【００３４】
【図１】先行技術から知られる共通共有メモリ手法である。
【図２】先行技術から知られるトリプルバッファリングの基本原理である。
【図３】本発明によるトリプルバッファ用管理モジュールである。
【図４】４０９６個のトリプルバッファを管理する、図３の管理モジュールのサンプルアドレスマップである。
【図５】図３の管理モジュールが提供する割込み機構である。
【発明を実施するための形態】
【００３５】
以下で、例を用いて本発明を詳細に説明することにする。均等な効果を有する均等な部分には、同一の参照番号を与えてある。
【００３６】
図１及び２は、周知の共通共有メモリ手法とトリプルバッファリングの基本原理とをそれぞれ示している。このような最新技術は、本願の上述の導入部分ですでに説明した。
【００３７】
図３は、本発明によるトリプルバッファＳＢ０〜ＳＢ２用管理モジュールＡＭを示しており、かかる管理モジュールＡＭは、共有メモリＳＭを介した生産者プロセッサＰＰと消費者プロセッサとの通信を管理する。管理モジュールＡＭには格納手段１０が設けられ、この場合格納手段１０は、バッファＢｘごとに書込み、読み出し及びアイドルサブバッファＩｄを維持するステートテーブルである。格納手段１０は、管理手段１１によって管理され、そしてインターフェース２０を介して外部と通じる。複数のプロセッサからモジュールＡＭへの同時アクセスがアービトレーション３０によって達成され、アービトレーション３０は、モジュールＡＭのインターフェース２０をプロセッサＰＰ、ＣＰのインターフェース４１、５１に接続する通信パスに位置する。このようなアービトレーション手段３０は、基板上に必要な部品数を削減するために、管理モジュールＡＭと一体化される場合もある。プロセッサＰＰ、ＣＰには、共有メモリＳＭを介して通信するためのインターフェース４０、５０がさらに設けられ、インターフェース４０、５０は、トリプルバッファＢｘを備え、その各々はサブバッファＳＢ０〜ＳＢ２を備えており、後者は、交互に読出しサブバッファＲＳＢ、書込みサブバッファＷＳＢ又はアイドルサブバッファＩＳＢである。
【００３８】
モジュールは生産者アクセス（生産者エリアへの書込みアクセス）をサポートし、管理モジュールＡＭは、アドレスオフセットにしたがって目標バッファＢｘを定め、このバッファＢｘに対するアイドルサブバッファＩＳＢをステートテーブル１０で調べ、このサブバッファＩｄ（以下ではインデックスとも呼ぶ）を読出し値として生産者プロセッサＰＰへ配信し、ステートテーブル１０を更新する。ここで、生産者プロセッサＰＰは、共有メモリＳＭ内のこのサブバッファＷＳＢを、その新しいデータセットをダンプするのみに使用可能である。
【００３９】
さらに、消費者アクセス（消費者エリアへの読出しアクセス）において、管理者も樹＾るＡＭは、アドレスオフセットにしたがって目標バッファＢｘを定め、最後の消費者アクセス以降に新しいデータがダンプされたかどうか検査する。新しいデータセットが使用可能ではない場合、適当なフラグが読出し値として消費者プロセッサＣＰへ返信される。さもなければ、モジュールＡＭは、このバッファＢｘに対する最新で一貫性のあるデータセットを維持するアイドルサブバッファＩＳＢを調べ、このサブバッファインデックスを読出し値として消費者へ配信し、ステートテーブルを更新する。ここで、消費者プロセッサＣＰは共有メモリＳＭ内のこのサブバッファを、最新のデータセットを読み出すのみに使用可能である。
【００４０】
最後に、管理アクセス（消費者／生産者エリアへの書込みアクセス）において、各バッファＢｘのステートはリセット可能であり、後述の割込み起動のように、バッファ固有の構成が可能である。
【００４１】
図４は、４０９６個のトリプルバッファを管理する図３の管理モジュールＡＭのサンプルアドレスマップを示す。読出し／書込みバッファＢ０〜Ｂ４０９５は、共有メモリＳＭの１６ビットの消費者エリアＣＡ又は生産者エリアＰＡをそれぞれ構成する。
【００４２】
生産者プロセッサの視点から、このサポートは、効果的なソフトウェアフローを得るに十分である。生産者プロセッサＰＰは、目下の書込みサブバッファＷＳＢへ新しいデータセットをダンプするたびに、この書込みサブバッファＷＳＢを確認し、次のデータセットに対する次の書込みサブバッファＷＳＢを得るために管理モジュールＡＭを起動する。両者は、管理モジュールＡＭへの追加読出しアクセスをただ１つしか有さない。
【００４３】
消費者プロセッサの視点から、当の各バッファＢｘは、新しいデータの到着についてポーリングされなければならない。ゆえに、本発明によれば、追加の割込み機構が、ポーリングなしの効果的なソフトウェアフローに開発された。このような機構を以下で説明する。
【００４４】
図５は、図３の管理モジュールＡＭに設けられる割込み機構を示す。データセットが生産者プロセッサＰＰにダンプされるたびに、各バッファＢｘはそのＩＤをＦＩＦＯ  Ｆへ待ち行列化するようにできる。ＦＩＦＯ  Ｆがエントリを含むとすぐに、割込み要求Ｉ０〜Ｉｎが適当な消費者プロセッサＣＰへ送信される。ＦＩＦＯ  Ｆエントリを評価することによって、消費者プロセッサＣＰは、どのバッファＢｘが更新されたかすぐに認知し、目下の読出しサブバッファＲＳＢを決定後、共有メモリＳＭからデータセットを読出し可能である。
【００４５】
しかしながら処理するバッファＢｘの量が非常に小さい場合、すなわちデータバス幅よりも小さい場合、レジスタ手法がより効果的である。次に各バッファＢｘは、データセットが生産者にダンプされるたびにレジスタＲに特定のビットを設定するようにされる。あるビットが設定されるとすぐに、割込み要求が適当な消費者プロセッサＣＰへ送信される。レジスタコンテンツを評価することによって、消費者プロセッサＣＰは、ＦＩＦＯ  Ｆを連続的に空にするのではなく、単一の読出しアクセスで全部のペンディングバッファＢｘを得る。
【００４６】
ＦＩＦＯ手法及びレジスタ手法の両方において、各生産者アクセスに関し、バッファＢｘの伝搬は、ＦＩＦＯスタックＦ及び／又はレジスタＲにおける各バッファＢｘの配置構成手段１２に向けて行われる。したがって、加速の方法の両方は、どちらが少なくとも効果があるように構成されようとも、管理モジュールＡＭに組み込まれてもよい。
【００４７】
例でも分かるように、本発明の管理モジュールＡＭは、それぞれのプロセッサＰＰ、ＣＰから、バッファＢｘを管理するという重荷を取り除くため、高速且つ単純であり、同時に効果的なプロセッサ通信が低コストで可能となる。プロセッサ及び共有メモリの周知の環境内でのモジュールＡＭの追加的配置は、その利点を考慮して、許容されるものである。
【図１】
2010501951.tif 000003
【図２】
2010501951.tif 000004
【図３】
2010501951.tif 000005
【図４】
2010501951.tif 000006
【図５】
2010501951.tif 000007
【手続補正書】
【提出日】平成21年3月30日(2009.3.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
共有メモリ（ＳＭ）を介したインタープロセッサ通信のための管理モジュール（ＡＭ）であって、
各々が読出しサブバッファ（ＷＳＢ）と書込みサブバッファ（ＷＳＢ）とアイドルサブバッファ（ＩＳＢ）とを有するトリプルバッファ（Ｂ０〜Ｂｍ）のステートを格納し（１０）、管理する（１１）手段と、
少なくとも１つの生産者プロセッサ（ＰＰ）及び少なくとも１つの消費者プロセッサ（ＣＰ）と通信する（２０）手段と、
を備え、
前記管理手段（１１）は、書込みサブバッファを要求する生産者プロセッサ要求に応じて、前記格納手段（１０）からアイドルサブバッファＩＤを調べ出すステップと、新しい書込みサブバッファ（ＷＳＢ）となるべき当該アイドルサブバッファＩＤを適当な生産者プロセッサ（ＰＰ）へ前記通信手段（２０）を介して配信するステップと、目下の割当てにしたがって前記サブバッファ（ＲＳＢ、ＷＳＢ、ＩＳＢ）の各ステートを更新するステップとを行うものであり、
前記管理手段（１１）は、さらに、読出しサブバッファ（ＲＳＢ）を要求する消費者プロセッサ要求に応じて、前記アイドルサブバッファ（ＩＳＢ）のコンテンツが前記読出しサブバッファ（ＲＳＢ）のコンテンツより新しいかどうかを検査するステップと、より新しくない場合、新しい読出しサブバッファ（ＲＳＢ）となるべき当該読出しサブバッファＩＤを適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して返信するステップと、さもなければ、アイドルサブバッファＩＤを調べ出すステップと、新しい読出しサブバッファ（ＲＳＢ）となるべき当該アイドルサブバッファＩＤを適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して配信するステップとを行うものである、管理モジュール（ＡＭ）。
【請求項２】
前記格納手段（１０）はＦＩＦＯスタック（Ｆ）を備え、前記管理手段（１０）は、書込みサブバッファ（ＷＳＢ）が変わった場合に前記バッファ（Ｂ０〜Ｂｍ）のＩＤを前記ＦＩＦＯスタック（Ｆ）へ待ち行列化するように前記バッファ（Ｂ０〜Ｂｍ）の各々を構成し、適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して割込み要求（Ｉ０〜Ｉｎ）を送信する、請求項１に記載の管理モジュール（ＡＭ）。
【請求項３】
前記格納手段（１０）は少なくとも１つのレジスタ（Ｒ０〜Ｒｉ）を備え、前記管理手段（１１）は、前記書込みサブバッファ（ＷＳＢ）が変わった場合に前記レジスタ（Ｒ０〜Ｒｉ）においてバッファ関連ビットを設定するよう前記バッファ（Ｂ０〜Ｂｍ）を構成し、適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して割込み要求（Ｉ０〜Ｉｎ）を送信する、請求項１又は２に記載の管理モジュール（ＡＭ）。
【請求項４】
請求項１〜３のいずれか１項に記載の管理モジュール（ＡＭ）との通信のための生産者プロセッサ（ＰＰ）であって、
共有メモリ（ＳＭ）と通信する第１の手段（４０）と、
前記モジュール（ＡＭ）と通信する第２の手段（４１）と
を備え、
前記プロセッサ（ＰＰ）は、前記第２の通信手段（４１）を介して前記モジュール（ＡＭ）から書込みサブバッファ（ＷＳＢ）を要求し、前記第２の通信手段（４１）を介して前記モジュール（ＡＭ）から目下の書込みサブバッファＩＤを受信し、前記第１の通信手段（４０）を介して当該書込みサブバッファ（ＷＳＢ）へデータセットを送信する、生産者プロセッサ（ＰＰ）。
【請求項５】
請求項１〜３のいずれか１項に記載の管理モジュール（ＡＭ）との通信のための消費者プロセッサ（ＣＰ）であって、
共有メモリ（ＳＭ）と通信する第１の手段（５０）と、
前記モジュール（ＡＭ）と通信する第２の手段（５１）と
を備え、
前記プロセッサ（ＣＰ）は、前記第２の通信手段（５１）を介して前記モジュール（ＡＭ）から読出しサブバッファ（ＲＳＢ）を要求し、前記第２の通信手段（５１）を介して前記モジュール（ＡＭ）から目下の読出しサブバッファＩＤを受信し、前記第１の通信手段（５０）から当該読出しサブバッファ（ＲＳＢ）からデータセットを読み出す、消費者プロセッサ（ＣＰ）。
【請求項６】
前記プロセッサ（ＣＰ）は、前記モジュール（ＡＭ）の割込み要求（Ｉ０〜Ｉｎ）に応じて、前記第２の通信手段（５１）を介して前記モジュール（ＡＭ）から読出しサブバッファ（ＲＳＢ）を要求する、請求項５に記載の消費者プロセッサ（ＣＰ）。
【請求項７】
共有メモリ（ＳＭ）を介したインタープロセッサ通信を管理する構成であって、請求項１〜３のいずれか１項に記載の管理モジュール（ＡＭ）を備え、前記モジュール（ＡＭ）は、請求項４〜６のいずれか１項に記載の少なくとも１つの生産者プロセッサ（ＰＰ）及び少なくとも１つの消費者プロセッサ（ＣＰ）に接続される、構成。
【請求項８】
アービトレーション手段（３０）が、同時プロセッサアクセスをスケジューリングするために、前記プロセッサと前記管理モジュール（ＡＭ）との間の通信パスに設けられる、請求項７に記載の構成。
【請求項９】
前記アービトレーション手段（３０）は、前記管理モジュール（ＡＭ）と一体化される、請求項８に記載の構成。
【請求項１０】
共有メモリを介したインタープロセッサ通信のためのトリプルバッファ（Ｂ０〜Ｂｍ）のステートを管理する方法であって、各バッファ（Ｂ０〜Ｂｍ）は読出しサブバッファ（ＲＳＢ）と書込みサブバッファ（ＲＳＢ）とアイドルサブバッファ（ＩＳＢ）とを有し、前記方法は、
アイドルサブバッファＩＤが調べ出され、当該アイドルサブバッファＩＤは適当な生産者プロセッサ（ＰＰ）へ配信され、新しい書込みサブバッファ（ＷＳＢ）となり、前記サブバッファ（ＲＳＢ、ＷＳＢ、ＩＳＢ）の各ステートが目下の割当てにしたがって更新される、書込みサブバッファ（ＷＳＢ）を要求する生産者プロセッサ要求ステップと、
アイドルサブバッファ（ＩＳＢ）のコンテンツが前記読出しサブバッファ（ＲＳＢ）のステートより新しいかどうか検査され、より新しくない場合、当該読出しサブバッファＩＤは新しい読出しサブバッファ（ＲＳＢ）となるべく、適当な消費者プロセッサ（ＣＰ）へ前記通信手段（２０）を介して返信され、さもなければ、アイドルサブバッファＩＤが調べ出され、新しい読出しサブバッファ（ＲＳＢ）となるべく、適当な消費者プロセッサ（ＣＰ）へ配信される、読出しサブバッファ（ＲＳＢ）を要求する消費者プロセッサ要求ステップと
を含む。
【請求項１１】
各バッファ（Ｂ０〜Ｂｍ）のステートがリセット可能であり、バッファ固有の構成が可能である、管理アクセスステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
管理アクセスステップは、生産者プロセッサ要求ごとの前記バッファ（Ｂ０〜Ｂｍ）に対する割込み起動を含む、請求項１１に記載の方法。
【請求項１３】
管理アクセスステップは、生産者プロセッサ要求ごとのバッファＩＤの伝搬を含む、請求項１１又は１２のいずれか１項に記載の方法。
【手続補正書】
【提出日】平成21年4月3日(2009.4.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
第１の観点において、上記格納手段はＦＩＦＯ（Ｆｉｒｓｔ‐Ｉｎ‐Ｆｉｒｓｔ‐Ｏｕｔ）スタックを備え、上記管理手段は、上記バッファを、新しいデータセットの到着ごとに上記ＦＩＦＯスタックに自身のＩＤを待ち行列化するように構成し、適当な消費者プロセッサへ上記通信手段を介して割込み要求を送信するものである。このように、消費者プロセッサは、関係のバッファをポーリングせずとも、正しい読出しサブバッファを決定後、どのバッファが更新され、共有メモリからデータセットを読み出し可能であるか、をすぐに認識する。
【国際調査報告】
2010501951.tif 000008
2010501951.tif 000009
2010501951.tif 000010